前言:此前译者译介了由Pieter Wuille、Gregory Maxwell等人提出的比特币网络改进协议Erlay,但由于文章面向的是技术型读者,因此比较难以理解。对此,Sam Wouters撰写了一篇更容易理解的科普文章,目的是让更多的人了解这种改进提议对比特币产生的积极影响。以下为译文:
我写这篇非技术性的解释文章,是因为我相信Erlay会是比特币最重要的性能改进方案之一。
Erlay将通过减少网络参与者之间不必要的通信,帮助比特币网络保持去中心化。
关于Erlay将如何影响比特币的猜想图
感谢Gleb Naumenko、Pieter Wuille、Gregory Maxwell、Sasha Fedorova以及Ivan Beschatnikh提出了这一令人惊叹的改进方案。关于这一技术方案,我首先是在Bitcoin Optech Newsletter (#49)上看到的(强烈推荐)。特别感谢作者能够让技术型读者能够接触到这种技术,而我希望通过这篇文章,让更多的人了解它。
今天,比特币是怎样广播一笔交易的?
下面这个人是Bob(鲍勃)。
Bob(鲍勃)想要发送一笔比特币交易(我们不去考虑他的目的,你可以自行猜测)。
他显然希望自己的交易能够尽快被纳入区块链。为了实现这一点,如果比特币网络中的很多参与者知道Bob(鲍勃)的钱包广播了他的交易,这将是有所帮助的。这将增加他的交易被纳入下一个被创建的交易区块的机会(平均每10分钟发生一次)。
由于Bob(鲍勃)对做某些事情很感兴趣,他并不拥有自己的比特币节点。相反,他相信Alice(爱丽丝)的节点会广播从他钱包所接收到的交易。
Bob(鲍勃)知道Alice(爱丽丝)在使用她的节点时不可能偷他的钱
Alice(爱丽丝)的节点首先检查Bob(鲍勃)的交易,看他的钱包是否对交易进行了签名。当然,Alice(爱丽丝)的节点还会检查Bob(鲍勃)之前是否有花过他的比特币,这是通过查看Bob(鲍勃)当前未使用交易的记录(称为UTXO)来实现的。
关于“什么是UTXO”的解释
“在检查完所有内容之后,Alice(爱丽丝)的节点,会把有关Bob(鲍勃)的交易信息,告诉它所连接的8个节点。一笔比特币交易既有一个输入(你的比特币在你控制的地址上),又有一个输出(接收地址)。
每个交易输出,都可以反过来成为下一笔交易的输入。
为了确保你不会两次花费相同的比特币,节点可检查网络上亿笔交易的历史记录,以确定以前是否使用过相同的交易输入。
你可以想象,节点的工作量是有多么庞大,而为了更高效,节点将遍历整个历史记录一次,以创建一个尚未用作交易输入的所有交易输出的列表。
这被称为未花费交易输出,简称为UTXO。
今天,比特币网络中大约有5600万 个UTXO,占用了大约3GB的存储空间。另一方面,整个比特币区块链约220GB,包含超过4.22亿笔交易。
每次发送一笔交易时,节点都会删除已花费的旧UTXO,并添加新的UTXO,以使列表保持最新。
”
Bob(鲍勃)可能盲目地信任Alice(爱丽丝)的节点,但它的对等节点则不是。它们将对Alice(爱丽丝)的节点执行与Bob(鲍勃)的交易相同的检查。
正如你可以想象的那样,很多节点在那之后会多次得知关于Bob(鲍勃)的交易,因为它们都以不同的方式连接,并且不知道谁接收到哪些信息。
显然,发送的消息要比需要的信息要多的多,虽然这让比特币用户高度确信:世界上所有的节点都会知道他们的交易。但这给节点带来了不必要且很大的负担。
这些节点发送和接收的数据远比需要的多。准确地说,研究表明,节点间44%的流量都是这些不必要的消息!
这给节点增加了很大的压力,尤其是那些网络连接较为落后的节点,或者随着比特币的使用越来越多,其所有者不能一直为其网络订阅支付越来越多的费用。
而这个问题,正是Erlay协议所要解决的。
如何使用 Erlay协议广播一笔交易
当你忙于了解UTXO以及节点的额外流量时,Bob(鲍勃)已通过教程学习了如何设置自己的比特币节点。
Bob(鲍勃)已使Alice(爱丽丝)成为他的对等节点之一,并将他的交易广播给她,以及其他7个对等节点。在验证了他的交易之后,Bob(鲍勃)的对等节点也会告诉它们的8个对等节点。
Bob(鲍勃)的对等节点用绿色线连接,对等节点各自的对等节点,则用蓝色线连接
一旦这笔交易通过了网络,并不是每个节点都收到了Bob(鲍勃)的交易。如果你没有被包含在一个由8个对等节点所组成的小组当中,你可能被漏掉了。不用担心,节点不必听到Bob(鲍勃)的交易。相反,它将定期请求所有对等节点已接收的所有交易的概述(sketch)。
- 每个对等节点发送一个表示它接收到的所有交易的概述(sketch),这比完整发送每笔交易占用的数据要少。
- 然后,节点将生成它自己收到的交易的概述(sketch),并将此概述(sketch)与它收到的交易进行比较,这就好比一个“找茬”游戏。
- 然后,节点可以从其对等节点请求其自己的概述(sketch)中所缺少的确切交易。
Erlay协议的优点和缺点
通过比较这些概述(sketch)以找出差异的方法,会导致一个缺点。这使得一笔交易被全球比特币网络所有节点知道所需花费的时间,要稍长一些(2.6秒)。
由于比特币平均每10分钟产生一个新的数据块,因此这种减速相对于减轻节点大量的负担而言似乎是值得的。
通过这样做,节点可以做较少的工作,那么人们就更容易地运行自己的节点,比特币网络可以保持去中心化。
我们不希望看到只有几个大数据中心运行比特币全节点的情况,因为我们所有人都必须信任它们能够诚实地处理我们的交易。如果这样的事情发生了,我们就会再次回到一个由中央控制的金融机构组成的世界,这是比特币要避免发生的。
你可以试着想想这个Erlay协议是如何失败的,论文的作者也有考虑!在这里,他们描述了用于比较这些概述(sketch)的最佳参数,以及在节点无法找到概述(sketch)之间差异时,节点可以依靠哪些步骤。
作者们还测试了该协议在一个由6万个节点组成的模拟网络和分布在世界各地的100个节点组成的实时网络上的性能。
如果节点将其对等节点的数量从8个增加到32个,那么它们的流量通常会增加300%,而使用Erlay协议之后,增加的流量花销仅为32%。
那么,我们什么时候能够看到Erlay协议会被纳入比特币软件当中呢?
现在,这篇研究论文正在征求反馈意见的状态。
如果其他研究者、测试人员以及开发人员没有提出异议,Gleb Naumenko计划编写一个比特币改进提议(BIP),然后将其纳入最流行的比特币节点软件:Bitcoin Core.
另外,Erlay只需要584行代码,它不需要对比特币进行任何基本的规则更改,因此不会导致新版本的软件与旧版本不兼容。实际上,激活这一协议,要比其他比特币改进提议要更容易得多。
我希望你喜欢这个解释,这对我来说有点实验性。如果你喜欢它或有其他比特币相关主题的建议,请告诉我!