首页 业界 正文

可逆式布鲁姆查找表(IBLT) , 如何促进比特币的去中心化

2015-11-27 10:48:07 来源:巴比特资讯 阅读:7667
   
比特币系统(Bitcoin)需要矿工(或者说矿池)以及全节点的分散化,以实现某些人认为的比特币核心属性:抗审查性( censorship resistance)。因此,区块大小争议也意味着是一种权衡。更大的区块,允许比特币网络可以承载更多的交易,但也会带来问题,它需要更多的时间来传播交易,这将有利于大矿工和矿池,同时增加的数据传递对于用户运行全节点而言,也是一种打击。

IBLT

比特币系统(Bitcoin)需要矿工(或者说矿池)以及全节点的分散化,以实现某些人认为的比特币核心属性:抗审查性( censorship resistance)。因此,区块大小争议也意味着是一种权衡。更大的区块,允许比特币网络可以承载更多的交易,但也会带来问题,它需要更多的时间来传播交易,这将有利于大矿工和矿池,同时增加的数据传递对于用户运行全节点而言,也是一种打击。

幸运的是,当前也存在着一些提议,它们可以增加比特币网络的效率,并减少更大区块会产生的风险。而其中最有前途的创新,就是可逆式布鲁姆查找表(Invertible Bloom Lookup Table),或简称为IBLT。这一概念首先是由Bitcoin Core和Bitcoin XT开发者加文·安德烈森(Gavin Andresen)提出的,并且它也得到了应用,例如Blockstream的闪电网络(Lightning Network)开发者Paul “Rusty” Russell,他就在应用IBLT这一想法。

“如果我们能够完成这项工作,这意味着比特币网络对带宽的需求会更少,块数据也会更少,这将有利于网络的健康,” Russell说。

 

冗余

 

那这个可逆式布鲁姆查找表解决了什么问题呢?

通常情况下,所有的比特币交易,都是通过节点到节点来完成对等式网络的交易,然后通过个人节点的内存池(mempool,记录未确认的交易)进行存储。当一位矿工发现一个区块时,它包括(部分)区块中的交易,随后在同一对等网络中广播该区块。 当然,这意味着,区块中所有的交易,都有效地在网络上发送了两次:一次作为一笔交易,另一次则作为区块的一部分。

Russell 解释说:

“在区块中已经有了冗余。大多数节点已知道该区块包含的一些内容了。因为他们已经看到过了,如果我们能够优化它,那我们就可以加快区块的广播速度。这也降低了中心化的压力,因为矿工们可以更快地将他们的区块弄出来,同时网络也可以更好地运行… 这很赞哈。”

 

可逆式布鲁姆查找表的魔力

 

我们需要可逆式布鲁姆查找表来解决的问题,主要是区块中的交易集 , 它们通常并非完全相同的,原因在于,这些交易集存储在所有个人节点的内存池当中。而其中最大的差异,则是区块在被发现之前最后通过网络的交易。此外,所有个人节点的内存池,彼此之间通常也稍有不同。这就使得,如果没有看到整个区块,我们很难知道在一个新区块中,一位矿工所进行的交易。

这就是可逆式布鲁姆查找表要解决的问题,可逆式布鲁姆查找表结合了多种数学技巧,可以让交易集达到一致状态。因此,它们可以允许两个不同的内存池进行对照以及协调。

其基本原理如下:

首先,在一个区块中包含的所有交易,都会写入一个表(table)中,每一笔交易会始于表上每一个不同的点。然而,存在的交易数远多于表的空间(room),所以它会导致令人绝望的重叠结果。这使得IBLT显得非常地密集,但对于那些无法访问任何交易数据的人而言,IBLT是无法读取的,也是无法破译的。

而那些拥有交易数据的人,可通过使用类似的逻辑,将他自己的交易填充到一个IBLT,然后比较IBLT上的重叠交易数据。如果两个IBLT最终看起来完全一样,这意味着所有的交易,是完全匹配的。

即使这两个IBLT,最终看起来并不是完全相同,但只要交易集是非常相似的,这可能仍然是有用的。这种情况下,这两个IBLT可以进行比较,用这种方式,所有相同的交易就可以抵消掉一方。而IBLT中“剩余的”交易,往往可以用于重构丢失的交易。

因此没必要在对等式网络上广播完整的区块,节点可以广播更小的IBLT。这需要的数据也就更少了,速度也就更快了。

 

效率

 

而且这种想法也得到了改善。在Russell的设计中,甚至都不需要将新区块中所有的交易都填入IBLT中。取而代之的是,比特币对等式网络上相互连接的节点,让好的节点来广播给对等节点。 这可能会增加广播的时间,但会更进一步减少数据的使用。

“加文最初的想法,是矿工会产生IBLT,将同一个IBLT发送给网络上的每一个节点,” Russell说,“但是,当我们开始使用这个概念时,事实证明生成IBLT是非常快的。那么,为何不尝试让每一个节点都可以生成IBLT呢?让每一个对等节点都生成IBLT,因为每个节点对它的内存池,到一个对等节点有多近是最为了解的。”

此外,相互连接的节点可以不断学习理解对方节点的行为。一旦一个节点收到了网络中的一个IBLT,并构造出一个有效区块,该节点会知道它丢失了多少的交易。此外,节点会随时间了解到它的对等节点,会有多少交易是与它不同的。这种差异会体现在IBLT中,然后节点会发送给它的对等节点。

这样,IBLT系统就可以随时间而自我改善,限制通过网络的传输数据到最低限度。

“理想情况下,如果我们能将这个东西填入两个IP数据包,”他说,“我们将快如闪电。”

关于 IBLT和比特币的细节,可以在 Russell的博客和安德烈森在GitHub上的贡献中找到。

 

原文:https://bitcoinmagazine.com/articles/how-the-magic-of-iblts-could-boost-bitcoin-s-decentralization-1448382673
作者:Aaron van Wirdum
编译:洒脱喜
责编:洒脱喜
稿源(译):巴比特资讯(http://www.8btc.com/iblts-bitcoin-decentralization)


声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。