比特币为了保障其安全性,采用最长链规则,并固定区块大小1M出块时间间隔10分钟,从而导致其低吞吐量(7Tps)和长时间区块确认间隔(6个区块一小时,每个区块平均需要10分钟),这一直以来饱受诟病,影响了比特币网络的大规模使用。

解决方案

一开始人们思考的是在比特币最长链的规则上,通过增加区块大小(1M->4M)和减小出块间隔来增大吞吐量,但是这却带来了三个很大的问题

带来的问题

  1. 不断的分叉!分叉也就意味着安全性降低,容易引起双花攻击。
  2. 区块奖励受网络延迟影响:整个网络的区块奖励不单单与算力有关,网络延迟较低的节点更有可能获得出块奖励。
  3. 容易受到自私挖矿攻击:恶意节点出块后先不公布,直到发现比主链长时再公布

下图阐释了在一种区块生成间隔较小(区块生成率大于区块传播延迟)的网络中,区块链网络高度分叉,此时攻击者可以秘密创造6个区块(由红色虚线标记),从而超过主链的场景。

区块链比特币可扩展性的瓶颈在于——任何一笔交易需要发给所有节点,就是POW的有效性是建立在所有人都在同一条最长链上挖矿的,于是,大致上说,只有上一个区块被挖出来并且同步到整个网络之后,共识算法,即挖矿,才能开始进行。

比特币的共识算法必须需要一定时间来进行,而且必须在所有节点同步,即传输和验证完所有交易之后才能开始,即POW共识出块的时间,即区块间隔,需要远大于同步所需要的时间。

然而,我们希望所有的带宽*时间都用来在网络中传输交易,而不希望先做一个时间t1的同步,确保所有人都对于最长链有共识之后再开始进行一段时间t2的POW计算达成共识。而在t2的这段时间是无法做同步的,因为在没有共识的前提下,我们并不知道哪个区块是正确的,于是,这时候的带宽就被浪费了。

理想状态是,我们能够一边做共识一边同步?那需要做的第一步就是,我们需要把比特币POW中的共识和交易(区块内容)脱钩

1 Hybrid consensus和Byzcoin两篇论文做了一种简单地将用POW作为一种准入机制然后进行(类)PBFT的方法。

算法的原理基本上都是保留比特币POW的一切特性,例如区块奖励,例如出块时间等等。但是,POW不再决定交易,而只做委员会选举——例如,我们规定,最近的100个出块者是当前的委员会,然后由他们进行BFT决定交易,这里的交易是最终的也就是绝对的,不存在分叉的问题,然后把广播给全网。然后我们可以认为这样决定的交易就是最终结果,于是解决了区块一小时6区块的时延和无法确认达成共识的两个问题,然后顺带的,因为POW的共识只决定委员会出块者,所以交易的输出不再受限于POW,而只受限于BFT的输出。而无论是在做BFT还是做完BFT把交易广播到全网的时间里,都不影响POW继续进行下一轮共识。

2 Bitcoin-NG的选举合法出块者的微区块解决方案

Bitcoin-NG—首先还是照常用比特币POW,只不过,这个时候出来的区块里面不用包含所有交易,只是宣布——我是竞争胜出的合法出块者。然后,在十分钟之内,这个出块者可以以更快的速度(更短的区块间隔)发“微区块”,其中只包含交易而不需要再做POW,因为他已经竞争得了这一次的出块权。这样的话,我们达到了和Hybrid Consensus以及Byzcoin一样的效果——用POW选取出块者而不是区块,于是交易本身就和共识脱钩了。

问题如果微区块有非法交易怎么办
解决方案当非法交易被发现的时候,后面的节点可以将这个交易注明无效,然后拿走提交非法交易的出块者之前获得的区块奖励

如果最终共识总是验证失败的话,这个算法实际上就会退回成比特币POW。然而,只要大部分时间最终共识正确,这个算法就可扩展了。

上述pow共识选举节点BFT交易共识和Bitcoin-NG选举节点发起交易微区块的异同:

相同点:两者都通过用POW选取出块者而非区块(交易)本身的方式把共识和交易脱钩

不同点:Hybrid Consensus(Byzcoin)中,通过BFT决定交易,认为交易已经是可信的。而Bitcoin-NG中出块者发出来的交易微区块仍旧未经验证,于是可能是非法的。于是,Bitcoin-NG中所有节点需要在同步交易之后验证交易的有效性,然后Bitcoin-NG根据博弈论设计了另一套激励(惩罚)模型,来保证微区块中交易的安全性。

3 总结

两者都改变了比特币的安全模型——后者我们已经说过了微区块中的交易需要通过“有毒交易”来惩罚,而前者由于需要进行BFT,所以安全性假设需要改成“不超过1/3的算力被恶意节点掌握”,这点和比特币假设中不超过50%算力安全是不一样的。而且,尽管从理论上来讲,Hybrid Consensus并没改变最近100个出块的人,只不过是把轮流出块变成大家一起商量着出块了而已。然而,这种改变仍旧会给人中心化的感觉,尤其当90%以上的算力都集中在大矿工的手中的时候——在比特币POW里,小矿工还能出块,但是如果在委员会之中,小矿工的意见就会淹没在90%的大矿工之中。而且,委员会选举会陷入这样的两难——比如,如果委员会大小过小,那么了解概率的人都知道,这10个节点中超过3个是恶意的概率是不小的,因此安全性保证不了。而如果这个委员会过大,那么BFT本身的复杂度和延时又会变得很大,使得算法失去了扩容的意义。

但其实,以上的这些,是一些理论上需要注意的问题,但并不是缺陷。从安全性来讲,虽然两者改变了安全性假设,但是并不是就不安全了,也并不是说两者就一定比比特币POW要不安全,毕竟比特币POW也有例如自私挖矿这种问题。然而,无论是比特币特有的政治因素,还是整个比特币的社区意愿和对安全性的担忧,再者就是比特币硬分叉的难度,都不会允许比特币对算法进行如此之大的改变。而再之后,POW在学术界中的热度也迅速降温(参见之前文章中BFT的发展历史),于是,仅有非常少的系统最终采用了这两种POW算法(有某个知名项目用了Bitcoin-NG)。但两者的思路——先选取委员会再进行BFT和先选取区块发布者的这种思路,完完整整地被例如Algorand和Snow-white或Ouroboros这种POS算法继承了

4 Ghost贪婪最重可观测子树算法

背景

当你收到一个区块的时候,你开始对这个区块进行验证,确认区块的合法性之后,你开始在这上面挖矿。然而,在收到第一个区块10秒钟之后,你收到了另一个区块,然后,在通过验证之后,你发现它也是合法的……

这个时候,你将面临一个两难选择——你可以选择继续在第一个区块上挖矿,因为你觉得既然你先收到了它,也许很多其他的节点也一样。但是,你也知道有另一种可能性,就是也许你只是收到第二个区块的时间比较晚,而网络中其他的节点实际上最早收到的是第二个……但无论如何,你都只能选一个,选错的后果就是你挖的那个块最终没有出现在最长链上,而你的这些算力浪费了。

而与此同时,网络中所有的节点都在做这样的选择,也同样面临着算力被浪费的风险,这就是分叉导致比特币安全性下降的原因。

ghost解决方案

在这种算法中,允许将看到的几个同高度的区块同时标记为前一个区块,然后其中一个为主,是“父块”,而其他几个为“叔块”。父块中的交易和比特币POW的父块同样对待,而叔块则只记录区块头,剩下的交易部分验证之后就丢弃。然后,最重要的部分是,将比特币POW的最长链共识改为最重链共识,即把分叉的深度也计入最长链的统计之中,于是,我们得到了这样的计算方法。

GHOST的思路很简单,它对比特币的最长链规则进行更改,在每次分叉的时候选取拥有最重子树的分叉节点。举例来说(参考上图),就是在0处分叉为1B和1A时,1A的子树(它进行自私挖矿)共有6个块(包括1A块),1B的子树有12个块,12>6, 所以选1B为主链的块。这样就减轻了了分叉带来的问题,使得主链不断向后增长。


该算法,从创世区块(Genesis)开始,每次分叉就选取最重子树,直到确定完主链的序。还是拿图中的例子,最终选取的主链是 0, 1B, 2C, 3D, 4B。

ghost优势

  1. 收敛特性:任何一个区块,经过足够长的时间,最终会被主链完全丢弃或者采用。也就是经过足够长的时间,任何节点的主链会是一样的。
  2. 抗51%攻击:在有限的时间内,攻击者将任意在主链区块B,替换到链下的概率接近于0。
  3. 吞吐量和安全性:如下图,随着区块生成速度λ(每秒产生的区块数)增加,GHOST的吞吐量相对于最长链Longest Chain规则没有太多下降,并且安全性没有任何下降,而最长链的安全性却指数下降

劣势
不论是POW共识还是GHOST共识,他们都是只维护一条主链,非主链的区块则被抛弃了,因此也就导致了这些被丢弃的块不能为整个区块链系统提供安全性,并且也降低了吞吐量(因为这些快被抛弃了,实际上也就是说系统的带宽被浪费了,因此他们就不能为系统贡献吞吐量)

突破区块链不可能三角(二)--在POW扩展性上的尝试相关推荐

  1. 【转】突破区块链不可能三角:异步共识组 [Monoxide]

    我们实现了"异步共识组"模型,可以将一个现有的单链共识算法,横向扩展1000倍以上.这样的扩展将使得吞吐量(TPS)提升1000倍以上,同时也将全网计算能力(CPU)提升2000倍 ...

  2. 打破区块链不可能三角!2 华人专家论文将登 NSDI 2019 计算机顶会

    本文转自DeepTech深科技(deeptechchina) 作者 | 林佳谊 区块链曾经被形容成一项无所不能的科技,被看好能带来下一代的价值互联网.然其自身却存在着称为"不可能三角&quo ...

  3. 看完就能出去神侃,来自研发第一线的“区块链”扫盲文(二)

    (图片出自网络,版权归原作者所有) 原文摘自公众号,<区什么块什么链啊>之<看完就能出去神侃,来自研发第一线的"区块链"扫盲文(二)> 共识机制,是不是听上 ...

  4. 区块链“不可能三角难题”解决了

    区块链技术"不可能三角难题",也叫"三难困境",是说TPS高效性(可伸缩性.可扩展性与互操作性)和去中心化(分散性)以及安全性(稳健性)三者之间"不可 ...

  5. 【链块技术10期】区块链基础语言(二)——GO语言开发环境搭建

    ‍原文链接:区块链基础语言(二)--Go语言开发环境搭建 一.操作系统位数的查询方法‍ 在安装前首先要了解个人的电脑系统位数是32位还是64位. 1.1Windows系统查询方法 右击"计算 ...

  6. 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token | 宠物领养

    初学记录 · 欢迎交流 区块链DApp从零开始学 (一) | DApp抓包 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token |宠物领养 区块链知识 (一) | 实例 ...

  7. 区块链不可能三角(一)--扩容、扩展、无限扩展

    1 区块链不可能三角 区块链可扩展性,也就是不可能三角 2 可扩展的第一个定义-可扩展的POW 可扩展性的定义: 在不加任何限定下,这是指某个表现y随着某个变量x的增长的变化情况,如果y能够随着x的增 ...

  8. BlockChain:2020年7月10日世界人工智能大会WAIC《链智未来 赋能产业区块链主题论坛》(二)

    BlockChain:2020年7月10日世界人工智能大会WAIC<链智未来 赋能产业区块链主题论坛>(二) 导读: 区块链和人工智能融合的影响力:人工智能喜欢干净的大数据,区块链系统生成 ...

  9. 区块链攻击方式总结二

    目录 一.总述 二.第一个维度:双花攻击 1.51%算力攻击 (1)贿赂攻击 (2)币龄累计攻击 (3)通用挖矿攻击 2.芬尼攻击 3.种族攻击 4.分割攻击 5.重放攻击 (1)一条链上的重放攻击 ...

最新文章

  1. SXOI2019游记
  2. 数据挖掘导论读书笔记2
  3. 中年架构师的20个小时,全靠忍!
  4. [patl2-001]紧急救援
  5. 关于货仓选址问题的方法及证明(在数轴上找一点使得该点到所有其他点的距离之和最小)...
  6. POI增加 数据验证 下拉
  7. scrapy框架架构
  8. 闲鱼数据采集学习研究
  9. cad直线和圆弧倒角不相切_cad中绘制圆角倒角有哪些技巧?
  10. php 化学泥浆,天水化学泥浆
  11. 如何远程公司 居家办公日渐常态 企业如何做好远程办公
  12. 8086CPU结构与功能
  13. java如何继承两个类?以及讨论一下多继承的利弊。
  14. grequests并发之小试牛刀
  15. CSRF漏洞利用以及防御手段(详细解释)
  16. HTML input 标签 date 类型 设置默认值
  17. 安卓数据转移到iphone老是中断_如何把安卓手机上的数据转移到 iPhone、iPad?
  18. 5-(4-甲酰基苯基)-10,15,20-苯基卟啉(FPTPP)/Β-硝基四苯基卟啉[H2TP(NO2)]及其锌配合物[ZnTPP(NO2)]的合成方法/结构式
  19. 【WEB安全】PHP靶场实战分析——DVWA
  20. hdu4411 Arrest(费用流)

热门文章

  1. 键盘输入任意字符串,打乱里面的内容
  2. 微博数据分析及高效获取
  3. CPU卡程序设计实例(十三)终端向ESAM发送数据
  4. Ubuntu安装出现Error 5 Input/output error解决办法
  5. 机器学习在地质灾害的文章--文献阅读
  6. 年轻时不做会后悔的八件事!
  7. 实体店和网店都亏钱,未来开店趋势预测
  8. 【后端】MySQL数据库体系(二)
  9. 店铺评分,提升DSR小技巧,宝贝描述,客服问题,发货与快递
  10. 网络配线架如何接线打线