Mempool and policy

PRPriorityReviewabilityReviewsAgreementSize
(+)#36328 instagibbs p2p: Reconsider package transactions that are immediately trimmedP2 · bug fixReady0Crickets23 + 171 tests
  • Allow package transactions trimmed right after acceptance to be reconsidered instead of rejected
  • Ensures evicted transactions can still be fetched and fee-bumped before the next block arrives
  • P2 because immediately evicted package transactions are wrongly marked as permanent policy failures
  • Prevents peer reject filters from ignoring higher-fee child bumps until the next block
  • Restores expected package retry logic under heavy mempool pressure
  • Reviewing now is worthwhile with no blockers or pending reworks
  • No review verdicts recorded
  • No reviews or substantive comments have been posted yet
  • No discussion has taken place on the pull request
  • 23 lines added or modified outside tests
  • 171 lines added or modified in tests
  • 7 lines removed in total
  • 3 files, 4 commits
(+)#36182 ismaelsadeeq fees: return `block_policy` fee rate estimate when `mempool_policy` is not readyP2 · bug fixNeeds rebase0 (+1)Mild108 + 145 tests
  • Prevent transaction fee underestimation and stuck transactions when mempool data is sparse or unready
  • Provide reliable fee estimates by falling back to block history instead of failing or using the fee floor
  • P2 because it prevents severe fee underestimation that risks stuck transactions after node restarts
  • Resolves total fee estimation failures reported by downstream services like LDK when mempools are not ready
  • Ready to review
  • Nothing known that would invalidate a review now
  • Support for falling back to block policy to resolve downstream failures (instagibbs, stickies-v, achow101)
  • Confirmed to fix the issue through testing (tankyleo, polespinasa)
  • Objection that starved mempools will overestimate fees was answered with no reply (davidgumberg)
  • Unaddressed suggestion to add test coverage for block policy fallback (l0rinc)
  • 108 lines added or modified outside tests
  • 145 lines added or modified in tests
  • 139 lines removed in total
  • 14 files, 5 commits
(+)#35026 javierpmateos mempool: recalculate stale BIP68 lockpoints in removeForReorgP2 · bug fixReady2 (+1)Strong1 + 136 tests
  • Prevent false eviction of valid BIP68 transactions and their descendants from the mempool during reorgs
  • Ensure relative locktimes are accurately re-evaluated when a chain reorg lowers the tip or median time past
  • P2 because it fixes false eviction of valid transactions and their descendants during reorgs
  • Protects transaction propagation and second-layer protocols relying on relative timelocks
  • Ready to review
  • Broad support with all concerns addressed and no open objections
  • Verified the fix prevents stale-lockpoint evictions and passes regression tests (Bortlesboat, tumutech)
  • Confirmed recalculation covers mixed inputs and time-based variants (ismaelsadeeq, DevaanshPathak)
  • ACK without detailed rationale (Bicaru20)
  • 1 lines added or modified outside tests
  • 136 lines added or modified in tests
  • 5 lines removed in total
  • 3 files, 1 commits
(+)#36367 Bruce039 mempool: keep prioritisetransaction deltas within MAX_MONEYP2 · bug fixReady0Crickets11 + 29 tests
  • Prevent cluster mempool integer overflows when aggregating prioritised transaction fee deltas
  • Avoid negative chunk fees that cause getblocktemplate to omit prioritised transactions
  • P2 because it fixes a signed integer overflow in fee calculations during cluster mempool linearization
  • Resolves a reproducible runtime error that corrupts cluster mempool chunk fee data structures
  • Ready for review
  • No obstacles or pending changes known that would invalidate review
  • No review verdicts recorded
  • No substantive comments or reviews yet
  • Awaiting initial review
  • 11 lines added or modified outside tests
  • 29 lines added or modified in tests
  • 3 lines removed in total
  • 3 files, 1 commits
(+)#36712 ismaelsadeeq fees: prevent divide by zero in CFeeRateP2 · bug fixReady2Positive7 + 5 tests
  • Prevent a node crash caused by division by zero when fee calculations encounter a zero-sized fee rate
  • Ensure zero-sized fee rates safely return zero instead of crashing the node
  • P2 because it fixes an unhandled division-by-zero crash during fee rate operations
  • It prevents arithmetic crashes but has no evidence of an external remote denial of service vector
  • Ready to review
  • General support without stated reasons and no open objections
  • Concept approval without stated reasons (darosior)
  • Support without stated reasons (polespinasa, pablomartin4btc)
  • Support with an inline test formatting nit (maflcko)
  • 7 lines added or modified outside tests
  • 5 lines added or modified in tests
  • 1 lines removed in total
  • 3 files, 1 commits
(+)#36540 ismaelsadeeq mempool: remove time-based transaction expiryP2 · cleanupReady0Blocked15 + 31 tests
  • Stop evicting mempool transactions purely by age to avoid dropping still-mineable transactions
  • Reduce per-entry memory overhead so nodes can fit more transactions within their mempool limit
  • P2 because age eviction can drop mineable transactions like low-fee parents waiting on fee-bumping children
  • Removing the entry time index reduces per-entry memory overhead across the mempool
  • Ready to review
  • Concept approval citing code cleanup and obsolete historical justifications (stickies-v, maflcko)
  • Unaddressed objection: wallet test no longer checks parent resubmission before child (fametrano)
  • Concern that unmineable transactions could linger and crowd out mineable ones under size limits (musaHaruna)
  • Prefer deprecating or raising the expiry threshold over immediate removal (ajtowns, musaHaruna)
  • 15 lines added or modified outside tests
  • 31 lines added or modified in tests
  • 233 lines removed in total
  • 20 files, 3 commits
(+)#35286 instagibbs rpc: add testsubmitpackage for 1p1c test submissionsP3 · new featureReady0Strong287 + 716 tests
  • Allow wallets to test 1-parent-1-child package acceptance and RBF without modifying the mempool
  • Enable pre-flight checks for CPFP fee bumping where aggregate feerates or sibling eviction are required
  • P3 because it enables dry-run package validation for wallet tooling without altering core mempool policy
  • Modifies validation internals for aggregate feerates and RBF evaluation without affecting relay or DoS rules
  • Ready to review
  • Concept approval citing the usefulness of dry-running 1p1c package acceptance for wallets (ismaelsadeeq)
  • Concept approval without stated reasons (w0xlt)
  • Suggests verifying downstream user demand before committing to maintain the new RPC (dergoegge)
  • Suggests splitting out the internal validation dry-run if RPC demand is not established (andrewtoth)
  • 287 lines added or modified outside tests
  • 716 lines added or modified in tests
  • 74 lines removed in total
  • 7 files, 2 commits
(+)#36466 RobinLinus policy: make unstructured Taproot annexes standardP3 · new featureReady1Positive28 + 245 tests
  • Allow Taproot transactions with marker-only or unstructured annexes to relay as standard
  • Enables applications to use annex data for arbitrary payloads or marker-based opt-in
  • P3 after comparing with the other PRs here (assessed alone as P2): Demoted from P2: policy relaxation revisiting a closed PR with no cited downstream demand ranks below the bug fixes and the demand-backed policy change #36540.
  • P2 because it expands standard transaction relay policy for BIP 341 annex use cases
  • Policy expansions carry potential DoS and third-party transaction malleation risks
  • Ready for review, with no pending blockers or unpushed revisions
  • Approval without stated reasons after input handling concerns were resolved (petertodd)
  • Approval without stated reasons (Rob1Ham)
  • Questioned standardizing annexes before consensus meaning or active network use exists (sipa)
  • 28 lines added or modified outside tests
  • 245 lines added or modified in tests
  • 28 lines removed in total
  • 5 files, 4 commits
(+)#36608 instagibbs Reimplement private broadcast as node state-less jobs + package relay supportP3 · bug fixNeeds rebase0Crickets7,403 + 9,808 tests
  • Eliminate deanonymization risks and timing leaks when broadcasting private transactions
  • Allow broadcasting low-fee private transactions that rely on child-pays-for-parent package relay
  • P3 because it enables 1-parent-1-child package relay for transactions needing fee bumping
  • Fixes a fee sum overflow bug during package handling with extreme prioritisetransaction deltas
  • Author directed review to slimmed-down PR #36628 instead
  • No review verdicts recorded
  • No substantive discussion or review comments yet
  • Author noted that reviewers should look at PR #36628 instead
  • 7,403 lines added or modified outside tests
  • 9,808 lines added or modified in tests
  • 4,442 lines removed in total
  • 121 files, 35 commits
(+)#36214 yuvicc test: cover cluster limits during reorgsP3 · test coverageReady0Crickets0 + 40 tests
  • Add functional test coverage for mempool cluster count limit enforcement during chain reorganizations
  • Ensure resurrected transactions merged with mempool descendants are correctly trimmed back to limits
  • P3 because it adds regression test coverage without changing node behavior or fixing an active bug
  • Validates mempool cluster trimming when resurrected transactions reconnect with existing descendants
  • Ready for review
  • No review verdicts recorded
  • No explicit approvals or objections yet
  • Asked to clarify what coverage this test adds over existing tests (instagibbs)
  • Suggested trimming the test down to a single mutant-killing case (sedited)
  • Requested including the killed mutant diff in a PR comment (maflcko)
  • 0 lines added or modified outside tests
  • 40 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#35882 jeanpablojp test: cover Taproot standardness rules in mempool_acceptP3 · test coverageReady0Crickets0 + 17 tests
  • Explicitly test Taproot standardness rejections for oversized stack items and empty control blocks
  • Prevents regressions where missing checks cause node segfaults undetected by existing test suites
  • P3 because it adds targeted functional test coverage without changing node behavior
  • Prevents silent regressions in control block checks that previously risked node crashes
  • Ready to review
  • No review verdicts recorded
  • No formal reviews or approvals yet
  • Questioned whether existing taproot tests already covered these mutant cases (sedited)
  • Author clarified coverage gaps and dropped a redundant test case
  • 0 lines added or modified outside tests
  • 17 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#35581 ismaelsadeeq node: add block template manager and track waitNext fee inflowP3 · new featureNeeds rebase0Strong752 + 1,416 tests
  • Avoid rebuilding full block templates repeatedly just to check if mempool fee increases warrant a new one
  • Reduce CPU overhead and lock contention for miners waiting on template updates
  • P3 because it adds incremental feerate diagram snapshots without changing core mempool policy
  • Provides a useful state-change notification mechanism driven primarily by mining needs
  • Worth reviewing now despite conflict with master, as the needed rebase is mechanical
  • Strong support with no blocking objections
  • Supports incremental tracking over full rebuilds and notes fuzz test found a real bug (pablomartin4btc)
  • Concept approval without stated reasons (w0xlt)
  • Open suggestion to restore and update a miner comment on staleness checks (pablomartin4btc)
  • 752 lines added or modified outside tests
  • 1,416 lines added or modified in tests
  • 587 lines removed in total
  • 51 files, 27 commits
(+)#36122 fjahr BIP460: CISA for Taproot key path spendsP3 · new featureWaiting on author0Strong7,680 + 3,565 tests
  • Allow cross-input signature aggregation for Taproot key path spends to reduce transaction size and fees
  • Lower fee overhead for multi-party collaborative transactions like CoinJoin and Payjoin
  • P3 because it establishes standardness rules for witness version 2 spends
  • It provides a clear relay specification to test cross-input aggregation before activation
  • Worth reviewing now, but check if CI failures are caused by this PR before a deep review
  • No review verdicts recorded
  • Substantive support after testing consensus logic against BIP460 vectors and edge cases (fametrano)
  • Objections regarding wallet signing and PSBT input grouping were addressed in code (BarneyChambers)
  • Open suggestion to update vendored consensus test vectors to match the latest BIP copy (fametrano)
  • 7,680 lines added or modified outside tests
  • 3,565 lines added or modified in tests
  • 219 lines removed in total
  • 111 files, 22 commits
(+)#36706 fanquake policy: remove unused GetVirtualTransactionInputSizeP4 · cleanupReady2Positive0 + 1 tests
  • Clean up dead code by removing an unused policy helper function
  • Simplifies the policy module after wallet input estimation moved to descriptors
  • P4 because it is dead-code cleanup with no behavioral effect on transaction acceptance or relay rules
  • Removes a helper with no production callers, offering minimal impact beyond cleaner code
  • Ready to review
  • Approval without stated reasons (jpk68)
  • Tested code review approval with an inline nit (l0rinc)
  • 0 lines added or modified outside tests
  • 1 lines added or modified in tests
  • 14 lines removed in total
  • 4 files, 1 commits
Reviewability: ReadyStalePaused
Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets
Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs.
Size: lines added or modified outside tests, then in tests; greener = smaller.
Ranking pass (2026-11-01): all PRs here were compared with each other; 6 notes on review order, overlaps, and band changes.

Covers

Which unconfirmed transactions the node accepts, keeps, and relays: standardness and policy rules, replacement rules, package acceptance and relay, mempool data structures and limits, eviction, fee estimation, and the cluster mempool project. The Mempool and TX fees and policy labels are a strong prior.

Not mempool: consensus validity (validation); block template construction (mining); the p2p messages that carry transactions (p2p).

What matters here

Denial-of-service and pinning resistance first: policy is the node's defense against transactions designed to waste resources or to block legitimate replacements, and second-layer protocols depend on it. Then correctness of acceptance and replacement rules against their stated specifications, since wallets and Lightning implementations build on them. Then progress on the cluster mempool project and the improvements it unblocks. Then fee estimation accuracy, which every wallet user feels. Then memory and CPU behavior under load.

Policy changes with a written rationale and downstream demand rank above local tidy-ups.

generated 2026-11-02 01:17 UTC