突破区块链不可能三角(二)--在POW扩展性上的尝试
比特币为了保障其安全性,采用最长链规则
,并固定区块大小1M
和出块时间间隔10分钟
,从而导致其低吞吐量(7Tps
)和长时间区块确认间隔(6个区块一小时,每个区块平均需要10分钟),这一直以来饱受诟病,影响了比特币网络的大规模使用。
解决方案
:
一开始人们思考的是在比特币最长链的规则上,通过增加区块大小(1M->4M)和减小出块间隔来增大吞吐量,但是这却带来了三个很大的问题
带来的问题
:
- 不断的分叉!分叉也就意味着安全性降低,容易引起双花攻击。
- 区块奖励受网络延迟影响:整个网络的区块奖励不单单与算力有关,网络延迟较低的节点更有可能获得出块奖励。
- 容易受到自私挖矿攻击:恶意节点出块后先不公布,直到发现比主链长时再公布
下图阐释了在一种区块生成间隔较小(区块生成率大于区块传播延迟)的网络中,区块链网络高度分叉,此时攻击者可以秘密创造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优势
:
- 收敛特性:任何一个区块,经过足够长的时间,最终会被主链完全丢弃或者采用。也就是经过足够长的时间,任何节点的主链会是一样的。
- 抗51%攻击:在有限的时间内,攻击者将任意在主链区块B,替换到链下的概率接近于0。
- 吞吐量和安全性:如下图,随着区块生成速度λ(每秒产生的区块数)增加,GHOST的吞吐量相对于最长链Longest Chain规则没有太多下降,并且安全性没有任何下降,而最长链的安全性却指数下降
劣势
:
不论是POW共识还是GHOST共识,他们都是只维护一条主链,非主链的区块则被抛弃了,因此也就导致了这些被丢弃的块不能为整个区块链系统提供安全性,并且也降低了吞吐量(因为这些快被抛弃了,实际上也就是说系统的带宽被浪费了,因此他们就不能为系统贡献吞吐量)
突破区块链不可能三角(二)--在POW扩展性上的尝试相关推荐
- 【转】突破区块链不可能三角:异步共识组 [Monoxide]
我们实现了"异步共识组"模型,可以将一个现有的单链共识算法,横向扩展1000倍以上.这样的扩展将使得吞吐量(TPS)提升1000倍以上,同时也将全网计算能力(CPU)提升2000倍 ...
- 打破区块链不可能三角!2 华人专家论文将登 NSDI 2019 计算机顶会
本文转自DeepTech深科技(deeptechchina) 作者 | 林佳谊 区块链曾经被形容成一项无所不能的科技,被看好能带来下一代的价值互联网.然其自身却存在着称为"不可能三角&quo ...
- 看完就能出去神侃,来自研发第一线的“区块链”扫盲文(二)
(图片出自网络,版权归原作者所有) 原文摘自公众号,<区什么块什么链啊>之<看完就能出去神侃,来自研发第一线的"区块链"扫盲文(二)> 共识机制,是不是听上 ...
- 区块链“不可能三角难题”解决了
区块链技术"不可能三角难题",也叫"三难困境",是说TPS高效性(可伸缩性.可扩展性与互操作性)和去中心化(分散性)以及安全性(稳健性)三者之间"不可 ...
- 【链块技术10期】区块链基础语言(二)——GO语言开发环境搭建
原文链接:区块链基础语言(二)--Go语言开发环境搭建 一.操作系统位数的查询方法 在安装前首先要了解个人的电脑系统位数是32位还是64位. 1.1Windows系统查询方法 右击"计算 ...
- 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token | 宠物领养
初学记录 · 欢迎交流 区块链DApp从零开始学 (一) | DApp抓包 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token |宠物领养 区块链知识 (一) | 实例 ...
- 区块链不可能三角(一)--扩容、扩展、无限扩展
1 区块链不可能三角 区块链可扩展性,也就是不可能三角 2 可扩展的第一个定义-可扩展的POW 可扩展性的定义: 在不加任何限定下,这是指某个表现y随着某个变量x的增长的变化情况,如果y能够随着x的增 ...
- BlockChain:2020年7月10日世界人工智能大会WAIC《链智未来 赋能产业区块链主题论坛》(二)
BlockChain:2020年7月10日世界人工智能大会WAIC<链智未来 赋能产业区块链主题论坛>(二) 导读: 区块链和人工智能融合的影响力:人工智能喜欢干净的大数据,区块链系统生成 ...
- 区块链攻击方式总结二
目录 一.总述 二.第一个维度:双花攻击 1.51%算力攻击 (1)贿赂攻击 (2)币龄累计攻击 (3)通用挖矿攻击 2.芬尼攻击 3.种族攻击 4.分割攻击 5.重放攻击 (1)一条链上的重放攻击 ...
最新文章
- SXOI2019游记
- 数据挖掘导论读书笔记2
- 中年架构师的20个小时,全靠忍!
- [patl2-001]紧急救援
- 关于货仓选址问题的方法及证明(在数轴上找一点使得该点到所有其他点的距离之和最小)...
- POI增加 数据验证 下拉
- scrapy框架架构
- 闲鱼数据采集学习研究
- cad直线和圆弧倒角不相切_cad中绘制圆角倒角有哪些技巧?
- php 化学泥浆,天水化学泥浆
- 如何远程公司 居家办公日渐常态 企业如何做好远程办公
- 8086CPU结构与功能
- java如何继承两个类?以及讨论一下多继承的利弊。
- grequests并发之小试牛刀
- CSRF漏洞利用以及防御手段(详细解释)
- HTML input 标签 date 类型 设置默认值
- 安卓数据转移到iphone老是中断_如何把安卓手机上的数据转移到 iPhone、iPad?
- 5-(4-甲酰基苯基)-10,15,20-苯基卟啉(FPTPP)/Β-硝基四苯基卟啉[H2TP(NO2)]及其锌配合物[ZnTPP(NO2)]的合成方法/结构式
- 【WEB安全】PHP靶场实战分析——DVWA
- hdu4411 Arrest(费用流)