Element App 正式上线

DxChain共识算法的魅力

DxChain热度: 21809
笔者将从共识算法原理、共识算法实现和共识算法安全性三个方面来探讨共识算法。本文将从DxChain公链出发,一步步深入探讨共识算法实现的魅力。

📖 引言在区块链领域,共识算法是保证节点数据一致性的关键技术。不同类型的区块链项目依据自 身业务不同而采用不同共识算法,如:BitCoin采用PoW [1]共识算法、Binance Smart Chain采用了PoSA [2]共识算法、DxChain采用DPoS共识算法等,通过探究区块链项目的 共识算法来研究其项目的安全性和性能。为了更好的理解区块链项目的共识算法,笔者将从共识算法原理、共识算法实现和共识算法安全性三个方面来探讨共识算法。本文将从DxChain [3] [4]公链出发,一步步深入探讨共识算法实现的魅力。

一、共识算法原理💡共识算法作为区块链系统的核心算法,其主要用于保证各个节点账本数据的一致性,共识算法的效率和安全性直接影响区块链系统的性能和安全。为此,设计一个安全高效的共识算法 是实现区块链系统的关键所在。本节将通过DxChain的DPoS共识算法来探讨共识算法在区块链系统的工作原理。

在研究区块链系统过程中,我们时常听到“挖矿”、“算力”、“矿机”、“投票”等字眼,这些都是表述在不同区块链系统中参与共识过程的词语,但共识算法是如何在区块链系统中工作的

区块链具有去中心化的特点,其所有节点分散在全球不同区域中,如何实现不同节点账本数据一致性是区块链系统面临的重要问题。为了解决该问题,区块链系统采用了一个节点出块全网节点验证的方案。一个出块指的是全网所有节点共同竞争账本记账权,但最终仅有一个节点能够成功(不考虑分叉情况)将交易数据签封至区块中。全网验证是指全网所有节点在收到签封的区块后需要对区块头和区块内交易进行验证,验证通过后写入本地区块数据库中。在全网众多节点中,如何能够随机高效的选举出一个出块节点是不同类型共识算法面临的重要问题之一,如BitCoin通过暴力运算去竞争出块节点,但该方式会浪费大量的计算资源和电力资源。相对于BitCoin的暴力算法,采用投票方式似乎更加高效环保,而DxChain正是采用该方式实现。

DxChain采用了DPoS共识算法,其通过节点的票数占全网总票数的比例来表示该节点在全网中的权重,权重越高越容易被选中。DxChain将全网节点分为出块节点、候选节点、矿机节点和普通节点,其中出块节点是保证区块系统安全性的重要组成部分。在DxChain中,出块节点可以在当选周期内轮流出块(选举原理见第二节),其出块行为和分配比例在当选周期内固定不变,候选节点可以通过社区 [4]申请,申请需抵押40,000,000DX,矿机节点可以根据自身持有的DX进行投票,当被投候选节点当选时可以按照分配比例瓜分出块节点的挖矿奖励。

二、共识算法实现 🎛不同共识算法实现过程也不尽相同,为了更好的描述共识算法的实现过程,本节通过 DxChain共识算法来探索共识算法在区块链中的实现过程。DxChain的DPoS共识算法包括选举过程和出块过程两个部分。

1⃣️ 选举过程:DPoS的出块节点选举过程是采用大转盘算法实现,其主要思想是候选节点的票比例越大其被选中的概率也越大。为了更加具体的描述选举过程,我们假设全网共有5个候选节点(A、B、 C、D、E),需要从5个候选节点中选举1个出块节点,其中5个候选节点分别具有票数如下:A Candidate:30 票B Candidate:10 票C Candidate:40 票D Candidate:5 票E Candidate:15 票

节点通过随机选择器选择的随机数为45(随机数选择器的种子固定且可复现),则其选举过程为:

DPOS


候选节点会根据随机数选择器选择出的数据45,记录pick = 45,其选举过程如下:


1. pick = 45 ,A Candidate的数值为30, 45 > 30 所以A Candidate未被选中,此时 pick应当减去A Candidate的票数,记pick = 45 - 30 = 15


2. pick = 15,B Candidate的数值为10,15 > 10 所以B Candidate未被选中,此时pick 应当减去B Candidate的票数,记pick = 15 - 10 = 5


3. pick = 5,C Candidate的数值为40,5 < 40 所以此时C 被选中,选举结束



2⃣️ 出块过程:DPoS共识算法的出块过程采用了在出块节点集合中,每个出块节点轮流出块的机制。在DPoS中,出块节点的出块时间理论上为8s一个块。在DPoS中如何实现节点轮换出块?

在共识算法实现的过程中,为了保证出块时间为8s(或8的倍数秒),系统需要设置定时器在固定时间触发共识启动(DxChain定时器设置为1s),共识启动后节点会验证自身是否为出块节点(验证过程如下),验证通过后进行区块打包,其余节点在收到区块后会根据区块时间戳验证该块是否为对应的出块节点出块。

DPOS


DPoS在共识出块时,出块节点仅在规定的出块时间内出的区块才能被全网验证通过。

三、共识算法安全 🔐当前,随着区块链的价值不断增大的同时区块链的安全风险愈加严峻,如何设计实现安全高 效的共识算法是区块链研究者面临的重要问题之一。本节笔者将从DPoS常见的攻击方式来探索共识算法安全性,主要介绍51%攻击、长程攻击和无利害攻击

1⃣️ 51%攻击:51%攻击是指攻击者获取当前网络51%的控制权,实现对区块链网络的控制以达到自己的目的。目前,DxChain的代币主要分布在机构、矿工和矿机中,短时间中获取大量代币需要大量资金的支持,同时代币的集中导致区块链网络的去中心化程度逐渐减弱,从而导致区块链网络价值的消失,此时的攻击者会损失绝大部分利益。DPoS共识在选举过程中采用了随机算法的设计,出块节点的随机性增加了攻击者实施定向攻击难度,进一步加大实现51%的成本。

2⃣️ 长程攻击:长程攻击[5] [6]是指攻击者创建一条从创世块开始的最长链分支,并试图替换掉当前合法主链。DxChain在从创世块同步时需要一步步验证出块节点且在新周期时仍需计算和验证出块节点,如果从创世块开始分叉其所产生的所有区块在全网中均为脏块。同时,DxChain在实现DPoS共识的过程中,增加系统自动剔除无效出块节点的操作,当在一个周期内出块节点的出块数未达到出块要求的1/2系统自动从候选节点列表中剔除该节点。其余所有节点都可以根据保存共识状态信息验证区块和账户的合法性,从而增大长程攻击难度。

3⃣️ 无利害攻击:无利害攻击是由于网络延时关系,矿工可以在分叉链和主链上同时出块以获取更大的收益。DxChain在实现共识过程中,同一个出块区间仅能出一个块,如果在同一个出块区间出现多个块则系统仅接受第一次出块。同时在不同出块区间,出块节点出块要根据当前周期的共识信息进行出块,节点验证时同样依据本地区块信息和共识状态信息验证,如果不符合要求则任务收到区块为脏块丢弃。在新周期开始时,系统会自动剔除出块数量不符合要求的节点作为处罚。

在区块链领域,共识算法的研究是一项长期且具有实际意义的工作。根据不同领域、不同业务探索相应的共识算法,进而推动区块链在不同领域内落地应用。

声明:本文为入驻“火星号”作者作品,不代表火星财经官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。 未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:作为区块链信息平台,本站所提供的资讯信息不代表任何投资暗示,本站所发布文章仅代表个人观点,与火星财经官方立场无关。虚拟货币不具有法定货币等同的法律地位,参与虚拟货币投资交易存在法律风险。火星财经反对各类代币炒作,请投资者理性看待市场风险。
语音技术由科大讯飞提供