区块链怎么样实现共识机制

当前位置:首页 > 币圈百科 > 区块链怎么样实现共识机制

区块链怎么样实现共识机制

2022-11-10币圈百科306

1项

公平证明机制PoS-使用网络共识处理容错的算法

工作负载证明机制PoW-使用计算能力处理容错的算法

拜占庭错误BF-节点可用,但由于其不可靠的行为而失败

改进的拜占庭容错机制DBFT-在NEO区块链

视图v-NEO DBFT数据集内实现的共识算法用于共识行为

2-NEO共识算法中的角色

同时,但是在下文中,它们将被统称为共识节点。

共识节点-参与共识行为的节点。在共识行为中,共识节点轮流扮演以下两个角色:

发言人(一个)——发言人负责向系统发送区块提案。

议员-议员负责就交易达成共识。

3-引言

区块链的一个根本区别是如何在存在缺陷和不诚实行为的网络中保证容错性。

使用PoW这种传统的实现方式,可以保证容错,只要网络中的大部分计算能力是诚实的。但是由于这种方案依赖于计算,所以效率很低(计算能力消耗能量,需要一些硬件)。这使得PoW网络受到许多限制,其中最重要的是扩展成本。

DBFT在NEO中的实现利用了一些类似PoS的特性(NEO持有者投票生成共识节点),可以保护网络免受拜占庭错误的影响,并最大限度地减少资源消耗,同时也消除了其糟粕。该方案在不显著影响容错机制的情况下,恰当地处理了当前区块链实现中的性能和扩展之间的问题。

4-理论

拜占庭一般问题是分布式计算中的经典问题。在这个问题中,定义了在发言人的命令下,必须有多个成员达成共识。在整个系统中,发言人或某些成员可能是叛徒,所以我们要小心。在最坏的情况下,不诚实的节点可能向每个接收者发送不同的信息。这个问题的解决需要成员组成一个小组来判断说话的人是否诚实,识别真正的秩序。

为了解释DBFT的工作机制,我们将在第五部分重点讨论为什么要使用66.6%的一致同意率。请记住,不诚实的节点并不总是犯下恶意行为,或者他们可能只是失败。

为了便于讨论,我们设想一些场景。在这些简单的例子中,我们假设每个节点根据说话者的信息发送响应。这一机制也在DBFT使用,并在系统中严格执行。我们只描述正常系统和故障系统的区别。有关更多信息,请参考参考资料。

诚实的说话者

图1:n=3的例子,其中包含一个不诚实的成员。

在图1中,我们只有一个诚实的成员(50%),每个成员都会从诚实说起。但由于其中一个成员不诚实,诚实成员只能判断存在不诚实节点,而不能区分不诚实节点是区块的核心(即发言人)还是成员。因此,议员必须放弃投票和改变意见。

图2:n=4的例子,其中包含一个不诚实的MP。

在图2中,我们有两个诚实的MP(66%),他们中的每一个都将从一个诚实的说话者那里获得相同的信息,并基于该信息向每一个其他MP发送验证信息。基于两个诚实成员达成的共识,可以判断系统中的不诚实节点是发言人还是成员。

不诚实的说话者

图3:n=3的例子,其中包含一个不诚实的说话者。

在图3的例子中,由于这个不诚实的说话者的存在,我们会得到和图1一样的结论,所有成员都不能。

图4:n=4的例子,其中包含一个不诚实的说话者。

蓑衣网小编2022

在图4的例子中,块从中间节点和右边节点接收到这个验证的非法结果,这将使它们创建一个新的视图来首先选择一个新的说话者,因为它们在这个例子中占60%,如果一个不诚实的说话者向两个成员发送诚实的数据,块将通过验证而不改变视图。

蓑衣网小编2022

5-具体实现

DBFT在Neo中的具体实现使用了一种迭代共识方法,以确保达成共识。该算法的性能取决于系统中诚实节点的比例。图5描绘了作为不诚实节点比例的函数的预期迭代。

需要注意的是,图5中的共识节点的诚实度不低于66.66%。当共识节点的诚实度在66%-33%之间时,这种情况称为无法达成共识的“无人区”。如果共识节点的诚实度低于33.33%,不诚实节点(假设可以达成共识)就可以达成共识,成为系统中的新事实。

图5:DBFT算法的Monto-Carlo模拟图,描绘了达到共识所需的迭代次数,包括100个节点、100,000个模拟块和随机选择的诚实节点。

5.1-定义

在这个算法中,我们有如下定义:

t:块生成的时间,以秒为单位。

Current: t=15秒

这个值可以大致近似单个视图迭代的时间,因为对于这个时间常数来说,共识行为和沟通事件是非常迅速的。

n:活动共识节点的数量。

f:系统中错误共识节点的最小阈值。

f=(n-1)/3

h:共识行为中当前块的高度

i:共识节点索引。

v:共识节点视图。该视图包含由共识轮中的节点接收的所有信息,包括由所有成员发起的投票(prepareResponse或ChangeView)。

k:观点的索引v .共识法案可能需要多个共识回合。当共识失败时,K将递增并开始新一轮共识。

p:被选为代言人的共识节点指数。该指标的计算机制在共识节点之间轮流执行,以防止系统中某个节点产生独裁行为。

p=(h-k) mod (n)

s:安全共识阈值。低于此阈值,网络将会出错。

5.2-要求

在NEO内部,主要有三个共识容错要求:

议员必须在区块提交前就某个交易达成共识。

不诚实的共识节点不能说服诚实的共识节点接受错误的交易。

至少s个具有相同(h,k)状态的MP可以启动一个共识行为

5.3-算法

算法流程如下:

一个共识节点在全网广播一个由发送方签名的事务。

其他共识节点在内存中记录事务信息。

共识行为的第一个视图V初始化。

图6:一个共识节点接收到一个事务,向全网广播

以确认发言者。

图7:确定发言人并设置视图

等待t秒

发言人广播提案:

议员收到提案并验证:

图8:发言人建立块提案,并由议员进行审核。

这种交易在区块链是否已经存在?

合同脚本执行正确吗?

这个交易只是单笔支付吗?(即交易能否避免重复支付?)

建议通过验证则广播:

建议未通过验证则广播:

收到s' prepareResponse '广播后,成员达成共识,释放了一个block。

议员签署议案。

当一个共识节点接收到整个块时,当前视图的数据将被清除,并开始新一轮共识。

图10:达成共识。批准交易的成员签署block并将其绑定到区块链

k=0

注:

If in (

此翻译来自:

https://link.juejin.im/? target=https://github . com/neo-project/docs/blob/master/en-us/node/consensus . MD

区块链怎么样实现共识机制 | 分享给朋友: