mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-08-30 15:52:39 +02:00
Merge bitcoin/bitcoin#28984: Cluster size 2 package rbf
94ed4fbf8e
Add release note for size 2 package rbf (Greg Sanders)afd52d8e63
doc: update package RBF comment (Greg Sanders)6e3c4394cf
mempool: Improve logging of replaced transactions (Greg Sanders)d3466e4cc5
CheckPackageMempoolAcceptResult: Check package rbf invariants (Greg Sanders)316d7b63c9
Fuzz: pass mempool to CheckPackageMempoolAcceptResult (Greg Sanders)4d15bcf448
[test] package rbf (glozow)dc21f61c72
[policy] package rbf (Suhas Daftuar)5da3967815
PackageV3Checks: Relax assumptions (Greg Sanders) Pull request description: Allows any 2 transaction package with no in-mempool ancestors to do package RBF when directly conflicting with other mempool clusters of size two or less. Proposed validation steps: 1) If the transaction package is of size 1, legacy rbf rules apply. 2) Otherwise the transaction package consists of a (parent, child) pair with no other in-mempool ancestors (or descendants, obviously), so it is also going to create a cluster of size 2. If larger, fail. 3) The package rbf may not evict more than 100 transactions from the mempool(bip125 rule 5) 4) The package is a single chunk 5) Every directly conflicted mempool transaction is connected to at most 1 other in-mempool transaction (ie the cluster size of the conflict is at most 2). 6) Diagram check: We ensure that the replacement is strictly superior, improving the mempool 7) The total fee of the package, minus the total fee of what is being evicted, is at least the minrelayfee * size of the package (equivalent to bip125 rule 3 and 4) Post-cluster mempool this will likely be expanded to general package rbf, but this is what we can safely support today. ACKs for top commit: achow101: ACK94ed4fbf8e
glozow: reACK94ed4fbf8e
via range-diff ismaelsadeeq: re-ACK94ed4fbf8e
theStack: Code-review ACK94ed4fbf8e
murchandamus: utACK94ed4fbf8e
Tree-SHA512: 9bd383e695964f362f147482bbf73b1e77c4d792bda2e91d7f30d74b3540a09146a5528baf86854a113005581e8c75f04737302517b7d5124296bd7a151e3992
This commit is contained in:
@@ -36,10 +36,29 @@ The following rules are enforced for all packages:
|
||||
* Packages cannot have conflicting transactions, i.e. no two transactions in a package can spend
|
||||
the same inputs. Packages cannot have duplicate transactions. (#20833)
|
||||
|
||||
* No transaction in a package can conflict with a mempool transaction. Replace By Fee is
|
||||
currently disabled for packages. (#20833)
|
||||
* Only limited package replacements are currently considered. (#28984)
|
||||
|
||||
- Package RBF may be enabled in the future.
|
||||
- All direct conflicts must signal replacement (or have `-mempoolfullrbf=1` set).
|
||||
|
||||
- Packages are 1-parent-1-child, with no in-mempool ancestors of the package.
|
||||
|
||||
- All conflicting clusters(connected components of mempool transactions) must be clusters of up to size 2.
|
||||
|
||||
- No more than MAX_REPLACEMENT_CANDIDATES transactions can be replaced, analogous to
|
||||
regular [replacement rule](./mempool-replacements.md) 5).
|
||||
|
||||
- Replacements must pay more total total fees at the incremental relay fee (analogous to
|
||||
regular [replacement rules](./mempool-replacements.md) 3 and 4).
|
||||
|
||||
- Parent feerate must be lower than package feerate.
|
||||
|
||||
- Must improve [feerate diagram](https://delvingbitcoin.org/t/mempool-incentive-compatibility/553). (#29242)
|
||||
|
||||
- *Rationale*: Basic support for package RBF can be used by wallets
|
||||
by making chains of no longer than two, then directly conflicting
|
||||
those chains when needed. Combined with V3 transactions this can
|
||||
result in more robust fee bumping. More general package RBF may be
|
||||
enabled in the future.
|
||||
|
||||
* When packages are evaluated against ancestor/descendant limits, the union of all transactions'
|
||||
descendants and ancestors is considered. (#21800)
|
||||
|
6
doc/release-28984.md
Normal file
6
doc/release-28984.md
Normal file
@@ -0,0 +1,6 @@
|
||||
P2P and network changes
|
||||
-----------------------
|
||||
|
||||
- Limited package RBF is now enabled, where the proposed conflicting package would result in
|
||||
a connected component, aka cluster, of size 2 in the mempool. All clusters being conflicted
|
||||
against must be of size 2 or lower.
|
Reference in New Issue
Block a user