Syshems 北邮在读硕士
研究主题: Turbine 机制拆解
内容提要: 1、Solana 概述 2、Turbine 传输机制 2.1、Turbine 工作原理 2.2、Erasure Coding 2.3、Turbine Tree 3、对比以太坊区块广播
Turbine 是 Solana 区块链使用的 multi-layer 区块传播机制,用于向所有节点广播账本。Turbine 背后的核心思想已经在学术界存在了很多年。本课题旨在探讨 Turbine 是如何工作的,拆解 Solana 上的区块传播机制,并与以太坊的区块传播进行比较,探索未来区块传播和数据可用性可能的样子。
公链的效率主要指其处理交易的能力,也就是吞吐量 TPS ,该指标受限于区块大小和出块速度。大区块方向的探索饱受诟病,公链扩容叙事主要围绕出快速度。
Solana 扩容主要基于:高效利用网络带宽、减少节点间通讯次数、加快节点运算速度三大方面,缩短了出块和共识通讯的时间,但也降低了系统可用性(安全)。
共识:
传输:
Gulf Stream: 由于提前公开 Leader 名单,Solana 节点无需在本地维护交易池。客户端在接收到交易后,直接转发到 Leader 处打包为交易序列。但由于该机制设计,节点在收到交易后无法过滤拦截垃圾和重复交易,容易造成 Leader 节点宕机。
Turbine 传输协议: Solana 的 Leader 节点发布的是交易序列而非真实的区块。在 PoH 和 Gulf Stream 的配合下,Solana 实现了类似 BT 种子的传输方式。Leader 会把生成的交易序列切成 X 个不同的碎片,分别发送给质押资产最多的 X 个 Validators ,再由他们传播给其他 Validators 。Validator 群体会自行交换收到的碎片,在本地拼凑完整的交易序列,最终构建区块。
投票垄断: 实际上,33% 的质押份额掌控在前 22 个节点中,67% 的份额掌控在前 91 个节点中。结合前文所说的传输机制,这些节点最先收到 Leader 发出的交易序列,也会率先给出投票。而只要得到这 91 个节点的投票,Leader 发布的交易序列便可敲定。从某种角度看,这些节点抢跑在其他节点之前。另一方面,如果前 22 个节点串谋,便可使网络陷入混乱。
带宽是一种稀缺资源,Turbine 是一种 multi-layer 的区块传播机制,旨在优化「从 leader 到网络其他节点」的交易序列的传输。与其他区块链采用的 flooding 广播方式不同,Turbine 采用更结构化的方法来最大限度地减少通信成本,减少单个节点的负载。
概括的说,Turbine 将交易序列(区块)分解成更小的块,并以「节点层次」的结构进行传播。在该结构下,单个节点只需与选定的几个节点进行通信,而非全网所有节点。随着网络规模的扩大,这一点变得越来越重要。
此外,Turbine 在不需要大量带宽的情况下解决了数据可用性问题,确保所有节点都可以访问所需的数据以有效地验证交易。这是其他区块链网络中的面临瓶颈。
Leader 生成交易序列后,下一步需要做的就是序列广播。
Shreds 是交易序列的一部分。总的来说,Turbine 负责获取 shreds,并将它们发送到一组预定的 validator ,随后由验证器再将这些 shreds 转发给新的一组 validator 。