bitcoin/src
merge-script 99b9022844
Some checks are pending
CI / test each commit (push) Waiting to run
CI / macOS 14 native, arm64, no depends, sqlite only, gui (push) Waiting to run
CI / macOS 14 native, arm64, fuzz (push) Waiting to run
CI / Windows native, VS 2022 (push) Waiting to run
CI / Windows native, fuzz, VS 2022 (push) Waiting to run
CI / Linux->Windows cross, no tests (push) Waiting to run
CI / Windows, test cross-built (push) Blocked by required conditions
CI / ASan + LSan + UBSan + integer, no depends, USDT (push) Waiting to run
Merge bitcoin/bitcoin#32177: TxGraph: Increase fuzz coverage
a40bd374aa Get*Union: disallow nulltpr Refs (Greg Sanders)
57433502e6 CountDistinctClusters: nullptrs disallowed (Greg Sanders)
8bca0d325a TxGraphImpl::Compact: m_main_clusterset.m_removed is always empty (Greg Sanders)
2c5cf987e9 TxGraphImpl::PullIn: only allowed when staging exists (Greg Sanders)

Pull request description:

  Was looking at my local coverage report, and noticed a few spots that will not or cannot be hit.

  CountDistinctClusters, GetAncestorsUnion, and GetDescendantsUnion accept nullptrs, but the test harness never employs them. Disallow them.

  We never call PullIn whenever there isn't staging, so just enforce that invariant via assertion.

  Remaining places that are not covered:

  1) Relinearize: Currently we seem to always start with a cold (not known to be optimal) cluster, and after one attempt at linearization result into something optimal. This means we never shortcircuit, nor run PostLinearization, nor store the quality as ACCEPTABLE. Reducing iterations causes these lines to be hit. sipa says he will take this on as varying the amount of iterations was meant to be done eventually anyways.
  2) We never do a move assignment operator when the lvalue already has a `m_graph` (so we never call UnlinkRef) 3358b1d105/src/txgraph.cpp (L2097)
  3) We never use the move constructor: 3358b1d105/src/txgraph.cpp (L2108)

ACKs for top commit:
  sipa:
    utACK a40bd374aa
  glozow:
    utACK a40bd374aa

Tree-SHA512: ca88297222e80e0d590889698899f892b9335cfa587a76a6c6ca62c8d846f208b6b0b9a9b1829bafabdb929a1a0c3a75f23edf7dd2b4f5e2dad0235e5bc68ba3
2025-04-03 09:51:28 +08:00
..
bench scripted-diff: (refactor) ClusterIndex -> DepGraphIndex 2025-03-24 09:34:54 -04:00
common scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
compat netbase: refactor CreateSock() to accept sa_family_t 2024-03-01 13:13:07 -05:00
consensus Remove checkpoints 2025-03-13 11:13:13 +00:00
crc32c Update crc32c subtree to latest upstream master 2024-02-27 18:28:19 +00:00
crypto scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
index scripted-diff: rename block and undo functions for consistency 2025-01-09 15:17:02 +01:00
init refactor: Avoid using IsArgSet() on -debug, -loglevel, and -vbparams list options 2025-02-13 12:30:15 -05:00
interfaces Merge bitcoin/bitcoin#31897: mining: drop unused -nFees and sigops from CBlockTemplate 2025-03-25 08:41:59 -04:00
ipc Add waitNext() to BlockTemplate interface 2025-02-19 17:20:57 +01:00
kernel Merge bitcoin/bitcoin#31910: qa: fix an off-by-one in utxo snapshot fuzz target and sanity check its snapshot data 2025-03-21 16:46:54 +08:00
leveldb Update leveldb subtree to latest upstream 2025-03-17 15:59:05 +08:00
logging scripted-diff: modernize outdated trait patterns - values 2025-02-21 10:43:01 +01:00
minisketch Update minisketch subtree to latest master 2025-03-05 15:36:56 +00:00
node Merge bitcoin/bitcoin#31896: refactor: Remove redundant and confusing calls to IsArgSet 2025-03-27 15:33:11 +08:00
policy doc: Update comments for AreInputsStandard to match code 2025-03-26 18:58:02 +10:00
primitives tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
qt qt: Fix compiling for Windows 2025-04-02 09:14:49 +01:00
rpc Merge bitcoin/bitcoin#31897: mining: drop unused -nFees and sigops from CBlockTemplate 2025-03-25 08:41:59 -04:00
script descriptors refactor: Clarify multipath data relationships through local struct 2025-03-29 20:46:54 +01:00
secp256k1 Update secp256k1 subtree to v0.6.0 2024-11-04 14:59:46 -05:00
support util: Add missing types in make_secure_unique 2024-12-10 21:51:48 +01:00
test Merge bitcoin/bitcoin#32158: fuzz: Make partially_downloaded_block more deterministic 2025-04-02 13:22:00 +08:00
univalue Merge bitcoin/bitcoin#31904: refactor: modernize outdated trait patterns using helper aliases (C++14/C++17) 2025-03-17 13:10:10 +08:00
util feefrac: Introduce tagged wrappers to distinguish vsize/WU rates 2025-03-24 09:34:54 -04:00
wallet Merge bitcoin/bitcoin#32118: fuzz: wallet: fix crypter target 2025-04-02 13:17:49 +08:00
zmq refactor: Remove spurious virtual from final ~CZMQNotificationInterface 2025-04-01 18:33:33 +02:00
.clang-format refactor: Print verbose serialize compiler error messages 2023-12-15 15:20:54 +01:00
.clang-tidy tidy: add clang-tidy modernize-use-starts-ends-with check 2024-09-14 20:33:32 +03:00
addrdb.cpp scripted-diff: Rename PACKAGE_* variables to CLIENT_* 2024-10-28 12:36:19 +00:00
addrdb.h
addresstype.cpp policy: Add OP_1 <0x4e73> as a standard output type 2024-07-30 14:06:58 -04:00
addresstype.h refactor: deduplicate anchor witness program bytes (0x4e,0x73) 2025-03-23 21:58:39 +01:00
addrman.cpp addrman: cap the max_pct to not exceed the maximum number of addresses 2024-11-11 12:47:53 -03:00
addrman.h addrman: cap the max_pct to not exceed the maximum number of addresses 2024-11-11 12:47:53 -03:00
addrman_impl.h Merge bitcoin/bitcoin#30568: addrman: change internal id counting to int64_t 2024-09-20 12:55:22 -04:00
arith_uint256.cpp Add a fuzz test for Num3072 multiplication and inversion 2025-01-09 10:11:46 -05:00
arith_uint256.h doc: Clarify comments about endianness after #30526 2025-01-03 09:19:53 -05:00
attributes.h
banman.cpp refactor: Delay translation of _() literals 2025-01-14 19:21:37 +01:00
banman.h doc: banman: reference past vuln due to unbounded banlist 2025-02-12 15:10:28 -05:00
base58.cpp scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
base58.h scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
bech32.cpp Split out bech32 separator char to header 2024-10-19 18:49:53 +02:00
bech32.h Split out bech32 separator char to header 2024-10-19 18:49:53 +02:00
bip324.cpp scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
bip324.h scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
bitcoin-chainstate.cpp Remove checkpoints 2025-03-13 11:13:13 +00:00
bitcoin-cli-res.rc scripted-diff: Rename PACKAGE_* variables to CLIENT_* 2024-10-28 12:36:19 +00:00
bitcoin-cli.cpp refactor: Remove IsArgSet guard when fallback value is provided 2025-03-25 10:37:42 +01:00
bitcoin-tx-res.rc scripted-diff: Rename PACKAGE_* variables to CLIENT_* 2024-10-28 12:36:19 +00:00
bitcoin-tx.cpp refactor: Use TranslateFn type consistently 2025-01-15 12:15:40 +01:00
bitcoin-util-res.rc scripted-diff: Rename PACKAGE_* variables to CLIENT_* 2024-10-28 12:36:19 +00:00
bitcoin-util.cpp refactor: Use TranslateFn type consistently 2025-01-15 12:15:40 +01:00
bitcoin-wallet-res.rc scripted-diff: Rename PACKAGE_* variables to CLIENT_* 2024-10-28 12:36:19 +00:00
bitcoin-wallet.cpp refactor: Use TranslateFn type consistently 2025-01-15 12:15:40 +01:00
bitcoind-res.rc scripted-diff: Rename PACKAGE_* variables to CLIENT_* 2024-10-28 12:36:19 +00:00
bitcoind.cpp refactor: introduce a more general LockDirectories for init 2025-01-16 21:06:21 +00:00
blockencodings.cpp scripted-diff: LogPrint -> LogDebug 2024-08-29 13:49:57 +02:00
blockencodings.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
blockfilter.cpp util: Move util/string.h functions to util namespace 2024-05-16 10:16:08 -05:00
blockfilter.h
chain.cpp
chain.h Remove checkpoints 2025-03-13 11:13:13 +00:00
chainparams.cpp refactor: Avoid using IsArgSet() on -signetseednode and -signetchallenge list options 2025-02-13 12:30:15 -05:00
chainparams.h
chainparamsbase.cpp net, init: derive default onion port if a user specified a -port 2024-11-14 13:41:02 -05:00
chainparamsbase.h net, init: derive default onion port if a user specified a -port 2024-11-14 13:41:02 -05:00
chainparamsseeds.h seeds: update fixed dns seeds 2025-03-06 15:39:58 -06:00
checkqueue.h Merge bitcoin/bitcoin#31313: refactor: Clamp worker threads in ChainstateManager constructor 2024-12-03 18:02:37 -05:00
clientversion.cpp refactor: Delay translation of _() literals 2025-01-14 19:21:37 +01:00
clientversion.h scripted-diff: Clarify "user agent" variable name 2024-10-28 12:35:49 +00:00
cluster_linearize.h clusterlin: add GetConnectedComponent 2025-03-27 15:48:44 -04:00
CMakeLists.txt txgraph: Add initial version (feature) 2025-03-24 09:49:46 -04:00
coins.cpp Merge bitcoin/bitcoin#30906: refactor: prohibit direct flags access in CCoinsCacheEntry and remove invalid tests 2024-12-04 14:09:05 -05:00
coins.h coins, refactor: Remove direct GetFlags access 2024-12-02 13:52:34 +01:00
compressor.cpp
compressor.h scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
core_io.h rpc: add getdescriptoractivity 2024-11-26 20:47:08 -05:00
core_memusage.h
core_read.cpp ci: Update Clang in "tidy" job 2024-12-05 14:37:47 +00:00
core_write.cpp refactor: Rename CTransaction::nVersion to version 2024-06-07 13:55:23 -04:00
cuckoocache.h validation: Don't error if maxsigcachesize exceeds uint32::max 2024-07-04 22:35:29 +02:00
dbwrapper.cpp scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
dbwrapper.h scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
deploymentinfo.cpp
deploymentinfo.h
deploymentstatus.cpp scripted-diff: modernize outdated trait patterns - types 2025-02-21 10:41:27 +01:00
deploymentstatus.h
dummywallet.cpp wallet, test: Be able to always swap BDB endianness 2024-05-16 15:03:13 -04:00
external_signer.cpp refactor: Remove Span operator==, Use std::ranges::equal 2024-08-13 07:44:31 +02:00
external_signer.h
flatfile.cpp scripted-diff: LogPrint -> LogDebug 2024-08-29 13:49:57 +02:00
flatfile.h refactor: Add FlatFileSeq member variables in BlockManager 2024-07-24 09:39:35 +02:00
hash.cpp scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
hash.h scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
headerssync.cpp [headerssync] update headerssync config for v29 2025-03-04 14:23:18 -05:00
headerssync.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
httprpc.cpp Fix nonsensical -norpcwhitelist behavior 2025-02-13 12:30:15 -05:00
httprpc.h
httpserver.cpp Fix nonsensical -norpcbind and -norpcallowip behavior 2025-02-13 12:30:15 -05:00
httpserver.h rpc: increase the defaults for -rpcthreads and -rpcworkqueue 2024-11-04 17:08:21 +01:00
i2p.cpp refactor: Avoid false-positive gcc warning 2025-03-12 19:47:01 +01:00
i2p.h i2p: log errors properly according to their severity 2024-06-12 16:19:50 -03:00
indirectmap.h
init.cpp doc: Remove outdated and stale todo comment 2025-03-25 10:38:34 +01:00
init.h refactor: introduce a more general LockDirectories for init 2025-01-16 21:06:21 +00:00
key.cpp scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
key.h scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
key_io.cpp key: clear out secret data in DecodeExtKey 2024-10-27 15:38:54 +01:00
key_io.h
logging.cpp log: Enforce trailing newline, Remove redundant m_started_new_line 2024-10-01 11:31:39 +02:00
logging.h log: Enforce trailing newline, Remove redundant m_started_new_line 2024-10-01 11:31:39 +02:00
mapport.cpp mapport: make ProcessPCP void 2024-11-04 14:19:40 -05:00
mapport.h mapport: rename 'use_pcp' to 'enable' 2024-10-29 11:58:51 -04:00
memusage.h memusage: Add DynamicUsage for std::string 2024-11-04 18:46:40 +01:00
merkleblock.cpp [clang-tidy] Enable the misc-no-recursion check 2024-04-07 14:04:45 +01:00
merkleblock.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
net.cpp Merge bitcoin/bitcoin#32073: net: Block v2->v1 transport downgrade if !fNetworkActive 2025-03-24 16:54:40 -04:00
net.h scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
net_permissions.cpp util: move fees.h and error.h to common/messages.h 2024-05-16 10:16:08 -05:00
net_permissions.h scripted-diff: modernize outdated trait patterns - types 2025-02-21 10:41:27 +01:00
net_processing.cpp Merge bitcoin/bitcoin#30538: Doc: add a comment referencing past vulnerability next to where it was fixed 2025-03-23 11:12:33 -04:00
net_processing.h net: add GetOrphanTransactions() to PeerManager 2024-10-01 21:55:18 -04:00
net_types.cpp rpc: avoid copying into UniValue 2024-05-20 16:48:19 +00:00
net_types.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
netaddress.cpp scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
netaddress.h scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
netbase.cpp scripted-diff: drop config/ subdir for bitcoin-config.h, rename to bitcoin-build-config.h 2024-10-10 12:22:12 +02:00
netbase.h scripted-diff: modernize outdated trait patterns - types 2025-02-21 10:41:27 +01:00
netgroup.cpp Merge bitcoin/bitcoin#27581: net: Continuous ASMap health check 2023-12-06 11:22:42 -05:00
netgroup.h net: Add continuous ASMap health check logging 2023-12-02 22:03:08 +01:00
netmessagemaker.h refactor: NetMsg::Make() without nVersion 2023-11-20 14:02:27 +01:00
noui.cpp node: Use log levels in noui_ThreadSafeMessageBox 2024-03-21 16:41:16 +01:00
noui.h
outputtype.cpp fix incorrect multisig redeem script size limit for segwit 2024-05-03 14:20:44 -03:00
outputtype.h fix incorrect multisig redeem script size limit for segwit 2024-05-03 14:20:44 -03:00
pow.cpp doc: clarify that testnet min-difficulty is not optional 2025-03-19 08:59:08 +01:00
pow.h consensus: add DeriveTarget() to pow.h 2025-01-22 11:29:05 +01:00
prevector.h prevector: avoid GCC bogus warnings in insert method 2024-09-11 17:41:26 +02:00
protocol.cpp scripted-diff: get rid of remaining "command" terminology in protocol.{h,cpp} 2024-10-26 23:44:15 +02:00
protocol.h scripted-diff: get rid of remaining "command" terminology in protocol.{h,cpp} 2024-10-26 23:44:15 +02:00
psbt.cpp scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
psbt.h scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
pubkey.cpp scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
pubkey.h scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
random.cpp scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
random.h Merge bitcoin/bitcoin#31519: refactor: Use std::span over Span 2025-03-20 13:41:54 +08:00
randomenv.cpp refactor: modernize remaining outdated trait patterns 2025-02-21 10:43:41 +01:00
randomenv.h
rest.cpp Merge bitcoin/bitcoin#31583: rpc: add target to getmininginfo field and show next block info 2025-01-22 15:01:23 -05:00
rest.h
scheduler.cpp scripted-diff: Rename SingleThreadedSchedulerClient to SerialTaskRunner 2024-02-15 14:43:14 +01:00
scheduler.h kernel: Remove dependency on CScheduler 2024-02-16 17:12:52 +01:00
serialize.h Merge bitcoin/bitcoin#31519: refactor: Use std::span over Span 2025-03-20 13:41:54 +08:00
signet.cpp scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
signet.h
span.h scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
streams.cpp scripted-diff: Use std::span over Span 2025-03-12 19:45:37 +01:00
streams.h scripted-diff: Bump copyright headers after std::span changes 2025-03-12 19:46:54 +01:00
sync.cpp scripted-diff: modernize outdated trait patterns - values 2025-02-21 10:43:01 +01:00
sync.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
threadsafety.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00
tinyformat.h refactor: Introduce struct to hold a runtime format string 2025-01-15 12:16:08 +01:00
torcontrol.cpp torcontrol: Add comment explaining Proxy credential randomization for Tor privacy 2025-03-31 21:14:08 +08:00
torcontrol.h net, init: derive default onion port if a user specified a -port 2024-11-14 13:41:02 -05:00
txdb.cpp refactor: Rely on returned value of GetCoin instead of parameter 2024-09-18 20:03:47 +02:00
txdb.h kernel: Move default cache constants to caches 2025-01-15 15:44:55 +01:00
txgraph.cpp Get*Union: disallow nulltpr Refs 2025-03-31 13:07:37 -04:00
txgraph.h Get*Union: disallow nulltpr Refs 2025-03-31 13:07:37 -04:00
txmempool.cpp txmempool: fix typos in comments 2024-12-31 00:04:20 -03:00
txmempool.h txmempool: fix typos in comments 2024-12-31 00:04:20 -03:00
txorphanage.cpp [fuzz] TxOrphanage::SanityCheck accounting 2025-02-07 13:55:57 -05:00
txorphanage.h [fuzz] TxOrphanage::SanityCheck accounting 2025-02-07 13:55:57 -05:00
txrequest.cpp [refactor] make GetCandidatePeers take uint256 and in-out vector 2025-01-29 18:05:16 -05:00
txrequest.h doc: txrequest: point to past censorship vulnerability in tx re-request handling 2025-02-12 15:10:28 -05:00
uint256.cpp scripted-diff: Rename SetHex to SetHexDeprecated 2024-07-24 09:15:34 +02:00
uint256.h scripted-diff: Use std::span over Span 2025-03-12 19:45:37 +01:00
undo.h Include version.h in fewer places 2023-11-16 11:36:22 +10:00
validation.cpp Merge bitcoin/bitcoin#30538: Doc: add a comment referencing past vulnerability next to where it was fixed 2025-03-23 11:12:33 -04:00
validation.h refactor: Replace uint256 type with Wtxid in PackageMempoolAcceptResult struct 2025-03-11 16:00:54 +00:00
validationinterface.cpp refactor: include the proper header rather than forward-declaring RemovalReasonToString 2024-10-08 15:25:47 +00:00
validationinterface.h [refactor] change ActiveTipChange to use CBlockIndex ref instead of ptr 2024-07-25 11:01:22 +01:00
versionbits.cpp
versionbits.h
walletinitinterface.h tidy: modernize-use-equals-default 2024-07-08 11:12:01 +02:00