找回密码
 立即注册

扫一扫,登录网站

首页 区块链生态 查看内容
  • 9102
  • 0
  • 分享到

三大热门公链项目Algorand、Dfinity和Thunder共识体系的技术分析

2018-11-1 16:34

来源: 链得得 作者: Larry

Algorand公链项目共识体系分析


Algorand是一个基于随机算法的公有链项目, 由MIT著名的密码学专家、图灵奖获得者Micali教授及其团队提出,其动机是为了解决区块链中由去中心化、安全性以及交易性能三个方面所组成的“不可能三角”难题。该问题也被称为“三元悖论” ,一般认为在现有区块链技术中这三个方面无法同时满足,最多只能满足其中两个要素。Algorand其本质是通过密码学的方法,来做一个随机数发生器来随机决定下一个区块的生成者是谁。如果这个随机数发生器是完全随机的,也就是说,任何人(包括上个区块的发布者)都无法预测下一个的发布者是谁,那么其实这就是一个可用的共识算法了。 


在Algorand算法里提出并解决了三个问题,第一个是随机数发生器,第二个是随机出来的提案者如何在不泄露自己身份的情况下证明自己,第三个是如何应对不在线的节点。Algorand采用了PoS(Proof of Stake)共识机制的分组方式——包括提案组和验证组,以解决PoW共识机制所带来的高能耗问题,并希望同时提升交易性能。


在Algorand方案中,首先每个新区块是由一个独立的随机生成的提案组产生多个提案块,其成员随机选择,期望值为26人。然后再由多个随机组成的验证组逐步经多次验证达成共识。这里验证组的个数一般为12组甚至更多,而每组包含2000~4000成员。每个提案组和验证组都是从所有用户的集合中随机选出,以强化去中心化程度。而用户的账户余额将会影响被选中的概率,并且给予每一个被选中用户一个优先级别(priority)以及拥有此优先级的证明。被提议的多个区块随后将在全网内通过八卦协议(gossip)传播,到达下一组进行验证和共识,直到最终唯一确认,最后唯一获选的区块加上各验证组共识组员签名信息上链。


Algorand的独特创新是VRF(可验证随机函数)和加密抽签,整体方案具有后验性。具体而言,用户是唯一知道自己是否成为某组(某轮的提案组或某步的验证组)成员的人,他人无法事先获知,只能等其广播后验证,恶意攻击者甚至无法事先知道组成员是谁,因此不能对他们进行贿赂或发起拒绝服务攻击,组员间也无法共谋,提高了系统的安全性。


但分析其具体工作机制后,我们发现有以下问题:


1)   签名数据庞大,造成存储浪费并影响性能。Algorand使用VRF来确定提案组与验证组,这个方式充分发挥了VRF的可验证性优势,且后验优势使得Algorand的共识体系更安全。但是,Algorand进入验证阶段,采用的是一种可扩展的拜占庭容错算法,即BA*算法,参与节点通过VRF秘密抽签选出。这一设计使Algorand在验证前必须等待凭证(VRF prove)到来,才能知晓参与节点。而且,由于使用了可扩展的拜占庭容错算法,使得Algorand的验证组规模必须比较大(2000~4000人),这将导致签名数据异常庞大。根据我们的估算,在平均每组3000个验证节点的规模下,每组的签名数据长达126KB,加上其它信息,通知信息约300K,每块的签名数据可达2000*64*12=1M(共12组,每组3000人,至少2/3达成共识。ed25519签名数据长度是64。),远超一般门限签名几十个字节,严重浪费存储和容量(因每块存储的交易量将被占用,不存储签名又会影响安全),不仅造成存储浪费,而且更影响性能。


2)   算法对于网络带宽要求极大,个人用户很难参与,严重影响去中心化特性。如下图所示,对照来自于Algorand论文中的公开测试数据,在实验环境中,Algorand需要让区块达到10M大小,才能达到125倍比特币的性能(约10M-1M=9M,每M存储的交易数为1万,则基于Algorand的测试数据,有90000/50=1800TPS,约为比特币的100多倍)。10M区块大小意味着要求节点的网络带宽峰值至少需要80M才能承载,这对目前一般用户非常困难,影响了系统的效率和去中心化特性。



3)   节点网络规模受限,网络通讯不经济并影响性能。当网络规模太小时,将无法组成所需的提案组和验证组,影响系统正常工作。而网络规模太大时,提案块(假设大小2M,去除签名的1M,有效交易存储空间为1M)和验证信息(大小约300K)无法快速传播到后继验证节点,也会影响系统性能。


Algorand即使在验证环境也需要等待5*10=50s以上(包括等待潜在提案者的时间延迟及其特殊的拜占庭算法),加上其提案传播时间10秒,至少需要60秒才能完成一次出块上链。假设一个有效存储1M(去除签名后)的块包含1万笔交易,则其TPS为10000/60=167。我们预估在全网真实环境下,这个结果会更糟。假设每个验证组成员为3000个,每次验证组成员不重复(一般12组甚至更多),则至少需要12*3000=36000个节点。根据下图所示,一个2M的块,要传播到3000个节点,需要36秒,如传播到36000个节点,可能需要45秒左右甚至更长才能到达第一验证组。验证信息(大小300K)需要9秒左右才能传播3000个节点,如传播到36000个节点,可能需要12秒或更久,到达下一验证组。而其一般要11步或更多才能完成验证,再加上最后一步,这样就验证就需要12*(11+1)=144秒。整个过程需要189秒,其性能仅约53TPS,离项目方宣称的1000TPS差之甚远。



4)   账本数据存储相对较大。如前所述,因其采用多步BA共识算法,其签名占据巨大存储空间,虽然提高了安全性,但影响了性能,也浪费了账本存储空间,制约了账本系统的存储容量和系统规模。


5)   不具有强的输出公平性保证。保证公平性(Bias-resistance)能够确保协议的输出不被敌手操纵。然而Algorand为了选择提案者使用了一个有些偏向的随机性,使得那些需要真正随机均匀分布的应用不适合采用该协议。


总的来说,我们认为Algorand的VRF和加密抽签后验性给出了一个解决“三角悖论”的很好设计思想,但其在验证环节的设计更偏单纯的学术化理想化,导致其对网络流量、有效通讯数据等实际工程落地思考不够,严重影响了公链运行性能、节点网络规模、账本存储容量和去中心化程度。 


版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。
相关新闻
发表评论

请先 注册/登录 后参与评论

    回顶部