aboutsummaryrefslogtreecommitdiff
path: root/doc/policy/packages.md
diff options
context:
space:
mode:
authorglozow <gloriajzhao@gmail.com>2022-02-10 11:59:26 +0000
committerglozow <gloriajzhao@gmail.com>2022-02-14 10:04:51 +0000
commit77202f0554dcbbbb167d0ed3927cca0bf4609ce8 (patch)
tree246d0ae22974d827e87b4b12f8acf5a66d097b38 /doc/policy/packages.md
parentd35a3cb3968d7584c7d5c42b121a80f34ea656bf (diff)
[doc] package deduplication
Diffstat (limited to 'doc/policy/packages.md')
-rw-r--r--doc/policy/packages.md15
1 files changed, 15 insertions, 0 deletions
diff --git a/doc/policy/packages.md b/doc/policy/packages.md
index 07698f2af2..7f7fbe18cd 100644
--- a/doc/policy/packages.md
+++ b/doc/policy/packages.md
@@ -57,3 +57,18 @@ test accepts):
- Warning: Batched fee-bumping may be unsafe for some use cases. Users and application developers
should take caution if utilizing multi-parent packages.
+
+* Transactions in the package that have the same txid as another transaction already in the mempool
+ will be removed from the package prior to submission ("deduplication").
+
+ - *Rationale*: Node operators are free to set their mempool policies however they please, nodes
+ may receive transactions in different orders, and malicious counterparties may try to take
+ advantage of policy differences to pin or delay propagation of transactions. As such, it's
+ possible for some package transaction(s) to already be in the mempool, and there is no need to
+ repeat validation for those transactions or double-count them in fees.
+
+ - *Rationale*: We want to prevent potential censorship vectors. We should not reject entire
+ packages because we already have one of the transactions. Also, if an attacker first broadcasts
+ a competing package or transaction with a mutated witness, even though the two
+ same-txid-different-witness transactions are conflicting and cannot replace each other, the
+ honest package should still be considered for acceptance.