当前位置:主页 > 热点 >

技术贴:浅谈阿希币asch系统的共识机制与容错性

时间:2021-03-01 01:41:41

  我们之前分析过,DPOS的主要问题在于受托人的过高,而其他节点对区块的有效性验证过于简单,这就很容造成一个局面,即不同内容、但相同高度的区块共存于络中的不同节点,也就是所谓的分叉,进而造成双重支付。

  因此,PBFT带来额外的流量消耗就可以理解了,其根源也找到了。在AC0.5算法中,这个额外的流量或者说“其他节点的决策”指的就是每个节点对下一个区块的投票信息,投票信息主要内容有4个部分,即区块高度、区块ID、签名、公钥,其中区块高度和区块ID的长度可以忽略不计,签名的长度为64字节,公钥的长度为32字节,一个区块达成共识需要全部受托人总数的2/3的投票,在asch系统中受托人总数为101人,也就是说需要至少67个投票。一个区块的大小大约是200字节,相当于2个投票的大小,因此AC0.5中流量消耗是原始DPOS的30多倍(在没有交易的空block情况下,如果有交易则交易不会消耗额外的流量)。

  AC0.5中服务器之间的消息传递使用json格式,二进制字段则是为hex编码后再进行传输,投票中的二进制字段包括公钥和签名,之前我们算的是100字节,为hex编码后则翻1倍,变成200字节了。

  AC1.0对这一点做了改进,使用了protobuf作为序列化方法,效果很不错,带宽降为原来的60[%]左右。

  通过对比可以发现,AC0.5需要三次,AC1.0仅需要两次,并且在propose环节,只了区块的元信息,不包括交易信息,只元信息有个好处,可以防止在区块无法达成共识的情况下白白浪费流量,因为如果连元信息都无法通过,那就没必要交易信息了。

  AC0.5使用的协议为最朴素也最的gossip算法,即随机选取一定数量的相邻节点然后将消息给它们, 这个一定数量固定为100. 任何一个节点在收到一条信息后,会计算这个消息的hash,如果发现没有收到过,就会继续给它的相邻节点。也就是说一轮需要进行100 * N次通,在N小于100的情况下,相当于复杂度为O(N^2), 在这里N为整个络的节点个数。

  AC1.0把这个固定数量改为sqrt(N), 也就是说假如有100个节点,每个节点只需要给10个相邻节点。

  这个改动很小,但是参数的设置却常需要经验的,我们做过了大量的测试后,认为sqrt(N)可以达到比较理想的效果,一次需要的通次数略高于N * sqrt(N)。

  除此之外,我们还实现了一个基于一致性哈希的算法,性能达到了极致,算法复杂度降低到了O(N), 但是这个算法需要更多的测试,其稳定性和可靠性也不如更简单的随机算法。

  从内因的角度来说,系统应该能正常节点出错,这些错误主要是指服务器宕机、硬件错误、络拥塞等。Asch系统能够最多1/3的受托人节点同时出错,假如某个受托人的节点出错了,那轮到该受托人生产区块的时候,就会缺失一个,并顺延到下一个10秒。假如超过1/3节点同时出错,那么系统将暂停工作,等到足够的节点恢复正常后,系统就可以立即恢复正常。

  假如1/3以上的节点永远无法恢复(这种情况是存在的,比如他们的密钥丢了),那么系统必须要通过一次软件升级来恢复,并且这个升级不强制所有节点执行,只要部分节点升级,区块生产恢复正常后,通过受托人投票把那些不正常的节点撤销掉,系统就恢复如常了。

  从外因的角度来说,系统应该能够黑客、受托人作弊的情况。这里的黑客不是说DDOS,DDOS造成的后果最多是部分服务器宕机,我们已经归到内因里去了,这里的黑客主要是指通过入侵拿到部分受托人密钥并获取权限,然后利用这些权限获利。获利的手段无非是多个版本的区块,在短时间内造成分叉,然后进行双重支付。在asch系统中,黑客必须要同时获得1/3以上节点的密钥,才能够发动连续,使络的分叉持续下去,否则系统将通过最长链同步算法迅速消除分叉,分叉之间的差距不会超过1个区块高度,也就是说2次确认以上的交易基本上不可能被回滚了。

  从现有的使用DPOS算法的系统来看,包括bitshares、crypti、lisk在内,这些系统出现的分叉都是内因造成的,甚至大多数是算法实现上的bug所导致的。黑客DPOS的案例还没有听说过,虽然存在理论上的漏洞,但要想真正的,需要高超的技术和昂贵的资源,成本和收益不对等,因此也不会有人去,当一个DPOS系统的市值慢慢增大,我们可以继续提高受托人节点的数量,进一步提高的成本,因此外因的风险基本可以忽略。

  最后,我想解释一下分叉这个词,分叉来源于英文的fork,fork根据上下文的不同,我认为可以翻译成两种意思,一个是分叉,另一个是。

  分叉指的是在社区团结一致的情况下系统因为bug或被造成的不一致性,而是指社区因观念分化造成软件不同的方向。

  分叉强调的是系统的bug和不一致性,强调了物的因素,分叉后系统可能还是一个系统,并且是很可能被复原的;而则是强调了人为的因素,一旦社区,则系统一分为二,变成两个系统。

  从这个角度来说,asch对于分叉可以做到事前的预防和事后的修复,但无法应对社区的,任何一个区块链系统也无决的问题,包括比特币和任何一个声称可以避免分叉的PBFT系统。

  每日、业界资、热点资、爆料,全天微博播报。各种爆料、内幕、花边、资一打尽。百万互联粉丝互动参与,TechWeb微博期待您的关注。

热点推荐
1 比特币反弹之际,Michael Saylor 抛出三个字

迈克尔塞勒发布了一条神秘的帖子橙点很重要,并附上一张图表,显示MicroStrategy持有713,502枚比...

2 若比特币突破7.3万美元,主流CEX累计空单

消息,2 月 8 日,据 Coinglass 数据,若比特币突破 7.3 万美元,主流 CEX 累计空单清算强度将达...

3 加密支付卡消费额结束12个月连增

消息,据吴说区块链发推称:加密支付卡2026年1月消费交易量为1.13亿美元,环比下滑约5.8%,结...

4 分析:尽管白银暴跌,散户仍加倍押注

尽管白银价格暴跌,几乎抹去了今年年初的惊人涨幅,但过去一周散户投资者仍向白银市场投...

5 麦格理将Iren (IREN)的目标价下调至70澳元,

Iren Limited 的股价走势受到分析师的褒贬不一。麦格理和 Cantor Fitzgerald 分别将目标股价下调至...

6 机构投资者逢低买入比特币

消息,据Coin Bureau发推称:Bitwise CEO 表示,机构投资者认为他们终于有机会以意想不到的低价再...

7 为什么比特币在 2026 年仍然是最明智的加

比特币2100万枚的固定供应量使其成为抵御法币贬值的长期对冲工具,但其波动性使其无法成为...

8 一新建钱包于8小时前从币安提取1697万枚

消息,据 Arkham 监测,大约八小时前,一新建钱包分两笔从币安提取总计 1697 万枚 Meteora,价值...

9 Polymarket上预测「比特币2月回升至7.5万美

消息,2 月 8 日,随着比特币重新回升至 70,000 美元上方,暂报 70,132 美元。Polymarket 上预测「比...

10 Arthur Hayes抛售DeFi代币

消息,据链上分析平台Lookonchain发推称:Arthur Hayes 在 15 分钟内转移出价值约 315 万美元的 ENA、...

成都来彰科技 蜀ICP备2025134723号-1

资讯来源互联网,如有版权问题请联系管理员删除。