Gloria Zhao 是 Bitcoin Core 开发者,也是 BIP 331 和 BIP 431 的作者。她关注 mempool——每个节点在本地保存的未确认交易集合,以及接收、转发这些交易的规则。这些不太显眼的软件部分,决定节点能获知和传播哪些支付。改进它们既需要编写代码,也需要仔细审查并防范滥用。
Gloria Zhao 于 2021 年 1 月 4 日加入 Brink,成为该机构首位获得研究资助的开发者。2022 年,她成为 Bitcoin Core 维护者之一,负责源代码和开发流程。这是在维护一款具体的软件,并不意味着成为比特币的领导者。本次修订查阅的 Brink 往届成员介绍将她列为前维护者。因此,阅读人物经历时要留意日期:过去的任命报道,不能证明一个人如今仍担任同一职务。 [1] [2]
好的代码也需要其他人检查。Zhao 曾参与 Bitcoin Core PR Review Club,新贡献者在那里学习阅读拟议的代码改动,并考虑可能带来的影响。PR,即 pull request,是请求将改动纳入项目。俱乐部帮助参与者理解改动要解决什么问题、应如何审查;主要目的并不是推动某个 PR 合并。讨论服务于学习和准备,不会自动批准代码或整个版本发布。 [2] [3]
Mempool 不是全网共用的一条队列。每个节点自行决定接收、转发哪些未确认交易,例如考虑手续费和防止资源耗尽。这属于本地策略,与检验区块有效性的共识规则不同。Zhao 签署了 2025 年 6 月 6 日的开发者声明,强调用户选择软件的权利。开发者可以提出不同策略,但签名或代码仓库维护权限,都不会替所有其他节点改写软件。 [4]
一笔交易可以花费另一笔尚未确认交易中的资金。前一笔称为父交易,依赖它的后一笔称为子交易。Zhao 的 BIP 331 提出 Package Relay,即将相关交易作为一个包传送。节点将通过 sendpackages 协商支持情况,先获取所需祖先交易的信息,再取得交易数据,避免逐一寻找缺失的环节。该文档状态为 Draft,也就是草案;文档存在不等于协议已经在全网完整部署。 [5]
假设你收到一笔尚未确认、手续费偏低的支付。如果能够花费它的输出,就可以创建手续费更高的后续交易。这就是 CPFP,Child Pays for Parent:矿工要获得子交易的手续费,也必须包含父交易,因此可以将两者一并评估。但缺少父交易的节点通常不能单独接收子交易。BIP 331 针对的正是这类传播障碍。更高的手续费仍不能代替有效的签名和输入,也不保证在某个期限前确认。 [5]
Bitcoin Core 28.0 引入了有限的 1P1C 流程,即一个父交易加一个子交易。它利用已有的 P2P 通信,也就是节点间的直接交换,将合适的交易配对并一起评估。这是具体改进,却不是 BIP 331 的完整部署。发行说明明确指出,这个网络流程不支持拥有多个未确认父交易的子交易,受到攻击时也还不可靠。对于依赖交易传播的钱包,必须区分某个版本的有限功能与更全面的提案。 [5] [6]
攻击者可能利用 mempool 的限制,妨碍替换交易或提高其手续费。这称为 pinning。TRUC 策略限制交易在确认前的依赖关系,使接收和替换更容易判断。Bitcoin Core 28.0 为 nVersion=3 的交易引入了该策略。Zhao 的 BIP 431 以状态为 Draft 的信息类文档描述了这一方法。限制未确认的祖先和后代交易有所帮助,但保护效果也取决于其他节点是否采用该策略。它不能保证防住所有 pinning,也不承诺及时入块。 [6] [7]
应用可以通过 submitpackage 向自己的节点提交交易包。Bitcoin Core 28.0 文档说明,这个通过 RPC 接口与节点通信的命令,会检查共识规则和 mempool 策略。即使交易包的其他部分失败,通过检查的交易也可能被接收。因此,出错不一定会撤销整个处理结果。应同时查看总体消息 package_msg 和每笔交易的 tx-results。即使本地处理成功,也不能证明交易包已传遍网络,或其中的交易已经入块。 [8]
要获得更完整的理解,请将本词条与以下词条结合阅读: Mike Hearn, Mempool, Package Relay. 反向关联还来自: Package Relay, Mike Hearn, Sergio Demian Lerner.