Solana 的共识机制

Solana 的共识机制

创建时间
Dec 9, 2024 03:40 PM
标签

Solana 架构中的角色:领导者和验证者

在 Solana 的系统架构中,两个至关重要的角色是Leader (区块生产者)和Validator 。两者都是质押 SOL 代币的全节点,但在区块生产周期中,它们会在不同节点之间轮流担任 Leader。未被选为 Leader 的节点将成为 Validator。Solana 在选择 Validator 时采用权益证明(PoS) 机制,其中质押者通过质押一定数量的代币来参与网络交易验证。质押代币越多的验证者被选中生成新区块的机会就越大。
notion image
  1. 用户发起交易后,要么由客户端直接转发给Leader节点,要么由普通节点先接收,然后迅速转发给Leader。
  1. Leader 接收网络内所有待处理的交易,执行这些交易,对交易指令进行排序,并创建交易序列(类似区块),每隔一段时间 Leader 会将排序后的交易序列发送给 Validators。
  1. 验证器按照交易序列(区块)中给定的顺序执行交易,并产生相应的状态信息(执行交易会改变节点的状态,例如改变某些账户的余额)。
  1. 在发送 N 个交易序列后,Leader 会定期发布本地状态。验证者将其与自己的状态进行比较,并提供赞成或反对的投票。此步骤类似于以太坊 2.0 或其他 PoS 区块链中的“检查点”。
  1. 如果在规定时间内,Leader 收集到全网 2/3 权益权重的节点确认,则之前发布的交易顺序和状态将被最终确认,相当于该区块获得最终确认(Finality)。
  1. 一般情况下,投赞成票的Validator与Leader有相同的执行交易和结果状态,数据是同步的。

在 Solana 中选出领导者

在 Solana 的共识协议中,有两个重要的时间单位:EpochSlots 。每个 Slot 大约为 0.4 到 0.8 秒,相当于一个区块的时间间隔。每个 Epoch 周期由 432,000 个 Slots 组成,持续时间为 2 到 4 天。每 4 个 Slots(出块周期),Leader 节点就会发生一次更替。
notion image
在每个新的 Epoch 周期开始时,Solana 网络都会根据每个节点的质押权重选出 Leader,形成一个轮换出块人列表,在不同时间“指定”未来的出块人。换句话说,出块人会提前被告知自己将成为出块人。Leader 选拔时考虑的因素包括:
  1. 质押代币数量:质押代币数量是 PoS 中的一个重要考虑因素。验证者通常更喜欢质押金额较大的节点,这会增加节点被选为区块生产者的机会。这也有助于确保网络由具有足够既得利益的节点维护。
  1. 节点性能:节点性能是另一个关键因素。高性能节点可以更快地验证和打包交易,有助于维持高吞吐量网络。验证者可以选择性能更好的节点来提高整体网络效率。
  1. 网络延迟:验证者可能会考虑节点之间的网络延迟。选择网络延迟较低的节点有助于减少区块传播时间,从而提高网络实时性能。
  1. 节点可用性:验证者注重节点可用性,确保运行稳定且不易发生故障。可靠的节点可以为网络提供更稳定的服务。
Leader 的目标是选择一组合适的交易,保证网络的安全、高效、公平。通过综合考虑这些因素,Solana 可以做出最优的出块决策,推动网络的正常运转。

回顾

现在,了解了基本细节之后,让我们看一下 Solana 的网络如何通过 PoH 和 PoS 运行:
  1. 交易生成:用户创建并广播交易,包括详细的交易信息和数字签名。
  1. PoH 链上的排序:交易哈希通过数字签名链接到 PoH 链。由于 PoH 链是有序的,因此交易也是有序的。
  1. 验证者验证:验证者负责验证交易的有效性并选择将哪些交易纳入下一个区块。此选择可能基于质押代币数量、验证者表现等因素。
  1. 交易打包成区块:验证者选定的交易被打包成一个区块,其中包括一个特殊的出块交易,其中包含当前 PoH 链的哈希值和其他信息。
  1. 区块传播和确认:区块被广播到整个网络。其他节点验证并确认区块的有效性。一旦确认,区块及其包含的交易将被添加到整个区块链中。
通过这样的方式,Solana 通过 PoH 链的时间有序性和 PoS 的节点验证机制实现了交易的流转和整个区块链的更新,这样的设计将 Solana 的平均出块时间压缩到了 400 毫秒,无需 Layer 2 也能达到极高的速度,并且几乎不产生交易费用。