[29.x] 33106 backport and final changes for rc2 #33226

pull glozow wants to merge 13 commits into bitcoin:29.x from glozow:2025-08-29.1rc2 changing 27 files +237 −106
  1. glozow commented at 1:50 pm on August 20, 2025: member

    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).

  2. DrahtBot added the label Backport on Aug 20, 2025
  3. DrahtBot commented at 1:50 pm on August 20, 2025: contributor

    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.

  4. fanquake added this to the milestone 29.1 on Aug 20, 2025
  5. glozow force-pushed on Aug 20, 2025
  6. DrahtBot added the label CI failed on Aug 20, 2025
  7. DrahtBot commented at 1:58 pm on August 20, 2025: 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.

    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.

  8. glozow force-pushed on Aug 20, 2025
  9. 1ma commented at 2:13 pm on August 20, 2025: none
    What is the criteria for backporting PRs to point releases? Sub 1 s/vB standardization is certainly not a bugfix.
  10. [test] check miner doesn't select 0fee transactions
    Github-Pull: #33106
    Rebased-From: e5f896bb1f052fb8c7811c6024cb49143b427512
    4e3cfa660d
  11. [test] check bypass of minrelay for various minrelaytxfee settings
    Github-Pull: #33106
    Rebased-From: 85f498893f54ea7d84f2bdf12aa35d198edf8a72
    03da7aff99
  12. [test] RBF rule 4 for various incrementalrelayfee settings
    Github-Pull: #33106
    Rebased-From: 72dc18467dbfc16cdbda2dd109b087243b397799
    6b5396c4b1
  13. [test] explicitly check default -minrelaytxfee and -incrementalrelayfee
    Github-Pull: #33106
    Rebased-From:  1fbee5d7b61b83e68e4230c8a97ca308de92c4c3
    567c3ee3cb
  14. [doc] assert that default min relay feerate and incremental are the same
    Github-Pull: #33106
    Rebased-From: d6213d6aa114aeed6804a585491d741386fd2739
    3a7e093f94
  15. [miner] lower default -blockmintxfee to 1sat/kvB
    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: #33106
    Rebased-From:  5f2df0ef78be7b24798d0983c9b962740608f1f4
    1c1970fb45
  16. [prep/test] replace magic number 1000 with respective feerate vars
    Github-Pull: #33106
    Rebased-From: 3eab8b724044dc321f70e5eed66b149713158a04
    a0ae3fc8a7
  17. [prep/util] help MockMempoolMinFee handle more precise feerates
    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: #33106
    Rebased-From: 457cfb61b5323a13218b3cfb5a6a6d8b3a7c5f7f
    da30ca0efa
  18. [prep/test] make wallet_fundrawtransaction's minrelaytxfee assumption explicit
    Github-Pull: #33106
    Rebased-From: 2e515d2897eaa5a9b012eb78aef105e1cf80d42b
    bbdab3ef7b
  19. [policy] lower default minrelaytxfee and incrementalrelayfee to 100sat/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: #33106
    Rebased-From: 6da5de58cabc4133c379baa50845e30e5bc6b3e4
    9dd7efc8c3
  20. [doc] update release notes
    Release notes are from 18720bc5d5b4d3acf91060859180d72cbfdf59b7
    f9f1ca5445
  21. [build] bump version to 29.1rc2 eb1574af0c
  22. [doc] man pages for 29.1rc2 0034dcfba9
  23. glozow force-pushed on Aug 20, 2025
  24. dergoegge approved
  25. dergoegge commented at 2:49 pm on August 20, 2025: member

    utACK 0034dcfba9dc599449e7569ed1b30e58d4f4434f

    (pending CI)

  26. DrahtBot removed the label CI failed on Aug 20, 2025
  27. instagibbs commented at 4:31 pm on August 20, 2025: 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

  28. fanquake marked this as ready for review on Aug 20, 2025
  29. darosior commented at 6:11 pm on August 20, 2025: member

    Concept ACK. Hopefully this speeds up recovery of block propagation on the network.

    ——– Original Message ——– On 8/20/25 3:53 PM, Gloria Zhao wrote:

    Backports #33106 and includes final changes for 29.1rc2. Built on top of #33225. I’ll rebase shortly after that’s in.

    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).


    You can view, comment on, or merge this pull request online at:

    #33226

    Commit Summary

    • 4987c03 test: Mark ~DebugLogHelper as noexcept(false)
    • 41262cc log: introduce LogRateLimiter, LogLimitStats, Status
    • a0992a8 log: use std::source_location in place of func, FILE, LINE
    • 0b6b096 log: Add rate limiting to LogPrintf, LogInfo, LogWarning, LogError, LogPrintLevel
    • 24c793d doc: add release notes for new rate limiting logging behavior
    • 25f975b test: remove noexcept(false) comment in ~DebugLogHelper
    • 9cde68f log: avoid double hashing in SourceLocationHasher
    • 273ffda log: remove const qualifier from arguments in LogPrintFormatInternal
    • dfe4e19 log: clarify RATELIMIT_MAX_BYTES comment, use RATELIMIT_WINDOW
    • 7c3820f log: change LogLimitStats to struct LogRateLimiter::Stats
    • 8175134 log: clean up LogPrintStr_ and Reset, prefix all logs with “[*]” when there are suppressions
    • acfa83d log: make m_limiter a shared_ptr
    • 4ed7a51 test: add ReadDebugLogLines helper function
    • 1153816 test: don’t leak log category mask across tests
    • dfdd407 test: logging_filesize_rate_limit improvements
    • 206f590 config: add DEBUG_ONLY -logratelimit
    • 0022e25 test: modify logging_filesize_rate_limit params
    • 7d5eb4f [test] check miner doesn’t select 0fee transactions
    • 6e44fa1 [test] check bypass of minrelay for various minrelaytxfee settings
    • 3a9ffbd [test] RBF rule 4 for various incrementalrelayfee settings
    • 290e5b5 [test] explicitly check default -minrelaytxfee and -incrementalrelayfee
    • 194fb05 [doc] assert that default min relay feerate and incremental are the same
    • 58caa6d [miner] lower default -blockmintxfee to 1sat/kvB
    • 73f926e [prep/test] replace magic number 1000 with respective feerate vars
    • 085bd81 [prep/util] help MockMempoolMinFee handle more precise feerates
    • a4e7e4d [prep/test] make wallet_fundrawtransaction’s minrelaytxfee assumption explicit
    • 8087d83 [policy] lower default minrelaytxfee and incrementalrelayfee to 100sat/kvB
    • 558f0fb [doc] update release notes
    • d92166a [build] bump version to 29.1rc2
    • ed44446 [doc] man pages for 29.1rc2

    File Changes

    (36 files)

    Patch Links:

    — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>

  30. marcofleon commented at 9:25 pm on August 20, 2025: contributor

    ACK 0034dcfba9dc599449e7569ed1b30e58d4f4434f

    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.

  31. DrahtBot requested review from darosior on Aug 20, 2025
  32. murchandamus commented at 10:58 pm on August 20, 2025: contributor

    crACK 0034dcfba9dc599449e7569ed1b30e58d4f4434f

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

  33. brunoerg approved
  34. brunoerg commented at 11:08 pm on August 20, 2025: contributor
    crACK 0034dcfba9dc599449e7569ed1b30e58d4f4434f
  35. fanquake commented at 10:49 am on August 21, 2025: 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.
  36. fanquake merged this on Aug 21, 2025
  37. fanquake closed this on Aug 21, 2025


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2025-08-23 03:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me