文章对不同区块链的性能进行了对比,特别是以太坊和 Solana 在交易处理速度上的差异。通过 Uniswap V2 类似的交易作为基准,分析了多个区块链的吞吐量和延迟,并指出性能的差异并不如宣传中的那么大。
作者:GM 和 Haseeb Qureshi
跨链(Multichain)现在已经成为现实。以太坊的可扩展性缺乏导致了大规模迁移到新一代的 L1。大多数这些 L1 使用 EVM(以太坊虚拟机),这使得它们与以太坊钱包和开发工具兼容。但 Solana 从头到尾完全重建了其架构。Solana 声称自己是存在的最快区块链。那么问题是:Solana 比 EVM 链快多少呢?
L1 区块链的 TVL 增长,信用: The Block
首先,我们需要达成共识,如何衡量性能。从古至今,新区块链常常声称比以太坊更具性能。这是一项古老的消遣。你会看到很多数字被说起和一些匆匆凑成的图表,比较自我报告的 TPS(每秒交易次数)。不幸的是,这些 TPS 数字通常来自他们自己的市场推广材料,几乎总是虚假的。
大多数 L1 自身发布的基准测试测量的是简单的价值转移 TPS——即,从一个账户转移货币到另一个账户。简单转移的成本非常低,因此产生了很大的数字,大家都喜欢大数字。但没有任何区块链实际上会在这样的转移上遇到瓶颈,这种活动并不能反映真实世界的使用模式。此外,许多这些数字是在开发网络或测试网络上生成的,而不是在主网。在抽象的概念中,我们并不关心某人的软件可以做些什么:我们关心的是目前主网上可能实现的。
实际上,没有单一公认的方式来基准测试 TPS。基准测试中常常是这样的情况;这是一个混乱且充满符号的问题领域,充满了误导性市场推广、过拟合/“针对测试进行教学”和作弊。
好的,没问题。那么我们应该如何实际测量 L1 性能呢?
这个问题很棘手,因为性能有多个维度。
首先,性能总是与去中心化之间的权衡。测试网络和开发网络通常高度集中,可以产生与主网环境相比较的惊人数字。而许多主网 在去中心化上妥协 ,这挤压了额外的性能。
但是假设我们想要忽略去中心化,仅专注于性能。那么,基准测试区块链性能非常困难,因为 大多数新链的数据可见性非常差。
在七年之后,以太坊的性能得到了高度研究并且很容易理解。但是当你开始探索更新的链时,大多数的工具和可观察性都较差,并且不断演化。在你阅读本文的时候, 这些基准可能已经过时。
此外,基准测试总是任意的,充满了陷阱。你所能做的最好的事情就是选择一个测量有价值事物的基准,然后尽可能仔细地阐明你的结果。这就是我们在这里要尝试做到的。
但是我们所说的性能是什么意思呢?性能有两个方面:吞吐量和延迟。
你可以将区块链性能想象成水流经管道的状态。交易就是水——你希望大量交易通过管道流动。但是管道的长度决定了它的延迟——如果每笔交易的确认时间很长,即使可以同时确认大量交易,这也不是理想的状态。
延迟可以细分为区块时间(区块之间的时长)和最终性时间(直到一个区块完全不会被回滚的时长)。区块时间和最终性时间是容易测量的。
但要实际测量吞吐量,你需要一个标准的衡量单位。吞吐量是多少?
我们没有看代币转移,而是查看了以太坊上一个顶级的耗气应用:Uniswap V2,并将其转化为一个非常简单的基准。 如果你填满一个完整的区块进行 Uniswap V2 风格的交易,每秒可以清除多少笔交易?
我们选择这个基准是因为 1) 它简单且易于测量,2) 每个区块链在生产中都有一个 Uniswap V2 风格的 AMM,3) 它是常见智能合约使用模式的典型代表。
对于大多数有 gas 模型的链来说,这个速算应该是简单的。首先,找出区块的 gas 上限和区块时间,这样就可以推导出链的 gas/sec 吞吐量;接下来,找到一个 Uniswap v2 风格的 AMM,并选取一个SwapETHforTokens 等效交易;最后,将第一个数字除以第二个数字,以得出如果其区块都是相同的 AMM 交易,其每秒可以实现多少个 tx/sec。
注意:这不是一个完美的基准!它是个别的,它不考虑可平行化的交易(因为在同一个池上进行的 Uniswap 交易必须线性化),并且不能代表所有的使用模式。但智能合约的使用总是呈幂次分布,使用最频繁的 Dapp 往往是 AMM,因此在一系列基准下,我们相信这是获取性能整体视图的说明性参考。
那么事不宜迟,让我们一起来看看结果。
Uniswap v2 每秒交易数:平均 9.19,最高 18.38(由于EIP-1559)
区块时间平均:13.2s(PoW,所以区块是随机挖矿的泊松过程)
最终性时间:66秒(近似值,以太坊区块并非真正的最终确定)
假设和方法论 : 在 15M gas 目标下,这是以太坊在 EIP-1559 平衡状态下实现的,它可以做到每秒 9.19 次交易;在 30M gas 上限 下,它可以达到每秒 18.38 次交易(但是如果保持在这里,费用将呈指数级增长)。我们使用 这个 的 swapExactETHForTokens 交易作为一个典型的链上单跳交易。假设区块生产者能够完美地将 15M gas 上限区块填满成本为 123,658 gas 的 Uniswap 交易,这意味着我们可以在单个区块中获得 15M/123,658 = ~121.3 次交换。如果我们假设区块每 13.2 秒到达,那么以太坊的处理能力是 121.3/13.2s = ~9.19 次 Uniswap v2 交换每秒。
我们将对列表上的其他 EVM 链进行类似的计算。
(注:我们在此方法论中忽略了 rollup,因为所有智能合约 L1 都有能力添加 rollup。)
Ubeswap 每秒交易数:平均 24.93,最高 49.86(由于 EIP-1559)
区块时间平均:5s
最终性时间:5s(Celo 采用 PBFT 样式协议,立即确认区块)
假设 : 这笔交换交易 是代表性交易,10M gas 目标 , 和 20M gas 限制 。
Quickswap 每秒交易数:平均 47.67,最高 95.33(由于 EIP-1559)
区块时间平均:2.5s
最终性时间:Polygon 有两种最终性概念
1. 概率性:这与大多数以太坊风格的区块链相似,规范链取决于工作的数量(最重)。在 Polygon 的情况下,Bor 层(即区块生产者层)的最终性依赖于更高难度的分叉。
2. 可证明:这与 Tendermint/IBFT 类似,超过半数的节点签署了规范链。这发生在Heimdall 层(即 Polygon 的验证者管理和状态同步层),通过检查点。这些检查点被提交给以太坊。
在 Bor 层上可能发生重组和分叉,但在 Heimdall 上不会。检查点是 Bor 链状态的快照。一旦某一块被包含在提交的检查点中,它就不能被重组(除非 >=⅓ 的验证者集不诚实)。检查点大约每 25 分钟提交。
假设 : 这笔交换交易 是代表性交易, 15M gas 目标 ,和 30M gas 限制 。
Trader Joe 每秒交易数:平均 31.65,但因为其弹性区块时间,Avalanche C-Chain 可以处理足够的 gas,在最大吞吐量下达到 175.68 笔交易每秒。然而,要维持这样的吞吐量将导致费用急剧上涨。
区块时间平均:2s (Avalanche 是一种无领导协议,具有弹性块时间:区块可以在支付足够的最低费用后随时产生。Avalanche C-Chain 在某些时段内曾10多个区块在 1 秒内生产。)
最终性时间:约 1.75 秒在区块生成后
假设 : 这笔交换交易 是代表性交易,目前的 8M gas 限制 。
由于 Avalanche 的区块生产机制与以太坊和 PoS 链大相径庭,这使得其相对比较困难。对于 Avalanche,最大吞吐量与平均吞吐量之间存在较大差距。(实施了 EIP-1559 的链,例如以太坊,受到其平均吞吐量的 2 倍限制。)
PancakeSwap 每秒交易数:194.60(Binance Smart Chain 不使用 EIP-1559,因此这是一个固定数字)
区块时间平均:3s
最终性时间:75s
假设 : 这笔交换交易 是代表性交易, 80M gas 限制 。
这结束了 EVM 区块链的基准测试——那些虚拟机基于以太坊模型的区块链。由于所有 EVM 链都使用相同的 gas 模型,我们可以将 gas/sec 视为吞吐量的基准。实心条表示目标吞吐量,而空心条表示上限。
EVM 链的 Gas/sec
你可以想象,Binance Smart Chain 就是你在其绝对极限下运行 EVM 的效果。如果你想从智能合约中获得更高的性能,你就必须完全离开 EVM。
Orca 每秒交易数:273.34
区块时间:590 毫秒
最终性时间:13 秒(Solana 还更快发出“乐观确认”,但这些只对 ~4.7% 的损坏有抵抗力。大多数 Dapp 接受这个阈值。)
我们是这样计算这个数字的。这是一个很复杂的过程。
我们首先想为 Solana 找一个“gas 限制”对应物。你在区块浏览器上找不到任何类似的数字。我们开始问认识的一些 Solana 开发者,但似乎没有人能确切知道是否真的有这样的限制。因此我们卷起袖子亲自去探索。
我们首先了解到,Solana 有一些类似 gas 的东西,称为 计算单位(CU),其定义在这里。根据我们和验证者的对话,大多数人似乎认为 Solana 的验证是“与时间赛跑,以尽可能多地打包交易在区块时间内”,但实际上每个区块只能包含48M CU。
其次,每个账户在单个区块中可写入的 CU 数量是有限的。这个限制是为了防止太多交易写入相同账户,从而减少区块并行性——尽管这恰恰发生在拥堵期间,例如在热门 IDO 期间,当所有交易争相使用单个合同时,便会出现这种情况。
每账户的限制是12M。如果你遵循这个 12M 账户 CU 限制,结合590ms 区块时间和一个74,408 CU 的 Orca 交换代价,我们得出一个理论限制为 273.34 次交易/秒。
这个数字似乎比预期的要低!为了信任这个数字,我们想要通过经验来验证这个方法。
为了确认我们是否准确测量了它的性能,我们决定用一个垃圾邮件攻击直接考验 Solana。我们显然不想在主网发垃圾信息,因此我们瞄准了 Solana 的开发网络。请注意,Solana 的开发网络在一个较小的集群上运行,因此其块时间比主网快(380ms vs 主网的 590ms),这将使其性能高于主网。考虑到 380 毫秒的区块时间,我们应该期望开发网络能够清除 424.40 次交换每秒。
我们对 Orca SOL-ORCA 交易对进行了垃圾邮件攻击,看在单个区块中可以执行多少个 Orca 客户端,然后外推到最大吞吐量。
在开发网络区块 106784857中,我们成功地进行了 184 次 Orca 交换
我们达到的最高数字是单个区块 184 次交换。假设块时间为 380 毫秒,这给我们留出 484.21 次交易/秒的信号面积(注意区块时间不是精确的,所以这些数字中会有一些抖动。如果你在我们发生最多交易的 3 个区块中取平均,看起来更像是 381 次交换每秒,这似乎更合理)。这似乎证实我们分析方法是正确的(~10–15% 的差异),因此意味着 Solana 的主网可能在 AMM 上实现大约 273 次交换/秒。
当然,这只是一次测试运行,因此这是我们的代码 — 我们鼓励你也进行实验并与我们分享结果。
我们在这里略去了一堆细节,若没有 Blockdaemon 的朋友们的支持,这一切都不可能实现。如果你想知道执行这项工作的细节(以及深入了解 Solana 内部的 MEV 信息泄漏),请查看第二部分,我们会深入技术细节。
你可能会在看完这个后想:但我听说 Solana 通常可以达到3000 TPS?
区块浏览器衡量 Solana 的 TPS 方法可能会产生误导——它将内部共识消息也计算为交易,而其他区块链则没有这样做。大约80% 的 Solana 吞吐量 是共识消息。去掉这些,你剩下了 ~600 TPS,其中大部分是 Serum 交易,而这些是非常便宜的。只要足够多的其他合约被触及,Solana 在生产环境中也能实现更高的性能。
AMM 测试:Uniswap v2 风格的交换每秒性能
那么这一切的要点是什么?
首先,不要将其视为真理。自己算算。
其次,记住所有这些区块链都是流动的目标。它们在不断优化,技术也在迅速发展,而任何基准测试都是一个时刻的快照。我们很希望看到更多独立组织创建标准化基准,但这是我们最好的尝试。
第三,注意这些区块链之间的性能差距并没有宣传的那么大。以太坊和最好的链之间的性能差异约为 10-25 倍,而不是 100 倍或 1000 倍。没有人在从线性化的虚拟机交易中获得如此大的性能;这需要更多的工作和优化。
第四,如果你想要真正高的性能 现在 ,你必须向 EVM 空间之外看。我们在这里仅对 Solana 进行了基准测试,但还有其他非 EVM 的 L1 如 NEAR 和 Terra 也能实现更高的性能。但和 Solana 一样,它们不能得益于 EVM 周围的工具和生态系统(尽管 NEAR 有蚕食 Aurora shard,这是与 EVM 兼容的,而其他 L1 正在努力开发类似的虚拟 EVM 实例)。
第五,用户目前对非以太坊 L1 的性能考量并不敏感。他们更关心生态系统的整体强度、良好的用户体验和低费用。这些区块链目前不在性能上竞争,因为 除了在少数极端高峰期,如 IDO 或市场崩溃期间,实际上没有一个被充分利用。
我们预计所有主要 L1 的性能会随着开发团队越来越多的时间来调优典型使用模式而逐步提高。毫无疑问,在早期阶段,这些区块链的优化都很差劲!
但总体上我对此的印象是:以太坊是智能合约操作系统中的 MS-DOS。然而,目前的区块链时代将带我们进入 Windows 95 时代。
MS-DOS(左)到 Windows 95(右)
下一代区块链代表了显著的改善,但从这里到实现主流采用还有很长的路要走。
披露:Dragonfly Capital 可能持有本文中讨论的资产的头寸。
想了解执行 Solana 开发网络垃圾邮件的精彩细节(和一些 Solana MEV alpha 👀)吗?查看 第二部分 !
- 原文链接: medium.com/dragonfly-res...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!