区块链技术现状

区块链技术现状

(重点研究了EOS和DAG的共识机制和体系设计)

区块链的开放对象范围一般可以分为三类:(1)公有区块链,(2)联盟区块链,(3)私有链,对于私有链仅仅使用区块链的总账技术进行记账,公司或者个人独享这个区块链的写入权限,私链的特征是交易速度快,数据不公开,交易成本低,甚至为零,目前传统金融巨头都在尝试;而对于联盟链,由于某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定,其他介入节点可以参与交易,但不过问记账过程,其他任何人可以通过该区块链开放的API进行限定查询,联盟链需要通过授权才能加入和退出;而公有区块链是所有个体和团体都可以发送交易,且交易能够获得区块链的有效确认,任何人都可以参与共识过程。

本次调研从公链开始,因为比特币和以太坊的平台相对为大家比较熟悉,所以我就跳过,直接从被叫做区块链3.0的EOS讲起,涉及它的共识机制和账户模型,接下来是DAG,是一种比较特殊的数据机构以及共识机制的构造方式,最后是联盟链,因为之前做过一次Fabric的调研,具体细节就不再展开,主要介绍另外一些联盟链的信息。

EOS

区块链2.0的痛点:

区块链经历了大致三个阶段,1.0时代代表的是去中心化账本,2.0时代是代表智能合约,3.0时代则是代表了行业的应用。早期的区块链技术应用单一,仅仅用作保证去中心化的数字货币交易可信性的技术方案之一,但是事实上它具有很多优良的特性,决定了它能够被更加深入的应用,例如:(1)保证信息共享且真实可信,(2)交易费用低,(3)链上操作不可逆,(4)用户信息匿名;所以有了以太坊为代表的2.0时代,但是2.0时代也存在短板,体现在以下方面:(1)调用合约产生费用昂贵,(2)交易处理不公平,(3)网络堵塞交易速度低,(4)不支持浮点数以及代码修改,为了解决这些问题,EOS的项目被提上日程。

EOS的相关特性:

1、支持百万数量级别的用户;2、免费使用;3、简单的升级以及漏洞修复;4、较低的延迟性;5、强大的串行性能;6、强大的并行性能

EOS的共识机制:

EOS使用的共识机制是DPOS(委托股权证明),DPOS由五个部分组成:Token、区块链、社区、计算机和规则,在整一个系统里面,Token代币的持有者以Token为选票,通过投票选出它认可的节点,选出的节点根据一定的规则来运行区块链计算机网络,这种机制类似于委员会的机制,选民通过选票来选出运行系统的代表委员,而在这里的选票就是代币,在EOS系统里面,最终会选出21个主节点,它们有权利生产区块,也就是说整一个系统的区块生产者,也就是矿工,简称BP。

一开始的EOS使用的是传统的DPOS,这里采用随机的BP出块顺序,出块速度是3秒/块,每一个BP的出块都代表了对之前整条链进行一次信息确认。因为交易需要得到全网2/3以上BP的确认,也就是说在EOS上,需要14个主节点BP对区块进行确认才算是不可逆,因此交易不可逆需要45秒((14+1)*5=45)。

这样的速度不够快,因此EOS采用了拜占庭的机制,采用了BFT—DPOS的共识机制,在这样的机制下,BP生产出新的区块依然像全网络广播,其他BP接收到新的区块时,立即对这个区块进行验证,并且将验证完成的签名区块立即返回给出块BP,不需要等到轮到自己出块再确认,因此在生产新的区块并广播全网后,在收到全网2/3的BP确认后,这个区块就是不可逆的,这使得交易的不可逆确认缩短为3秒,消耗的时间主要是等待生产区块的时间。

这个变化过程可以从下图看出:
在这里插入图片描述

​ (图片一:传统的DPOS,等待区块确认)
在这里插入图片描述

​ (图片二:BFT—DPOS,收到足够多签名就行)

为了继续挖掘EOS的性能,EOS又做了一定的修改,它将原本的出块速度3秒改为0.5秒,极大提升了系统性能,但是这样做的缺点就是带来了网络延迟问题,由于网络延迟的问题,可能0.5秒的确认时间会导致下一个出块的节点还没有收到上一个出块节点的区块即产生了新的节点,从而导致区块链分叉,也就是分叉的概率会大大增大,针对这个问题,EOS设计了原先的出块顺序为BP商定后的确定顺序,这样如果两个网络延迟比较低的BP会相邻出块,尽量避免区块链分叉,同时为了增强这个问题的性能,它们设计每个BP生产区块时,连续生产12个区块,也就是拥有6秒的连续出块时间,这样使得只有最后一个或者两个区块可能因为网络延迟被下一个BP忽略,但能保证前列的区块能够有效传递给下一个BP。

总结一下,现有的BFT—DPOS的机制就是,每一个区块拥有6秒的出块时间(连续生产12个区块),生产出来后立即对全网进行广播,区块生产者仪表生产新的区块,一边接受其他BP对于上一个区块的确认,大部分情况下,交易会在一秒内确认(也就是达到不可逆状态),该时间包含了0.5秒的区块生产和0.5秒的其他BP的确认,如下:
在这里插入图片描述

EOS系统规定,一旦区块达到不可逆状态(2/3BP确认),就无法在此之前进行分叉,从而保证交易永久可信,另外,即使多数BP想要分叉区块链,也只能以相同的速度(0.5秒)与主链竞争,就算主链只剩下一个见证人,分叉链也永远不会追上主链,保证系统的稳定。

超级节点的竞选:

超级节点就是我们上面说到的BP,也就是系统生产区块,打包交易信息的节点,他们负责的事务:(1)收集网络里的交易,(2)验证交易并且把它们打包到块,(3)广播区块给其他节点,通过验证后将区块添加到自己本地区块链上;因为采用了BFT-DPOS的共识机制,很好解决了延迟和吞吐量低的痛点,但是当然为了提升整一个网络的效率,就需要减少节点,但是减少节点会对网络安全性造成伤害,例如,如果委员会的委员太少,那么它们可以联合起来为所欲为的可能性就会很高。EOS设计者的想法,就是建立21个超级节点,它们各自组织自身的EOS社区,而超级节点也会以现实中的城市一样去竞争发展,这个方法能够以有限的中心化实现广义的去中心化,并且以EOS获得极快的交易速度与容错能力。

至于EOS上面超级节点的产生是根据全网用户持有的EOS token投票实现的,不同于以太坊的POA一个节点一票的形式,EOS是根据持币的数量来决定手里的票数,因为POA的场景是私链或者联盟链,与大规模的公链是不同的。节点被选举成功后,POA是没有确定数量限制的,但是EOS限制了只有21个,每次投票结束后,排名前21位的节点胜任,并且这些超级节点必须有很高的性能要求与运维能力以及社区规模,如果某个节点出块出现了问题,一定规则下回丢弃而重新选。

持币者投票:

EOS上凡是有Token的持有者都可以进行投票,投票流程:

(1)EOS Token抵押:持有者要获得选票,需要将手里的EOS Token抵押,转换成相应的CPU和带宽资源,可以投选票数与抵押的可用资源相等,抵押的EOS会被锁定,不再具有转账和交易的功能,如果想要取消抵押并赎回,需要等到72小时后才能到账。

(2)一票30投,委托代理:获得的选票最多可以投给30个不同的节点,假如你有一个EOS Token代币,你可以将这一票投给一个节点,也可以投给30个节点,这些节点就会得到一票,如果想要改变主意,可以立即改投,更改会在下一轮的区块开始时生效(21*6秒)还有一种投票的方式就是委托代理,也就是你可以把投票权利给指定的代理人,他帮你投。

(3)投票权重衰减:为了推动治理,希望EOS用户根据节点的发展更新他们的投票,为此引入了时长一年的投票权重半衰期的机制,这个机制规定从投票一周后开始,如果用户在一周后不再重新投票,它的选票权重就会衰减,一年后会降低至原来的50%,如果用户重新投票,就会恢复权重,在每一轮区块生产时,系统会根据每一个节点的选票数和每张选票的权重得到各个节点的选票值,根据排名筛选出前21个节点作为系统的超级节点。

超级节点的治理:

超级节点的定位就是POW中的矿工,他们都是收集网络中的交易信息并打包成块,不同的是EOS的超级节点不需要完成工作量证明就可以直接广播区块,让其他节点验证。

在EOS中,每生产252个区块为一个区块周期,也就是每一个超级节点在一个区块周期中应该产生12个区块,而每个区块出块时间0.5秒;每个区块周期开始时,EOS会根据投票得到21个超级节点,约定产生一个区块产生的顺序,这些节点按照这个顺序进行出块,如果一个节点没有在指定时间出块(每隔0.5秒出一个区块),那么这个区块就会被跳过,并在区块链上留下时间戳间隔,如果一个节点在最近24个小时内都没有产生区块,那么它会被移出超级节点候选名单。

一旦一个节点完成区块生产并且通过其他节点的验证,它就可以添加这个区块到链上,并获得新的代币作为奖励,所有超级节点的期望奖励中位数决定了系统最终会产生多少新代币,但是每年产生的新代币数量不能超过代币总量的5%。

EOS的账户体系:

账户体系是EOS上的亮点之一,实现了基于角色的权限管理以及账户恢复功能,使得用户可以灵活得以一种组织化的方式管理账户,最大化资产安全性。

基于角色的多层级账户体系:

常见的区块链系统账户是一对公私钥,账户名就是公钥,而EOS中的账户名由用户自定义的12位可读标识符,而且一般账户下面包含多对公私钥,每对可以自定义拥有不同的权限,通过权限配置可以实现该账户只被个体控制或者被一个组织控制,这个账户是传统公钥所代表的单一权限的更高层抽象集合。

一般的常见区块链项目,一般由于只有一对公私钥,因此代币会直接放在公钥,如果私钥被盗取代币就可以直接转走,但是在EOS账户内,代币是放在账户里,公钥里面放的是带权重的钥匙,转走账户里面的代币需要每个拥有转账权限的钥匙的权重之和达到设定的阈值才可以进行。EOS上的所有交易行为都是通过账户来完成的,通过账户执行任意操作时,EOS系统首先会验证操作者是否达到足够的权限,验证这个操作才会生效。

EOS上,每个账户创建时一般由个体拥有,通过单一公私钥便能够进行所有操作,后续可以根据需要配置权限,将账户扩展成组织账户,由多对公私钥共同控制,甚至可以为组织外部个体或者组织分配部分操作权限,从而实现极其灵活的组织管理方式。

账户权限管理:

EOS上任意账户都自带两个原生权限:owner和active权限,owner代表账户所有权,这个权限可以进行所有操作,包括更改owner权限,可以由一对或者多对EOS公私钥或者另一账户的某权限实现权限控制,因此,代表着owner权限的EOS公私钥最重要,需要冷储藏。active是活跃权限,能进行除更改owner权限以外的所有操作,也是通过一对或多对EOS公私钥或者另一账户的某权限实现权限控制的。

EOS支持将A账户的某一个操作权限分配给他人所拥有的公私钥对或者账户B,从而实现基于角色的权限管理。

除了两个原生权限外,EOS还支持自定义权限,active权限可以看做拥有除了更改owner权限外的所有owner权限,例如转账、投票、购买ram等权限,我们可以将active的部分权限分配给一个自定义的权限voting,单独通过voting权限所对应的私钥对投票操作进行签名就可以完成投票操作。这样做的目的就是可以把部分操作权限分配给第三方,避免直接给出active权限的私钥,从而实现灵活和安全的组织管理方式。

在多主体共同控制某一权限的情况下,EOS是通过权重和阈值来实现判断是否拥有这个操作权限:因为账户会给每个主体分配不同权重,以及某个权限的阈值,只有当某些人拥有的公私钥数量对应的权重之和不低于该权限的阈值,才能拥有这个权限,并进行操作,如下:
在这里插入图片描述

要实现publish这个操作,需要阈值为2才可以操作,因此@bob或者@stacy可以单独进行操作,而如果是第三个账户就不可以,他需要与其他人的权限和达到2一起签名交易才可以操作。

强制延迟消息执行策略:

时间是安全的重要问题,基于时间的安全性在人们使用某些应用程序时更为重要。在消息包含在区块后,EOS系统支持开发人员指定某些消息在应用前必须等待一小段时间,在此期间可以取消该操作,例如支付一杯咖啡可以在几秒内确认且不再被撤回,而买房子可以设定72小时后才清算,保证了资产安全。

密钥丢失或被盗后的恢复:

EOS允许恢复被盗窃的密钥。这在比特币和以太坊上是不可能的,在比特币和以太坊上一旦密钥丢失,那么整一个账户会随之丢失,EOS提供了密钥被盗取恢复的方法,账户所有者可以使用过去30天内活跃的任何其批准的账户恢复合作伙伴的密钥,重置账户的所有者密钥,没有账户所有者的配合,账户恢复合作伙伴无法重置账户的控制权。

对于黑客而言,由于已经控制了账户,不用恢复,同时恢复的操作会暴露它的身份,所以对于它们来说恢复没有所得。这个过程与简单的多重签名交易不同,通过多重签名另一个实体会成为执行交易的一方,而恢复过程中,恢复合作伙伴参与恢复过程,无权参与日常交易,极大降低所有参与者要付出的成本与法律责任。

网络资源Token化:
带宽和日志存储:

用户发送一笔交易信息后,区块生产者需要将交易打包生成区块,然后将区块通过网络同步给其他生产者,这个过程需要消耗一定网络带宽资源,而带宽资源由交易信息在区块中所占的字节数决定,这种方式类似于手机流量,每发送一笔交易就消耗一点带宽资源,如果资源消耗存储为0,那么无法发送交易信息,获取带宽资源的方式有两种:

(1)如果用户持有Token,可以直接将Token抵押给EOS系统账户,系统会根据抵押Token占全网抵押Token的比例,分配给用户对应带宽资源,比如,用户拥有1%的抵押Token,那么占有全网1%的带宽资源,因为带宽是可以回收的,因此用户可以取消抵押,换回Token,锁定期为3天。

(2)如果用户账户没有Token,可以从其他用户手中租赁带宽资源。

计算和计算积压(CPU):

当用户调用智能合约时,区块生产者需要根据智能合约地址查找合约代码,然后代码加载到内存运行,这个过程需要消耗CPU算力,CPU计算资源由运行智能合约所消耗的时间决定,用户每次调用智能合约都会消耗计算资源,如果消耗为0无法执行合约,CPU也是跟上面的抵押机制进行购买,取消抵押锁定期3天。

状态存储器(RAM):

RAM是运行时的内存,EOS中,用于存储账户的状态信息需要内存,RAM的买卖实质上是抵押EOS Token到系统账户,而不是直接交易,而购买RAM是抵押EOS得到RAM的使用权限,至于出售RAM,是释放自己所占用的RAM,从系统账户中取回EOS,和网络带宽不同,RAM的交易是有0.5%手续费,并且不能出租给其他人,只能自己使用,抵押或者取回RAM是即时的,没有延迟期,RAM的价格是有一种bancor算法,买的人越多,价格越高。

EOS中的智能合约:(待扩展)

(1)内联通信,(2)延期沟通

EOS的脚本与虚拟机:(待扩展)

(1)模式定义的消息,(2)模式定义的数据库,(3)身份验证与应用程序分离,(4)虚拟机独立架构

DAG:

随着区块链的发展,它暴露的问题还是挺多的,例如吞吐量、扩展性低等缺点,严重阻碍落地,因此也有一些人提出了新的结构——DAG;就是有向无环图,在区块链中它是一种存储数据的方式,“有向”指的是所有数据顺着同一方向存储,“无环”则是指数据结构间不构成循环,目前的DAG项目有IOTA和Byteball等等,他们利用DAG成功构建长期稳定的公有链证明了这项技术的先进性和良好的性能。下面我会从IOTA、Byteball、Hashgragh这三种基于DAG的区块链进行介绍。

IOTA的共识机制:

IOTA是一种新型的加密货币系统,可以用于创建全球范围内基于现有硬件的物联网系统中的一种货币,它所采用的数据结构是Trangle:

Trangle确认规则:

Trangle是IOTA的数据结构,每一笔交易在Trangle中用一个顶点表示,因此可以说区块链是每一个区块存一笔交易,当有新的顶点(也就是交易)加入Trangle时,它需要选择两个已经存在的顶点作为自己的父亲顶点(也就是要验证之前的这两笔交易),并往这个数据结构中添加两条新的有向边,如下图:
在这里插入图片描述

在Trangle中没有被确认的交易,被叫做tip,也就是没有子节点的节点都是tip,交易的确认分为完全确认和部分确认,完全确认的定义是:被所有tip直接或者间接验证的交易就是被最终确认的交易,Trangle随着时间的扩展,一段时间后,早期的交易深度会达到足够大,使得任意一笔新加入的交易都能够直接或者间接的对其进行再次验证,因此可以说这些完全确认交易具有高度的确定性,但是由于网络原因,节点不可能拥有全局视角下的Trangle,完全确认通常很难达成,因此为了让节点能够确认交易,规定一笔交易被一定比例(80%)的tip验证就可以视为确认,也就是用部分确认来代替完全确认,更进一步,用户可以根据交易对方的身份,选择一笔交易的确认级别,比如一笔交易的价值很小或者交易对方是一个可以信任的朋友时,可以选择75%或者更低的确认比例。

轻量化的POW:

IOTA发送交易没有手续费,为了防止DDos攻击,同时避免算力的过多浪费,IOTA要求用户在发起交易之前需要做一个轻量化的POW,这里的POW跟比特币一样,用户将交易内容和所选的两个父亲节点的hash打包,添加一个随机数Nounce计算出一个hash值,直到满足要求之后再将交易发送出去,这样可以防止恶意用户无代价发送垃圾交易,造成网络拥堵。

其他用户在验证父节点的合法性时,首先验证它的工作量证明是否符合要求。因此当用户想要发起一笔交易是,他应该按照以下步骤进行:(1)选择两笔交易作为父亲交易,通常是tip交易,(2)检查这两个交易是否冲突或者验证了带有冲突的交易,(3)在发送交易之前,需要做一个轻量化的POW计算,在Trangle中出现分叉时,用户需要做出选择,选择的依据不再是最长链原则,而是最大工作量原则,工作量最多的分叉视为唯一合法分叉。

蒙特卡洛马尔科夫链:

IOTA想要构造的是一个没有中心的系统,因此不会存在个人或者集体要求用户在发送交易是采用何种父亲顶点,所以需要蒙特卡洛马尔科夫链MCMC,遵守这种算法的用户的交易会得到快速确认,而不遵守的交易不容易得到确认。

IOTA中,希望每一个用户都能够选择tip进行验证,也就是选择新的交易进行确认要比选择老的交易好,对于那些去确认老交易的顶点,叫做”懒惰“顶点,因为发送这些交易的用户没有更新数据让自己拥有最新的Trangle,并且没有验证新的交易,MCMC算法的目的就是要让”懒惰“的交易不容易得到确认,并且越”勤奋“的交易能够越快得到确认,这样就能够增加交易的确认效率,这样设计有利于Trangle的健康发展。

在MCMC算法中,选择父亲顶点的过程从创世点出发,递归选择当前顶点的子顶点,从而一步步往延伸方向进行查找直到找到tip,就是被选择的父亲顶点,在游走的过程中会遇到某个顶点存在多个子顶点,此时不同子顶点被选中的概率不同,MCMC算法就是为每一个子顶点的概率设计一个计算方法:为了确定不同子顶点被选的概率,为每一个顶点引入一个属性:累加权重,如果一个顶点被n个顶点验证,它的累加权重就是n+1,累加权重越大的节点被选择的概率越大,可以设定不同的规则来确定累加权重与被选择概率之间的具体关系,例如正比关系。

那么累加权重怎么确保“懒惰”节点不容易被选中?懒惰的节点所在的路径上的节点的累加权重都比较小,因为懒惰节点的存在使得路径变短,根据规则,节点被选择的概率与累加权重正比,因此被选择的概率就变小了,

双花问题:

双花在IOTA中可以是攻击者付款给商家得到商品后,攻击者签发了另外一笔双花的交易,攻击者同时发送大量较小的交易区去验证这笔双花交易,在目前阶段,考虑整个IOTA网络中到的节点数量和交易数量较少,一旦某个恶意用户拥有较大的算力后,就能够与整个IOTA网络抗衡,从而双花攻击成功,因此前期引入中心化的仲裁者来帮助共识的达成,凡是被“仲裁者”直接或者间接验证过的交易就是完全确认交易,但是随着网络扩大,就可以去除“仲裁者”使得其去中心化。

Byteball共识机制:
单元确认规则:

ByteBall的区块结构也是DAG,同样是一个单元一个交易,连接各个单元的有向边就是表明他们之间的引用关系,这个和IOTA类似。但是不同的是,Byteball引入了见证人和主链来实现共识,从而对交易进行排序,见证人是一类特殊的用户,他们由社区选举而产生,每一个用户可以选择12个见证人组成自己的见证人列表,见证人往往需要具备以下条件:(1)拥有一个公众都知道的真实ID,可以是人或机构,(2)在社区有较高的知名度,(3)可信,(4)系统出错,愿意牺牲,(5)保证7*24在线时间,满足条件的个人或者机构可以提出申请,让自己成为新的见证人,同时说服用户,让他们被选举成功。在Byteball中,用户发出新单元时,要求相同地址发布的所有单元应当直接或者间接包含该地址之前所有的单元,也就是相同的地址的所有单元连通,并且一笔交易可以同时验证多笔交易,同时设定单元兼容规则,单元兼容定义:如果两个单元的见证人列表的差别最多只有一项,就是单元兼容,Byteball要求新发出的单元只能引用与自己兼容到的单元;在Byteball中,凡是超过一半的见证人直接或者间接确认的单元就是被视为合法单元。

主链:

主链是在指定用户所建DAG图中沿着子-父链接找到一个单链,可以把单元都关联在一起。我们从任一个顶点开始,可以构建一个主链,如果以相同的规则在两个不同的顶点选择主链,这两条主链在回溯过程中一旦相交,它们会在交点之后完全重合,重合部分称为稳定主链。最坏的情况是两个主链在创世单元相交。所有的单元要么直接在这条稳定主链上,要么从稳定主链的单元上沿着DAG的边缘通过少量跳跃达到,因此稳定主链可以在两个冲突的无序单元之间建立总序。首先,给直接位于稳定主链上的单元做个索引,创世单元的索引是0,创世单元的子单元索引为1,以此类推,沿着稳定主链给主链上的所有单元分配索引,对于不在稳定主链上的单元,我们找到第一个直接或者间接引用此单元的的主链单元,这样就给每一个单元分配了一个主链索引。然后,给定两个单元,拥有较小主链索引的单元就被认为是更早生成的,如果两个单元的主链索引相同并且存在冲突,则拥有较小哈希值的单元有效。

稳定点扩展:(待补充)

当获得新单元时,每一个节点会持续追踪自身的当前主链,因为他们将要基于当前的所有无子单元构建新单元,因为网络的原因,不同节点的主链不同,可能看到的是不同的非稳定单元集合。稳定点扩展的本质是在当前稳定点的某一条子链路径上出现超过一半的见证人是,就可以确定稳定点能够朝着当前子链扩展。

双花问题(待补充):

如果大多数见证人与攻击者合谋,攻击者将影子链发送给超过一半的见证人,这些恶意见证人在影子链上发布单元,则攻击者有可能攻击成功。

Hashgraph共识机制:(待补充)

Hashgraph 是一种数据结构和共识算法,具有高吞吐量和异步拜占庭容错( ABFT )的特点,使得 Hashgraph 在公链和私有链领域都有潜在的使用价值,并且,在保证去中心化的同时不需要繁重的工作量证明。

Hashgraph用的是gossip protocol,原理简单说来就是消息像八卦一样告诉自己的邻居,邻居再告诉他的邻居,这样一直广播出去,直到全网都知道这个消息,过程如下:

  • 1.Hashgraph中的每个节点都可以将新创建的交易和从其他人那里接收到的交易的签名信息(event)传播给其他随机选择的邻居。(如何定义邻居呢?)
  • 2.这些邻居将收到的事件与从其他节点收到的信息聚合成一个新事件,然后将其发送给其他随机选择的邻居。
  • 这个过程一直持续到所有节点都知道在开始时创建或接收的信息。

由于八卦协议的快速收敛性,每条新信息都可以快速到达网络中的每个节点。gossip protocol的传播历史可以通过有向图来说明,每个节点维护一个图,表示每次交易的转发者/序列。一些重要的概念:Hashgraph假设:不到1/3的节点是拜占庭节点(作弊节点,延迟节点,丢消息节点),那么如何确认交易呢:每个节点可以根据是否有超过全网2/3的节点(也就是目击者)来确定交易是否有效。因为FLP不可能定理:在网络可靠且存在节点失效的异步分布式系统中,不存在一个可以解决一致性问题的确定性算法;在异步系统中,即使在仅有一个故障节点的简单情况下,不可能存在确定性的共识协议。在有拜占庭节点或恶意节点的场景下,共识协议要么是非确定性异步(典型的PoW),要么是确定性非完全异步(典型的PBFT)。PBFT(实用拜占庭容错)大大优化了消息传播的复杂度(节点通信基本都是同步的),但是实际使用中差不多也就支持到100个节点就是极限了,因此BFT算法只适用于非公链场景。Hashgraph对共识定义做了一些放宽,本来应该在有限轮通信之后,会取得共识,Hashgraph是在极小概率下共识算法可能会无限执行,但这一概率几乎为0.Hashgraph的共识算法是非确定性的,但那是能保证最终确定性,同时因为所有节点都是对等节点,避免了潜在的DDOS攻击风险。

几种联盟链的介绍:

corda:

Corda是R3联盟推出的金融联盟“类区块链”技术架构。Corda中同样是用交易组成账本,但并没有区块,这个和传统区块链结构是个很大的不同。交易仅在参与方和公证人间传播。公证人是交易双方共同选择出来的,具有高度可信的特征。公证人负责验证数据的有效性和验证数据唯一性。由于Corda选择了最高安全性的公证人模式,因此在跨账本消息处理上,变得较为简单。仅需选取不同账本的交叉公证人或者强行指向同一个验证人且让其账本同步即可安全的验证跨账本消息。

fabric:

Hyperledger Fabric是IBM 推出的企业级区块链开源架构方案。Fabric定义了链、Peer、通道、共识服务的概念。链代表了账本和对应的共识服务。一个Peer可以拥有多个逻辑账本,并且可以参与多条链。通道是将Peer连接共识服务的虚拟通信方式。共识服务既是可信的与链无关的公共服务。Fabric的扩展性上主要得益于Peer可以参与多个账本。Fabric强调Peer的隔离性,如Peer之间的事务隔离、账本隔离。同时也有不支持跨链路由,不支持跨链事务,跨链只读的特点。

Cosmos:

Cosmos是Interchain Foundation的跨链开源项目。Cosmos是专注于解决跨链资产转移的区块链网络。网络主要由两部分组成,Cosmos Hub和若干个Zone。每个Zone可以看做是单独的区块链空间。每个Zone会和Hub保持状态同步。Hub通过去中心化的验证人组来保证安全性,验证人组有罚金托管机制,它是唯一的多资产中心账本,并负责保证各类资产在不同Zone转移的同时,资产总量不变。Hub既是中继链。Zone之间的跨链通信主要是通过与Hub之间的IBC协议来实现。Zone1向Zone2做跨链消息时,Zone1先生成消息包,并将其证明发布在Hub上,接下来Hub会生成Zone1的跨链消息包已在Hub上的存在证明的证明发布于Zone2,接下来Zone2收妥消息包,并给出证明发布于Hub上,最后,Hub再给出Zone2的收妥证明的证明发布于Zone2。完成整个跨链消息传递。

PolkaDot

PolkaDot是Web3基金会的跨链协议开源项目。由Parity团队的Gavin Wood主导开发。PolkaDot是未来Web3.0时代的基础设施之一,是一个未来“区块链互联网”的基础协议。PolkaDot协议强调解决当前区块链技术的伸缩性和隔离性问题,以提供众多异构区块链系统之间去信任、去中心化的通用的互访问性、互操作性为目标。PolkaDot与Cosmos的不同在于,Cosmos专注于跨链价值转移,而PolkaDot则是更为通用更具备普适性的跨链协议,远景更为宏大。PolkaDot Platfrom是对PolkaDot协议的一个实现。它是中继链实现模式。它把通过PolkaDot进行跨链交互的区块链称为平行链。可以认为中继链是多个平行链的集合。中继链上分为不同的验证人组来形成共识网络,同时每个平行链也拥有自己的验证人组,该平行链的验证人组也参与到中继链的锻造中。平行链的收集人负责收集执行平行链中的跨链消息组成候选块,并提交给验证人。验证人组会对候选区块进行验证和发布。中继链通过队列的机制将跨链消息在不同的平行链之间进行转移,通过中继链的区块锻造达成消息的跨链传递和跨链状态同步。

InterLedger

InterLedger是由Ripple公司主导发起的跨账本价值传输开放协议。InterLedger不是区块链,它是连接各类账本的支付标准、统一协议。IntrLedger专注于跨账本间资金流动领域。各类账本通过去信任的第三方“连接器”来互相连接。InterLedger协议是哈希锁定的实现模式。它会为交易参与的双方实现资金的锁定与托管。当交易双方达成交易共识时,跨账本的资金流动马上原子性发生。

安链

由众安科技推出的企业级区块链产品。其中提出了链路由,定义了多区块链之间的通信协议、路由协议,同时在其之上维护区块链间的网络拓扑地图。目标是解决区块链之间的连接与分发问题。链路由可以多层次组合构成分层网络结构。简而言之,链路由仅支持多链路由,不支持跨链互操作。

性能比较可以参考下图:

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值