Exonum共识:如何运作

ExonumTM是我们的开源私有区块链框架。 今天,我们将告诉您他的共识算法是如何工作的。


图片: Bitfury

为什么需要共识算法


在继续探讨Exonum TM共识算法如何工作的故事之前,让我们先谈谈为什么区块链通常需要这些算法。

区块链是没有中央管理员的分布式系统。 为了就网络中的新区块(以及相应的交易)达成一致,网络参与者使用特殊的共识算法。 共识任务是帮助点对点网络的对等点就其新状态应该如何达成共识-即选择区块链中的下一个区块。

为了保护区块链及其中存储的信息免受欺骗,这是必要的。 例如,针对俄罗斯铁路实施的基于Exonum TM的区块链记录了有关汽车和火车零件操作的信息。 区块链可确保区块中数据的可靠性,从而使公司能够监控来自供应商的备件路线并及时发现假货。 我们将进一步介绍此情况和其他情况。

通过创建Exonum共识算法,我们解决了哪些任务


在开发Exonum TM共识算法时,解决节点拜占庭行为问题对于我们而言很重要。 拜占庭行为是指单个网络节点的恶意活动。 此类活动还可能包括节点失去与网络连接或脱机的情况。

早在80年代中期, 就证明了为确保分布式系统的稳定性,它应在部分同步的条件下工作。 同时,共识算法必须具有以下条件:

  • 活力 -应该能够在任何给定时间接受新的障碍。
  • 一致性 -所有网络节点上的事务数据库应相同。
  • 抗审查性 -节点不应优先考虑任何事务或忽略它们。

对于具有已知参与者数量的网络,在部分同步下,抵抗拜占庭节点行为( 拜占庭容错 ,BFT)的共识算法模型允许网络中不到1/3的恶意(拜占庭)参与者。

Exonum共识算法如何工作


Exonum TM区块链中有三种类型的节点:验证器,审计器和轻客户端。 前者是共识算法的直接参与者,而后者则在网络上分配负载并控制验证器。 对于轻量级客户端,它们仅向网络参与者提供将交易发送到区块链的机会。 轻度客户和审计师不会直接参与共识算法,因此在本材料中我们将不再讨论它们。

验证者的任务是投票赞成在区块链中包含新块。 如上所述,即使所有节点中的三分之一是拜占庭,Exonum TM网络也可以稳定运行。 因此,为了达成共识,该区块必须批准超过2/3的区块链网络节点。 并且该陈述可以在数学上得到确认。

假设网络具有诚实的节点验证者(诚实)和f拜占庭(有缺陷)。 然后,验证者的总数可以表示为N = h + f。 所有验证者都基于阈值规则来确定“优胜者”。

它说: 获胜者的票数必须大于或等于α* N ,其中α是从0到1的范围内的数。因此,当α> 1/2时,将获得绝对多数票。

投票结束时,每个验证人独立决定两位候选人中的哪一位获胜。 但是,如果验证者将自己的选票发送给其他投票者,则验证者可能无法决定谁投票。 如果拜占庭节点开始向网络的诚实成员发送不同候选人的选票,从而造成混乱,则会发生这种情况。

要排除类似情况,必须遵守两个条件:

  • 诚实的验证者应该能够在没有拜占庭节点参与的情况下做出选择。 此条件由我们上面讨论的活动属性决定。 在数学上,它由以下不等式表示:h≥α*N。
  • 经少数诚实验证人投票的候选人不能超过α* N的阈值。这由一致性标准决定。 条件表示为:[h / 2] + f <α* N,其中[h / 2]是数字h / 2的整数部分。

结果,我们得到以下不等式链:h> 2f,α> 2/3且N≥3f +1。因此,为了确认交易区块,它必须严格获得验证者票数的2/3以上。

接下来,让我们讨论一下验证者如何在Exonum TM区块链中投票。 一般而言,该方案如下:



达成共识的过程始于以下事实:主节点-由单独的算法选择并定期更改-形成应添加到区块链的交易列表(提出建议 )。 然后,该列表在整个网络中广播到验证者节点。

验证程序检查收到的消息是否符合序列化格式。 如果记录了任何错误,则节点将完全忽略收到的消息。 例如,将区块添加到区块链中间或重新记录现有交易的建议将被忽略。 如果一切正常,投票阶段就开始了-验证者节点投票将区块添加到区块链,广播投票消息。

提案获得了验证者超过2/3批准的那个节点,失去了对其他验证者的提案进行投票的机会,因此无法更改其提案 。 此状态称为锁定证明

从验证器获得所需的投票数后,主节点将批准的交易记录在该块中,并广播特殊消息precommit 。 它包含区块链更新状态的哈希,并指示该节点已准备好将建议的区块添加到链中。 当大多数验证器以相似的提交消息(具有相同的哈希)进行响应时,该块将添加到区块链中。 达成共识,并对每个后续块重复该过程。

为了提高系统的稳定性,验证器会定期交换另外两个消息-RequestBlock 。 如果节点缺少任何交易数据,则生成第一个。 第二个步骤是将有关事务块的信息传输到时间上落后的节点(例如,断开连接),以同步整个网络的操作。

为了评估Exonum TM达成共识的可能性,我们在两种配置的基础上测试了区块链的运行:一个数据中心和多个地理分布的数据中心。 在测试过程中,针对不同数量的验证器,评估了TPS参数-每秒的事务数。 接下来,我们将提供区块链中网络性能变化的图表,用于处理加密货币(黑色图表)和时间戳(蓝色图表)。


在单个数据中心的情况下,TPS与验证者数量的关系


在多个数据中心的情况下,TPS与验证者数量的关系

平均而言,根据网络配置,Exonum TM区块链每秒能够处理2到13,000个事务。

已使用Exonum的地方


如今,Exonum TM框架已在各种项目中使用。 去年夏天,我们与Technoprom一起为俄罗斯铁路创建了一个特殊的市场。 Exonum TM区块链记录了火车零件和每辆车的数据表的运行情况。 这样就可以跟踪来自官方供应商的所有备件的运动并检测伪造品。

我们还启动了基于协同大学教育性区块链项目。 寄存器注册并存储有关学生成绩的所有信息:成绩,考试结果和文凭。 我们的同事认为,这种方法消除了更改教育文档的可能性,并有助于节省存档和认证。

即使在Exonum TM的基础上我们也实施了一系列试点项目,以加速软件的开发和发布。 我们来自工程组织Aricent的合作伙伴已经对框架进行了六个月的测试。 区块链软件开发方法提高了程序员的生产率和纠错速度。

我们与一群医疗公司一起启动了另一个项目。 包括初创公司Insillico,他们在那里接受了深度培训以寻找新药。 ExonumTM将成为患者数据生态系统的核心。 该系统将简化临床试验,还有助于分析患者的病历和DNA。 结果,医生将能够更快地诊断疾病并开出更有效的治疗方案。

我们希望我们的区块链能够在其他任务和其他行业中找到应用。 我们目前正在努力在投票,拍卖和数字版权管理系统中实施Exonum TM 其中一些解决方案的演示可在Exonum TM官方网站上找到

Source: https://habr.com/ru/post/zh-CN440586/


All Articles