Tendermint与HotShot的区别

EspressoSystems 发布于 2024-03-11 阅读 74

本文比较了Espresso Systems开发的HotShot共识协议与成熟的Tendermint(CometBFT)协议。HotShot专为排序优化,分离数据可用性与执行,采用线性通信和CDN,支持数千节点;Tendermint提供完整的SMR,但通信复杂度为二次方,节点规模有限。两者在可扩展性、响应性、成熟度等方面存在差异,且相辅相成,满足不同需求。

HotShot 是 Espresso Systems 设计和开发的一种共识协议,将用于我们的排序方案。Tendermint[1] 是一种知名且成熟的共识协议,被 Cosmos、Polygon 等项目使用。

其中一个协议是否会取代另一个?我们是否同时需要这两个协议?

HotShot 协议专为大量节点之间的排序而构建,并针对此任务进行了优化。我们认为,这样的解决方案具有 Tendermint 无法提供的优势。

与此同时,Tendermint 是一个经过实战检验的解决方案。它适用于几十或几百个节点,旨在作为完整的 SMR 解决方案运行,处理状态变化等问题,而 HotShot 特意选择不支持这些功能。

因此,我们对上述两个问题的答案分别是“否”和“是”——一个系统不会取代另一个系统,是的,这两种解决方案都有存在的必要。

详细特性

HotShot 的设计旨在满足排序解决方案的需求,这需要共识。然而,参与节点并不执行交易,因此,单个节点只需要数据可用性的保证即可参与共识投票,而不需要完全访问数据。另一方面,Tendermint 协议满足 SMR 的要求,其中节点需要访问数据、执行共识并执行交易。

关键属性的差异

  1. 将数据可用性 (DA) 和执行与排序分离。HotShot 实现仅针对排序而构建。特别是,它不执行交易,数据可用性要求(即确保系统能够访问数据)由单独的 Tiramisu 数据可用性层实现。这种模块化允许根据需要采用各种合适的子协议。
  2. 可扩展性。与需要全对全通信的 Tendermint 相比,HotShot 依赖全对领导者、领导者对全的通信,从而将共识通信复杂度降低到节点数量的线性级。由于排序不需要每个节点都获得交易数据的完整副本,低共识通信尤为重要。HotShot 将此与 内容分发网络 (CDN) 相结合,以高效路由数据并执行计算。这减少了领导者瓶颈,并支持具有异构节点集合的系统。这些改进将帮助 HotShot 扩展到数千个节点,使其能够由大量以太坊验证者运行。
  3. 响应性。Tendermint[2] 和 HotShot 都具有乐观响应性,因此在有利条件下,它们能够以网络速度提交区块,而无需等待任何悲观网络延迟。这确保了协议的性能直接与网络状态相关——在乐观条件下,协议可以具有低延迟,从而也具有高吞吐量。在 HotShot 中,在网络层使用 CDN 与乐观响应性特性协同作用,提供更好的性能。
  4. 成熟度。Tendermint(以及其当前在 CometBFT 中的实现)的主要优势之一是它是一个经过实战检验的系统,已在多条区块链中被采用,主要是 Cosmos 生态,但也因其核心技术被纳入其他网络中,例如 Polygon 网络的一部分。它已在多种环境中运行和评估。另一方面,HotShot 处于更早期的阶段,目前正由 Espresso Systems 开发。

技术差异

  • 验证者复杂性。Tendermint 协议在每个领导者提案上,通过点对点 gossip 层进行两次全对全投票步骤。

对于全对全广播,每个节点仅向其 gossip 邻居转发消息。整体通信复杂度是二次的,延迟增加到 log(n)。

更重要的是,协议中产生的大部分通信负载源于消息验证的需求,而不仅仅是传输比特。因此,有时用不同的方式衡量复杂度更有用:不是计算传输的消息(或比特)数量,而是衡量处理的消息验证总数。Tendermint 中的两次全对全投票步骤每次都会产生二次数量的验证。

HotShot 在每个投票步骤中产生线性数量的消息和线性数量的验证。

  • 流水线。Tendermint 围绕一个两阶段核心共识协议构建(例如,参见此处)。这两个阶段实现了由三分之二验证者进行的两步投票,这是成功提交区块所必需的:预投票和预提交。验证者在同一个区块“高度”内反复迭代这两个轮次,直到达成提交。只有在达成提交决策或收到更高区块的法定票数投票时,他们才会进入下一个高度。

HotShot 是流水线式的:第二轮投票(“预提交”)同时是下一个区块的第一轮投票(“预投票”)。流水线允许下一个提议者提前开始,而不是等待当前提议者完成两个阶段。因此,尽管由于通信线性化,HotShot 增加了两个网络跳数,但与 Tendermint 相比,交易结算的端到端延迟可能不会受到太大影响。

  • 视图变更。原始 Tendermint 共识 的标志性特点之一是简化了视图变更,它使用与提交区块相同的机制来切换到下一个视图。HotShot 采用了这种简化背后的原则。

然而,在 Tendermint 中,一个出错的视图会经过两次(nil)投票阶段以跳到下一轮(例如,参见此处)。由于流水线,HotShot 可以在仅一次投票步骤后跳过出错的视图。

  • 视图同步。Tendermint 由于其全对全投票阶段,具有隐式内嵌的视图同步。在像 HotShot 这样的线性协议中,瓶颈转移到了视图同步。总体而言,HotShot 已经实现了一种由 Naor-Keidar 设计的乐观线性视图同步方法。

我们感谢 CometBFT 团队对早期草稿提供了有用的评论,并帮助提高了本文的清晰度。


参考文献

  1. CometBFTCometBFT GitHub 仓库
  2. Tendermint: 区块链时代的拜占庭容错
  3. BFT 共识中的最新八卦(白皮书,2018)
  4. 期望线性轮同步

  1. 在研究 Tendermint 时,我们查看了 GitHub 上的开源代码、最初的硕士论文以及他们的白皮书↩︎

  2. 他们的开源代码白皮书提供了响应性选项,但原始论文没有。↩︎

  • 原文链接: hackmd.io/@EspressoSyste...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论