Repository navigation
backport: v0.26 bitcoin#26177 - #64
DCG-Claude wants to merge 1 commit into
Conversation
Potential PR merge conflictsThis is advisory only. It does not block CI, but it marks PRs that will likely need a rebase depending on merge order. If this PR merges firstThese open PRs will likely need a rebase:
If these PRs merge firstThis PR will likely need a rebase:
|
|
This pull request has conflicts, please rebase. |
These errors require consensus/params.h to be missing or half-included when versionbits.h is parsed, but versionbits.h includes chain.h which includes consensus/params.h before anything else, there is no include cycle or duplicated guard reaching it, and none of the six commits touches chain.h, versionbits.h, deploymentstatus.h or consensus/params.h; every other job compiling the same TUs passed. The nowallet excerpt shows only container teardown, no compile error, so this looks like a stale/incomplete build tree in those two containers rather than branch breakage — please rerun. 🤖 backportsys, on behalf of the Dash backport pipeline. |
f84f3e0 to
8701881
Compare
8701881 to
5728326
Compare
Added node/database_args.cpp to libdashkernel_la_SOURCES (build-system file): bitcoin#25862 makes index/base.cpp call node::ReadDatabaseArgs, and unlike upstream — which had removed index/*.cpp from libbitcoinkernel in f100687 before this PR — Dash's kernel library still compiles index/base.cpp, so the symbol was undefined in libdashkernel.so (nowallet/multiprocess link error). The multiprocess job's versionbits.h errors cannot come from this tree (versionbits.h includes chain.h which includes consensus/params.h, and nothing reachable from consensus/params.h includes versionbits.h, so no cycle exists); that looks like a stale incremental/ccache artifact and should clear on rerun once the link error is gone. (folded into the 🤖 backportsys, on behalf of the Dash backport pipeline. |
The failing headers (versionbits.h, deploymentstatus.h, chain.h, consensus/params.h) are untouched by every commit in this batch, and the reported errors require consensus/params.h to be skipped — impossible here, since chain.h includes it unconditionally and its own includes (uint256.h, llmq/params.h) form no cycle and no duplicate include guard exists. All files added by the batch are listed in src/Makefile.am, so the distdir build used by CI is complete. This looks like a stale/mutated workspace in the RUN_TIDY multiprocess job (its lint path rewrites includes in place with fix_includes.py --nosafe_headers); please rerun. 🤖 backportsys, on behalf of the Dash backport pipeline. |
|
This pull request has conflicts, please rebase. |
5728326 to
3c85826
Compare
|
Branch rewritten at
🤖 backportsys, on behalf of the Dash backport pipeline. |
|
This pull request has conflicts, please rebase. |
The errors are in versionbits.h and deploymentstatus.h, where consensus/params.h is only half-read (Consensus::DeploymentPos missing, Consensus::Params incomplete). No commit in this batch touches those headers, chain.h or consensus/params.h, and none of the includes the batch added forms a loop back to them. Only the aarch64 multiprocess/tidy job reports it, so it looks environment-specific rather than caused by this backport, and a rerun should confirm; I couldn't get the full log to see which file failed, so if it happens again that log is what to check. 🤖 backportsys, on behalf of the Dash backport pipeline. |
None of the five backports touch the headers the errors point at (consensus/params.h, chain.h, versionbits.h, deploymentstatus.h), and with the files as they are these errors can't happen: chain.h includes consensus/params.h second, and consensus/params.h only pulls in uint256.h and llmq/params.h, so there is no include cycle that could leave Consensus::DeploymentPos or Params undefined. Errors saying the Consensus namespace exists but its contents don't mean the arm64 runner read a missing or truncated consensus/params.h (a damaged checkout, dist copy or ccache), which is a problem with the build environment, not this branch. I couldn't rebuild locally to confirm, so please rerun the job; if it fails the same way again, the full log naming the failing file would show where to look next. 🤖 backportsys, on behalf of the Dash backport pipeline. |
The quoted log is cut off before it names the file that failed. The errors are in versionbits.h and deploymentstatus.h, which this branch does not change, and every missing symbol (MAX_VERSION_BITS_DEPLOYMENTS, DeploymentPos, BuriedDeployment, ValidDeployment, the full Consensus::Params) is still defined in src/consensus/params.h, which is also unchanged and reached through chain.h in both headers. I checked every header this batch changed or added (validation.h, kernel/chainparams.h, kernel/_opts.h, txdb.h, dbwrapper.h, node/_args.h) and found no include cycle, header-guard clash or dropped include, so I made no change. Please rerun, or send the full compile error ('In file included from' chain and file name) so I can place a fix in the right commit if the branch is at fault. 🤖 backportsys, on behalf of the Dash backport pipeline. |
3c85826 to
97877ba
Compare
|
Branch rewritten at
🤖 backportsys, on behalf of the Dash backport pipeline. |
I tried a fix but it failed local gates in bitcoin#25862 (verify: Upstream never touches this file and no upstream rename or signature change reaches it. The earlier reviewed backport (6546516) lacked it and the commit message doesn't explain it. chain.h already includes consensus/params.h, and the dependent objects compile without the line.; Same as above: an unexplained edit to a file upstream never touched. It isn't needed to compile (verified by removing ). bitcoin#25862 has had its repair lane and is being dropped from this branch. 🤖 backportsys, on behalf of the Dash backport pipeline. |
97877ba to
ddab1be
Compare
|
Branch rewritten at
🤖 backportsys, on behalf of the Dash backport pipeline. |
|
This pull request has conflicts, please rebase. |
ddab1be to
0654da0
Compare
The CI IWYU step rewrites chain.h to forward-declare Consensus::Params instead of including consensus/params.h. versionbits.h relied on that transitive include for DeploymentPos/MAX_VERSION_BITS_DEPLOYMENTS, and bitcoin#26177's validation.h reorder (kernel/chainparams.h now after deploymentstatus.h) stopped hiding it. Added the missing #include <consensus/params.h> to versionbits.h; I reproduced the failure locally with the IWYU-edited chain.h and it is gone with the fix. (folded into the 🤖 backportsys, on behalf of the Dash backport pipeline. |
0654da0 to
8c6e8c4
Compare
|
Branch rewritten at
🤖 backportsys, on behalf of the Dash backport pipeline. |
|
This pull request has conflicts, please rebase. |
8c6e8c4 to
f36ceda
Compare
f36ceda to
9ab1778
Compare
|
This pull request has conflicts, please rebase. |
9ab1778 to
57982c0
Compare
…nctionality to kernel b3e78dc refactor: Don't use global chainparams in chainstatemanager method (TheCharlatan) 382b692 Split non/kernel chainparams (Carl Dong) edabbc7 Add factory functions for Main/Test/Sig/Reg chainparams (Carl Dong) d938098 Remove UpdateVersionBitsParameters (Carl Dong) 84b8578 Decouple RegTestChainParams from ArgsManager (Carl Dong) 76cd4e7 Decouple SigNetChainParams from ArgsManager (Carl Dong) Pull request description: This pull request is part of the `libbitcoinkernel` project bitcoin#24303 https://github.com/bitcoin/bitcoin/projects/18 and more specifically its "Step 2: Decouple most non-consensus code from libbitcoinkernel". dongcarl is the original author of this patchset, these commits were taken from https://github.com/dongcarl/bitcoin/tree/2022-03-libbitcoinkernel-chainparams-args-only. #### Context The bitcoin kernel library currently relies on code containing user configurations through the `ArgsManager`. This is not optimal, since as a stand-alone library it should not rely on bitcoind's argument parsing logic. Instead, its interfaces should accept control and options structs that control the kernel library's desired configuration. Similar work towards decoupling the `ArgsManager` from the kernel has been done in bitcoin#25290, bitcoin#25487, bitcoin#25527 and bitcoin#25862. #### Changes By moving the `CChainParams` class definition into the kernel and giving it new factory functions `CChainParams::{RegTest,SigNet,Main,TestNet}`it can be constructed without an `ArgsManager` reference, unlike the current factory function `CreateChainParams`. The first few commits remove uses of `ArgsManager` within `CChainParams`. Then the `CChainParams` definition is moved to a new file in the `kernel/` subdirectory. ACKs for top commit: MarcoFalke: re-ACK b3e78dc 🛁 ryanofsky: Code review ACK b3e78dc. Only changes since last review were recent review suggestions. ajtowns: ACK b3e78dc Tree-SHA512: 3835aca1d3e3c75cc3303dd584bab3a77e58f6c678724a5e359fe4b0e17e0763a00931ee6191f516b9fde50496f59cc691f0709c0254206db3863bbf7ab2cacd Dash adaptations: - src/kernel/chainparams.{h,cpp}: the moved CChainParams is Dash's, not Bitcoin's (the cherry-pick had created verbatim upstream files; both were rewritten). All Dash accessors and fields are kept: DevNetGenesisBlock, GetDefaultPlatformP2PPort/HTTPPort, RequireRoutableExternalIP, AllowMultipleAddressesFromGroup, LLMQConnectionRetryTimeout, Bech32PlatformHRP, ExtCoinType, IsValidMNActivation, PoolMin/MaxParticipants, FulfilledRequestExpireTime, SporkAddress, CreditPoolPeriodBlocks, GetLLMQ/AddLLMQ, UpdateDIP3/DIP8/Budget/LLMQInstantSend declarations. - src/kernel/chainparams.{h,cpp}: Dash has a fourth network, so a fourth factory CChainParams::DevNet(const DevNetOptions&) was added alongside Main()/TestNet()/RegTest(opts), mirroring upstream's pattern. - src/kernel/chainparams.h: CChainParams::VersionBitsParameters carries Dash's extra -vbparams fields (window_size, threshold_start, threshold_min, falloff_coeff, use_ehf) with the existing -1 "leave unchanged" sentinel, so -vbparams semantics are unchanged. - src/kernel/chainparams.h: RegTestOptions is extended with Dash-only entries (dip3_parameters, budget_parameters, llmq_test_parameters, llmq_dip0024_instantsend) and DevNetOptions carries name, minimum_difficulty_blocks, high_subsidy_blocks, high_subsidy_factor, pow_target_spacing, llmq_chainlocks, llmq_dip0024_instantsend, llmq_platform, llmq_mnhf, llmq_devnet_parameters, plus helper structs LLMQParameters/DIP3Parameters/BudgetParameters. - LLMQ overrides travel as quorum *names* (strings) in the options structs: resolving a name to a Consensus::LLMQType needs the per-chain consensus.llmqs list, which only exists inside the kernel constructors. The lookup loops, the rotation checks and the exact error strings/LogPrintf messages of the old Update*FromArgs functions are preserved, just moved into the kernel side. - src/kernel/chainparams.cpp: FindDevNetGenesisBlock()/CDevNetParams no longer call gArgs.GetDevNetName(); the devnet name arrives via DevNetOptions::name (filled by ReadDevNetArgs from args.GetDevNetName()), which is what keeps the kernel gArgs-free. - src/kernel/chainparams.cpp: CRegTestParams::UpdateActivationParameters switches exhaustively over Dash's 15 Consensus::BuriedDeployment values (no -Wswitch warning); DEPLOYMENT_DIP0024 sets both DIP0024Height and DIP0024QuorumsHeight, exactly as the old name-based if/else did. DEPLOYMENT_DIP0003/DIP0020/WITHDRAWALS are unreachable because GetBuriedDeployment does not map any -testactivationheight name to them, matching current behaviour. - src/deploymentinfo.cpp: GetBuriedDeployment() was auto-applied with Bitcoin's names and returned DEPLOYMENT_SEGWIT, which does not exist in Dash. Rewritten to the exact set of names -testactivationheight accepted before (bip147, bip34, dersig, cltv, csv, brr, dip0001, dip0008, dip0024, v19, v20, mn_rr); no name was added or removed. - src/chainparams.cpp: Dash's arg readers keep their existing decomposition as file-static helpers (ReadRegTestActivationArgs/DIP3/Budget/LLMQTest/LLMQInstantSendDIP0024, ReadDevNetSubsidyAndDiffArgs/PowTargetSpacing/LLMQDevnetParams) called from ReadRegTestArgs()/ReadDevNetArgs(). Merging them into one function was not possible verbatim because each body ends with an early `if (!args.IsArgSet(...)) return;`. - src/chainparams.cpp: ReadDevNetSubsidyAndDiffArgs applies -minimumdifficultyblocks/-highsubsidyblocks/-highsubsidyfactor as independent optionals and therefore logs three separate lines instead of the single combined LogPrintf; net effect on consensus is identical (unset values keep the chain defaults, which are no longer visible from the arg reader). - src/chainparams.cpp: CreateChainParams dispatches MAIN/TESTNET/DEVNET/REGTEST; the DEVNET branch uses the new ReadDevNetArgs + CChainParams::DevNet(opts). Include list and SetupChainParamsOptions() are untouched, as upstream left them untouched. - src/validation.h: added <deploymentstatus.h>, <kernel/chainparams.h>, <kernel/chainstatemanager_opts.h>, <node/blockstorage.h>. Upstream's <fs.h> and <kernel/cs_main.h> were not added: Dash uses util/fs.h and does not have that include in this block. Not applicable to Dash (intentionally omitted): - src/kernel/chainparams.cpp: Upstream's SigNetParams class body, CChainParams::SigNet() factory and the signet challenge/seed handling moved into the kernel file; Dash has no signet chain, so there is no counterpart to move. Dash's own CMainParams/CTestNetParams/CDevNetParams/CRegTestParams (with all DIP/LLMQ/masternode/governance/spork parameters) were moved instead. (reviewer: not for Dash) - src/kernel/chainparams.h: Upstream's SigNetOptions struct (challenge/seeds) and the static SigNet() declaration; no signet in Dash. Dash instead declares VersionBitsParameters (extended with window/threshold/falloff/useEHF), LLMQParameters, DIP3Parameters, BudgetParameters, DevNetOptions and RegTestOptions. (reviewer: not for Dash) - src/chainparams.cpp: ReadSigNetArgs() and the CBaseChainParams::SIGNET branch of CreateChainParams(); Dash has no signet. Dash adds ReadDevNetArgs()/the DEVNET branch in the same shape. (reviewer: not for Dash) - src/deploymentinfo.cpp: GetBuriedDeployment() returning Consensus::DEPLOYMENT_SEGWIT for name "segwit"; Dash has no segwit buried deployment. The Dash function covers exactly the 12 names the previous MaybeUpdateHeights() accepted (bip147, bip34, dersig, cltv, csv, brr, dip0001, dip0008, dip0024, v19, v20, mn_rr). (reviewer: not for Dash) - src/kernel/chainparams.cpp: Upstream's segwit/taproot consensus fields, script_flag_exceptions maps and bech32_hrp carried in the moved Bitcoin chain classes; Dash's classes have no such fields (Dash keeps bech32_platform_hrp, nExtCoinType, EvoSnapshotHash etc., all of which were moved). (reviewer: not for Dash) Replayed onto a newer base. Dash adaptations: - src/kernel/chainparams.h: EvoSnapshotHash struct and AssumeutxoData::evo_hash (added to src/chainparams.h on the new develop base) travel with the class into the kernel header, so develop's Dash evo-snapshot field is preserved. - src/kernel/chainparams.cpp: FindDevNetGenesisBlock() and CChainParams::AddLLMQ() use develop's LogError("...\n", ...) instead of the base's error(...) — the new base replaced error() in these two Dash-only helpers before they were moved. - src/kernel/chainparams.cpp: the two CRegTestParams m_assumeutxo_data entries carry develop's third aggregate member, EvoSnapshotHash{uint256{}}, between AssumeutxoHash and nChainTx. - src/chainparams.cpp: develop's '2009-2022 The Bitcoin Core developers' copyright line kept rather than the pre-rebase 2009-2021. - src/validation.h: upstream's kernel/chainparams.h + kernel/chainstatemanager_opts.h are inserted in sorted position alongside develop's new <kernel/cs_main.h> // IWYU pragma: export, which did not exist at the prior base. Upstream's <fs.h> is still not added: Dash uses util/fs.h. - src/wallet/test/wallet_tests.cpp: the prior backport added #include <chainparams.h> to wallet/test/availablecoins_tests.cpp (needed because validation.h no longer re-exports Params()); the new base deleted that file and moved the Dash-only UTXO tests into wallet_tests.cpp, so the include was applied there instead — that file calls Params().GetConsensus().DIP0003Height. - src/wallet/test/availablecoins_tests.cpp: deleted, following the new base (bitcoin#25789 + the Dash-only test move); the file's only backport hunk was the include described above. - src/kernel/chainparams.{h,cpp} content (Dash CChainParams instead of Bitcoin's, fourth DevNet() factory, Dash-extended VersionBitsParameters/RegTestOptions/DevNetOptions, name-based LLMQ override resolution, gArgs-free devnet name via DevNetOptions::name, Dash-specific GetBuriedDeployment names) is unchanged from the reviewed prior backport; see the prior commit body for the full rationale. Not applicable to Dash (intentionally omitted): - src/kernel/chainparams.cpp: Upstream's CSigNetParams / SigNetOptions / CChainParams::SigNet() and the ReadSigNetArgs reader: Dash has no signet chain, so there is no counterpart to move. - src/kernel/chainparams.h: Upstream's SigNetOptions struct and the signet challenge/seed members: no signet in Dash. - src/kernel/chainparams.cpp: Upstream's segwit/taproot chain fields and script_flag_exceptions maps do not exist in Dash; Dash's own chain classes (including DIP/LLMQ/masternode/governance/spork parameters) were moved instead. - src/deploymentinfo.cpp: Upstream's GetBuriedDeployment() returns Consensus::DEPLOYMENT_SEGWIT, which does not exist in Dash; the function was written over the exact set of names -testactivationheight already accepted (bip147, bip34, dersig, cltv, csv, brr, dip0001, dip0008, dip0024, v19, v20, mn_rr). Replayed onto a newer base. Dash adaptations: - src/chainparams.cpp: conflict resolved to the prior reviewed backport's content (verified identical to merge stage :3); the Dash CreateGenesisBlock/CreateDevNetGenesisBlock/FindDevNetGenesisBlock helpers, IsValidMNActivation, AddLLMQ/GetLLMQ and the CMain/CTestNet/CDevNet/CRegTest classes move to src/kernel/chainparams.cpp, leaving only the gArgs-reading Read*Args helpers behind - src/chainparams.h: conflict resolved to the prior reviewed backport's content; the Dash-extended CChainParams (platform ports, devnet genesis, LLMQ/spork/CoinJoin/credit-pool accessors, EvoSnapshotHash in AssumeutxoData) moves to src/kernel/chainparams.h, which this header now includes - src/kernel/chainparams.h: dropped RequireStandard()/fRequireStandard from the moved class — the new base already removed them from CChainParams via bitcoin#28354 (default acceptnonstdtxn=0 on all chains), which was not yet in the prior backport's base - src/kernel/chainparams.cpp: dropped the four fRequireStandard assignments (main/testnet/devnet/regtest) for the same reason - upstream ReadSigNetArgs has no Dash counterpart (no signet); the prior backport instead routes Dash's devnet through ReadDevNetArgs()/CChainParams::DevNet(DevNetOptions) and keeps the Dash-only -dip3params/-budgetparams/-llmqtest*/-llmqdevnetparams/-powtargetspacing readers as RegTest/DevNet option readers - upstream's flat ReadRegTestArgs is split into ReadRegTest{Activation,DIP3,Budget,LLMQTest,LLMQInstantSendDIP0024}Args because Dash's -vbparams accepts 3/4/6/9 fields (window, thresholdstart, thresholdmin, falloffcoeff, useehf) and regtest has several more Dash-only overrides Replayed onto a newer base. Dash adaptations: - src/chainparams.cpp: took the upstream side of the conflict, which removes the network classes (now in kernel/chainparams.cpp) and keeps the gArgs readers (ReadRegTestArgs/ReadDevNetArgs, CreateChainParams, SelectParams, SetupChainParamsOptions); matches the upstream stage and the previously reviewed prior.diff - src/kernel/chainparams.cpp: carried develop's CTestNetParams DEPLOYMENT_V24 nStartTime = 1790208000 (Thursday, September 24, 2026) into the moved testnet class; the old base had NEVER_ACTIVE, and this was the only change to src/chainparams.cpp between the old and new base Replayed onto a newer base. Dash adaptations: - src/bitcoin-chainstate.cpp: the ChainstateManager::Options initializer has no `.datadir = gArgs.GetDataDirNet(),` line because the new develop base's kernel::ChainstateManagerOpts has no `datadir` member (the prior base had one). Upstream only uses that line as context, so the upstream change `.chainparams = chainparams` -> `.chainparams = *chainparams` is applied alone. - All other staged files carry forward the published prior backport unchanged; their Dash adaptations (Makefile.am kernel/chainparams.cpp in libbitcoin_common and libdashkernel, added <chainparams.h> includes in Dash-only files such as active/dkgsession.cpp, chainlock/signing.cpp, instantsend/net_instantsend.cpp, qt/test/providertransactiontests.cpp and Dash tests, and the Dash CChainParams move into kernel/chainparams.cpp) are the same as in prior.diff Replayed onto a newer base. Dash adaptations: - src/chainparams.cpp: restored exactly the published resolution from prior.diff (checked by comparing its +/- lines with prior.diff: identical). Only the class bodies differ on the new base, and they move to kernel, so no line here changed. - src/kernel/chainparams.cpp: DEPLOYMENT_V24 .bit changed from 12 to 13 in CMainParams, CTestNetParams, CDevNetParams and CRegTestParams, carrying develop commit 1be3ac2 over to the moved classes. Without this the move would quietly undo the bit change. - All other staged files (Makefile.am, chainparams.h, deploymentinfo.{h,cpp}, validation.{h,cpp}, versionbits.h, node/blockstorage.cpp, node/mempool_args.cpp, bitcoin-chainstate.cpp, kernel/chainparams.h, and the Dash-only call sites active/dkgsession.cpp, chainlock/signing.cpp, instantsend/net_instantsend.cpp, qt/test/*, test/bls_tests.cpp, test/evo_islock_tests.cpp, test/llmq_chainlock_tests.cpp, test/validation_tests.cpp, wallet/test/wallet_tests.cpp) are unchanged from the published prior.diff, including its Dash adaptations: DevNetOptions/RegTestOptions for the LLMQ, DIP3, budget and devnet overrides, GetBuriedDeployment covering Dash's buried deployments, and the <chainparams.h> include fixes at call sites. Replayed onto a newer base. Dash adaptations: - src/validation.cpp: include conflict with the new base, which added #include <kernel/disconnected_transactions.h> where this backport adds #include <kernel/chainparams.h>; kept both, sorted alphabetically - src/active/dkgsession.cpp, src/chainlock/signing.cpp, src/instantsend/net_instantsend.cpp, src/qt/test/providertransactiontests.cpp, src/qt/test/wallettests.cpp, src/test/bls_tests.cpp, src/test/evo_islock_tests.cpp, src/test/llmq_chainlock_tests.cpp, src/test/validation_tests.cpp: (kept from the published backport) these Dash files now include <chainparams.h> directly, because validation.h includes <kernel/chainparams.h> instead of <chainparams.h> and so no longer pulls in Params() - src/chainparams.cpp, src/chainparams.h, src/kernel/chainparams.cpp, src/kernel/chainparams.h, src/deploymentinfo.*, src/versionbits.h, src/bitcoin-chainstate.cpp, src/node/*, src/validation.h, src/Makefile.am, src/wallet/test/wallet_tests.cpp: (kept from the published backport) carried over unchanged, including the Dash chain parameters, LLMQ and other Dash-specific fields moved into kernel/chainparams, and all earlier review fixes Replayed onto a newer base. Dash adaptations: - src/chainparams.cpp: took the prior backport's version unchanged (it matches blob 8d5a119, the prior post-image). On the HEAD side, the only change since the prior base (15db478) was dashpay#7807's DEPLOYMENT_EVO_SHARES blocks in the network classes, and this PR moves those classes out of the file - src/kernel/chainparams.cpp: added dashpay#7807's DEPLOYMENT_EVO_SHARES settings (bit 14, start/timeout, window, thresholds, falloff, useEHF) right after the DEPLOYMENT_V24 block in CMainParams, CTestNetParams, CDevNetParams and CRegTestParams, word for word, including mainnet's NEVER_ACTIVE/TODO start time. This keeps dashpay#7807's settings now that the class definitions live in kernel/chainparams.cpp - Carried over from the prior reviewed backport unchanged: Dash-only call sites (src/active/dkgsession.cpp, src/chainlock/signing.cpp, src/instantsend/net_instantsend.cpp, src/qt/test/providertransactiontests.cpp, src/qt/test/wallettests.cpp, src/test/bls_tests.cpp, src/test/evo_islock_tests.cpp, src/test/llmq_chainlock_tests.cpp, src/test/validation_tests.cpp, src/wallet/test/wallet_tests.cpp, src/versionbits.h) and the Dash devnet/LLMQ/EHF parts of src/kernel/chainparams.{h,cpp} and src/chainparams.{h,cpp}
57982c0 to
e4d54cd
Compare
Automated Bitcoin Core v0.26 backports, batch
backport-0.26-b041-src.e4d54cd729Skipped in this batch:
bitfield description gains '(only for "started" status)'. Dash already has this PR. RunProvenance
Each commit passed: cherry-pick (adapted by an Opus lane only where conflicts existed), build, touched tests, a mechanical diff-of-diffs check (every upstream hunk landed; no added line without an upstream counterpart), and an independent Opus verification lane where anything was adapted. Gate rows and lane artifacts are in the backportsys DB.