涡轮机 – 索拉纳的块传播协议解决了可伸缩性特里马

了解使索拉纳成为全球性能最优的区块链的 7 项关键技术中的 1 项

索拉纳是世界上最无性能的区块链。 在 Solana Testnet 的当前迭代中,由 200 个物理上不同的节点组成的网络支持使用 GPU 运行时每秒超过 50,000 个事务的持续吞吐量。 实现这一目标需要实现多项优化和新技术,其结果是网络容量的突破,标志着区块链开发进入一个新阶段。

有 7 项关键创新使索拉纳网络成为可能:

在这篇文章中,我们将探讨涡轮,索拉纳的块传播协议 – 灵感来自BitTorrent – 解决区块链可扩展性三元。

可伸缩性特里雷马

区块链技术的可扩展性三分问题与带宽有关。 在当今的大多数区块链网络中,给定每个节点的固定带宽量,增加节点计数将增加将所有数据传播到所有节点所需的时间。 这是个大问题。

但是,有无数机会优化数据的传播方式。 有许多新颖的数据传播技术,每种技术都针对特定应用进行了优化。 例如,BitTorrent 已针对使用 TCP 向大型人群提供服务进行了优化,而 MediaFLO(我参与的项目)是针对物理层的数据传播而优化的协议,以提高无线多播的效率网络。

有了这个上下文,让我们跳到涡轮,索拉纳的块传播协议,解释索拉纳网络如何传播数据,以解决区块链的可伸缩性三元。

涡轮

Solana, 以区块链为核心的规模性扩展平台

高性能区块链面临的挑战之一是网络如何向大量对等体传播大量数据。 例如,让我们考虑一个包含 20,000 个验证器的网络。 领导者需要将 128 MB 块(约 500,000 个事务 = 250 字节/事务)传输到所有 20,000 个验证器。 天真的实现将要求领导者与每个验证器有唯一的连接,并传输完整的 128 MB 20,000 次。 根本没有足够的带宽来容纳这么多的连接。

我们解决这个问题的解决方案,涡轮,从BitTorrent大量借用- 虽然一些主要的技术细节区分两者。 涡轮机针对流式处理进行了优化,并且仅使用 UDP 传输数据,并作为领导者(块生产者)流数据通过网络实现每个数据包的随机路径。 领导者将该块分成大小达 64KB 的数据包。 对于 128MB 块,领导者会生成 2,000 个 64KB 数据包,并将每个数据包传输到不同的验证器。

Solana, 以区块链为核心的规模性扩展平台

反过来,每个验证器将数据包重新传输到我们称之为邻域的一组对等体。 您可以将网络可视化为邻域树,使网络能够茁壮成长超过 1,000 个验证器:

Solana, 以区块链为核心的规模性扩展平台

每个邻域负责将其部分数据传输到其下面的每个邻域。

Solana, 以区块链为核心的规模性扩展平台

如果每个邻域由 200 个节点组成,则从根目录的单个引线开始的 3 级网络可在 2 个跃点中达到 40,000 个验证器,或者假设每个网络链路平均为 100 毫秒,则大约 200 毫秒。

我们用这种技术面临的挑战是安全性。 例如:对抗节点可以选择不重新广播数据,或重新广播不正确的数据。 为了处理对抗性节点,领导者生成里德-索洛蒙擦除代码。 擦除代码允许每个验证器在不接收所有数据包的情况下重建整个模块。

Solana, 以区块链为核心的规模性扩展平台

如果领导者将 33 个块的数据包作为擦除代码传输,则网络可以丢弃任意 33 个数据包,而不会丢失该数据包。 领导者甚至可以根据网络条件动态调整此数字。 这些确定是由领导者从前一个块中观察到的数据包丢弃速率做出的。

并非所有验证器的创建都是相等的。 最重要的验证者是那些拥有最多利害关系的验证者。 因此,我们相应地优先考虑传播。 赌注加权选择算法构造了树,使高赌注验证器位于更接近领导者的邻域。 每个验证器独立计算同一树。 虽然擦除代码可以修复故障,但对抗节点可能会将自己定位在树中,这样它们就会导致故障,其大小高于其总的赌注大小,尤其是在与拒绝服务攻击相结合时。

我们如何处理这种日食攻击? 我们的扇出算法使用基于数据包的数字签名的随机源为每个数据包生成一个赌注加权树。 由于每个数据包采用不同的路径,并且该路径事先不知道,因此邻里级日食攻击需要几乎完全控制网络。

Solana, 以区块链为核心的规模性扩展平台了解更多关于SOL 之旅– 索拉纳的激励测试网活动。

在一个级别下,此技术可缩放 200 到 1,000 个节点。 支持 1 Gbps 的网卡每秒可以传输 100 万个数据包。 如果网络连接允许,单个验证器可以在一秒内将高达 64 KB 的数据包发送到 1,000 台计算机。

Solana 利用涡轮传播,以及历史证明、管道 VM、复制证明和海湾流等突破,共同创建了整个生态系统中性能最优的区块链。 索拉纳的测试网今天就直播了。 你可以在https://explorer.solana.com/看到它。 出于成本目的,我们只运行少量节点。 但是,我们已经在许多实例上将其拆分为 AWS、GCE 和 Azure 上的 23 个数据中心的 200 多个物理上不同的节点(不在共享硬件上),以便进行基准测试。

运行时现在运行正常,开发人员现在可以在测试上部署代码。 开发人员现在可以在 C 中构建智能合约,我们正在积极开发 Rust 工具链。 锈将是索拉纳智能合约开发的主要语言。 Rust 工具链作为索拉纳 Javascript SDK 的一部分公开提供,我们正在进一步迭代软件开发工具包。

索拉纳将很快推出一个公共测试版激励验证器,通过Tour de SOL运行节点,类似于宇宙的赌注游戏,挑战广大公众测试索拉纳网络的极限,同时赚取令牌这样做。