Skip to content

Include patches from 29.1 (b)#92

Merged
ajtowns merged 26 commits intobitcoin-inquisition:29.xfrom
ajtowns:202509-inq29-29.1b
Sep 4, 2025
Merged

Include patches from 29.1 (b)#92
ajtowns merged 26 commits intobitcoin-inquisition:29.xfrom
ajtowns:202509-inq29-29.1b

Conversation

@ajtowns
Copy link

@ajtowns ajtowns commented Sep 4, 2025

Remaining commits with merge conflicts resolved.

glozow and others added 26 commits August 20, 2025 10:19
Back when we implemented coin age priority as a miner policy, miners
mempools might admit transactions paying very low fees, but then want to
set a higher fee for block inclusion. However, since coin age priority
was removed in v0.15, the block assembly policy is solely based on fees,
so we do not need to apply minimum feerate rules in multiple places. In
fact, the block assembly policy ignoring transactions that are added to
the mempool is likely undesirable as we waste resources accepting and
storing this transaction.

Instead, rely on mempool policy to enforce a minimum entry feerate to
the mempool (minrelaytxfee). Set the minimum block feerate to the
minimum non-zero amount (1sat/kvB) so it collects everything it finds in
mempool into the block.

Github-Pull: bitcoin#33106
Rebased-From:  5f2df0e
Use a virtual size of 1000 to keep precision when using a feerate
(which is rounded to the nearest satoshi per kvb) that isn't just an
integer.

Github-Pull: bitcoin#33106
Rebased-From: 457cfb6
…t/kvB

Let's say an attacker wants to use/exhaust the network's bandwidth, and
has the choice between renting resources from a commercial provider and
getting the network to "spam" itself it by sending unconfirmed
transactions. We'd like the latter to be more expensive than the former.

The bandwidth for relaying a transaction across the network is roughly
its serialized size (plus relay overhead) x number of nodes. A 1000vB
transaction is 1000-4000B serialized. With 100k nodes, that's 0.1-0.4GB
If the going rate for commercial services is 10c/GB, that's like 1-4c per kvB
of transaction data, so a 1000vB transaction should pay at least $0.04.

At a price of 120k USD/BTC, 100sat is about $0.12. This price allows us
to tolerate a large decrease in the conversion rate or increase in the
number of nodes.

Github-Pull: bitcoin#33106
Rebased-From: 6da5de5
Release notes are from 18720bc
0034dcf [doc] man pages for 29.1rc2 (glozow)
eb1574a [build] bump version to 29.1rc2 (glozow)
f9f1ca5 [doc] update release notes (glozow)
9dd7efc [policy] lower default minrelaytxfee and incrementalrelayfee to 100sat/kvB (glozow)
bbdab3e [prep/test] make wallet_fundrawtransaction's minrelaytxfee assumption explicit (glozow)
da30ca0 [prep/util] help MockMempoolMinFee handle more precise feerates (glozow)
a0ae3fc [prep/test] replace magic number 1000 with respective feerate vars (glozow)
1c1970f [miner] lower default -blockmintxfee to 1sat/kvB (glozow)
3a7e093 [doc] assert that default min relay feerate and incremental are the same (glozow)
567c3ee [test] explicitly check default -minrelaytxfee and -incrementalrelayfee (glozow)
6b5396c [test] RBF rule 4 for various incrementalrelayfee settings (glozow)
03da7af [test] check bypass of minrelay for various minrelaytxfee settings (glozow)
4e3cfa6 [test] check miner doesn't select 0fee transactions (glozow)

Pull request description:

  Backports bitcoin#33106 and includes final changes for 29.1rc2. Based on current network conditions (in which nodes rejecting 0.1-1sat/vB are missing many transactions), it is recommended to change these policy settings.

  I did not include bitcoin#32750 because it causes bitcoin#33177 and I don't foresee any problems; it was just a nice to have.
  For reviewers: the backport is unclean but fairly straightforward. I just had to adapt a test that is no longer in master (bitcoin#32973) and include `-datacarriersize` in order to pad transaction size (bitcoin#32406).

ACKs for top commit:
  dergoegge:
    utACK 0034dcf
  marcofleon:
    ACK  0034dcf
  murchandamus:
    crACK 0034dcf
  brunoerg:
    crACK 0034dcf

Tree-SHA512: 1b7540ac3fec5b15cf36926dbf633054f14549d76aa445a2bf042b5667e8637db4f9c21c869af25a0c3f8c7cca6c585d17896d2f7e95a6264c1ff59817446694
65dc198 doc: update example bitcoin conf for 29.1rc2 (fanquake)

Pull request description:

  Followup to bitcoin#33226.

ACKs for top commit:
  dergoegge:
    ACK 65dc198
  willcl-ark:
    ACK 65dc198

Tree-SHA512: b2924783dd98890bd031dbca8c9c126cd3ab45c3cc8d2f14dd5b5f940fcc7061f3d1f73e2d36482afceaae786f3087b59baab98db0f10bc0d19e3f016f52851a
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 would not be
available, which would corrupt the coinstatsindex in particular.
Instead, the index state will be committed with the next
ChainStateFlushed notification.

Github-Pull: bitcoin#33212
Rebased-From: 01b95ac
This test fails without the previous commit.

Github-Pull: bitcoin#33212
Rebased-From: a602f6f
fcac802 test: index with an unclean restart after a reorg (Martin Zumsande)
16b1710 index: don't commit state in BaseIndex::Rewind (Martin Zumsande)

Pull request description:

  Backports bitcoin#33212 to 29.x

ACKs for top commit:
  achow101:
    ACK fcac802
  stickies-v:
    ACK fcac802
  mzumsande:
    Code Review ACK fcac802

Tree-SHA512: eeb9213f03bbb1d48c3ccb12121a6e475f436895d314b5171007e7e4ee457c74b312fa7f0d1808d6221dc22b192700a93ea21c4e9e04689da7dde7e1f79e9569
Remove it in feerate.

Fix it in the other places.

Github-Pull: bitcoin#33236
Rebased-From: 966666d
084c95a doc: update manual pages for v29.1 (fanquake)
37d115c build: bump version to v29.1 final (fanquake)
b0d88bc doc: finalise release notes for 29.1 (fanquake)
99ab2e7 ci: return to using dash in CentOS job (fanquake)
6448ebb doc: Remove wrong and redundant doxygen tag (MarcoFalke)

Pull request description:

  Backports:
  * bitcoin#33236
  * bitcoin#33261

  Since `rc2`, bitcoin#33212 was also backported in bitcoin#33251.

ACKs for top commit:
  glozow:
    ACK 084c95a
  willcl-ark:
    ACK 084c95a

Tree-SHA512: 0698e5b2d12f7328bf5af8dbbd92b0049de401c0a4af27fda2209f9aab35d827c5ac65eb9268aa1fae241e3adf0d3dd89324bb288655ead8af2b5584aae1f6d2
Bitcoin Core 29.1 final

Tree-SHA512: 0698e5b2d12f7328bf5af8dbbd92b0049de401c0a4af27fda2209f9aab35d827c5ac65eb9268aa1fae241e3adf0d3dd89324bb288655ead8af2b5584aae1f6d2
@ajtowns ajtowns added this to the 29.x milestone Sep 4, 2025
@ajtowns ajtowns merged commit 8868e4c into bitcoin-inquisition:29.x Sep 4, 2025
18 checks passed
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.

4 participants