Solana 共识过程及关键名词(以实际交易为例)
我们通过具体步骤来解释用户 A 提交一笔 SOL-RAY 交易时,Solana 确认交易的过程。
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 直接将共识成本降到尽可能最低。 好处是速度极快,坏处是,因为领导节点顺序一定,可以对出块节点定向攻击。
交易创建: 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 倾向于网络最佳情况下的效率。
在 Slot 开始时,领导节点使用 Sealevel 引擎来并行处理和执行交易。
Sealevel 分析交易的依赖关系,确定哪些交易可以并行执行,哪些交易需要按顺序执行。 通过并行执行无冲突的交易,Sealevel利用多核处理器的能力,提高了交易处理的速度和效率。
1/ Proof of History (PoH) 是 Solana 引入的一种时间证明机制,为每个交易创建一个唯一且可验证的时间戳。交易一旦提交,PoH 会为这笔交易生成一个时间戳 T1。
这个时间戳包含了前一个时间戳的哈希值,形成一个连续的时间链(例如,T0 -> T1 -> T2 -> ...)。
2/ PoH 实际是提供了 Solana 全网唯一且一致的时间排序方式。
1/ 领导节点收集交易
在当前 Slot 中,节点从交易池中收集交易,包括用户 A 的 SOL-RAY 交易 T1,以及其他待处理的交易,并根据 PoH 历史证明打时间戳。
2/ 打包区块
节点根据 PoH 时间戳链,打包这些交易,生成一个新区块。新区块包含了交易T1、T2、T3等。
1)节点将打包好的新区块广播给网络中的其他验证节点。 2)广播过程,采用 Turbine 技术,区块分成多个更小的数据片(Shards)。每个数据片包含区块的一部分数据。 3)举个通俗的例子。大学教授需要将一份 10GB的 大型学习资料分发给全班的100名学生。直接将整份资料发送给每个学生,会非常耗时且容易导致网络拥堵。
于是教授将资料分为 10份,用 PoH 排序为 A、B、C、D、E、F、G、H…等等,每份仅 1GB。 又将学生分为 10个组。先根据权重,每个给组长发送不同的 1GB文件,注意每个组长收到的 1GB文件是不同的。 然后,资料在小组内、跨小组交互传递。每个人迅速收到 10GB完整文件,再根据 PoH,将顺序复原。
(图片来自 Solana RPC 供应商 Helius Blog)
所有接收到新区块的节点使用 PoH 时间戳链验证区块中的交易顺序和哈希值。而 Tower BFT主要在区块验证和投票阶段发挥作用。 Tower BFT 是一种渐进式共识,共识过程是逐步进行的。随着新区块的传播和验证,节点逐渐收集投票并更新自己的状态。 也就是说,由于 PoH 的存在,Solana 的节点,可以一边同步区块,一边达成共识。 而不是像其他区块链一样,需要先达成共识,之后,才能产生新区块。
达成共识后,新区块被确认并添加到区块链中。 所有节点将新区块添加到各自的区块链中,并更新状态。
分叉处理:如果在同一Slot中有多个区块提议,Tower BFT将根据时间戳链和投票结果选择最长的合法区块链分支。
容错机制:Tower BFT 设计了容错机制,即使部分节点作恶或离线,整体网络仍能保持一致性和安全性。 此外,Solana 还用到了 Pipelining 流水线处理,提高交易处理速度;Cloudbreak 水平扩展的数据结构,优化存储性能;Archivers 去中心化存储,提高存储效率。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!