2008年比特币的横空出世为当今区块链行业的发展铺平了道路。如今,公链的队伍正在不断地发展壮大,势必继续掀起区块链行业的热潮。
那么,究竟什么是区块链呢?简单来说,区块链实质上是一种分布式数据库类型。这个数据库记录了一个不断增长的已完成交易的日志,而所有这些交易皆由系统的用户在与系统交互时提交。这些交易的用途取决于所涉及的区块链的能力,但它们总有某种副作用。这些副作用会更新数据库中称为区块链的状态的另一个部分,并负责跟踪用户关心的信息。区块链网络的目标是确保网络中所有计算机 (通常称为节点) 以相同的顺序处理相同的交易,从而让它们达到相同的状态。
每个区块链网络都依赖于共识协议来实现这种一致性。共识协议由称为验证者 (validators) 的计算机运行,通常将交易分组成块以提高效率。验证者共同同意每个区块的顺序,并生成不可伪造且可验证的协议证明,我们将其称为规范性证明 (canonicity proof)。此证明允许验证者集合之外的节点通过维护自己的区块链本地副本参与区块链网络,而无需参与共识协议。
当节点将新区块添加到其本地区块链中时,该区块被认为具有某种程度的最终确定性(finality)。某些区块链,如比特币及其衍生链,只能保证概率性的最终确定性 (probabilistic finality)。例如,当比特币节点向其本地区块链添加新区块时,可能会因为验证者共同生成了一个不包括此区块的较长链,而最终不得不替换该区块。由于比特币节点需要接受他们所知的最长链,如果发生这种情况,节点将会被迫改变其对链的观点,才能继续成为主链的一部分。
其他网络采用不同的规则来实现相同的效果。但出于本文的目的,我们特别关注实现确定的最终确定性 (deterministic finality) 的区块链共识协议。这些协议确保如果任何节点向其区块链提交新区块,那么它将永远不必用另一个区块替换该区块。这些协议的正式名称为“状态机复制” (State Machine Replication,简称SMR) 协议。
我们使用Δ表示GST后消息传递延迟的上限,并使用δ表示GST后的平均传递延迟。相应地,δ≤Δ,具体取决于对手的行为。
Tendermint
- 区块最终确认延迟: Tendermint在3δ内确认一个区块;
- 区块间隔: Tendermint每隔3δ产生一个区块;
-
通信复杂度: Tendermint验证者必须发送O(n3)条消息才能就某一区块达成共识。
- 步骤1: 与Tendermint类似,领导者构建一个区块B1并向所有人广播;
- 步骤2: 同样与Tendermint类似,验证者为这个区块发送Prepare投票。但是,并没有像所有人广播这些投票,而是直接将投票发送给下一轮的领导者,后者充当聚合器并像此前一样构建QC;
- 步骤3: 随后,该领导者创建一个新区块,其中包含B1的QC作为证明,表明它正在扩展最近被网络接受的区块。在步骤3结束时,所有验证者都会收到B1的QC,使他们能够锁定B1;
-
步骤4和5: 然后,重复步骤2和3,以构建B2的Prepare QC。该QC作为B1的Commit QC,同时与第三位领导者提议的B3一起发送给所有验证者,使他们能够锁定B2并提交B1。
- 区块最终确认延迟 (Block Finalization Latency): Jolteon在5δ内确认一个区块;
- 区块间隔 (Block Period): Jolteon每2δ产生一个区块;
-
通信复杂度 (Communication Complexity): Jolteon验证者必须发送O(n)条消息才能就某一区块达成共识。
Chained Moonshot
- 步骤 1: 与之前一样,第一个领导者广播一个新的区块B1;
- 步骤 2: 与 Tendermint 类似,验证者广播他们对B1的投票。但是,下一轮的领导者同时提出B2,并通过在B2中包含称为B1摘要的简明摘要 (例如B1的加密哈希) 来引用B1作为其父块。在收到足够多B1的投票以后,验证者锁定B1并进入下一轮;
-
步骤 3: 随后,重复步骤 2,第三个领导者在验证者广播他们对B2的投票时提出B3,不过,在锁定B2的 QC 后,验证者还会再提交 B1。
- 区块最终确认延迟: Chained Moonshot 在3δ内完成区块的确认;
- 区块吞吐量 (Block Throughput): Chained Moonshot 每δ产生一个区块;
-
通信复杂度: Chained Moonshot 验证者必须发送O(n2) 条消息才能就某个区块达成共识。
如图所示,100 和 200 个节点网络的曲线在负载越大的情况下越向后弯曲。发生反转的点标志着相关协议的饱和点 (saturation point),在此之后,增加负载大小只会导致性能下降。
总体而言,该图清楚地表明,在所有配置中,Chained Moonshot的吞吐量更高,延迟更低。此外,对于达到饱和的网络规模,它还能产生更高的饱和点。您可以在我们的技术白皮书中找到有关 Chained Moonshot 和 Jolteon 实验更详细的讨论。
综上,Chained Moonshot是对Jolteon这种先进区块链共识协议的新型改进。它将投票广播和提案渠道相结合,实现了低延迟和高吞吐量,尤其是在网络条件有利的情况下。本文简要介绍了该协议的许多细节,包括它在拜占庭故障下的表现。Moonshot 还有其他变体 (其中一些变体仍在开发中),我们将在未来的文章中进行讨论。