Skip to content

Port Qtum to core 30.2#1052

Open
timemarkovqtum wants to merge 2222 commits into
masterfrom
time/core30
Open

Port Qtum to core 30.2#1052
timemarkovqtum wants to merge 2222 commits into
masterfrom
time/core30

Conversation

@timemarkovqtum
Copy link
Copy Markdown
Contributor

The code contain updates from Bitcoin 30.2.

The python tests for Qtum are not fixed, so some of them failed.
The legacy wallet support is removed in Bitcoin 30.2, so some of RPCs used in the python tests are no longer available like: dumpprivkey

MarcoFalke and others added 30 commits September 7, 2025 11:33
The index originally stored cumulative values in a CAmount type but this allowed for
potential overflow issues which were observed on Signet. Fix this by
storing the values that are in danger of overflowing in a arith_uint256.

Also turns an unnecessary copy into a reference in RevertBlock and
CustomAppend and gets
rid of the explicit total unspendable tracking which can be calculated
by adding the four categories of unspendables together.
This is practically irrelevant due to the unlikeliness of a re-org
reaching so deep that it would drop the BIP30 blocks from the chain
(91842 and 91880). However this serves as documentation and ensures that
the functions RevertBlock and CustomAppend are consistent.
The coinstatsindex currently looks for block data at a hash key if the prev block in CustomAppend is different than expected. This is not needed since base index should always prevent us ending up in this scenario since it should rewind the index before calling CustomAppend in this case. But even if we run into this and our belt-and-suspenders code is getting hit, the index could not recover properly from the hash key index data so it can be removed without any real impact.
The std::move in coinstatsindex was not necessary since it was passed as a const reference argument.

The other change in the utxo supply fuzz test changes a line that seems to have triggered a false alarm.
…e build and logs

a334bbe Squashed 'src/ipc/libmultiprocess/' changes from 1b8d4a6f1e54..13424cf2ecc1 (Ryan Ofsky)

Pull request description:

  Includes:

  - bitcoin-core/libmultiprocess#197
  - bitcoin-core/libmultiprocess#202
  - bitcoin-core/libmultiprocess#203
  - bitcoin-core/libmultiprocess#200
  - bitcoin-core/libmultiprocess#205

  These changes should give better feedback when there are build errors, and also make IPC logs more readable.

  The changes can be verified by running `test/lint/git-subtree-check.sh src/ipc/libmultiprocess` as described in [developer notes](https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#subtrees) and [lint instructions](https://github.com/bitcoin/bitcoin/tree/master/test/lint#git-subtree-checksh)

ACKs for top commit:
  Sjors:
    ACK a4ee70e

Tree-SHA512: ddddd0ed44522ade98a5b94f44b57210794d64f8c378a00438082b8c377f41e9b86c0c5ed29add45472549758f7478ab220af8e268b90b30f57a236c639497d3
Without this interrupt bitcoind takes a long time to exit if requested
to do so after a failed pcp lookup on startup.
9396789 contrib: update fixed seeds (fanquake)
6cdd8ee contrib: update makeseeds minblocks (fanquake)
b8da9f4 contrib: update makeseeds UA regex (fanquake)

Pull request description:

  Update the fixed seeds pre 30 branch off.

ACKs for top commit:
  dergoegge:
    ACK 9396789
  marcofleon:
    ACK 9396789

Tree-SHA512: 7488f895a9c5a5fc115dd9fffced6e4846a238feef30a70795e189e4167404286e4142d93f91b62e0c765fb798bbbfb09c7b8194e8bdac1b480b230c58b66044
…ch off

905c1a7 doc: move release notes to wiki pre branch off (fanquake)

Pull request description:

  See https://github.com/bitcoin-core/bitcoin-devwiki/wiki/v30.0-Release-Notes-Draft.

ACKs for top commit:
  janb84:
    ACK 905c1a7
  willcl-ark:
    ACK 905c1a7

Tree-SHA512: c883ca135e61e28891ac088b53da299ff2031a11db5c5805ba3fadba2e6bd7b9c68d7ab27e6439e3885604d623bef5c87206ce05826af3a58265d06205464782
a2a35b5 doc: fix LIBRARY_PATH comment (fanquake)

Pull request description:

  Now that we build capnp, qt isn't the only native package.

ACKs for top commit:
  l0rinc:
    code review ACK a2a35b5
  willcl-ark:
    ACK a2a35b5

Tree-SHA512: 7b4a54b53b4c673e31dea011e569c6ef9e7238a56a7f09c7f5a7bc521fb0ffdda3794f2b65764908005333a30f7c8c7b4d6b45d985bc92a70dc2daf8c3d1ff3d
31679 moved some internal binaries to libexec/, but the Guix build
wasn't updated to stip these binaries of their debug symbols.
The `SHA256AutoDetect` return output is used, among other use cases, to
name benchmarks. Using a comma breaks the CSV output.

This change replaces the comma with a semicolon, which fixes the issue.
…atorResult` check in `src/ipc`

589b65f clang-tidy: Disable `UndefinedBinaryOperatorResult` check in `src/ipc` (Hennadii Stepanov)

Pull request description:

  The warnings are false positive and have been fixed upstream. See: capnproto/capnproto#2334.

  This PR:

  1. Disables the `UndefinedBinaryOperatorResult` clang-tidy check for source files generated by the `mpgen` tool.

  2. Is an alternative to the draft bitcoin/bitcoin#33281.

  3. Fixes bitcoin/bitcoin#33256.

ACKs for top commit:
  Sjors:
    ACK 589b65f
  fjahr:
    ACK 589b65f
  achow101:
    ACK 589b65f
  ryanofsky:
    Code review ACK 589b65f. Thanks for the fix!

Tree-SHA512: 6d376a82641a5b85d4dd1fa164fdcbd8e15f1262e7d4f582f4d9959031d35852e28ff1b8268336e39ba6779fdd10ecdb986af42407d0545f4217f41d64556272
188de70 net: Add interrupt to pcp retry loop (TheCharlatan)

Pull request description:

  Without this interrupt bitcoind takes a long time to exit if requested to do so after a failed pcp lookup on startup.

ACKs for top commit:
  achow101:
    ACK 188de70
  fjahr:
    utACK 188de70
  hodlinator:
    utACK 188de70

Tree-SHA512: 426dabd10ac0ef5de246c83d281ba70957e4032d251054aa6028b4d7ce4e35cd35ac70e67dc07bd418673bcdd2f4457b76f174ac5e7d0dd3caa05de5da952dac
Previously in debug builds, this would cause an Assume crash if
FillBlock had been called previously. This could happen when multiple
blocktxn messages were received.

Co-Authored-By: Greg Sanders <gsanders87@gmail.com>
Add test_multiple_blocktxn_response that checks that the peer is
disconnected.
c767974 clang-tidy: Fix critical warnings (Fabian Jahr)
54dc34e index: Remove unused coinstatsindex recovery code (Fabian Jahr)
37c4fba index: Check BIP30 blocks when rewinding Coinstatsindex (Fabian Jahr)
51df9de doc: Add release note for 30469 (Fabian Jahr)
bb8d673 test: Add coinstatsindex compatibility test (Fabian Jahr)
b2e8b64 index, refactor: Append blocks to coinstatsindex without db read (Fabian Jahr)
431a076 index: Fix coinstatsindex overflow issue (Fabian Jahr)
84e813a index, refactor: DRY coinbase check (Fabian Jahr)
fab842b index, refactor: Rename ReverseBlock to RevertBlock (Fabian Jahr)

Pull request description:

  Closes bitcoin/bitcoin#26362

  This continues the work that was started with #26426. It fixes the overflow issue by switching the tracked values that are in danger of overflowing from `CAmount` to `arith_uint256`.

  The current approach opts for a simple solution to ensure compatibility with datadirs including the previous version of the index: The new version of the index goes into a separate location in the datadir (`index/coinstatsindex/` rather than `index/coinstats/` before, the new naming is more consistent with the naming of the other indexes). There is no explicit concept of versioning of the index which earlier versions of this PR had. Having the two different versions of the index in separate places allows for downgrading of the node without having to rebuild the index. However, there will be a warning printed in the logs if the new code (v30) detects the old index still being present. A future version could delete a left-over legacy index automatically.

  The PR also includes several minor improvements but most notably it lets new entries be calculated and stored without needing to read any DB records.

ACKs for top commit:
  achow101:
    ACK c767974
  TheCharlatan:
    ACK c767974
  mzumsande:
    Tested / Code Review ACK c767974

Tree-SHA512: 3fa4a19dd1a01c1b01390247bc9daa6871eece7c1899eac976e0cc21ede09c79c65f758d14daafc46a43c4ddd7055c85fb28ff03029132d48936b248639c6ab9
…ng FillBlock

8b62647 test: send duplicate blocktxn message in p2p_compactblocks.py (Eugene Siegel)
5e585a0 net: check for empty header before calling FillBlock (Eugene Siegel)

Pull request description:

  This avoids an Assume crash if multiple blocktxn messages are received. The first call to `FillBlock` would make the header empty via `SetNull` and the call right before the second `FillBlock` would crash [here](https://github.com/bitcoin/bitcoin/blob/689a32197638e92995dd8eb071425715f5fdc3a4/src/net_processing.cpp#L3333) since `LookupBlockIndex` won't find anything. Fix that by checking for an empty header before the Assume.

ACKs for top commit:
  instagibbs:
    reACK bitcoin/bitcoin@8b62647
  fjahr:
    tACK 8b62647
  achow101:
    ACK 8b62647
  mzumsande:
    Code Review ACK 8b62647

Tree-SHA512: d43a6f652161d4f7e6137f207a3e95259fc51509279d20347b1698c91179c39c8fcb75d2668b13a6b220f478a03578573208a415804be1d8843acb057fa1a73a
3cceda9 guix: strip binaries in libexec (fanquake)

Pull request description:

  #31679 moved some internal binaries to `libexec/`, but the Guix build wasn't updated to stip these binaries of their debug symbols.

ACKs for top commit:
  achow101:
    ACK 3cceda9
  ryanofsky:
    Code review ACK 3cceda9. Good catch and thanks for the fix
  hebasto:
    ACK 3cceda9, I've checked Guix build outputs.

Tree-SHA512: 96ad57c2d3670a9ae8c58cdb428918d1dc0fa90014bb7c6fb7a7a68b3ece3fbea9c4fac90a626a005a0edb3cca8b6a33adc9a037fe6b915319387588ffe09e7b
790b440 Fix benchmark CSV output (Hennadii Stepanov)

Pull request description:

  The `SHA256AutoDetect` return output is used, among other use cases, to name benchmarks. Using a comma breaks the `bench_bitcoin` CSV output.

  This PR replaces the comma with a semicolon, which fixes bitcoin/bitcoin#33331.

ACKs for top commit:
  Raimo33:
    Code Review ACK 790b440
  l0rinc:
    Code review ACK 790b440
  janb84:
    code review ACK 790b440

Tree-SHA512: 096bfa29a0639a4d97d510a3e2a15f071f384148c3035e4d0fc525794682e499c45a0d0c95728d5c78010098393b2c486a7fa9c21c1e2fbb600dea7c5638a55f
5eeb2fa ci: reduce runner sizes on various jobs (will)

Pull request description:

  These jobs can likely use reduced runner sizes to avoid wasting our CPU quota, as much of the long-running part of the job is single-threaded.

  This will also give us more (job) parallelisem from the same number of CPU that we are using.

  Suggested in: bitcoin/bitcoin#32989 (comment)

ACKs for top commit:
  kevkevinpal:
    ACK [5eeb2fa](bitcoin/bitcoin@5eeb2fa)
  m3dwards:
    ACK 5eeb2fa
  janb84:
    ACK 5eeb2fa

Tree-SHA512: 6fb0352bc40623dd63b9bd6169d753d1ec9667c272445fda7a2db8bbedfa35350a51d08c1adf3fa5e070e84855c3f491668726d3c7ded07a39f2f9c63edacefc
fa8f081 ci: Checkout latest merged pulls (MarcoFalke)

Pull request description:

  Currently, the `actions/checkout@v5` checks out pull requests merged against master, which is what we want.

  However, it checks out ancient/stale merge commits on a re-run. This is documented (https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs):

  >  Re-run workflows [...] will also use the same GITHUB_SHA (commit SHA) and GITHUB_REF (git ref) of the original event that triggered the workflow run.

  For example:

  * https://github.com/bitcoin/bitcoin/actions/runs/17458152407/job/49579638898?pr=29641#step:9:914 compiles with IPC=ON, even though latest master is at ed2ff3c
  * bitcoin/bitcoin#32989 (comment) (example explained in comment)

  This is problematic, because:

  * Unrelated CI failures and intermittent issues, which are fixed or worked around in latest master can not be cleaned by re-running the task. The author has to actively go out and (force-)push the branch, invalidating review.
  * It is odd to have a recent CI run, but it uses code and config from the past.
  * Detecting silent merge conflicts by re-running the CI task is impossible.

  Fix all issues by checking out the latest merged state of the pull request. The behavior is unchanged for non-pull-request actions. This patch changes the "re-run" default behaviour. Forcing it to use the new state instead of running the old state again.

ACKs for top commit:
  janb84:
    re ACK fa8f081
  hebasto:
    ACK fa8f081.

Tree-SHA512: c22c6f837402f61ec46be46817473e1946424b5312e36ed0e246cadb1ca89c04163bb471f71c309765a3d327f198a83cd83679d231f03828a99a97562a622fdd
b320f5e qt: 30.0 translations update (Hennadii Stepanov)

Pull request description:

  This PR follows our [Release Process](https://github.com/bitcoin/bitcoin/blob/53a996f122663e271efa52c45b173613b8ac635e/doc/release-process.md) and concludes the translation-specific efforts for this release cycle. It follows two previous translation-related PRs, bitcoin/bitcoin#33152 and bitcoin/bitcoin#33193.

  It is one of the steps required _before_ branch-off, as scheduled in bitcoin/bitcoin#32275.

  A previous similar PR: bitcoin/bitcoin#32004.

  **Notes for reviewers:**
  1. The actual translations on Transifex is a moving target. As a result, your diff after running [`bitcoin-maintainer-tools/update-translations.py`](https://github.com/bitcoin-core/bitcoin-maintainer-tools/blob/main/update-translations.py) may differ.

  2. The Polish translation update has been discarded. See bitcoin/bitcoin#33275 (comment) and bitcoin/bitcoin#33275 (comment).

ACKs for top commit:
  fanquake:
    ACK b320f5e

Tree-SHA512: 3e34c0fc7471dd27deeff2c871baa523e8741724e2aee5ed8afdf90263904f489dd77df849953425c9f0395dc23932dc4729646e0e4445f53225683f4f635087
0f0e6fe doc: remove release note fragment (fanquake)

Pull request description:

  I've added the content to https://github.com/bitcoin-core/bitcoin-devwiki/wiki/v30.0-Release-Notes-Draft.

ACKs for top commit:
  dergoegge:
    ACK 0f0e6fe

Tree-SHA512: e0fc01945b15342aa87ce9d1312759acabf4be4c2a177d47d57f46fab42ea8ee3c04356f3a5d262c3f0e3fbe1090ae1d1e8b51659228c00bc1273b0b41f8dea3
timemarkovqtum added 29 commits February 2, 2026 16:19
Core 30 removes CBlock.rehash(), CTransaction.rehash() and add_wallet_options.
Core 30 replaces CBlock.hash with CBlock.hash_hex and CTransaction.sha256 with CTransaction.txid_int.
@timemarkovqtum timemarkovqtum requested a review from qtum-neil April 3, 2026 07:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.