bitcoin/src
Samuel Dobson bd331bd745
Merge #17938: Disallow automatic conversion between disparate hash types
4d7369125a Disallow automatic conversion between hash types (Ben Woosley)
fa9ef2cdbe Remove an apparently unnecessary conversion (Ben Woosley)
966a22d859 Explicitly support conversion between equivalent hash types (Ben Woosley)
f32c1e07fd Use explicit conversion from WitnessV0KeyHash -> CKeyID (Ben Woosley)
2c54217f91 Use explicit conversion from PKHash -> CKeyID (Ben Woosley)
a9e451f144 Convert CPubKey to WitnessV0KeyHash directly (Ben Woosley)
3fcc468123 Prefer explicit CScriptID construction (Ben Woosley)
0a5ea32ce6 Prefer explicit uint160 conversion (Ben Woosley)

Pull request description:

  This bases the script/standard hash types, TxDestination-related and CScriptID on a base template which does not silently convert the underlying `uintN` type.

  Inspired by and built on #17924. Commits are small and focused to ease review.

  Note some of these changes may be relative to existing bugs of the same sort as #17924. See particularly "Convert CPubKey to WitnessV0KeyHash directly" and "Remove an apparently unnecessary conversion".

ACKs for top commit:
  achow101:
    ACK 4d7369125a
  meshcollider:
    re-utACK 4d7369125a

Tree-SHA512: f1b3284ddc6fb6c6e726f2c22668b6d732d45eb5418262ed2b9c728f60be7be43dfb414b6ddd9915025c8dcd7f360dc3b46e997a945a2feb95b0e5c4f05d6b54
2020-06-21 20:26:59 +12:00
..
bench scripted-diff: Replace WalletDatabase::Create* with CreateWalletDatabase 2020-06-17 14:12:41 -04:00
compat net: Use C++11 member initialization in protocol 2020-05-20 08:27:07 -04:00
config
consensus refactor: replace pointers by references within tx_verify.{h,cpp} 2020-05-26 16:05:51 +02:00
crc32c Import crc32c using subtree merge as as 'src/crc32c' 2020-01-28 17:00:01 +01:00
crypto Avoid non-trivial global constants in SHA-NI code 2020-04-07 13:57:34 -07:00
index refactor: Use AbortError in FatalError 2020-06-16 10:51:50 -04:00
interfaces Add missing includes to fix compile errors 2020-06-16 15:15:46 -04:00
leveldb Update to leveldb upstream using subtree merge 2020-01-28 16:59:07 +01:00
logging Remove use of non-standard zero variadic macros 2020-04-30 18:02:04 +08:00
node Merge #19056: rpc: Make gettxoutsetinfo/GetUTXOStats interruptible 2020-05-26 07:33:43 -04:00
policy Convert everything except wallet/qt to new serialization 2020-03-30 16:10:30 -07:00
primitives Merge #18317: Serialization improvements step 6 (all except wallet/gui) 2020-05-20 07:30:29 -04:00
qt Use explicit conversion from PKHash -> CKeyID 2020-06-19 12:14:07 -07:00
rpc Prefer explicit uint160 conversion 2020-06-19 12:14:06 -07:00
script Disallow automatic conversion between hash types 2020-06-19 12:14:08 -07:00
secp256k1 Update src/secp256k1 subtree 2020-06-09 13:39:09 -07:00
support Limit scope of all global std::once_flag 2020-05-29 17:22:07 -04:00
test Merge #18937: refactor: s/command/msg_type/ in CNetMsgMaker and CSerializedNetMsg 2020-06-19 06:54:24 -04:00
univalue Update univalue subtree 2020-02-09 07:44:29 -08:00
util refactor: Error message bilingual_str consistency 2020-06-09 15:39:44 +02:00
wallet Merge #17938: Disallow automatic conversion between disparate hash types 2020-06-21 20:26:59 +12:00
zmq scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
.clang-format util: Add AllowShortCaseLabelsOnASingleLine option 2019-10-14 13:24:54 +03:00
addrdb.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
addrdb.h Convert addrdb/addrman to new serialization 2020-01-02 11:05:36 -08:00
addrman.cpp Merge #18512: Improve asmap checks and add sanity check 2020-05-06 14:59:28 +02:00
addrman.h logging: asmap logging and #include fixups 2020-03-04 14:24:19 +01:00
amount.h
arith_uint256.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
arith_uint256.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
attributes.h
banman.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
banman.h refactor: move DUMP_BANS_INTERVAL to banman.h 2020-03-10 09:52:53 -04:00
base58.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
base58.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
bech32.cpp Add some general std::vector utility functions 2019-10-16 08:56:57 -07:00
bech32.h Assert that the HRP is lowercase in Bech32::Encode 2019-09-05 13:25:11 +12:00
bitcoin-cli-res.rc
bitcoin-cli.cpp Merge #19004: refactor: Replace const char* to std::string 2020-05-27 07:16:10 -04:00
bitcoin-tx-res.rc
bitcoin-tx.cpp scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
bitcoin-wallet-res.rc
bitcoin-wallet.cpp wallettool: Add a salvage command 2020-05-25 12:36:48 -04:00
bitcoind-res.rc
bitcoind.cpp refactor: Pass NodeContext to RPC and REST methods through util::Ref 2020-05-13 16:20:13 -04:00
blockencodings.cpp Get rid of -Wthread-safety-precise warnings 2020-05-28 09:55:39 +03:00
blockencodings.h Get rid of -Wthread-safety-precise warnings 2020-05-28 09:55:39 +03:00
blockfilter.cpp tests: Add fuzzing harness for Golomb-Rice coding (GolombRiceEncode/GolombRiceDecode) 2020-04-20 14:57:48 +00:00
blockfilter.h [indexes] Fix default [de]serialization of BlockFilter. 2020-05-26 17:27:15 -04:00
bloom.cpp net: remove is{Empty,Full} flags from CBloomFilter, clarify CVE fix 2020-04-28 19:27:22 +02:00
bloom.h Merge #18317: Serialization improvements step 6 (all except wallet/gui) 2020-05-20 07:30:29 -04:00
chain.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
chain.h scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
chainparams.cpp [net] Add seed.bitcoin.wiz.biz to DNS seeds 2020-06-15 18:22:52 +09:00
chainparams.h scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
chainparamsbase.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
chainparamsbase.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
chainparamsseeds.h net: Hardcoded seeds update for 0.20 2020-04-03 16:29:26 +02:00
checkqueue.h scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
clientversion.cpp Drop unused GIT_COMMIT_DATE macro 2020-05-04 19:53:58 +03:00
clientversion.h
coins.cpp Remove CCoinsViewCache::GetValueIn(...) 2020-05-03 18:42:14 +00:00
coins.h Merge #18854: doc: Fix typo in Coin doxygen comment 2020-05-06 13:15:28 +02:00
compat.h
compressor.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
compressor.h scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
core_io.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
core_memusage.h
core_read.cpp refactor: Replace const char* to std::string 2020-05-22 01:40:31 +09:00
core_write.cpp Expose txinwitness for coinbase in JSON form 2020-05-08 12:19:26 +10:00
cuckoocache.h tests: Add fuzzing harness for classes/functions in cuckoocache.h 2020-04-08 14:45:27 +00:00
dbwrapper.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
dbwrapper.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
dummywallet.cpp wallet: Avoid translating RPC errors when loading wallets 2020-05-01 07:39:00 -04:00
flatfile.cpp Style cleanup. 2019-02-22 17:38:45 -08:00
flatfile.h Merge #18317: Serialization improvements step 6 (all except wallet/gui) 2020-05-20 07:30:29 -04:00
fs.cpp Add missing includes to fix compile errors 2020-06-16 15:15:46 -04:00
fs.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
hash.cpp
hash.h Squashed 'src/secp256k1/' changes from 0b70241850..b19c000063 2019-03-31 11:41:05 -07:00
httprpc.cpp Merge #18740: Remove g_rpc_node global 2020-05-21 06:53:39 -04:00
httprpc.h refactor: Pass NodeContext to RPC and REST methods through util::Ref 2020-05-13 16:20:13 -04:00
httpserver.cpp http: Avoid crash when g_thread_http was never started 2020-05-19 10:41:44 -04:00
httpserver.h scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
indirectmap.h scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
init.cpp init: use std::thread for ThreadImport() 2020-06-12 16:02:18 +08:00
init.h refactor: Pass NodeContext to RPC and REST methods through util::Ref 2020-05-13 16:20:13 -04:00
key.cpp scripted-diff: rename privkey with seckey in secp256k1 interface 2020-06-10 18:29:33 -07:00
key.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
key_io.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
key_io.h
limitedmap.h
logging.cpp log: remove deprecated db log category 2020-06-07 17:03:49 +02:00
logging.h refactor: Rename LockGuard to StdLockGuard for consistency with StdMutex 2020-05-28 09:54:24 +03:00
Makefile.am walletdb: Move BDB specific things into bdb.{cpp/h} 2020-06-15 20:41:05 -04:00
Makefile.bench.include Add Hash Padding Microbenchmarks 2020-04-29 00:31:41 -07:00
Makefile.crc32c.include build: CRC32C build system integration 2020-01-28 17:01:48 +01:00
Makefile.leveldb.include build: Enable -Wsuggest-override 2020-05-12 18:03:39 +03:00
Makefile.qt.include build: multiprocess autotools changes 2020-05-12 09:47:06 -04:00
Makefile.qt_locale.include qt: Translations update pre-branch 2020-04-01 12:49:15 +02:00
Makefile.qttest.include build: Create test utility library from src/test/util/ 2019-11-21 21:13:08 +01:00
Makefile.test.include tests: Add fuzzing harness for {Read,Write}{LE,BE}{16,32,64} (crypto/common.h) 2020-06-11 14:05:54 +00:00
Makefile.test_fuzz.include build: create test_fuzz library from src/test/fuzz/fuzz.cpp 2020-04-05 01:01:13 +02:00
Makefile.test_util.include fuzz: Add process_messages harness 2020-04-05 10:46:24 +08:00
memusage.h scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
merkleblock.cpp Convert merkleblock to new serialization 2020-03-30 16:09:51 -07:00
merkleblock.h Convert merkleblock to new serialization 2020-03-30 16:09:51 -07:00
miner.cpp scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
miner.h scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
net.cpp Merge #18937: refactor: s/command/msg_type/ in CNetMsgMaker and CSerializedNetMsg 2020-06-19 06:54:24 -04:00
net.h Merge #18937: refactor: s/command/msg_type/ in CNetMsgMaker and CSerializedNetMsg 2020-06-19 06:54:24 -04:00
net_permissions.cpp refactor: PutTryParsePermissionFlags in anonymous namespace 2020-06-09 15:39:44 +02:00
net_permissions.h refactor: Error message bilingual_str consistency 2020-06-09 15:39:44 +02:00
net_processing.cpp Merge #19293: net: Avoid redundant and confusing FAILED log 2020-06-19 17:17:29 +08:00
net_processing.h refactor: replace CNode pointers by references within net_processing.{h,cpp} 2020-06-02 01:42:55 +02:00
net_types.h refactor: Remove addrdb.h dependency from node.h 2019-10-29 11:30:12 +02:00
netaddress.cpp Merge #18512: Improve asmap checks and add sanity check 2020-05-06 14:59:28 +02:00
netaddress.h Merge #18317: Serialization improvements step 6 (all except wallet/gui) 2020-05-20 07:30:29 -04:00
netbase.cpp refactor: Replace RecursiveMutex with Mutex in netbase.cpp 2020-06-06 17:19:52 +03:00
netbase.h net: Avoid using C-style NUL-terminated strings as arguments in the netbase interface 2020-01-08 12:35:59 +00:00
netmessagemaker.h refactor: s/command/msg_type/ in CNetMsgMaker and CSerializedNetMsg 2020-05-11 00:20:57 +02:00
noui.cpp Drop MSG_NOPREFIX flag 2020-06-04 18:32:52 +03:00
noui.h Make ThreadSafe{MessageBox|Question} bilingual 2020-05-05 04:45:59 +03:00
optional.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
outputtype.cpp Convert CPubKey to WitnessV0KeyHash directly 2020-06-19 12:14:07 -07:00
outputtype.h List output types in an array in order to be iterated over 2020-01-23 16:35:06 -05:00
pow.cpp
pow.h
prevector.h prevector: Avoid unnamed struct, which is a GNU extension 2020-04-30 18:02:03 +08:00
protocol.cpp Merge #19112: rpc: Remove special case for unknown service flags 2020-06-04 17:16:49 +02:00
protocol.h Merge #19044: net processing: Add support for getcfilters 2020-05-31 18:20:17 -04:00
psbt.cpp scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
psbt.h doc: Fix unrelated typos reported by codespell 2020-05-27 12:37:08 -04:00
pubkey.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
pubkey.h Implement TopUp in DescriptorScriptPubKeyMan 2020-04-23 13:59:48 -04:00
random.cpp Merge #18781: Add templated GetRandDuration<> 2020-05-15 08:58:49 -04:00
random.h Add templated GetRandomDuration<> 2020-04-30 09:19:14 -04:00
randomenv.cpp scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
randomenv.h [MOVEONLY] Move perfmon data gathering to new randomenv module 2019-11-12 14:50:44 -08:00
rest.cpp Merge #18740: Remove g_rpc_node global 2020-05-21 06:53:39 -04:00
reverse_iterator.h
scheduler.cpp scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
scheduler.h scheduler: Make schedule* methods type safe 2020-03-10 09:47:32 -04:00
serialize.h Remove old serialization primitives 2020-05-24 10:35:00 -07:00
shutdown.cpp
shutdown.h
span.h Add sanity check asserts to span when -DDEBUG 2020-06-17 15:10:50 -07:00
streams.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
sync.cpp Use template function instead of void* parameter 2020-05-28 09:55:04 +03:00
sync.h Add means to handle negative capabilities in thread safety annotations 2020-06-11 15:49:39 +03:00
threadinterrupt.cpp
threadinterrupt.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
threadsafety.h Add means to handle negative capabilities in thread safety annotations 2020-06-11 15:49:39 +03:00
timedata.cpp Make SetMiscWarning() accept bilingual_str argument 2020-06-10 15:01:20 +03:00
timedata.h
tinyformat.h util: Update tinyformat to upstream 2019-12-06 10:02:08 +01:00
torcontrol.cpp net: Avoid using C-style NUL-terminated strings as arguments in the netbase interface 2020-01-08 12:35:59 +00:00
torcontrol.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
txdb.cpp txdb: Remove unused boost/thread 2020-06-04 10:05:36 -04:00
txdb.h scripted-diff: Bump copyright of files changed in 2020 2020-01-15 02:18:00 +07:00
txmempool.cpp wallet: Minimal fix to restore conflicted transaction notifications 2020-05-15 09:23:55 -04:00
txmempool.h [trivial/doc] Fix comment type 2020-05-25 11:27:07 -07:00
ui_interface.cpp refactor: Pass SynchronizationState enum to GUI 2020-05-19 02:49:32 +03:00
ui_interface.h Fix link error with --enable-debug 2020-06-17 22:31:58 +03:00
uint256.cpp refactor: define a UINT256_ONE global constant 2020-01-23 16:35:08 -05:00
uint256.h refactor: define a UINT256_ONE global constant 2020-01-23 16:35:08 -05:00
undo.h scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
validation.cpp refactor: Use AbortError in FatalError 2020-06-16 10:51:50 -04:00
validation.h doc: Add documentation for 'checklevel' argument in 'verifychain' RPC call 2020-06-07 17:50:22 +09:00
validationinterface.cpp trivial: Suggested cleanups to surrounding code 2020-05-22 16:30:07 -04:00
validationinterface.h trivial: Suggested cleanups to surrounding code 2020-05-22 16:30:07 -04:00
version.h
versionbits.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
versionbits.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
versionbitsinfo.cpp scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
versionbitsinfo.h
walletinitinterface.h scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
warnings.cpp Make SetMiscWarning() accept bilingual_str argument 2020-06-10 15:01:20 +03:00
warnings.h Make SetMiscWarning() accept bilingual_str argument 2020-06-10 15:01:20 +03:00