投票过程利用决策部分方法使参与节点达成协议的投票技术导致了拜占庭将军的协议。 通过以下逻辑关键步骤描述节点投票并最终接受声明,允许系统达成协议的过程,这些步骤原则上是许多共识驱动的事务验证模型共有的:(1)初步投票,( 2)接受,(3)批准和(4)确认消息。
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.imgur.com%2Fjj7s4c9.jpg&t=663&c=qjdJqn8UmjMUVQ)
1. 提议
首先,第一轮投票是初步的,只发生在节点层面。 在previnging步骤的开始阶段,每个验证者做出决定。 然而,在投票过程的第一步中,第一个节点投票保持开放,以接受另一个提议的交易价值的可能性,断言建议的交易是有效的,并承诺该节点从未并且永远不会单独投票任何 选项与此拟议交易价值相矛盾。 但是,如果决策档中的足够节点投票,则该节点最终可能会接受除建议的交易值之外的其他内容。 在预投步骤期间,所有节点将该轮的所有前驱流言论交给其邻近的对等点。
3. 预先提交
由于法定人数的交集,决策部门相互影响。考虑一个备用路径,其中第一个节点最初为另一个事务值投票。应该指出的是,这些投票只是初步的。
如果第二,第三和第四节点与第一节点处于决策转发中,则它们可以通过预先提交到备选事务值来阻止进度。 v-blocking节点集将包含来自第一个节点的每个决策段的至少一个节点,并且可以阻止包含第一个节点的所有仲裁中的动作,从而使其预先提交给第一个建议值而不是备用事务值。
如果(1)它从未接受与第一个建议值(任何其他替代值)相矛盾的语句,并且(2)v-blocking集的每个成员声称预先提交,则第一个节点实际上将预先提交给第一个建议的事务值。第一个提议的交易值,或法定人数的每个成员节点,包括第一个节点投票或声称预先提交给第一个建议值。
640/5000
4.批准
当法定人数的每个成员节点为第一个提议的值投票时,法定人数批准第一个提议的交易价值并提交给它。 节点不需要直接批准声明。 但是,nodeoften依赖于其他几个人来决定接受什么。 这意味着它们是它的法定人数。 如果他们都投票支持第一个提议的交易价值,则法定人数已经批准了该值。
节点可以为一个建议值投票,然后接受一个矛盾的节点。 对第一个提议的交易价值进行投票并不认为它是选择 - 只有在批准的情况下,该价值才会被接受作为选择。
5.确认消息
确认将是投票过程的最后一步,并意味着全系统的协议。为确保协议,节点将交换确认消息。如果一旦发送和处理了足够的消息,并且无论随后发生什么事件,每个响应准确的节点都接受该声明,则系统同意声明。
例如,节点可以通过发送确认消息“接受此值”来断言它已接受建议的交易值。当另一个节点发送此确认消息时,此仲裁中的其他人广播相同的消息。此类消息可能说服其他节点接受相同的建议值。与上面的接受示例一样,如果第一个节点最初为与第一个建议值相矛盾的事务值进行投票,则如果”v-blocking”集接受它,它仍然可以接受该值。这些附加节点尽可能地说服其他节点,广播接受消息,直到可以接受第一个建议消息的每个节点都接受它为止。
随后的法定数量的确认消息允许第一个节点确认建议的事务值,这意味着系统同意该值。投票过程已经结束,因此交易已经过验证。