以树状加速比特币交易处理速度的可能
泡泡网显卡频道12月10日 前言:本文阐述了一种加速比特币交易处理速度的办法。译者大致理解为:传统的确认方法基于“最长区块链法则”(longest chain rule),而本文提出了一种“贪婪-最大权重-子树选择法则”(Greedy Heaviest-Observed Sub-tree selection Role)(原谅译者找不到一个更好的翻译名字)该学者将其研究的论文以通俗的形式在论坛上进行发帖,本翻译为其通俗版。有兴趣的朋友可以参考该贴子中作者所给出的原文链接。
以下为原帖内容:
大家好!我是来自以色列希伯来大学的研究者,我已经同我的一个学生(Yonatan Sompolinsky)进行了比特币相关的论文研究。我们已经得出了喜人的成果,并且迫不及待的想在这里跟大家分享。
在此给出完整版论文连接:
http://www.cs.huji.ac.il/~avivz/pubs/13/btc_scalability_full.pdf
标题:加速比特币交易处理速度(以树状加速比特币增长,而非链式)
由于该论文很长,并且面向学术研究者翻看,所以我们觉得为比特币爱好者提供一个简明扼要版本的论文是比较合适的:
摘要:我们提出了一种针对区块链的协议改进方法,以此来达到区块大约每秒增长一次的结果。该方法能在这种速率下每秒处理200个交易记录(译者:200个!~每秒啊!),且在特定的带宽条件下将网速消耗降至0.5MBPs以下。上述的一切都不会引起50%攻击的怀疑性。这个方法切实解决了一个问题,即引起中本聪要将区块链创造速率设置为10分钟的问题。我们也对在这种改进方法实施前和实施后每秒能够处理的交易数量。我们认为区块传播时间是比特币网络可扩展的首要障碍。
更具体的解释下文详述。我们研究的首要目标是快速确定比特币网络处理交易的能力。以下是我们的主要研究发现:
扩展性、延期以及安全性:
我们以检测在高交易速率下比特币的安全性为通篇的开始。比特币每秒可处理的交易量主要受以下两个因素的限制:1、区块产生速度(10分钟1区块);2、区块规模限制(现在默认是1MB)。这两个参数共同影响着比特币网络每秒可以处理的交易数量。增加每秒交易量的直接有效的办法就是要么增大区块规模,要么增加区块产生速度。这两个变化都是存在争议的,原因是:这两个变化都可能影响协议的安全保障。首先,让我们考虑每秒区块数量的增加(例如,莱特币的区块是每2.5分钟产生一个)。因为区块被快速产生,许多冲突性的区块被产生。区块中的多数都会被附在区块链之后。同样的情况会在区块规模扩大时发生:更大的区块需要更长的时间通过网络进行传播(受制于带宽),并且同时产生的区块更可能处在区块们的顶部,也就是说它们会被丢弃。
区块被丢弃降低了网络的安全性,这一事实使得该网络更容易遭受50%攻击。例如,如果区块的半数以这种方法被丢弃,则全网也就浪费了半数哈希算力对交易确认做无用功。那个中心化且没有延迟的攻击者,能够实行一个叫做所谓的“50%”攻击,该攻击拥有33%哈希算力多一点点就可以实现。这是因为较之于网络中的其他人,它能够轻松产生更长的区块链。
使用不同的技术,我们分析有多少区块在区块链的尾端,有多少被丢弃,并以此估计对不同的参量而言网络安全性的变化。在众多结果之中,我们发现传输那些仅含交易哈希(替代整个交易记录)的区块能够极大程度的有助于扩展性(那就是说,这不是2倍带宽的节约,而是每秒交易记录十六倍(译者:专业知识匮乏,不知是16倍还是16叠什么的,请见谅。)的提高!)
我们建议的协议改进:(在完整论文第八部分会做出说明)
高交易速率意味着许多有冲突的区块被产生出来,那么如果这些区块没有真的丢失的话,它们是很有用的。实际上,每一个区块不仅可以视作为包含着交易记录,也被视作嵌入了之前的区块。即使一个区块并非存在于主区块链中,我们还是能计算出该区块给之前区块的确认信息作为一种有效性的证明。这是我们提出的改进的基础,我们把它叫做”greedy heaviest-observed sub-tree”区块链选择法则。
粗略的说,每一个区块都包含着之间区块的哈希,那么所有的区块构造了一个树状结构,该树状结构的根是上帝区块。比特币现行的系统是选择接受那个在树中最长的区块链。我们提出另外一种方法:在每一个分支上,选择包含最多区块子树(sub-tree)。持续这种选择直到到达一个叶节点。则这个选择路径就是网络节点应该接受的区块链。但是这如何帮助比特币网络呢?注意到现在,一个希望改变由算法所选择的主区块链的攻击者需要在网络诸多分支们的一个中改变我们的决定。要这么干,他需要建立比包含在整个子树中的区块更多的区块。(而非仅仅是创造比最长区块链包含的区块更多的区块!)
这里有一个greedy heaviest-observed sub-tree(GHOST)区块链选择法则(以下简称GHOST法则)的虚代码:
1. SET B <- Genesis Block.
2. IF B has no successors: RETURN(B).
Else: SET B <- Child of B with heaviest sub-tree.
3. GOTO 2
该改进的代价:在区块产生速率较低以及区块规模较小的情况下,使用最长链法则和上文提到了GHOST法则是没有太大区别的。此时无成本。二者几乎是相同的,因为在这种情况下最长区块链法则也是最大权重的子树。而在高交易速率下,GHOST法则在他的主区块链里构造了稍少的区块,因此稍微降低了每秒被接受的交易数量,但是它变得更安全了!延迟和许多不在链上的区块不再使整个网络更易受到50%攻击。这意味着我们可以增加交易速率和区块规模,而之前这么做风险极大且十分容易造成交易容量的损失。实际上,我们估计一秒钟产生的区块量很容易超过200个。这意味着相当快的授权时间。甚至一个确认都会造成某种程度的不可逆,并且当区块每秒被产生时,这种确认几乎是瞬间完成的
因为比特币的安全性主要是依赖接受到的确认数量而非时间流逝,我们可以做出一种改进,使得不可逆交易的时间以极高的可能性远远小于10分钟。
一些主要问题的简要陈述:
我必须澄清一点:我们不可能说我们能够解决关于比特币所有方面的问题(如激励和挖矿集中化等)所以我认为应当专注于协议当中已经存在的问题,我们的主要关切点在于当高交易速率发生时网络安全性将会变差,GHOST法则调整则修复了这一点。如果你对一秒创造区块不确定,该调整在区块创造速率较低时同样有价值。定位高交易速率的需要一直存在。
几个特殊的评论:
1.具有低延迟时间的节点有优势。那些能快速到达网络其他部分的节点会在主区块链上有更多的区块。
回答:如果现在高交易速率存在那么这将是比特币协议所面临的一个严峻问题。强劲的矿工将能得到更多的区块。但GHOST调整的不是这个,我们所给出的改进是关于在这种场景下50%攻击不会变的更坏。
2.DDOS攻击:恶意节点能够在上帝区块上以低难度挖矿
回答:这也是现行比特币协议所面临的一个问题。这就是为何监测点需要被放置的原因。这里会有研究者的解释:
https://bitcointalk.org/index.php?topic=194078.msg2014204#msg2014204.
监测点在我们的方案中仍能使用。
3.SPV客户端需要更多带宽和储存空间如果每秒区块创造速度更高
回答:确实如此。但是该改进应该更有可能找到对SPV节点更好的机制。例如,无需下载全部的区块链也应该有可能验证一个长区块链。
4.如果节点们下线一段时间,他们如何获知被遗弃的区块?
回答:我们建议每个区块也应包含在头端不在链上的区块的哈希。用这个方法,主区块链也包含所有不在区块链上的区块的记录。
5.储存问题:需要更多空间
回答:诸如迷你区块链的方法可被应用,该种方法允许你只保存近期的一些事件。但现在仍没有办法面对高交易速率需要大量存储空间的办法。再次声明,这不是由我们的改进所引起的。你不需要保留丢弃区块的信息,只需保留他们的头端以验证难度。在链上有更多的区块仅仅意味着他们中的每一个将有更少的交易。唯一增加的成本只是保留更多的头端。■