解密区块链最强心脏 迅雷链共识算法详解

11月10日在广州贝塔咖啡举办的迅雷链技术沙龙上,迅雷链底层工程师张骁就迅雷链共识算法的内在细节,向到场的开发者和区块链爱好者做了详细解读。DPoA+PBFT的算法保证了分布式系统中的强一致性和高效率共识,吸引了在场来宾的关注。

什么是共识算法?

张骁认为,区块链建立在分布式系统上,有若干个节点,每个节点都会维护自己的数据,这些数据需要保证一致性。如果不同的节点提供的数据不同,就不是一个能够正常对外工作的分布式系统。所以在区块链中,需要把这些数据通过复制和同步,来保持一致性,这个过程就叫做共识。

共识过程中所使用的算法就叫共识算法。对于区块链来说,共识算法的作用就是制定达成共识的标准,即当数据有所不同时,以谁的为准。张骁深入浅出,用通俗易懂的方式,解释了这个概念。

当前主流共识算法的分类

张骁表示,目前共识算法可分为分为概率一致性共识和绝对一致性共识。

概率一致性共识算法是指在某一个时间点上,允许数据有一些不一致情况的算法。比如比特币采用的算法,就是一种典型的概率一致性算法。比特币达成共识的过程中,如果在同一个时间点有两个不同的节点,都找到了满足这个条件的计算公式,就相当于都可以产生一个区块,然后就产生了分叉。当然,这种分叉是会被下一轮的挖矿和共识过程所修正的,最终还是会达成一致,但在其诞生后的一小段时间里,是无法达成一致的。

绝对一致性共识算法是指数据始终保持一致性的算法,它通过牺牲一定的可用性,保证了数据的一致,其中又可以细分CFT和BFT两个类型。

CFT算法的特点是确定一个固定的节点数量,只要有达到这个数量的节点确认,那么共识就算达成。比如总共有11个节点,确定只要4个节点投票确认某次交易,那么这次交易就算完成。这样做的结果是交易确认速度很快,同时结果永远都是确定的,而且不会出现分叉。

BFT算法是另外一种常见的绝对一致性算法,它达成共识的过程分为三个阶段,分别是预准备、准备还有提交,其共识过程是:

1.预准备阶段:某个节点为从客户端收到的请求分配提案编号,然后发出预准备消息,广播给其它节点;

2.准备阶段:其它节点收到预准备消息后,检查消息合法性,如果检查通过则向其他节点发送准备消息,并带上自己的ID信息,同时接收来自其他节点的准备信息。收到准备消息的节点对消息同样进行合法性检查验证,全网中至少2/3的节点验证过的消息,才会真正进入准备状态;

3.提交阶段:向全网所有节点广播进入准备状态的消息,然后由所有节点进行投票,投票数达2/3后该消息通过。

各种共识算法的优缺点

张骁指出,以比特币为代表的概率一致性算法的缺点是,对确认时间的要求比较长。比特币出块速度为10分钟,同时还要经过6个区块的确认,才能得到最终的确定。即要经过60分钟之后,某个交易才能得到确认,而且还不一定能够保证支付成功。这在实际应用过程中是无法接受的,谁也不能付款后还要等1个小时,才能确定到底有没有完成付款、拿走东西。

因此,概率一致性算法不适合实际商用,无法满足实际商业场景中对交易确认速度、并发处理的要求。

CFT算法的问题是不能防止节点间的撮合,比如有4个相熟的节点勾结到一起,这样几乎就可以确认所有交易。同时也不能防止节点作恶,比如一个节点向其中4个节点发出一个确认请求,再向其它的节点发出另一个完全相反的确认请求,这样就会同一时间形成两个完全不同的交易结果,由此导致系统出现偏差。

因此,CFT算法基本只能在能够确保节点诚实度的情况下使用,比如私有链。

BFT算法弥补了CFT的漏洞,杜绝了节点撮合交易和作恶的可能性,每一次交易都经过两轮投票,多次验证,因此不会出现恶意交易的情况出现。

但它有两个缺点,一是容错率变低,因为每轮投票都需要至少2/3的节点通过才行,所以BFT算法下,节点最多只能容忍不到1/3的节点出现故障,如果超过,整个区块链都不能运行。

其次是由于要进行3个阶段,每个阶段都需要对全网进行广播,所以通信量非常大,是节点总数量的次方级。因此在节点数量比较多的情况下,BFT算法会显得效率很低,简单说,就是这种算法不太适用于多节点的区块链。

迅雷链采用什么共识算法?

基于以上共识算法都无法满足要求,为了更好的适应各种大型商业场景,迅雷链提出了独有的同构多链架构结合DPoA+PBFT的共识算法。

迅雷链基于玩客云共享计算提供的150万个节点而产生,迅雷链先是从这150万个节点中,挑选那些在线稳定、传输通畅、性能较好的优质节点,集中成一个备选池,再用DPoA算法,从这备选池里挑选出一定数量的节点,组成整个迅雷链的记账网络。这些节点会定期轮换、重选,以避免记账节点暴露,被外界***。

而在记账过程中,采用PBFT算法。PBFT算法的优点是确认速度快、并发处理性能高,而且还永不分叉,有很强的一致性,非常适合于实际商用。

但PBFT也有缺点,一是容错率低,需要保证记账节点拥有较高的在线率,二是通信量大,不适合于太多节点的区块链。迅雷链自身的特点,恰好弥补了这两个缺陷。

首先,迅雷链所有记账节点都是优中选优挑选出来,而且还有大量备用,因此一来节点故障率本身就不高,二来一旦有节点出现故障,可以从备选池中立即选择新的节点来补上。150万+的总节点数,保证了随时都有足够的备选节点使用。

同时由于是采用DPoA算法来挑选记账节点,所以在同一时间记账的节点数量不会很多,完美规避了PBFT算法通信量大的缺点。

基于这种双重算法的设计,迅雷链才能在保证安全性、去中心化程度的同时,又能实现百万级TPS、秒级确认速度等超高性能,并能保证不分叉、不回滚,是目前最适合实际商用需求的区块链。

张骁最后说,没有任何一种共识算法是最好的,我们不能说到底是POW好,还是DPoA+PBFT好。因为算法好不好,要根据实际承载的区块链来判定,通过区块链面向的业务场景和目标去考量。迅雷链作为区块链3.0时代的引领者,需要能够接纳更多的商户上链,能够达到百万级的TPS,能够让交易在每秒级别的时间当中确认。在这样的需求下,在结合到有150万以上节点的玩客云硬件支持,所以最终选择了DPoA+PBFT的算法,成就了迅雷链的最强心脏。

原文地址:http://blog.51cto.com/12810375/2322006

时间: 2024-10-07 14:21:45

解密区块链最强心脏 迅雷链共识算法详解的相关文章

解密区块链生态的技术信任

1 区块链的核心价值 区块链的发展如火如荼,也产生了大量的区块链体系文章介绍从区块链的底层技术.网络结构.共识算法等等做的很多表述,但在其中我常常被问到的问题是:区块链的技术体系之外,最想问的问题是它的核心价值是什么?是更好的性能.更方便的连接.更可靠的技术,还是其他的因素,关于这个问题,我想经济学人这本在全球通俗经济领域的龙头杂志总结得非常到位,其实就是一个词:信任. 诚然,区块链技术带来了很多更好的机制,如各方更好地进行数据协作.信息同步.实时的点对点清结算体系,甚至一些去中心化的协作体系,

解密区块链宠物养成游戏系统(附代码)!

区块链作为一种架构设计的实现,与基础语言或平台等差别较大.区块链是加密货币背后的技术,是当下与区块链宠物养成游戏等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的宠物养成游戏系统技术实现. 区块链是一种很难理解的技术,宠物养成游戏系统也的最新的一种技术.虽然我也看了很多视频和文章,但从我个人角度来讲,直到我开始写一些简单的区块链应用,我才真正理解了它是什么以及它的潜在应用.我对区块链的看法是,它是一个公开的加密数据库. 关于区块链未来

区块链项目的分类和共识机制介绍

从目前主流的区块链项目来看,区块链项目主要分为四类:①币类②平台类③应用类④资产代币化. 币类主要充当区块链资产领域的"交换媒介",交换媒介指一般等价物,比如以前的黄金.银票等:平台项目类是指建立技术平台,用于满足各种区块链应用开发,可以降低在区块链上开发应用的门槛:应用类项目范围比较广泛,涵盖金融.社交.游戏.产权保护等诸多领域,也是目前区块链资产增长最快的领域:资产代币化项目是指是实物资产的区块链映射,也就是实物资产上链,目前不超过10个品种. 区块链的共识机制是什么? 在区块链系

1.3.2 区块链中的密码学——椭圆曲线密码算法(ECC)

今天在学椭圆曲线密码(Elliptic Curve Cryptography,ECC)算法,自己手里缺少介绍该算法的专业书籍,故在网上查了很多博文与书籍,但是大多数博客写的真的是...你懂的...真不愧是 '天下文章一大抄' 啊! 雷同不说,关键是介绍的都不是很清楚,是我在阅读过程中.产生的很多疑问无法解决!例如:只来句'P+Q=R',但是为什么等于呢?是根据什么计算出来的呢? 后来查了好久,才发现:这是规定的.是定义!瞬间很是无语! 好了,不吐槽了,为了方便大家对椭圆曲线密码算法有系统的了解,

共享链模式开发小程序app系统详解

使用会员卡进行促销方法来说是现代商家最为常见的促销手段,很多都使用返利的信息或是换购的措施来刺激消费,作为商业财务来说,用会员卡积分购物后如何记入账务? 我们所说的会员卡的积分通常来说是一种收入的确认方法,比如:会员购买了1000元左右的东西,那么这个消费者的积分就可以领取50元,实际上来看,这个会员消费者实际上就是给商家950元钱就可以进行消费支出了,而商场在开出发票时,不能够按1000元来开,而是按照950元来进行开取发票,也就是商业折扣的费用是50元,这样企业能够少交纳50元的税款,实际上

PHP实现链式操作的三种方法详解

这篇文章主要介绍了PHP实现链式操作的三种方法,结合实例形式分析了php链式操作的相关实现技巧与使用注意事项,需要的朋友可以参考下 本文实例讲述了PHP实现链式操作的三种方法.分享给大家供大家参考,具体如下: 在php中有很多字符串函数,例如要先过滤字符串收尾的空格,再求出其长度,一般的写法是: strlen(trim($str)) 如果要实现类似js中的链式操作,比如像下面这样应该怎么写? $str->trim()->strlen() 下面分别用三种方式来实现: 方法一.使用魔法函数__ca

区块链学习路线

2018年春节最火热的概念应该就是区块链了,从百度的莱茨狗和网易星球刷屏朋友圈,到3点钟区块链无眠群的大火, 大佬们纷纷进军区块链,不了解区块链好像错过了什么,这里把自己学习区块链过程中的一些资料进行索引,可以循序渐进的了解区块链技术及其应用. 一.目标 比特币发展历史,挖矿以及相关应用 区块链底层技术,如共识算法, 侧链技术, 密码学知识等,理解PKI基本知识和原理 研究以太坊技术,了解ERC20,能够自行开发DAPP 熟悉Hyperledger Fabric 1.0架构,了解其业务流程和设计

【刘文彬】区块链3.0:拥抱EOS

原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/eos-intro.html EOS是当下最火的区块链技术,被社会广泛看好为下一代区块链3.0.不同于以太坊的学习,EOS的主语言是C++,本文作为EOS研究的首篇文章,重点介绍EOS的创新点,它的周边生态,各种概念原理的解释,以及它被看好的原因.而针对EOS的源码学习,原理实现以及并行的C++语言的快速学习与掌握,我会在接下来制定一系列学习计划一一付诸实现. 关键字:EOS,DAPP,石墨烯技术,构建

密码与安全新技术专题之区块链

课程:<密码与安全新技术专题> 班级: 1892 姓名: 李熹桥 学号:20189214 上课教师:张健毅 上课日期:2019年4月23日 必修/选修: 选修 1.本次讲座的学习总结 历史由来 区块链解决的问题其实是一个1982年由Leslie Lamport等人所提出的拜占庭将军问题.简单来说就是如何使各个部队彼此取得共识,然后决定是否出兵的过程.推广到理论模型来说如何使基于零信任基础的节点达成共识,且确保一致性.David Chaum提出密码学网路支付系统具有不可追踪的特性,成为之后比特币