Flow区块链介绍--第二部分
在该系列的第二部分中,我们将在第一篇文章的基础上展开。我们将看一下协议的计时,并开始探索块的创建。
协议时间安排
为了真正理解协议的工作方式,我们需要了解协议不同部分的时间。
有一些事情是在严格的时间表上可预测地发生的(确定性的和同步的),还有一些事情是由事件驱动的,其时间是不可预测的(非确定性的和异步的)。
协议的非确定性、异步性部分是执行和验证,因为集合中的事务对计算的要求不同。
协议的确定性、同步性部分是收集和块的创建,它发生在由视图驱动的时间表上。
为了简化事情,让我们把视图看作是一段时期,其中一个共识节点被预先确定为领导者(这个节点通常被称为 "主要")。
💡 注意,在现实中,一个共识节点决定了视图的长度,因为它正在尽力与其他节点保持同步--在分散的网络中,我们不能依赖集中的时间服务器,所以节点使用一种叫做 "起搏器 "的算法来保持同步。
视图的共识领袖从上一个区块建立后积累的异步事件中建立区块。
现在我们了解了流经网络的数据是如何进入区块的,我们可以开始探索一个区块是如何形成的,是什么决定了它是否会被共识委员会接受。
区块创建
让我们先解释一下什么是法定人数证书(QC),以及它在这个过程中发挥什么作用。
法定人数证书是一个证明,具有足够 "投票权"(权重)的共识节点对提议的区块进行了投票 - 他们同意该区块是有效的,应该被添加到链上。
请看下图--这里有一些规则,有助于理解那里发生的事情。
- 每个视图都有一个预先确定的共识节点,它是共识领袖。
- 块总是由共识领袖提出。
- 共识领导者只能根据存在法定人数证书的父区块提出一个区块。
让我们来看看这张图。
- 共识领导者A接收到的信息(在其 "mempool "中积累的信息),并提出区块0(B0)。
- 共识节点收到B0,验证它是一个有效的区块,并将其投票发送给下一个视图的共识领袖。对提议的区块的验证是一个复杂的话题,超出了本帖的范围,但在高层次上,它包括:
- 检查该区块是否满足共识规则,例如。它来自一个授权的共识节点,该共识节点是相应视图的领导者,区块包含有效的QC。
- 检查区块的有效载荷是否符合协议规则,例如:该区块及其前面的区块中不存在重复的收集保证或执行结果,收集保证是由各自收集集群的超级多数签署的,执行结果是由授权的执行节点发送。 - 假设它从共识委员会获得了足够权重的投票,共识领袖B为B0建立了QC,并将其添加到提议的区块1(B1)。
当这个过程在每个视图中重复时,区块链就会增长,每个区块中的交易得到执行,持有不同资源(代币、NFT......)的用户账户得到更新。
我希望现在区块形成已经很清楚了,在下一篇文章中,我们将研究区块链分叉,并解释区块最终确定的概念。