本文详细介绍了Solana区块链的块传播协议Turbine,该协议通过优化数据传输路径和使用纠删码技术,解决了区块链的可扩展性三元悖论。Turbine借鉴了BitTorrent的技术,并通过UDP传输数据和随机路径选择,提高了网络的数据传播效率。
Solana 是全球最强大的无权限区块链。在当前的 Solana 测试网络中,一个由 200 个物理独立节点组成的网络在使用 GPU 时支持持续超过 50,000 笔交易每秒。这一成就需要实施多个优化和新技术,最终在网络容量方面取得了突破,标志着区块链发展的新阶段。
在这篇文章中,我们将探讨 Turbine,Solana 的区块传播协议——受 BitTorrent 启发——它解决了区块链的可扩展性三难问题。
区块链技术中的可扩展性三难问题与带宽有关。在今天的大多数区块链网络中,给定每个节点的固定带宽,增加节点数量将增加将所有数据传播到所有节点所需的时间。这是一个大问题。
然而,有无数机会来优化数据传播的方式。有许多新颖的数据传播技术,每种技术都是为特定应用优化的。例如,BitTorrent 被优化为通过 TCP 向大量用户服务大文件,而我曾参与的一个项目 MediaFLO 是一个优化物理层数据传播的协议,以提高无线网络上多播的效率。
在此背景下,让我们深入探讨 Turbine,Solana 的区块传播协议,以解释 Solana 网络如何传播数据以解决区块链的可扩展性三难问题。
高性能区块链面临的挑战之一是网络如何将大量数据传播到大量同伴。例如,考虑一个由 20,000 个验证者组成的网络。领导者需要将一个 128 MB 的区块(约 500,000 笔交易 @ 250 字节/交易)传输给所有 20,000 个验证者。天真的实现需要领导者与每个验证者建立唯一连接,并将完整的 128 MB 传输 20,000 次。根本没有足够的带宽来满足这么多的连接。
我们对这个问题的解决方案,Turbine,借鉴了 BitTorrent 的许多精髓——尽管有几个主要的技术细节使两者有所不同。Turbine 针对流媒体进行了优化,仅使用 UDP 传输数据,并实现了每个数据包在网络中的随机路径,随着领导者(区块生产者)流式传输他们的数据。领导者将区块分割成最大为 64KB 的数据包。对于一个 128MB 的区块,领导者产出 2,000 个 64KB 数据包,并将每个数据包传输到不同的验证者。
反过来,每个验证者将数据包转发给称为邻域的一组同伴。你可以将网络视为邻域树,使网络能够大大超过 1,000 个验证者:
每个邻域负责将其数据的一部分传输到其下方的每个邻域。
如果每个邻域由 200 个节点组成,则从根节点的单一领导者开始的 3 层网络可以在 2 次跳跃中到达 40,000 个验证者——假设每个网络链接平均是 100 毫秒,大约需要 200 毫秒。
我们面临的挑战是安全性。例如:对抗性节点可以选择不重新广播数据,或重新广播错误的数据。为了处理对抗性节点,领导者生成 Reed-Solomon 纠删编码。纠删编码允许每个验证者在不接收所有数据包的情况下重新构建整个区块。
如果领导者将区块数据包的 33% 作为纠删编码进行传输,则网络可以丢弃任何 33% 的数据包而不丢失区块。领导者甚至可以根据网络状况动态调整这个数字。这些决定由领导者根据此前区块的观察到的数据包丢失率进行。
并非所有验证者都是平等的。最重要的验证者是持有最多股份的那些。因此,我们在传播中相应地优先考虑股份较多的验证者。基于股份加权的选择算法构建树,使股份较高的验证者位于更靠近领导者的邻域。每个验证者独立计算相同的树。虽然纠删编码可以修复故障,但对抗性节点可能会在树中占据位置,从而导致故障超过其合并的股份大小,尤其是在与拒绝服务攻击结合时。
我们如何处理这种eclipse攻击? 我们的分裂算法为每个数据包生成一个基于数据包数字签名的股份加权树。由于每个数据包采用不同的路径,并且路径未知,邻域级别的 eclipse 攻击将需要几乎完全控制网络。
了解更多关于 Tour de SOL——Solana 的激励性测试网络事件。
通过一个层级,这种技术在 200 个到 1,000 个节点之间扩展。支持 1 Gbps 的网卡可以每秒传输一百万个数据包。如果网络连接允许,单个验证者可以在一秒内将最大 64KB 的数据包发送给 1,000 台机器。
Solana 的 Turbine 传播和像历史证明、海平面、复制证明、海湾流等突破性技术结合,创造了整个生态系统中最强大的区块链。Solana 的测试网络今天已经上线。你可以在 https://testnet.solana.com 查看。出于成本考虑,我们只运行少数几个节点。然而,我们已经在 AWS、GCE 和 Azure 的 23 个数据中心的多个实例上启动了超过 200 个物理独立节点(而不是共享硬件)进行基准测试。
运行时系统目前正在运行,开发人员可以在测试网上部署代码。开发人员今天可以使用 C 构建智能合约,我们正在积极开发 Rust 工具链。Rust 将成为 Solana 智能合约开发的旗舰语言。Rust 工具链是公开可用的,作为 Solana Javascript SDK 的一部分,我们进一步迭代开发软件开发工具包。
Solana 将很快推出一个公开测试版,通过 Tour de SOL 激励验证者运行节点——类似于 Cosmos 的赌注游戏——挑战广大公众测试 Solana 网络的极限,同时为此获得代币奖励。
- 原文链接: medium.com/solana-labs/t...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!