Solana 共识过程及关键名词(以实际交易为例)

Solana 共识过程及关键名词(以实际交易为例)

我们通过具体步骤来解释用户 A 提交一笔 SOL-RAY 交易时,Solana 确认交易的过程。

1. Solana 网络选举领导节点(Epoch 和 Slot)

1/ Solana 共识过程中,有两个重要时间单位:Epoch(周期)和 Slot(间隔)。 每个 Epoch 周期包含 43.2万个 Slot。而 Slot 约为 400毫秒,也就是0.4秒。

2/ Solana 节点主要分两类:Leader 领导者,也是当前 Slot 出块者和 Validator 验证者。 每个新 Epoch 周期开始时,按 SOL 质押权重抽选 Leader 轮换顺序,当前 Epoch 内,轮换顺序一定。每 4个 Slot,更换一次 Leader,其他节点则成为 Validator 验证者。

3/ 相比之下,PoW、PoS 共识则需要进行哈希计算,或对区块投票达成共识。Solana 直接将共识成本降到尽可能最低。 好处是速度极快,坏处是,因为领导节点顺序一定,可以对出块节点定向攻击。

Image

2. 用户 A 提交交易(Gulf Stream 交易转发协议)

交易创建: 1/ 用户 A 在其钱包中创建一笔将 SOL 交换为 RAY 的交易,并将该交易提交到 Solana 网络。

2/ Solana 采用 Gulf Stream 交易转发协议,而非 Ethereum 一样的 Mempool 设计。

Mempool 是在本地客户端存储的待处理交易池,用户提交到以太坊链上的交易,在正式上链确认前,会先进入 Mempool,节点会对交易进行过滤、筛选。 而 Solana 则采用 Gulf Stream 取代了 Mempool。

3/ Gulf Stream 机制是将用户交易,直接转发给当前,以及未来多个领导节点。 如果当前 Slot 是 25,交易会被推送给 Slot 25 的领导节点,以及 Slot 26、27、28 等未来的领导节点。

未来领导节点接收交易后,可预先对交易进行验证和缓存,从而在自己成为领导节点时,快速打包这些交易。

4/ Gulf Stream 好处是,进一步削减节点间的共识延时,进一步提升网络速度。 坏处是,节点们直接将交易转发给领导节点,在极端情况下,如用户多次重复提交同一笔交易,领导节点承压过大,容易宕机。 这也是为何,Solana 在去年 NFT Mint 和今年 MEME 币交易暴涨时,会出现交易迟迟不确认,或直接宕机情况。

5/ 以太坊是保证了网络最差情况下的可用性,而 Solana 倾向于网络最佳情况下的效率。

3. Sealevel 并行处理分析

在 Slot 开始时,领导节点使用 Sealevel 引擎来并行处理和执行交易。

Sealevel 分析交易的依赖关系,确定哪些交易可以并行执行,哪些交易需要按顺序执行。 通过并行执行无冲突的交易,Sealevel利用多核处理器的能力,提高了交易处理的速度和效率。

4. 生成时间戳链(PoH, Proof of History)

1/ Proof of History (PoH) 是 Solana 引入的一种时间证明机制,为每个交易创建一个唯一且可验证的时间戳。交易一旦提交,PoH 会为这笔交易生成一个时间戳 T1。

这个时间戳包含了前一个时间戳的哈希值,形成一个连续的时间链(例如,T0 -> T1 -> T2 -> ...)。

Image

2/ PoH 实际是提供了 Solana 全网唯一且一致的时间排序方式。

5. 提议新区块

1/ 领导节点收集交易

在当前 Slot 中,节点从交易池中收集交易,包括用户 A 的 SOL-RAY 交易 T1,以及其他待处理的交易,并根据 PoH 历史证明打时间戳。

2/ 打包区块

节点根据 PoH 时间戳链,打包这些交易,生成一个新区块。新区块包含了交易T1、T2、T3等。

6. 广播和验证、投票、达成共识(Turbine 与 Tower BFT)

1/ 广播新区块(Turbine):

1)节点将打包好的新区块广播给网络中的其他验证节点。 2)广播过程,采用 Turbine 技术,区块分成多个更小的数据片(Shards)。每个数据片包含区块的一部分数据。 3)举个通俗的例子。大学教授需要将一份 10GB的 大型学习资料分发给全班的100名学生。直接将整份资料发送给每个学生,会非常耗时且容易导致网络拥堵。

于是教授将资料分为 10份,用 PoH 排序为 A、B、C、D、E、F、G、H…等等,每份仅 1GB。 又将学生分为 10个组。先根据权重,每个给组长发送不同的 1GB文件,注意每个组长收到的 1GB文件是不同的。 然后,资料在小组内、跨小组交互传递。每个人迅速收到 10GB完整文件,再根据 PoH,将顺序复原。

Image

(图片来自 Solana RPC 供应商 Helius Blog)

2/ 节点验证区块、投票、达成共识(Tower BFT):

所有接收到新区块的节点使用 PoH 时间戳链验证区块中的交易顺序和哈希值。而 Tower BFT主要在区块验证和投票阶段发挥作用。 Tower BFT 是一种渐进式共识,共识过程是逐步进行的。随着新区块的传播和验证,节点逐渐收集投票并更新自己的状态。 也就是说,由于 PoH 的存在,Solana 的节点,可以一边同步区块,一边达成共识。 而不是像其他区块链一样,需要先达成共识,之后,才能产生新区块。

7. 区块确认和状态更新

达成共识后,新区块被确认并添加到区块链中。 所有节点将新区块添加到各自的区块链中,并更新状态。

8. 处理分叉和容错(如有必要)

分叉处理:如果在同一Slot中有多个区块提议,Tower BFT将根据时间戳链和投票结果选择最长的合法区块链分支。

容错机制:Tower BFT 设计了容错机制,即使部分节点作恶或离线,整体网络仍能保持一致性和安全性。 此外,Solana 还用到了 Pipelining 流水线处理,提高交易处理速度;Cloudbreak 水平扩展的数据结构,优化存储性能;Archivers 去中心化存储,提高存储效率。

点赞 0
收藏 2
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
戈多Godot
戈多Godot
@MantaNetwork 辛勤园丁 戈多的区块链知识图谱: https://web3godot.notion.site/47f4be2e9e9146bcb7671bc7feff6bd4?v=a6ba65386b314e14b3d1a060f668893a