Skip to content

Conversation

glozow
Copy link
Member

@glozow glozow commented Aug 20, 2025

Backports #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 #32750 because it causes #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 (#32973) and include -datacarriersize in order to pad transaction size (#32406).

@DrahtBot
Copy link
Contributor

DrahtBot commented Aug 20, 2025

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Code Coverage & Benchmarks

For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/33226.

Reviews

See the guideline for information on the review process.

Type Reviewers
ACK dergoegge, marcofleon, murchandamus, brunoerg
Concept ACK darosior

If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

@fanquake fanquake added this to the 29.1 milestone Aug 20, 2025
@DrahtBot
Copy link
Contributor

🚧 At least one of the CI tasks failed.
Task lint: https://github.com/bitcoin/bitcoin/runs/48495142554
LLM reason (✨ experimental): Lint errors due to unused imports caused the CI failure.

Hints

Try to run the tests locally, according to the documentation. However, a CI failure may still
happen due to a number of reasons, for example:

  • Possibly due to a silent merge conflict (the changes in this pull request being
    incompatible with the current code in the target branch). If so, make sure to rebase on the latest
    commit of the target branch.

  • A sanitizer issue, which can only be found by compiling with the sanitizer and running the
    affected test.

  • An intermittent issue.

Leave a comment here, if you need help tracking down a confusing failure.

@1ma
Copy link

1ma commented Aug 20, 2025

What is the criteria for backporting PRs to point releases? Sub 1 s/vB standardization is certainly not a bugfix.

glozow added 13 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
Copy link
Member

@dergoegge dergoegge left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK 0034dcf

(pending CI)

@instagibbs
Copy link
Member

@1ma

What is the criteria for backporting PRs to point releases? Sub 1 s/vB standardization is certainly not a bugfix.

Any moderate or severe performance degradation is worth considering for backport, if it can be done cleanly, and has been done many times. Block propagation slowdowns that are avoidable are withing scope. Updating minor versions is much easier than main for production environments.

having not reviewed the backport effort here, concept ack

@fanquake fanquake marked this pull request as ready for review August 20, 2025 16:43
@darosior
Copy link
Member

darosior commented Aug 20, 2025 via email

Copy link
Contributor

@marcofleon marcofleon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 0034dcf

Went through the commits to confirm they match. The only differences are the addition of the datacarriersize argument in feature_rbf.py and the additional changes in mempool_limit.py. Also ran unit and functional tests on 29.x branch locally.

@DrahtBot DrahtBot requested a review from darosior August 20, 2025 21:25
Copy link
Contributor

@murchandamus murchandamus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

crACK 0034dcf

Had previously reviewed #33106, read the code changes here again, and compared to the original commits in master.

Copy link
Contributor

@brunoerg brunoerg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

crACK 0034dcf

@fanquake
Copy link
Member

This needs gen-bitcoin-conf.sh run, to accomodate the changed options, before tagging an rc2. I'll open a followup, and we can get rc2 tagged after that.

@fanquake fanquake merged commit 89fe999 into bitcoin:29.x Aug 21, 2025
18 checks passed
fanquake added a commit that referenced this pull request Aug 21, 2025
65dc198 doc: update example bitcoin conf for 29.1rc2 (fanquake)

Pull request description:

  Followup to #33226.

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

Tree-SHA512: b2924783dd98890bd031dbca8c9c126cd3ab45c3cc8d2f14dd5b5f940fcc7061f3d1f73e2d36482afceaae786f3087b59baab98db0f10bc0d19e3f016f52851a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants