Package Relay 在节点之间传输相关的未确认交易,使节点能够在接纳到内存池时联合评估父交易与子交易。数据传输、本地接纳策略和矿工选取交易入块是不同步骤;交易包不会改变各笔交易在共识规则下的有效性。
低费率的父交易可能在节点看到手续费较高的子交易之前就被拒绝。只有所需交易能够到达矿工,CPFP 才能形成经济激励。Package Relay 有助于弥补这一传输缺口,但不能替代签名或输入验证。 [BIP 331 — Ancestor Package Relay]
示例父交易为 200 vB,手续费为 200 sat;子交易为 100 vB,手续费为 1300 sat。合计费率为 1500 / 300 = 5 sat/vB,而不是各自费率 1 和 13 的算术平均值。示例假定仅有这两笔未确认交易,没有其他祖先;实际接纳还取决于节点策略和交易冲突。 [BIP 331 — Ancestor Package Relay]
子交易花费父交易的输出。在拓扑排序的列表中,父交易必须位于子交易之前;高手续费不能修复祖先缺失或冲突花费。对交易包大小、数量和结构的限制用于保护节点资源,并非通用的共识参数。 [Bitcoin Core 28.0 — submitpackage]
BIP 331 描述支持协商,以及用于祖先信息和交易下载的专用消息。相比之下,Bitcoin Core 28.0 记录的是通过现有转发协议,有限地、机会性地配对一个父交易和一个子交易。本地 RPC 允许多个父交易,不代表 P2P 也具备同样支持;这些信息描述的是 28.0 版本,而非对所有版本或对等节点的承诺。 [BIP 331 — Ancestor Package Relay] [Bitcoin Core 28.0 — release notes]
submitpackage 28.0 验证交易并将其提交给本地节点。应同时检查 package_msg 和各笔 tx-results:操作可能只接纳交易包的一部分,发生错误时不会原子性地撤销全部操作。即使完全成功,也不能证明邻居节点已接纳,或矿工会及时将其打包。 [Bitcoin Core 28.0 — submitpackage]
在独立测试环境中记录版本、内存池设置、依赖顺序、大小和手续费。testmempoolaccept 只检查而不广播;其结果不构成对 submitpackage 的保证。还应观察另一节点是否接纳。对时间敏感的 Lightning 交易仍需留有余量:仅支持交易包不能消除 pinning、拥堵或出块延迟。 [Bitcoin Core 28.0 — testmempoolaccept] [Bitcoin Core 28.0 — release notes]
要获得更完整的理解,请将本词条与以下词条结合阅读: Mempool, CPFP (Child Pays for Parent), Fee Rate, Replace-by-Fee (RBF), Lightning Network. 反向关联还来自: CPFP (Child Pays for Parent), 赵格洛丽亚.