aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorAva Chow <github@achow101.com>2024-06-17 17:22:43 -0400
committerAva Chow <github@achow101.com>2024-06-17 17:22:43 -0400
commit41544b8f96dbc9c6b8998acd6522200d67cdc16d (patch)
treefdfecf8ae5405e395ae75c002de4cf4b769794b6 /doc
parentddf2ebd4659e926c5c6ee6726511b0b88bf7c2e0 (diff)
parent94ed4fbf8e1a396c650b5134d396d6c0be35ce10 (diff)
Merge bitcoin/bitcoin#28984: Cluster size 2 package rbf
94ed4fbf8e1a396c650b5134d396d6c0be35ce10 Add release note for size 2 package rbf (Greg Sanders) afd52d8e63ed323a159ea49fd1f10542abeacb97 doc: update package RBF comment (Greg Sanders) 6e3c4394cfadf32c06c8c4732d136ca10c316721 mempool: Improve logging of replaced transactions (Greg Sanders) d3466e4cc5051c314873dd14ec8f7a88494c0780 CheckPackageMempoolAcceptResult: Check package rbf invariants (Greg Sanders) 316d7b63c97144ba3e21201315c784852210f8ff Fuzz: pass mempool to CheckPackageMempoolAcceptResult (Greg Sanders) 4d15bcf448eb3c4451b63e8f78cc61f3f9f9b639 [test] package rbf (glozow) dc21f61c72e5a97d974ca2c5cb70b8328f4fab2a [policy] package rbf (Suhas Daftuar) 5da396781589177d4ceb3b4b59c9f309a5e4d029 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: ACK 94ed4fbf8e1a396c650b5134d396d6c0be35ce10 glozow: reACK 94ed4fbf8e via range-diff ismaelsadeeq: re-ACK 94ed4fbf8e1a396c650b5134d396d6c0be35ce10 theStack: Code-review ACK 94ed4fbf8e1a396c650b5134d396d6c0be35ce10 murchandamus: utACK 94ed4fbf8e1a396c650b5134d396d6c0be35ce10 Tree-SHA512: 9bd383e695964f362f147482bbf73b1e77c4d792bda2e91d7f30d74b3540a09146a5528baf86854a113005581e8c75f04737302517b7d5124296bd7a151e3992
Diffstat (limited to 'doc')
-rw-r--r--doc/policy/packages.md25
-rw-r--r--doc/release-28984.md6
2 files changed, 28 insertions, 3 deletions
diff --git a/doc/policy/packages.md b/doc/policy/packages.md
index 7e983221c5..a220bdd17f 100644
--- a/doc/policy/packages.md
+++ b/doc/policy/packages.md
@@ -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)
diff --git a/doc/release-28984.md b/doc/release-28984.md
new file mode 100644
index 0000000000..3da64f6578
--- /dev/null
+++ b/doc/release-28984.md
@@ -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.