Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Streamlet

Streamlet 是 Benjamin Chan 和 Elaine Shi 提出的链式 BFT 协议。系统按 epoch 推进,通过提议、投票、公证和链式终局维护交易历史。它不包含 PBFT 式的独立视图切换消息,但仍依赖轮次推进和证据传播。

模型与数据结构

系统有 n 个参与者,拜占庭数量 f<n/3,提案和投票经过签名认证。原协议使用同步的 epoch,并在网络稳定的部分同步条件下保证进展。

区块包含 epoch、交易和父块引用。收集至少三分之二参与者的不同投票后,区块成为 notarized(已公证)块。在 n=3f+1 配置中,门槛为 2f+1。

提议与投票

  1. 每个 epoch 选择一个领导者;原协议的分析采用随机领导者。
  2. 领导者扩展自己已知的最长已公证链,提出当前 epoch 的新区块。
  3. 参与者只对该 epoch 首个满足条件的提案投票,且提案必须扩展其已知最长已公证链之一。
  4. 每个诚实参与者在同一 epoch 最多投一次票;公证证据随后传播。

“最长”以链上块数计,而不是最大 epoch 编号。失效轮可以跳过,父块 epoch 与子块 epoch 不必总是连续。

三个连续 epoch 的终局条件

若已公证链中出现三个相邻区块,epoch 分别为 e、e+1、e+2,则中间块及其全部祖先可以终局:

... → B(e) → B(e+1) → B(e+2)
       已公证    已公证      已公证
                 ↑
            本次终局的链头

规则同时要求链上相邻、epoch 连续和每块已公证。两个连续已公证块不足以触发该规则;三个块的 epoch 若存在缺口也不满足条件。最后一块不会仅因出现在该三块链中就一起终局。

安全性条件

同一 epoch 不会产生两个冲突公证块,因为两个法定人数集合相交于诚实参与者,而诚实参与者不会在该 epoch 双投。

跨 epoch 的安全性还依赖最长已公证链投票规则,以及连续三块建立的证据关系。诚实参与者可能在不同 epoch 给不同分支投票,不能将其简化为永远不投冲突分支,也不能仅凭一次证书相交证明所有未来历史一致。

活性与协议边界

网络稳定后,消息能在 epoch 的时间预算内传播。原论文的活性论证使用连续五个诚实领导者 epoch:前面的轮次用于收敛已有分歧,之后形成满足终局条件的三块链。

因此,三块终局规则与从任意先前状态恢复进展的轮次数量不同。领导者失效、消息延迟和轮次中断影响确认时间;该协议也不能直接视为 HotStuff 两链变体。

参考资料