Flow 节点架构简要分享 - P2

Created
Apr 13, 2022 09:36 AM
作者
翻译
Tags
Node
notion image
 
我们会在前文的基础之上继续讨论,这次我们将会着眼于协议时间点(protocol timing)并且开始探索区块创建的有关内容。
 

协议时间点(Protocol Timing)

为了真正理解协议是如何运行的,我们需要理解协议中的不同组件的时间点。
 
有一些情况是能够按严格的时间表可预计的发生的(确定的,同步的),但也有一些情况是通过事件触发的并且他们的时间点是不能预知的(不确定的,异步的)
 
协议中的不确定的异步的部分是执行和验证,因为集合中的交易对计算量的要求不同。
 
协议中的确定的同步的部分是收集和区块创建,因为他们是按View的时间表创建的。
 
简言之,View 指的是某一个共识节点被预先设定成首领(Leader,该节点通常被称为 primary 主要节点)的一段时间。
 
💡
注意在实际情况中,一个共识节点会决定一个View的长度,因为它要尽力和其他节点保持同步-我们不能指望在去中心化的网络中使用中心化的时间服务端,因此节点会用一种叫做“速度制造者(pacemaker)”的算法来保持同步。
 
在这段View时间中的共识首领会创建包含从上过一个区块起创建后开始累计的异步事件的区块。
 
notion image
 
现在我们了解了网络中流通的数据是如何做成一个区块的,我们现在可以开始了解一个区块是如何被构建的,并且共识委员会是依据什么判断这个区块是否被接受的。
 

区块创建

我们首先解释下 法定人群证书(QC,Quorum Certificate) 是什么,以及它在这个进程中扮演什么样的角色。
 
法定人群证书QC是一个被提议区块获得足够共识节点的足够的“投票权利”(权重)的证明-他们同意认可这个区块是有效的,并应该被加到链中。
 
看一下下面的这个表格-这些是一些规则,能帮助我们更好的理解发生了什么:
  1. 在每一个View里都有一个预先指定的共识节点作为共识首领
  1. 区块总是由共识首领提议的
  1. 共识首领只能提议基于拥有QC证书的母区块的区块。
 
notion image
 
 
我们一起来过一下上面这个图:
  1. 共识首领A把它收集到的信息(在它的“内存池mempool”累计的信息)并提议区块0(B0)。
  1. 共识节点收到B0,验证这是否是个有效的区块,并且把他们的投票发给下一个View时间段的共识首领。提议区块的验证过程是一个复杂的话题,将不会在本文中讨论,但大概来说是包括:
    1. 检查这个区块是否符合共识规则,比如:它来自一个授权的共识节点,这个共识节点是在那一时间段的共识首领,区块包含一个有效的QC
    2. 检查区块的载荷payload符合协议规则,比如:在该区块中及其之前的区块中没有重复的收集保证(collection guarantee)或者执行结果,收集保证被绝大多数的对应收集节点群签字,有来自授权执行节点发来的执行结果
    3. 假设它获得共识委员会足够的权重,共识首领B为B0创建QC并把它添加到提议区块1(B1)中。
 
随着在这一进程在一个又一个的View中重复,区块链得以增长,每一个区块中的交易得以被执行,用户账户中的不同资产(代币,NFTs)得到更新。
 
我希望现在关于区块创建的部分是清晰的了,在下一篇文章中,我们将会讨论区块链分叉以及解释区块完结的概念