迅雷链基于海量的玩客云设备作为记账节点来构建区块链服务。这些玩客云设备放置在用户家里,共享家庭带宽和存储,作为CDN、云计算、区块链等服务的基础设施,构成了一个庞大的计算机网络。

玩客云网络相对于中心化的服务器节点组成的网络,其特点可概括为以下几个方面: 1)网络节点多:目前已经过150万节点;

2)计算性能低:采用廉价、低功耗的ARM架构的CPU,绿色环保但计算性能较低;

3)存储容量小:存储容量各不相同,但与服务器相比容量很小;

4)网络环境差:用户家庭的网络环境各不相同,包括不同的地理位置、不同的网络运营商、不同的带宽,普遍带宽小、时延高、稳定性低。

面对这种基础设施环境和业务需求,我们需要一种安全的、一致性强、可扩展性高的共识算法。

已有的共识算法研究

PoW(Proof of Work):工作量证明消耗大量算力寻找满足条件的随机数,它存在以下缺点:

1)速度慢。绝大部分时间消耗在工作量证明中的hash运算;

2)能源消耗巨大,对环境不好。目前比特币挖矿比159个国家消耗的能源还多;到2020年2月,它将使用和今天全世界一样多的电力;

3)属于概率一致性算法,而非绝对一致性算法。在产生分叉后,两个分叉的网络各自继续挖矿,经过一段时间后选择包含最多区块的那个链(最长链)为主链,例如比特币中的一个交易等待6个区块才能确认。

PoS(Proof of Stake): 权益证明根据节点持有的token数量以及时间获得相应的记账权。PoS减少了PoW的资源消耗,但是也存在问题:

1)安全性问题:带来如Nothing-at-Stake Problem和Long-range attacks安全性上的问题;

2)依据权益结余来选择,会导致首富账户的权力更大,有可能支配记账权;

3)PoS同样属于概率一致性算法,而非绝对一致性算法。

**DPoS(Delegated Proof of Stake):**授权权益证明是通过拥有token的人投票选出代理节点行使记账的权利,是在可用性和去中心化这两个维度上做出的平衡。它存在的问题包括:

1)由少数节点代替多数节点进行共识,其实是牺牲了区块链去中心化的特性,以此来换取共识效率的提升;

2)节点之间可能存在内在联系的共谋;

3)超级节点竞选争议。由于网络无法解决女巫攻击问题,1人1票的民主投票制会被1代币1票制度所取代,导致“富豪统治”的结果;

4)DPoS同样属于概率一致性算法,而非绝对一致性算法。

**Paxos 算法:**Paxos 算法及其衍生出的 Raft 算法等是强一致性算法,但它们是CFT(Crash Fault Tolerance)类算法,也就是它们只能处理节点故障的错误,而不能处理存在作恶节点的情况。

PBFT(Practical Byzantine Fault Tolerance): 实用拜占庭容错共识是一种基于严格数学证明的强一致性算法,经过多阶段的信息交互最终达成共识,只要系统中有三分之二以上的诚实节点,就能保证最终达成共识。PBFT的问题是通信量大—— PBFT共识需要大量信息交互,并且数量会随着节点数的增加而急剧上升。这一特性决定了PBFT无法直接支持众多的玩客云节点参与共识。

根据我们的业务需求,PoW、PoS、DPoS等概率一致性算法都不能满足需求;Paxos、Raft等CFT类算法也不适用于公共链;PBFT是强一致的BFT类算法,但存在通信量大的问题,也不能直接用于公有链。

**同构多链架构下的DPoA + PBFT **

根据玩客云网络的实际情况和业务需求,现有的共识机制都无法满足要求,因此迅雷链提出了独有的同构多链架构结合DPoA + PBFT的共识机制。

同构多链架构,即系统由一条条相对独立(独立进行共识)的链组成,每条链有多个节点,每个节点被分配到其中一条链上,不同的账户数据被锚定在不同的同构链上,然后接入层将交易路由到发送方所在的链上进行区块打包与共识。系统中链的数量能够按业务需求动态增加。因此同构多链的架构首先保证了系统的可扩展性,解决了玩客云存储容量小的问题,因为节点无需存储全量的区块数据,而是只存储它所在子链的数据。

改进的PBFT,为保证分布式系统中的强一致性,并具备一定的容错和防拜占庭节点作恶的能力,因此我们选择了类 BFT算法。在每一条单独的链上,我们使用了改进的实用拜占庭容错算法(PBFT)保证强一致性。为了解决PBFT算法网络消耗高的问题,对算法作出了一些优化,降低网络消耗,提高了算法的可用性。

DPoA(Delegated Proof-of-Ability),迅雷链在PBFT的基础上,还根据DPoS的思想,提出了适用于玩客云设备的、我们称之为DPoA共识机制。与传统的DPoS不同之处在于,迅雷链的DPoA并不是根据矿工持有的代币数量或币龄作为选举标准投票权重,而是按玩客云节点的存储容量、网络稳定性、带宽、时延、CPU使用率等指标作为衡量标准,以获得更好的公平性和网络效率。

DPoA的具体处理机制如下:

1)对于存储空间不足的设备,则不再参与记账;

2)对于网络不稳定的节点,则减小其权重,则由它提议(Propose)区块的机率降低,这样就能让网络状况好的节点多提议区块;

3)对于带宽大的节点,则增加其权重,以提高它提议区块的机率;

4)对于时延低的节点,则增加其权重,以提高它提议区块的机率;

5)对于CPU使用率高的节点,则减小其权重,以降低它提议区块的机率。

DPoA的共识机制说起来其实很简单,但它能有效保证参与记账的节点总是有足够存储空间、系统状态较好、网络环境较好的节点,保证了区块链系统的稳定运行,解决了玩客云节点网络环境差异大的问题。由于DPoA每轮动态选择部分满足条件的节点作为投票节点,使共识机制更加安全、稳定和高效。

为什么我们能够使用DPoA的共识机制?我们之所以能够采用DPoA的共识机制,原因在于:

1)在玩客云设备中,我们可以内置完善的检测与监控系统,能持续检测玩客户云设备的存储容量、在线时长、带宽、时延等信息,为DPoA共识算法提供实时状态的数据支持,而这是普通的公共链项目无法做到的。

2)玩客云节点数量庞大,并且一直在增加,即使排除不满足条件的节点,也仍然有大量的节点可以使用,并能一直得到补充。

玩客云的激励机制和作为家庭共享存储的功能,让用户乐于投入更大的存储空间。

总结

迅雷链结合玩客云网络节点多、计算性能低、存储容量小、网络环境差的实际情况,采用同构多链架构实现了可扩展性,采用PBFT实现了强一致性和高效率共识,用更公平的DPoA机制得到了更高的可用性,也进一步提升了共识效率。

迅雷链基于智能硬件的DPoA共识机制介绍相关推荐

  1. algorand共识协议_基于Algorand结合VRF的共识机制介绍

    相信大家对于PoS权益证明的概念都不陌生,但是究竟一个PoS的Protocol是如运作的?如何公平的选出下个区块的生产者?如何保证区块生产者不能bias下次自己再次当选的机率?这些实行的细节都是需要经 ...

  2. 以太零MPOS共识机制介绍

    1.共识机制介绍 共识机制是区块链技术的重要组成部分.它就像一本法典,维系着区块链世界的正常运转,让陌生人之间在没有第三方作为信用背书的情况下发生的一切交易变成可能.目前主流的区块链共识机制包括POW ...

  3. 智能合约及其web3共识机制

    目录 什么是共识? 什么是共识机制? 共识机制的目标 为什么需要共识机制? 如何评价一个共识机制的优劣: 共识机制分类 PoW( Proof of Work)工作量证明:多劳多得 PoS(Proof ...

  4. UBTC主网已实现智能合约及混合共识机制!

    经过前一阶段广泛深入的测试和精心的准备,UnitedBitcoin已于2018年7月25日区块高度551,111在UB主网上通过硬分叉实现了智能合约以及工作量证明("POW")和权 ...

  5. 区块链的共识机制介绍及几种常见共识的优缺点

    共识机制简介 关注区块链项目的朋友们大多都听说过共识机制,也可能知道共识机制是区块链网络用来达成交易确认共识的协议.其实,共识机制的产生远远早于区块链,而其设计之初也并不是为了解决区块链上的问题,毕竟 ...

  6. 鸿蒙实训(基于智能硬件学习)第二期

    前言 提示 一.实验5:程序启动流程验证 1.按照路径找到这个文件: 2.更改 编译.烧写.运行.查询后→ 3.结果实现IPOP: 说明应用程序运行是在HOS_SystemInit();完成的. 二. ...

  7. 物联网智能硬件设备身份验证机制

    设备身份验证有以下目标: 1,别人的设备不能接入我们的云平台 2,我们的设备,不能接入别人的云平台 3,考虑到设备要批量生产,云平台先生成设备编码再写入每个设备的方法,非常不现实! 那么,标准的设备身 ...

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

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

  9. 《迅雷链精品课》第十五课:共识算法的性能问题

    1. 区块链的性能问题 VISA是目前世界上广泛使用的信用卡品牌,区块链要达到实用水平,性能上至少需要能跟VISA之类的支付系统作比较.根据VISA在2015年的记录,全年共产生92,064百万笔支付 ...

最新文章

  1. python读取txt数据-python读取文本文件数据
  2. 007_停止动画或效果
  3. c++读取txt文件中的数字_在Python中读取包中的数据文件的三种方式
  4. 【Python】RotatingFileHandler:log日志文件自定义大小+滚动输出
  5. Mac下配置svn服务器
  6. 中科大 计算机网络1 课程主要内容大概介绍
  7. delphi7 如何判定dbgrid两行重复_良渚文化陶器上的图案、符号和文字(5)良渚文化陶器上文字的判定...
  8. [Java] 蓝桥杯ADV-214 算法提高 3-3求圆面积表面积体积
  9. 中小企业上云多地域办公组网(SAG)解决方案
  10. Kubernetes详解(十)——Pod对象高级控制命令
  11. 搞深度学习如何找到需要的代码
  12. ABB机械臂手眼标定
  13. Java Keytool工具简介
  14. git fatal: destination path ‘**‘ already exists and is not an empty directory.解决
  15. 基于fabric的行业联盟链技术研究/司帅帅
  16. 关于MybatisPlus
  17. python各类地图绘制
  18. Android音视频开发学习
  19. SMART 监控项研究以及存储健康分级机制
  20. 【SPI】SPI学习之SPI硬件相关

热门文章

  1. 急!灾区的食物依然短缺!(找不到原题出处只能这样了.....)
  2. Vue.js 组件 - 组件间的循环引用
  3. hadoop学习之路(3)
  4. 更换一寸照片底色蓝色底,红色底白底一寸照怎么做ps教程简单快速快捷方法办法ps学习ps教学ps教程
  5. 云上城之个服务器维护时间,云上城之歌开服时间表 官方最新开服情况
  6. 2、Class和Subclass
  7. TensorFlow2.0学习
  8. 【转载】20个2013年最值得关注的网页设计趋势
  9. c语言switch函数的作用,c语言的switchcase语句
  10. margin 外边距合并问题