aboutsummaryrefslogtreecommitdiff
path: root/doc/policy/packages.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/policy/packages.md')
-rw-r--r--doc/policy/packages.md34
1 files changed, 29 insertions, 5 deletions
diff --git a/doc/policy/packages.md b/doc/policy/packages.md
index dba270e494..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)
@@ -48,8 +67,13 @@ The following rules are enforced for all packages:
heavily connected, i.e. some transaction in the package is the ancestor or descendant of all
the other transactions.
-The following rules are only enforced for packages to be submitted to the mempool (not enforced for
-test accepts):
+* [CPFP Carve Out](./mempool-limits.md#CPFP-Carve-Out) is disabled in packaged contexts. (#21800)
+
+ - *Rationale*: This carve out cannot be accurately applied when there are multiple transactions'
+ ancestors and descendants being considered at the same time.
+
+The following rules are only enforced for packages to be submitted to the mempool (not
+enforced for test accepts):
* Packages must be child-with-unconfirmed-parents packages. This also means packages must contain at
least 2 transactions. (#22674)