致密区块(Compact block): 比特币全节点用户的福音
致密区块中继(Compact block relay),即BIP152(比特币改进提议),这种方案能够减少p2p网络节点广播区块所需的带宽数量。
概要
当全节点之间已共享许多相同内存池(mempool)内容时,使用简单的技术,就可能减少将新区块广播至全节点所需的带宽数量。发送方节点向接收方节点发出致密区块“概要内容”,这些概要内容包含以下这些信息:
新区块的80字节区块头;
缩短交易标识符(txids),其目的是为防止拒绝式服务攻击;
一些发送节点预测的,但接受对等节点不具备的完整交易;
接收方节点将尝试使用接收到的信息,以及在其内存池(memory pool)当中的交易,来重新构建整个区块。如果它仍然缺失某些交易,它将请求广播节点。
而这种方法的优点,是交易数据仅需在最佳的情况下进行发送(当它们在初始广播当中),其大幅度地降低了总带宽。
此外,致密区块中继提议,还提供了第二种操作模式(称为高带宽模式),其中接收方节点,直接请求它的一些对等节点来发送新的区块,而无需先获得许可,这可能会增加带宽(因为在同一时间内,两个对等节点可能会发送同一个区块),但它进一步降低了区块传播的时间。
下图显示了当前节点发送区块,以及致密区块中继这两种操作模式。
传统的中继方式,一个区块(灰色长条)是由节点A负责验证,然后节点A将发送一条inv
消息到节点B ,以请求允许发送这个区块。节点B回复区块的请求(getdata
),然后节点A发送区块。
在高带宽中继中,节点B使用了sendcmpt(1)
(发送致密区块)来告诉节点A,它想要尽快接收区块。当一个新的区块抵达时,节点A会执行一些基本的验证(例如验证区块头),然后自动将区块头、缩短交易
标识符(txids)以及预测缺失交易(如上所述)发送给节点B。节点B尝试重新构建区块,并请求任何仍处于丢失状态(getblocktxn
)的交易,它们是由节点A发送(blocktxn)的。在此背景下,在将区块添加到各自的区块链副本之前,两个节点都完成了完整的区块验证,并和以前一样保持了相同的全节点安全性。
在低带宽中继中,节点B使用了sendcmpt(0)
来告诉节点A,它想要尽量减少带宽的使用。当一个新的区块抵达时,
节点A会完整验证它(因此它不会中继任何无效区块)。然后它会询问节点B是否想要区块(inv),这样,如果节点B已从另一个对等节点收到了区块,它就可
以避免再次下载。如果节点B不想要区块,它要求在致密模式下(getdata(CMPCT)
)进行,节点A发送区块头、缩短交易标识符(txids)以及预测丢失交易。节点B试图重建区块,请求仍处于丢失的交易,而节点A发送这些交易。然后节点B完整验证这些区块。
快速中继网络的因素如何考虑?
快速中继网络(FRN)由两部分组成:
目前在快速中继网络中的节点集合。
快速区块中继协议(FBRP)。
目前在快速中继网络(FRN)中的节点,都是经过精心挑选的。这些节点的故障将导致挖矿算力的浪费,并导致挖矿的进一步集中化。目前,有大多数挖矿算力已连接到该网络。
最近,一些矿工已经在测试部署一个UDP,以及被称为RN-NextGeneration
的向前纠错(FEC)协议。使用致密区块的协议层改进,将缩小节点网络和一般P2P网络之间的性能差距。P2P网络增加的稳固性以及区块广播的速度,将对网络在未来的发展中发挥作用。
这货能扩展比特币么?
致密区块的目的是为节点减少带宽峰值,提高用户网络体验。然而,当前比特币挖矿所集中存在的压力,很大一部分存在于区块广播的延迟,正如下面的视频描述。致密区块版本1,它的主要目的,不是为了解决扩展比特币这个问题。
https://www.youtube.com/watch?v=Y6kibPzbrIc
谁会从致密区块中受益?
想要中继交易,但网络带宽却有限的全节点用户。如果你只想尽可能地节约带宽,同时仍能够将区块中继给对等节点,目前在Bitcoin Core v0.12. 版本软件当中,已启用了blocksonly
模式。在blocksonly模式下,节点只接受被包含在区块当中的交易,因此它不会接受额外的交易。
降低p2p网络的区块广播时间,能够创建一个更为健康的网络。
致密区块的编码、测试、审查以及部署的时间表是什么?
首个版本的致密区块已经在BIP152提出了,并且有了一个工作实施,已有开发者社区在积极进行测试。
BIP152:https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki
参考实现:https://github.com/TheBlueMatt/bitcoin/tree/udp
它能适应更快的p2p中继吗?
致密区块方案可以有其他的改进,这涉及到了RN-NG以及两个方面:
首先,用UDP传输来取代TCP区块信息传输。
第二,使用向前纠错(FEC)的代码,来丢弃数据包和预测的发送丢失交易数据。
这是一个新的想法么?
使用布鲁姆过滤器来改进区块广播的方案( bloom filters)在若干年前就已经提出了,Pieter Wuille (sipa)在2013年时就在尝试这种方案。
声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。
-
为什么 ETH 长期颓靡不振?因为 ETH 正处于一个历史性的「换庄」阶段
2024-11-22 -
特朗普当选利好哪些加密板块?十几位风投大佬这样说
2024-11-22 -
比特币冲击10万美元之际:全球经济与金融体系变革的信号已释放
2024-11-22 -
白宫即将迎来首位Crypto顾问?
2024-11-22 -
从混乱到清晰:特朗普的SEC将如何重塑加密货币监管
2024-11-21