29025 Commits

Author SHA1 Message Date
David Gumberg
6b19ede1a5
gui: Avoid pathological QT text/markdown behavior...
during text selection by only setting plaintext mime data.

Github-Pull: https://github.com/bitcoin-core/gui/pull/886
Rebased-From: 6a371b70c87ad6b763c89384562fce8549f37434
2025-09-10 12:43:27 +01:00
merge-script
84cf542039
Merge bitcoin/bitcoin#33275: Release: 30.0 translations update
b320f5efa1753aead857d4cddd742af16e51d8d1 qt: 30.0 translations update (Hennadii Stepanov)

Pull request description:

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

  It is one of the steps required _before_ branch-off, as scheduled in https://github.com/bitcoin/bitcoin/issues/32275.

  A previous similar PR: https://github.com/bitcoin/bitcoin/pull/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 https://github.com/bitcoin/bitcoin/pull/33275#issuecomment-3265688565 and https://github.com/bitcoin/bitcoin/pull/33275#issuecomment-3265829027.

ACKs for top commit:
  fanquake:
    ACK b320f5efa1753aead857d4cddd742af16e51d8d1

Tree-SHA512: 3e34c0fc7471dd27deeff2c871baa523e8741724e2aee5ed8afdf90263904f489dd77df849953425c9f0395dc23932dc4729646e0e4445f53225683f4f635087
2025-09-09 10:20:05 +01:00
merge-script
9cbd346daa
Merge bitcoin/bitcoin#33340: Fix benchmark CSV output
790b440197bde322432a5bab161f1869b667e681 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 https://github.com/bitcoin/bitcoin/issues/33331.

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

Tree-SHA512: 096bfa29a0639a4d97d510a3e2a15f071f384148c3035e4d0fc525794682e499c45a0d0c95728d5c78010098393b2c486a7fa9c21c1e2fbb600dea7c5638a55f
2025-09-09 10:11:29 +01:00
Ava Chow
0ba44d9c38
Merge bitcoin/bitcoin#33296: net: check for empty header before calling FillBlock
8b6264768030db1840041abeeaeefd6c227a2644 test: send duplicate blocktxn message in p2p_compactblocks.py (Eugene Siegel)
5e585a0fc4fd68dd7b4982054b34deae2e7aeb89 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](689a321976/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 8b62647680
  fjahr:
    tACK 8b6264768030db1840041abeeaeefd6c227a2644
  achow101:
    ACK 8b6264768030db1840041abeeaeefd6c227a2644
  mzumsande:
    Code Review ACK 8b6264768030db1840041abeeaeefd6c227a2644

Tree-SHA512: d43a6f652161d4f7e6137f207a3e95259fc51509279d20347b1698c91179c39c8fcb75d2668b13a6b220f478a03578573208a415804be1d8843acb057fa1a73a
2025-09-08 17:16:28 -07:00
Ava Chow
1861030bea
Merge bitcoin/bitcoin#30469: index: Fix coinstats overflow
c76797481155754329ec6a6f58e8402569043944 clang-tidy: Fix critical warnings (Fabian Jahr)
54dc34ec2279378c78fa2d9155668e39e20decda index: Remove unused coinstatsindex recovery code (Fabian Jahr)
37c4fba1f4c18632bceb16f41f5a8f1a61fb9096 index: Check BIP30 blocks when rewinding Coinstatsindex (Fabian Jahr)
51df9de8e5b9c8ecd8339d95b630f312fcb9414e doc: Add release note for 30469 (Fabian Jahr)
bb8d673183294a43c716ff8738da2492f3d7a94b test: Add coinstatsindex compatibility test (Fabian Jahr)
b2e8b64ddc351124ac1390ee906a8fcd2781ca50 index, refactor: Append blocks to coinstatsindex without db read (Fabian Jahr)
431a076ae6e3cc32a8725d4a01483d27c5081a34 index: Fix coinstatsindex overflow issue (Fabian Jahr)
84e813a02bb7b3c735ae413f06c0fc156bfeb7ac index, refactor: DRY coinbase check (Fabian Jahr)
fab842b3248744fb0030486f64d3febe815f8377 index, refactor: Rename ReverseBlock to RevertBlock (Fabian Jahr)

Pull request description:

  Closes https://github.com/bitcoin/bitcoin/issues/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 c76797481155754329ec6a6f58e8402569043944
  TheCharlatan:
    ACK c76797481155754329ec6a6f58e8402569043944
  mzumsande:
    Tested / Code Review ACK c76797481155754329ec6a6f58e8402569043944

Tree-SHA512: 3fa4a19dd1a01c1b01390247bc9daa6871eece7c1899eac976e0cc21ede09c79c65f758d14daafc46a43c4ddd7055c85fb28ff03029132d48936b248639c6ab9
2025-09-08 17:06:30 -07:00
Eugene Siegel
5e585a0fc4 net: check for empty header before calling FillBlock
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>
2025-09-08 17:03:24 -04:00
Ava Chow
cb825a07ac
Merge bitcoin/bitcoin#33338: net: Add interrupt to pcp retry loop
188de70c86414b8b2ad5143f5c607b67686526ea 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 188de70c86414b8b2ad5143f5c607b67686526ea
  fjahr:
    utACK 188de70c86414b8b2ad5143f5c607b67686526ea
  hodlinator:
    utACK 188de70c86414b8b2ad5143f5c607b67686526ea

Tree-SHA512: 426dabd10ac0ef5de246c83d281ba70957e4032d251054aa6028b4d7ce4e35cd35ac70e67dc07bd418673bcdd2f4457b76f174ac5e7d0dd3caa05de5da952dac
2025-09-08 13:44:44 -07:00
Ava Chow
0b0bd74c3e
Merge bitcoin/bitcoin#33312: clang-tidy: Disable UndefinedBinaryOperatorResult check in src/ipc
589b65f06c3376df4cde3fac5c1d39a2d3254920 clang-tidy: Disable `UndefinedBinaryOperatorResult` check in `src/ipc` (Hennadii Stepanov)

Pull request description:

  The warnings are false positive and have been fixed upstream. See: https://github.com/capnproto/capnproto/pull/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 https://github.com/bitcoin/bitcoin/pull/33281.

  3. Fixes https://github.com/bitcoin/bitcoin/issues/33256.

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

Tree-SHA512: 6d376a82641a5b85d4dd1fa164fdcbd8e15f1262e7d4f582f4d9959031d35852e28ff1b8268336e39ba6779fdd10ecdb986af42407d0545f4217f41d64556272
2025-09-08 13:28:01 -07:00
Hennadii Stepanov
790b440197
Fix benchmark CSV output
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.
2025-09-08 18:39:55 +01:00
Hennadii Stepanov
b320f5efa1
qt: 30.0 translations update 2025-09-08 12:24:41 +01:00
merge-script
2d799590fe
Merge bitcoin/bitcoin#33283: contrib: update fixed seeds
939678940f6c3fdbc36d57a9c9ef6f8edf89d065 contrib: update fixed seeds (fanquake)
6cdd8ee676180715ff32faa7220e7691df986acc contrib: update makeseeds minblocks (fanquake)
b8da9f4034e1f28abbc58fee172977f15b6a76a7 contrib: update makeseeds UA regex (fanquake)

Pull request description:

  Update the fixed seeds pre 30 branch off.

ACKs for top commit:
  dergoegge:
    ACK 939678940f6c3fdbc36d57a9c9ef6f8edf89d065
  marcofleon:
    ACK 939678940f6c3fdbc36d57a9c9ef6f8edf89d065

Tree-SHA512: 7488f895a9c5a5fc115dd9fffced6e4846a238feef30a70795e189e4167404286e4142d93f91b62e0c765fb798bbbfb09c7b8194e8bdac1b480b230c58b66044
2025-09-08 10:32:52 +01:00
TheCharlatan
188de70c86
net: Add interrupt to pcp retry loop
Without this interrupt bitcoind takes a long time to exit if requested
to do so after a failed pcp lookup on startup.
2025-09-08 11:18:51 +02:00
merge-script
9c6fa07b12
Merge bitcoin/bitcoin#33322: Update libmultiprocess subtree to improve build and logs
a334bbe9b79ddf1999003c792bc8945639b7e9c1 Squashed 'src/ipc/libmultiprocess/' changes from 1b8d4a6f1e54..13424cf2ecc1 (Ryan Ofsky)

Pull request description:

  Includes:

  - https://github.com/bitcoin-core/libmultiprocess/pull/197
  - https://github.com/bitcoin-core/libmultiprocess/pull/202
  - https://github.com/bitcoin-core/libmultiprocess/pull/203
  - https://github.com/bitcoin-core/libmultiprocess/pull/200
  - https://github.com/bitcoin-core/libmultiprocess/pull/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 a4ee70e5b69c67c9caea1e97cb5b08f80536c7d3

Tree-SHA512: ddddd0ed44522ade98a5b94f44b57210794d64f8c378a00438082b8c377f41e9b86c0c5ed29add45472549758f7478ab220af8e268b90b30f57a236c639497d3
2025-09-08 10:05:27 +01:00
Fabian Jahr
c767974811
clang-tidy: Fix critical warnings
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.
2025-09-07 17:28:31 +02:00
Fabian Jahr
54dc34ec22
index: Remove unused coinstatsindex recovery code
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.
2025-09-07 17:21:19 +02:00
Fabian Jahr
37c4fba1f4
index: Check BIP30 blocks when rewinding Coinstatsindex
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.
2025-09-07 17:21:19 +02:00
Fabian Jahr
b2e8b64ddc
index, refactor: Append blocks to coinstatsindex without db read 2025-09-07 17:21:19 +02:00
Fabian Jahr
431a076ae6
index: Fix coinstatsindex overflow issue
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.
2025-09-07 17:21:00 +02:00
Hennadii Stepanov
36e40417de
Merge bitcoin-core/gui#884: Fix compatibility with -debuglogfile command-line option
c0d28c8f5b150a03de75155a0961b3d9b2695ed6 qt: Fix compatibility with `-debuglogfile` command-line option (Hennadii Stepanov)

Pull request description:

  This change avoids hardcoding the "debug.log" filename, ensuring compatibility with custom filenames provided via the `-debuglogfile` command-line option.

ACKs for top commit:
  maflcko:
    tested ACK c0d28c8f5b150a03de75155a0961b3d9b2695ed6 💳
  pablomartin4btc:
    ACK c0d28c8f5b150a03de75155a0961b3d9b2695ed6

Tree-SHA512: 0453b5f918e1831f6c6b4f04031959c391936e5ee6fc742a3d0189fce9c4dcf060ff2138f0cd15c93919a8bf750860c1c926159cad7a7f8a361833017f89ad76
2025-09-06 00:22:48 +01:00
Ryan Ofsky
a4ee70e5b6 Merge commit 'a334bbe9b79ddf1999003c792bc8945639b7e9c1' into pr/subtree-4 2025-09-05 15:43:16 -04:00
Ryan Ofsky
a334bbe9b7 Squashed 'src/ipc/libmultiprocess/' changes from 1b8d4a6f1e54..13424cf2ecc1
13424cf2ecc1 Merge bitcoin-core/libmultiprocess#205: cmake: check for Cap'n Proto / Clang / C++20 incompatibility
72dce118649b Merge bitcoin-core/libmultiprocess#200: event loop: add LogOptions struct and reduce the log size
85003409f964 eventloop: add `LogOptions` struct
657d80622f81 cmake: capnproto pkg missing helpful error
d314057775a5 cmake: check for Cap'n Proto / Clang / C++20 incompatibility
878e84dc3030 Merge bitcoin-core/libmultiprocess#203: cmake: search capnproto in package mode only
1a85da5873c2 Merge bitcoin-core/libmultiprocess#202: doc: correct the build instructions for the example
df01873e1ecb Merge bitcoin-core/libmultiprocess#197: ci: Add freebsd and macos build
3bee07ab3367 cmake: search capnproto in package mode only
b6d3dc44194c doc: correct the build instructions for example
fa1ac3000055 ci: Add macos and freebsd task

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 13424cf2ecc1e5eadc85556cf1f4c65e915f702a
2025-09-05 15:43:16 -04:00
Hennadii Stepanov
589b65f06c
clang-tidy: Disable UndefinedBinaryOperatorResult check in src/ipc
The warnings are false positive and have been fixed upstream.
See: https://github.com/capnproto/capnproto/pull/2334.

This change disables the `UndefinedBinaryOperatorResult` clang-tidy
check for source files generated by the `mpgen` tool.
2025-09-04 23:07:40 +01:00
laanwj
4f1a4cbccd net: Quiet down logging when router doesn't support natpmp/pcp
When the router doesn't support natpmp and PCP, one'd normally expect
the UDP packet to be ignored, and hit a time out. This logs a warning
that is already in the debug category. However, there's also the case in
which sending an UDP packet causes a ICMP response. This is returned to
user space as "connection refused" (despite UDP having no concept of
connections).

Move the warnings from `Send` and `Recv` to debug level too, to reduce
log spam in that case.

Closes #33301.
2025-09-04 21:26:29 +02:00
Fabian Jahr
84e813a02b
index, refactor: DRY coinbase check
Also marks a few additional variables const.
2025-09-04 15:57:25 +02:00
Fabian Jahr
fab842b324
index, refactor: Rename ReverseBlock to RevertBlock
Semantically this is the correct name for what the function is doing.
2025-09-04 15:57:24 +02:00
merge-script
2562fe1b2b
Merge bitcoin/bitcoin#32159: net, pcp: handle multi-part responses and filter for default route while querying default gateway
88db09bafe9ec363525e5e526c5f6cdd13691447 net: handle multi-part netlink responses (willcl-ark)
42e99ad77396e4e9b02d67daf46349e215e99a0f net: skip non-route netlink responses (willcl-ark)
57ce645f05d18d8ad10711c347a5989076f1f788 net: filter for default routes in netlink responses (willcl-ark)

Pull request description:

  ...for default route in pcp pinholing.

  Currently we only make a single recv call, which trucates results from large routing tables, or in the case the kernel may split the message into multiple responses (which may happen with `NLM_F_DUMP`).

  We also do not filter on the default route. For IPv6, this led to selecting the first route with an `RTA_GATEWAY` attribute, often a non-default route instead of the actual default. This caused PCP port mapping failures because the wrong gateway was used.

  Fix both issues by adding multi-part handling of responses and filter for the default route.

  Limit responses to ~ 1MB to prevent any router-based DoS.

ACKs for top commit:
  achow101:
    ACK 88db09bafe9ec363525e5e526c5f6cdd13691447
  davidgumberg:
    Code Review re-ACK 88db09b
  Sjors:
    re-utACK 88db09bafe9ec363525e5e526c5f6cdd13691447

Tree-SHA512: ea5948edebfad5896a487a61737aa5af99f529fad3cf3da68dced456266948238a7143383847e79a7bb90134e023eb173c25116d8eb80ff57fa4c4a0377ca1ed
2025-09-04 11:06:48 +01:00
willcl-ark
88db09bafe
net: handle multi-part netlink responses
Handle multi-part netlink responses to prevent truncated results from
large routing tables.

Previously, we only made a single recv call, which led to incomplete
results when the kernel split the message into multiple responses (which
happens frequently with NLM_F_DUMP).

Also guard against a potential hanging issue where the code would
indefinitely wait for NLMSG_DONE for non-multi-part responses by
detecting the NLM_F_MULTI flag and only continue waiting when necessary.
2025-09-03 21:09:39 +01:00
fanquake
939678940f
contrib: update fixed seeds 2025-09-03 11:23:30 +01:00
merge-script
0eb3eae548
Merge bitcoin/bitcoin#33274: kernel: chainparams & headersync updates for 30.0
755152ac819a23acf2f9e70316134d74a04d589b kernel: add testnet4 assumeutxo param at height 90'000 (fanquake)
a6512686e335c1eb63bb50137adef04a65067031 kernel: add mainnet assumeutxo param at height 910'000 (fanquake)
943de66b5043e46f84ccc65039842be34cf42133 kernel: update headersync params (fanquake)
66fb962426482ef674d51f2e81bbbbcbc44291e0 kernel: update chainTxData (fanquake)
c3cb26e02834b38ea4f3611877f904a6e398a96f kernel: update assumevalid and minimumChainWork (fanquake)
b4adae76d4666a2227cef1892d44fa79a5ed89ab kernel: update assumed blockchain & chainstate sizes (fanquake)

Pull request description:

  Also adds assumeutxo params for mainnet at `910'000` & testnet4 & `90'000`.

ACKs for top commit:
  Sjors:
    re-ACK 755152ac819a23acf2f9e70316134d74a04d589b
  achow101:
    ACK 755152ac819a23acf2f9e70316134d74a04d589b
  w0xlt:
    ACK 755152ac81
  hodlinator:
    ACK 755152ac819a23acf2f9e70316134d74a04d589b

Tree-SHA512: d26b023b1fdbb72e81c3879aa274e3900742f015d77c1bb3cde00b3b882642c6b35a6268c6ccf35fa9243b58b5a1ebe6eba3eb7f58678eee5bd8a6d6e7518a6f
2025-09-03 11:08:38 +01:00
Ava Chow
46369583f3
Merge bitcoin/bitcoin#33224: doc: unify datacarriersize warning with release notes
2885bd0e1c4fc863a7f28ff0fd353f5cffb03442 doc: unify `datacarriersize` warning with release notes (Lőrinc)

Pull request description:

  Follow-up to https://github.com/bitcoin/bitcoin/pull/32406

  ---

  The [release notes](a189d63618/doc/release-notes-32406.md (L1)) claim

  > [...] marked as deprecated and are expected to be removed in a future release

  but the [warning itself](2885bd0e1c/src/init.cpp (L907)) claims

  > [...] marked as deprecated. They **will** be removed in a future version.

  To be less aggressive (since some have objected against this version online) - and to unify the deprecation warning with the release notes - I have changed the warning to communicate our expectation in a friendlier way.

ACKs for top commit:
  cedwies:
    ACK 2885bd0
  ryanofsky:
    Code review ACK 2885bd0e1c4fc863a7f28ff0fd353f5cffb03442. I don't think it is good for the release notes and the runtime warning message to say two different things. I'd also be happy if release notes were updated to match the runtime warning, instead of vice versa. Whatever is more accurate is better.
  ajtowns:
    ACK 2885bd0e1c4fc863a7f28ff0fd353f5cffb03442
  kevkevinpal:
    ACK [2885bd0](2885bd0e1c)
  achow101:
    ACK 2885bd0e1c4fc863a7f28ff0fd353f5cffb03442
  janb84:
    ACK 2885bd0e1c4fc863a7f28ff0fd353f5cffb03442
  Zero-1729:
    crACK 2885bd0e1c4fc863a7f28ff0fd353f5cffb03442
  jonatack:
    ACK 2885bd0e1c4fc863a7f28ff0fd353f5cffb03442
  hodlinator:
    ACK 2885bd0e1c4fc863a7f28ff0fd353f5cffb03442
  w0xlt:
    ACK 2885bd0e1c
  optout21:
    ACK 2885bd0e1c4fc863a7f28ff0fd353f5cffb03442

Tree-SHA512: a9d2a64ab96b3dd7f3a1a29622930054fd5c56e573bc96330f4ef3327dc024b21b3fbc8a698d17aea7c76f57f0c2ccd6403b2df344ae2f69c645ceb8b6fa54a5
2025-09-02 15:48:41 -07:00
fanquake
755152ac81
kernel: add testnet4 assumeutxo param at height 90'000 2025-09-02 11:59:48 +01:00
fanquake
a6512686e3
kernel: add mainnet assumeutxo param at height 910'000 2025-09-02 11:59:48 +01:00
fanquake
943de66b50
kernel: update headersync params 2025-09-02 11:59:48 +01:00
fanquake
66fb962426
kernel: update chainTxData 2025-09-02 11:59:47 +01:00
fanquake
c3cb26e028
kernel: update assumevalid and minimumChainWork 2025-09-02 11:59:45 +01:00
fanquake
b4adae76d4
kernel: update assumed blockchain & chainstate sizes 2025-09-02 11:59:01 +01:00
Ava Chow
7cc9a08706
Merge bitcoin/bitcoin#33253: Revert compact block cache inefficiencies
b7b249d3adfbd3c7b0c4d0499a86300f57982972 Revert "[refactor] rewrite vTxHashes as a vector of CTransactionRef" (Anthony Towns)
b9300d8d0a74b15a220a2ce529d5157d109c7ed3 Revert "refactor: Simplify `extra_txn` to be a vec of CTransactionRef instead of a vec of pair<Wtxid, CTransactionRef>" (Anthony Towns)
df5a50e5de204013ba56e1c4967a249ca07ba086 bench/blockencodings: add compact block reconstruction benchmark (Anthony Towns)

Pull request description:

  Reconstructing compact blocks is on the hot path for block relay, so revert changes from #28391 and #29752 that made it slower. Also add a benchmark to validate reconstruction performance, and a comment giving some background as to the approach.

ACKs for top commit:
  achow101:
    ACK b7b249d3adfbd3c7b0c4d0499a86300f57982972
  polespinasa:
    lgtm code review and tested ACK b7b249d3adfbd3c7b0c4d0499a86300f57982972
  cedwies:
    code-review ACK b7b249d
  davidgumberg:
    crACK b7b249d3adfbd3c
  instagibbs:
    ACK b7b249d3adfbd3c7b0c4d0499a86300f57982972

Tree-SHA512: dc266e7ac08281a5899fb1d8d0ad43eb4085f8ec42606833832800a568f4a43e3931f942d4dc53cf680af620b7e893e80c9fe9220f83894b4609184b1b3b3b42
2025-08-28 16:10:42 -07:00
merge-script
6ff2d42362
Merge bitcoin/bitcoin#33189: rpc: followups for 33106
daa40a3ff97346face9dcc64564010a66c91ccb2 doc fixups for 33106 (glozow)
c568511e8ced011103ef6e3616409fa0ac54408c test fixup for incremental feerate (glozow)
636fa219d37f86067d996c86fada286cedc0d78e test fixups (glozow)
9169a50d529efeae465e55947978f5e470d7f7d0 [rpc] expose blockmintxfee via getmininginfo (glozow)

Pull request description:

  Followups from #33106:
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2271855287
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2271909132
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2274373368
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2275327727
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2275120698
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2275470140
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2271864670
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2275120698
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2277786375
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2277669475
  - https://github.com/bitcoin/bitcoin/pull/33106#discussion_r2279251263

ACKs for top commit:
  ajtowns:
    ACK daa40a3ff97346face9dcc64564010a66c91ccb2 ; cursory review, seems reasonable
  davidgumberg:
    ACK daa40a3ff9
  instagibbs:
    ACK daa40a3ff97346face9dcc64564010a66c91ccb2

Tree-SHA512: d6f0ae5d00dadfbaf0998ac332c8536c997628de4f2b9947eb57712f05d3afa19a823c9cc007435be320640cd13a4c500db20c9606988cdd371934496dec009d
2025-08-28 19:44:31 +01:00
kevkevinpal
493ba0f688
threading: reduce the scope of lock in getblocktemplate 2025-08-28 08:43:21 -04:00
Anthony Towns
b7b249d3ad Revert "[refactor] rewrite vTxHashes as a vector of CTransactionRef"
This reverts commit a03aef9cec35b0d03aa63d7e8093f0420cd4b40b.
2025-08-27 03:33:32 +10:00
Anthony Towns
b9300d8d0a Revert "refactor: Simplify extra_txn to be a vec of CTransactionRef instead of a vec of pair<Wtxid, CTransactionRef>"
This reverts commit a8203e94123b6ea6e4f4a6320e3ad20457f44a28.
2025-08-27 03:33:32 +10:00
Anthony Towns
df5a50e5de bench/blockencodings: add compact block reconstruction benchmark 2025-08-27 03:33:32 +10:00
Ava Chow
6ca6f3b37b
Merge bitcoin/bitcoin#33241: Update libmultiprocess subtree to fix build issues
dd68d0f40b614474f24469fbe1ba02f8f9146b31 Squashed 'src/ipc/libmultiprocess/' changes from b4120d34bad2..1b8d4a6f1e54 (Ryan Ofsky)

Pull request description:

  Includes:

  - https://github.com/bitcoin-core/libmultiprocess/pull/193
  - https://github.com/bitcoin-core/libmultiprocess/pull/195
  - https://github.com/bitcoin-core/libmultiprocess/pull/194

  These changes are needed to build fix libmultiprocess build issue that happens on OpenBSD and work around an incompatibility between GCC versions <14 and cap'nproto versions  <0.9 when compiling with c++20 that was fixed upstream in https://github.com/capnproto/capnproto/pull/1170. The issues were reported:

  - https://github.com/bitcoin/bitcoin/issues/33219
  - https://github.com/bitcoin/bitcoin/issues/33176
  - https://github.com/willcl-ark/bitcoin-core-docker/pull/43

  The fixes added CI jobs upstream to catch these issues earlier.

  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 323b3fd27283282f2f8eb1096f56f23d8230f2d6
  achow101:
    ACK 323b3fd27283282f2f8eb1096f56f23d8230f2d6
  hebasto:
    ACK 323b3fd27283282f2f8eb1096f56f23d8230f2d6, I've reproduced the subtree update locally. The two issues noted in this PR are unrelated to its changes and can be addressed separately.

Tree-SHA512: 3d03693d269c04d9ed10e8dd03e8059062929f37616d974c6fdf346ee62737c990ec550e013575e7474bfa4efcead3938bf9b259d62c073d76e720ebafe4ff66
2025-08-25 14:11:42 -07:00
merge-script
9703b7e6d5
Merge bitcoin/bitcoin#32592: threading: remove ancient CRITICAL_SECTION macros
46ca7712cb5fcf759cfc9f4f32d74215c8c83763 threading: remove unused template instantiations (Cory Fields)
b537a6a6dbd3b2a6725ccfafd57c9cc50cd617b0 threading: remove obsolete critsect macros (Cory Fields)
0d0e0a39b4a58fc48d2f0107e8c08bece58130bc threading: use a reverse lock rather than manual critsect macros (Cory Fields)
3ddd554d318110e8270498760340854929c59405 tests: Add Assertions in reverse_lock tests to exercise thread-safety annotations (Cory Fields)
c88b1cbf57a333261dbb8cf2eae91cf76e056d96 tests: get rid of remaining manual critsect usage (Cory Fields)

Pull request description:

  Now that #32467 is merged, the only remaining usage of our old `CRITICAL_SECTION` macros (other than tests) is in `getblocktemplate()` and it can safely be replaced with a `REVERSE_LOCK`.

  This PR makes that replacement, replaces the old `CRITICAL_SECTION` macro usage in tests, then deletes the macros themselves.

  ~While testing this a few weeks ago, I noticed that `REVERSE_LOCK` does not currently work properly with our thread-safety annotations as after the `REVERSE_LOCK` is acquired, clang still believes that the mutex is locked. #32465 fixes this problem. Without that fix, this PR would potentially allow a false-negative if code were added in the future to this chunk of `getblocktemplate` which required `cs_main` to be locked.~

  ~I added a test for the reverse lock here in the form of a compiler warning in `reverselock_tests.cpp` to simulate that possibility. This PR will therefore cause a new warning (and should fail a warnings-as-errors ci check) until #32465 is merged and this is rebased on top of it.~

  Edit: Rebased on top of #32465, so this should now pass tests.

ACKs for top commit:
  maflcko:
    review ACK 46ca7712cb5fcf759cfc9f4f32d74215c8c83763 📌
  fjahr:
    Code review ACK 46ca7712cb5fcf759cfc9f4f32d74215c8c83763
  TheCharlatan:
    ACK 46ca7712cb5fcf759cfc9f4f32d74215c8c83763
  furszy:
    ACK 46ca7712cb5fcf759cfc9f4f32d74215c8c83763

Tree-SHA512: 5e423c8539ed5ddd784f5c3657bbd63be509d54942c25149f04e3764bcdf897bebf655553338d5af7b8c4f546fc1d4dd4176c2bce6f4683e76ae4bb91ba2ec80
2025-08-23 17:18:29 +01:00
Ryan Ofsky
dd68d0f40b Squashed 'src/ipc/libmultiprocess/' changes from b4120d34bad2..1b8d4a6f1e54
1b8d4a6f1e54 Merge bitcoin-core/libmultiprocess#194: mpgen: Work around c++20 / capnproto 0.8 incompatibility
f1fad396bf5f Merge bitcoin-core/libmultiprocess#195: ci: Add openbsd
eed42f210d17 ci: Bump all tasks to actions/checkout@v5
486a510bbeff ci: Remove ancient and problematic -lstdc++fs in mpexample
dd40897efe79 Add missing thread include
98414e7d2867 ci: Add openbsd
dc3ba2204606 cmake, doc: Add check for CVE-2022-46149
cb170d4913a2 Merge bitcoin-core/libmultiprocess#193: build: require CapnProto 0.7.0 or better
8ceeaa6ae401 ci: Add olddeps job to test old dependencies versions
c4cb758eccb5 mpgen: Work around c++20 / capnproto 0.8 incompatibility
30930dff7b06 build: require CapnProto 0.7.0 or better

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 1b8d4a6f1e54b92708bd2ad627ec6d440a1daf3d
2025-08-22 17:15:44 -04:00
Ryan Ofsky
323b3fd272 Merge commit 'dd68d0f40b614474f24469fbe1ba02f8f9146b31' into pr/subtree-3 2025-08-22 17:15:44 -04:00
merge-script
73220fc0f9
Merge bitcoin/bitcoin#33212: index: Don't commit state in BaseIndex::Rewind
a602f6fb7bf5f9e57299f4d6e246c82379fad8d2 test: index with an unclean restart after a reorg (Martin Zumsande)
01b95ac6f496e24e525b2fc9d69ee8b543da65ff index: don't commit state in BaseIndex::Rewind (Martin Zumsande)

Pull request description:

  The committed state of an index should never be ahead of the flushed chainstate.
  Otherwise, in the case of an unclean shutdown, the blocks necessary to revert
  from the prematurely committed state are not be available, which would corrupt the coinstatsindex in particular.
  Instead, the index state will be committed with the next ChainStateFlushed notification.

  Fixes #33208

ACKs for top commit:
  achow101:
    ACK a602f6fb7bf5f9e57299f4d6e246c82379fad8d2
  stickies-v:
    re-ACK a602f6fb7bf5f9e57299f4d6e246c82379fad8d2

Tree-SHA512: 2559ea3fe066caf746a54ad7daac5031332f3976848e937c3dc8b35fa2ce925674115d8742458bf3703b3916f04f851c26523b6b94aeb1da651ba5a1b167a419
2025-08-22 15:51:41 +01:00
Cory Fields
46ca7712cb threading: remove unused template instantiations
These were only required for the ENTER_CRITICAL_SECTION macro.
2025-08-22 14:25:39 +00:00
Cory Fields
b537a6a6db threading: remove obsolete critsect macros 2025-08-22 14:25:39 +00:00
Cory Fields
0d0e0a39b4 threading: use a reverse lock rather than manual critsect macros
No functional change.
2025-08-22 14:25:39 +00:00