Moonshot 共识算法
Moonshot 是专为区块链系统设计的高性能拜占庭容错 (BFT) 共识协议系列。
Moonshot 协议旨在通过实现低延迟和高吞吐量来优化基于链的轮换领导者 BFT 共识。
-
低延迟:探月协议实现了 δ 的最小视图更改区块周期 (ω) 和 3δ 的最小提交延迟 (λ),其中 δ 是网络传输延迟。
-
乐观响应性:Moonshot 协议使时间进度与实际网络延迟成正比,与任何已知的上限无关。
-
重组弹性:Moonshot 确保当诚实的领导者在全球稳定时间 (GST) 之后提出建议时,其一项提案获得认证,并通过随后的每个认证提案进行扩展。
-
短视图长度:流水线 Moonshot 和 Commit Moonshot 的视图长度 (τ) 为 3Δ,其中 Δ 是已知的网络延迟上限。
-
流水线:一些 Moonshot 变体实施流水线以提高某些网络条件下的效率。
-
简单的 Moonshot:基本版本具有 ω = δ、λ = 3δ 和 reorg 弹性。
-
流水线登月:在 Simple Moonshot 的基础上进行了改进,具有完全乐观的响应能力和 τ = 3Δ。
-
Commit Moonshot:进一步优化区块提案的传播时间比投票更长的情况。
1.Direct Pre-commit:当节点在任意视图 v’ 中收到 Cv(Bk) 时,其中 v’ ≤ v:
-
如果 timeout_view < v,则发送 ⟨commit, H(Bk), v⟩
2.间接预提交:当节点在任意 view 中收到 Cv(Bk) 时:
-
如果它已经为 Bk 的任何后代发送了提交投票
-
和 timeout_view < v
-
它还没有发送 ⟨commit, H(Bk), v⟩然后发送 ⟨commit, H(Bk), v⟩
3.替代直接提交:当节点收到来自 quorum 的提交消息时:
-
如果消息是来自不同节点的 ⟨commit、H(Bk)、v⟩
-
在任何视图中 Then commit Bk
Moonshot 协议已被证明在无故障场景和存在故障的情况下都优于 Jolteon 等现有的最先进协议。它们在多达 200 个节点的广域网中实现了更高的吞吐量和更低的延迟。
虽然 Moonshot 协议在许多情况下都提供了卓越的性能,但与某些线性协议相比,它们的通信复杂性 (O(n²)) 更高。开发人员在为其特定使用案例选择共识协议时,应考虑通信复杂性与性能指标(如延迟和吞吐量)之间的权衡。
有关详细的实现指南和 API 参考,请参阅本文档的后续部分。