Flow 节点架构简要分享 - P3

Created
Apr 26, 2022 06:34 PM
作者
翻译
Tags
Node
notion image
 
在之前的文章中,我们讨论了创建区块的流程。在这篇文章中,我们将继续基于我们之前了解到的知识,继续拓展我们对区块生命周期的了解。

区块链分叉

我们需要了解为什么区块链会分叉,以及区块链是如何分叉的,从而更好的理解为什么区块链的最终确定是很重要的。
 
Flow协议区块链会在3种情况下分叉:
 
1)共识首领没有收到最新的区块
notion image
 
💡
上面的图表展示了一个共识节点在发现区块链的一个分叉后需要做的决定,称为 分叉-选择 规则。HotStuff算法在这里提供了一定程度的自由度,在Flow上,我们会选择”最新的分叉“(比如,拥有最大View的QC的分叉)
 
2)共识首领没收到足够权重的投票来创建法定人群证书(Quorum Certificate ,QC)。仍像上面这个图表提到的,但不是没有收到B2a区块,共识首领D没有收到足够的投票去为B2a区块创建QC。在这种情况下,共识首领D会提议一个,基于上一次有发送QC到链上的区块,的区块。
 
3)可疑的共识首领创建了一个父区块不是最新的区块的区块。这个可疑的节点做出这种举动可能是出于多个原因,比如他想把他不想执行的交易排除在外。
 
现在我们了解了区块链分叉,接下来我们来看一下区块的最终确认。
 

区块最终确认

区块的最终确认在建造Flow区块链的时候是非常重要的一个概念 - 它意味着共识节点认可了这个区块并且区块获得了保留在链上的保证。
 
对于发送了一笔被包含在确认后的区块的交易的用户来说,这也是一个保证,保证这笔交易被区块链确认并且会被执行。
 
notion image
 
区块的最终确认对参与网络的节点也很重要,因为当一个区块被最终确认之后,节点就可以扔掉任何不包含最终确认的区块的分叉。
 
 
notion image
 
本篇文章包含了区块以及交易的大部分的生命周期。接下来我们会来讨论最后一步,区块封装,但我们需要先看一下数据的存储。敬请期待下一篇文章!