跳转到正文
buybitcoinsmart

术语表 /协议与升级

Erlay

Erlay 是什么?
Erlay 是一项提议中的方案,让节点借助极小的概要(sketch)来比对各自见过哪些交易,而不必向每个对等节点逐一广播每笔交易的哈希。

规定于 BIP-330。

广播交易是节点带宽最大的单项消耗,而且成本随连接的对等节点数量增加而上升。Gleb Naumenko 和 Pieter Wuille 将该设计写成了 BIP330,目前仍是草案:Bitcoin Core 的任何版本都未启用它。它之所以重要,是因为它决定了运行自己的节点可以便宜到什么程度。

运作方式

Erlay 针对的是一种冗余,数一数就会发现:目前,节点会把听到的每笔交易告知它的每一个对等节点,而其中大多数对等节点早已知道。

现行方法是泛洪。每笔新交易都通过 inv 消息公布,消息携带一个类型代码和一个32字节的标识符,即每个对等节点每次公布36字节。Bitcoin Core 默认为交易中继建立8个出站连接,并接受入站对等节点,连接总数最多125个,因此一台连接良好的机器会把同一条短消息发送和接收数十次,而这些信息它本来迟早都会得知。浪费与连接数成正比,这恰恰惩罚了让网络更难被分割的行为。

Erlay 保留少量泛洪,其余改用集合协调。每一对对等节点都会记录自己尚未与对方交换的公布内容。其中一方会定期请求该集合的概要。概要是固定大小的代数摘要,其长度取决于预计存在多少差异,而不取决于任何一方持有多少笔交易,将两个概要合并,即可得到一方拥有而另一方缺少的那些条目。minisketch 库实现了这一构造和解码,Bitcoin Core 的源代码树中已有多年该库,而围绕它的中继协议始终没有合并。

猜错概要大小并不致命。当解码因差异大于预估而失败时,对等节点会扩展概要并重试,而不是从头开始,因此估计不准只会多花一点带宽,而不必完整重新同步。

在哪里会遇到它

您目前还看不到 Erlay,对于想在节点仪表板中寻找它的人来说,这就是实话。

您能看到的是它要解决的问题。在自己的节点上调用 getnettotals,字节计数器会显示,除了区块链的初始下载之外,中继流量占据了主要部分。使用计量付费网络的运营者已经采取应对措施,例如用 maxuploadtarget 限制上传,或减少所保持的对等节点数量,这两种做法都会为了降低账单而略微削弱网络。

这正是 Erlay 想要化解的取舍。如果带宽不再随连接数增长,节点就可以放心地保持多得多的对等节点,而连接密集的网络要难以被分割或遭遇日蚀攻击得多。对于只想验证自己的币、而不想信任区块浏览器的人,这一前景范围有限却真实:同样的验证,网络成本更低。

Erlay vs 紧凑区块中继

Erlay 针对的是交易被挖出之前的情形,紧凑区块中继针对的是区块被挖出之后的情形。两者应对不同的瓶颈,评判所用的时钟也不同。区块传播是延迟问题,因为区块在途中耗费的每一秒,都是某个矿工在已不存在的链顶端上继续挖矿的一秒,而解决办法已在2016年发布。交易公布则是流量问题,以一个月内的千兆字节计,而不是以毫秒计,所以没有人着急,这也是该提议多年来一直停留在草案阶段的原因。

请勿混淆

常见问题

我可以在 Bitcoin Core 中启用 Erlay 吗?

不可以。BIP330 仍是草案,没有任何版本启用交易协调。它所依赖的 minisketch 库位于 Bitcoin Core 的源代码树中,但构建在其上的中继协议尚未合并。

Erlay 会让我的节点更快吗?

不是更快,而是更省。它针对的是交易公布的流量,而不是任何环节的速度,因此可见的效果将是每月带宽用量降低,以及无需额外付费即可保持更多对等节点连接。

相关术语

协议与升级中的更多术语

阅读本页英文版