elements/src
laanwj 196b459920
Merge bitcoin/bitcoin#23438: refactor: Use spans of std::byte in serialize
fa5d2e678c Remove unused char serialize (MarcoFalke)
fa24493d63 Use spans of std::byte in serialize (MarcoFalke)
fa65bbf217 span: Add BytePtr helper (MarcoFalke)

Pull request description:

  This changes the serialize code (`.read()` and `.write()` functions) to take a `Span` instead of a pointer and size. This is a breaking change for the serialize interface, so at no additional cost we can also switch to `std::byte` (instead of using `char`).

  The benefits of using `Span`:
  * Less verbose and less fragile code when passing an already existing `Span`(-like) object to or from serialization

  The benefits of using `std::byte`:
  * `std::byte` can't accidentally be mistaken for an integer

  The goal here is to only change serialize to use spans of `std::byte`. If needed, `AsBytes`,  `MakeUCharSpan`, ... can be used (temporarily) to pass spans of the right type.

  Other changes that are included here:

  * [#22167](https://github.com/bitcoin/bitcoin/pull/22167) (refactor: Remove char serialize by MarcoFalke)
  * [#21906](https://github.com/bitcoin/bitcoin/pull/21906) (Preserve const in cast on CTransactionSignatureSerializer by promag)

ACKs for top commit:
  laanwj:
    Concept and code review ACK fa5d2e678c
  sipa:
    re-utACK fa5d2e678c

Tree-SHA512: 08ee9eced5fb777cedae593b11e33660bed9a3e1711a7451a87b835089a96c99ce0632918bb4666a4e859c4d020f88fb50f2dd734216b0c3d1a9a704967ece6f
2022-01-27 19:19:12 +01:00
..
bench Merge bitcoin/bitcoin#23438: refactor: Use spans of std::byte in serialize 2022-01-27 19:19:12 +01:00
common Merge bitcoin/bitcoin#23438: refactor: Use spans of std::byte in serialize 2022-01-27 19:19:12 +01:00
compat scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
config
consensus scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
crc32c
crypto scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
index Require CBlockIndex::GetBlockPos() to hold mutex cs_main 2022-01-25 20:43:12 +01:00
init Add src/node/* code to node:: namespace 2022-01-06 22:14:16 -05:00
interfaces Remove unused checkFinalTx 2022-01-25 10:16:06 +01:00
ipc
leveldb
logging scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
minisketch
node Merge bitcoin/bitcoin#23438: refactor: Use spans of std::byte in serialize 2022-01-27 19:19:12 +01:00
policy [validation] better handle errors in SubmitPackage 2022-01-17 12:24:43 +00:00
primitives scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
qt fs: consistently use fsbridge for {i,o}fstream 2022-01-26 22:08:19 +08:00
rpc Merge bitcoin/bitcoin#22932: Add CBlockIndex lock annotations, guard nStatus/nFile/nDataPos/nUndoPos by cs_main 2022-01-27 10:57:33 +01:00
script Merge bitcoin/bitcoin#23438: refactor: Use spans of std::byte in serialize 2022-01-27 19:19:12 +01:00
secp256k1 Update secp256k1 subtree to latest upstream master 2021-12-15 09:19:50 -05:00
support Use spans of std::byte in serialize 2022-01-02 11:40:31 +01:00
test Merge bitcoin/bitcoin#23438: refactor: Use spans of std::byte in serialize 2022-01-27 19:19:12 +01:00
univalue
util fs: consistently use fsbridge for {i,o}fstream 2022-01-26 22:08:19 +08:00
wallet Merge bitcoin/bitcoin#23438: refactor: Use spans of std::byte in serialize 2022-01-27 19:19:12 +01:00
zmq Add src/node/* code to node:: namespace 2022-01-06 22:14:16 -05:00
.clang-format Use c++17 in clang-format 2021-11-12 11:46:34 +01:00
.clang-tidy
addrdb.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
addrdb.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
addrman.cpp Merge bitcoin/bitcoin#23826: test: Make AddrMan unit tests use public interface, extend coverage 2022-01-04 23:08:11 +08:00
addrman.h Merge bitcoin/bitcoin#23826: test: Make AddrMan unit tests use public interface, extend coverage 2022-01-04 23:08:11 +08:00
addrman_impl.h test: Remove unused AddrManTest class 2021-12-28 21:54:51 +01:00
arith_uint256.cpp Fix implicit-integer-sign-change in arith_uint256 2022-01-13 15:56:59 +01:00
arith_uint256.h
attributes.h
banman.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
banman.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
base58.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
base58.h
bech32.cpp Make Bech32 LocateErrors return error list rather than using out-arg 2021-12-06 14:17:41 +13:00
bech32.h Make Bech32 LocateErrors return error list rather than using out-arg 2021-12-06 14:17:41 +13:00
bitcoin-cli-res.rc
bitcoin-cli.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
bitcoin-tx-res.rc
bitcoin-tx.cpp fs: consistently use fsbridge for fopen() 2022-01-26 22:08:29 +08:00
bitcoin-util-res.rc
bitcoin-util.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
bitcoin-wallet-res.rc
bitcoin-wallet.cpp Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
bitcoind-res.rc
bitcoind.cpp Add src/node/* code to node:: namespace 2022-01-06 22:14:16 -05:00
blockencodings.cpp
blockencodings.h
blockfilter.cpp scripted-diff: rename MapIntoRange to FastRange64 2022-01-06 11:29:55 -05:00
blockfilter.h
chain.cpp Move CBlockFileInfo::ToString method where class is declared 2022-01-06 22:14:16 -05:00
chain.h Guard CBlockIndex::nStatus/nFile/nDataPos/nUndoPos by cs_main 2022-01-25 20:46:52 +01:00
chainparams.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
chainparams.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
chainparamsbase.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
chainparamsbase.h
chainparamsseeds.h
checkqueue.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
clientversion.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
clientversion.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
coins.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
coins.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
compat.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
compressor.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
compressor.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
core_io.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
core_memusage.h
core_read.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
core_write.cpp transaction decoding infer output descriptors 2022-01-26 09:56:51 +08:00
cuckoocache.h Add FastRange32 function and use it throughout the codebase 2022-01-07 13:37:47 -05:00
dbwrapper.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
dbwrapper.h Use spans of std::byte in serialize 2022-01-02 11:40:31 +01:00
deploymentinfo.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
deploymentinfo.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
deploymentstatus.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
deploymentstatus.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
dummywallet.cpp Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
external_signer.cpp
external_signer.h
flatfile.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
flatfile.h
fs.cpp fs: add missing <cassert> include 2022-01-26 22:08:29 +08:00
fs.h fs: Make compatible with boost 1.78 2022-01-19 16:25:20 -05:00
hash.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
hash.h Use spans of std::byte in serialize 2022-01-02 11:40:31 +01:00
httprpc.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
httprpc.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
httpserver.cpp Merge bitcoin/bitcoin#23607: rpc: Pass const char* to evhttp_connection_get_peer for new libevent 2022-01-13 18:35:25 +01:00
httpserver.h
i2p.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
i2p.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
indirectmap.h
init.cpp Add src/node/* code to node:: namespace 2022-01-06 22:14:16 -05:00
init.h Add src/node/* code to node:: namespace 2022-01-06 22:14:16 -05:00
key.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
key.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
key_io.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
key_io.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
logging.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
logging.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
Makefile.am [moveonly] Move MapIntoRange() to separate util/fastrange.h 2022-01-06 11:27:06 -05:00
Makefile.bench.include scripted-diff: Rename libbitcoin_server.a to libbitcoin_node.a 2021-12-20 10:53:01 -05:00
Makefile.crc32c.include
Makefile.leveldb.include
Makefile.minisketch.include
Makefile.qt.include scripted-diff: Rename libbitcoin_server.a to libbitcoin_node.a 2021-12-20 10:53:01 -05:00
Makefile.qt_locale.include
Makefile.qttest.include scripted-diff: Rename libbitcoin_server.a to libbitcoin_node.a 2021-12-20 10:53:01 -05:00
Makefile.test.include scripted-diff: Rename libbitcoin_server.a to libbitcoin_node.a 2021-12-20 10:53:01 -05:00
Makefile.test_fuzz.include scripted-diff: Rename libbitcoin_server.a to libbitcoin_node.a 2021-12-20 10:53:01 -05:00
Makefile.test_util.include scripted-diff: Rename libbitcoin_server.a to libbitcoin_node.a 2021-12-20 10:53:01 -05:00
Makefile.univalue.include
mapport.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
mapport.h
memusage.h
merkleblock.cpp
merkleblock.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
net.cpp Merge bitcoin/bitcoin#23438: refactor: Use spans of std::byte in serialize 2022-01-27 19:19:12 +01:00
net.h Merge bitcoin/bitcoin#24108: Replace RecursiveMutex cs_addrLocal with Mutex, and rename it 2022-01-24 12:40:15 +01:00
net_permissions.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
net_permissions.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
net_processing.cpp Remove/inline ReadRawBlockFromDisk(block_data, pindex, message_start) 2022-01-25 20:43:37 +01:00
net_processing.h Merge bitcoin/bitcoin#23706: rpc: getblockfrompeer followups 2022-01-25 18:48:41 +01:00
net_types.cpp net: Drop only invalid entries when reading banlist.json 2021-12-14 18:58:45 +01:00
net_types.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
netaddress.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
netaddress.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
netbase.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
netbase.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
netmessagemaker.h
noui.cpp
noui.h
outputtype.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
outputtype.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
pow.cpp
pow.h
prevector.h
protocol.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
protocol.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
psbt.cpp Use spans of std::byte in serialize 2022-01-02 11:40:31 +01:00
psbt.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
pubkey.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
pubkey.h Use spans of std::byte in serialize 2022-01-02 11:40:31 +01:00
random.cpp scripted-diff: replace PoissonNextSend with GetExponentialRand 2022-01-13 15:55:01 +01:00
random.h scripted-diff: replace PoissonNextSend with GetExponentialRand 2022-01-13 15:55:01 +01:00
randomenv.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
randomenv.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
rest.cpp Add src/node/* code to node:: namespace 2022-01-06 22:14:16 -05:00
reverse_iterator.h
scheduler.cpp scripted-diff: rename m_cs_callbacks_pending -> m_callbacks_mutex 2022-01-14 13:25:23 +01:00
scheduler.h refactor: replace RecursiveMutex m_callbacks_mutex with Mutex 2022-01-14 13:27:41 +01:00
serialize.h Remove unused char serialize 2022-01-02 11:52:11 +01:00
shutdown.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
shutdown.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
signet.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
signet.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
span.h span: Add BytePtr helper 2022-01-02 11:13:40 +01:00
streams.h Use spans of std::byte in serialize 2022-01-02 11:40:31 +01:00
sync.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
sync.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
threadinterrupt.cpp
threadinterrupt.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
threadsafety.h
timedata.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
timedata.h
tinyformat.h
torcontrol.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
torcontrol.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
txdb.cpp Guard CBlockIndex::nStatus/nFile/nDataPos/nUndoPos by cs_main 2022-01-25 20:46:52 +01:00
txdb.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
txmempool.cpp Merge bitcoin/bitcoin#21464: Mempool Update Cut-Through Optimization 2022-01-25 11:20:18 +08:00
txmempool.h Merge bitcoin/bitcoin#21464: Mempool Update Cut-Through Optimization 2022-01-25 11:20:18 +08:00
txorphanage.cpp
txorphanage.h
txrequest.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
txrequest.h
uint256.cpp
uint256.h Use spans of std::byte in serialize 2022-01-02 11:40:31 +01:00
undo.h
validation.cpp Merge bitcoin/bitcoin#23438: refactor: Use spans of std::byte in serialize 2022-01-27 19:19:12 +01:00
validation.h Merge bitcoin/bitcoin#23804: validation: followups for de-duplication of packages 2022-01-25 10:44:51 +08:00
validationinterface.cpp
validationinterface.h
version.h
versionbits.cpp scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
versionbits.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00
walletinitinterface.h Add src/node/* code to node:: namespace 2022-01-06 22:14:16 -05:00
warnings.cpp
warnings.h scripted-diff: Bump copyright headers 2021-12-30 19:36:57 +02:00