# AMM实测：新公链TPS真的有那么高吗？

By [会飞的鱼](https://paragraph.com/@yufly) · 2022-03-02

---

原文标题：The AMM Test: A No BS Look at L1 Performance 作者：GM 和Haseeb Qureshi（Dragonfly Capital） 编译：区块链世界 会飞的鱼

多链现在已成为现实，以太坊缺乏可扩展性导致很多开发大规模迁移到新一代 L1。这些 L1 中的大多数使用 EVM（以太坊虚拟机），这使得它们与以太坊钱包和开发工具兼容。但是 Solana 已经完全重建了它的技术堆栈，它声称拥有最快的TPS，所以它引出了一个问题：Solana 比 EVM 链快多少？

![](https://storage.googleapis.com/papyrus_images/4b5d48ab6189400166d2d2d14b9eae484abb3d28a7d75791b08a293d2fae4b33.png)

L1 区块链的 TVL 增长，图片来源：The Block

首先，我们需要就性能测试方法达成一致。一直以来，新的区块链就一直在宣称它们的性能比以太坊高出多少，这只是一种话术。你会看到很多数字乱七八糟，匆忙组装图表，比较自我报告的 TPS（每秒事务数）。不幸的是，这些 TPS 数字通常来自他们的宣发材料，而这些材料缺乏依据几乎都是废话。 L1 本身发布的大多数基准测试都测量简单价值转移的 TPS——即将代币从一个账户转移到另一个账户。简单的转账非常便宜，数字越大越便宜，每个人都喜欢大数字。但实际上没有哪种传输技术像区块链遇到的瓶颈情况，而且这种测试并不能反映现实世界的使用模式。此外，其中许多数字是在开发网络或测试网络上生成的，而不是在主网上生成的。我们不关心某人的软件可以抽象地做成什么样，只关心当前主网上的可能性。 实际上，没有一种统一的方法来对 TPS 进行基准测试。在基准测试中经常出现这种情况。这是一个混乱而令人担忧的领域，充满了误导性营销、过度拟合“应试教学”和作弊。

**如何测量 L1的实际 性能？** 这是一个棘手的问题，因为性能有多个维度。 首先，性能始终是与去中心化相权衡。与主网环境相比，高度集中的测试网和开发网可以产生难以置信的数字。许多主网在去中心化上偷工减料，这挤压了额外的性能。 但是，假设我们想忽略去中心化，只关注性能。众所周知，对区块链的性能进行基准测试非常困难，因为大多数新链的数据可见性都很差。 7年来，大家对以太坊的性能进行了很多研究，理解比较深。但是当你开始探索新链时，它们中的大多数工具都少得多，可观察性差，而且还在不断发展。当您阅读本文时，这些基准可能已经过时了。 此外，基准测试总是随意的，并且充满了陷阱。你能做的最好是选择一个有价值的测量基准，然后尽可能仔细地确定你的数据结果，这就是我们将在这里尝试做的事情。 但是我们所说的性能是什么意思呢？性能有两个方面：吞吐量和延迟。 您可以将区块链性能可视化，例如流过管道的水。交易就是流水——你希望大量交易同时流过管道。但是管道的长度决定了它的延迟——如果一个交易需要很长时间才能得到确认，即使很多交易可以一次得到确认，那也是不理想的。

![](https://storage.googleapis.com/papyrus_images/9e550b2b724c6a9e38195c0072078f4620b3bae517ef0b0373be4db593bcf908.png)

延迟可以细分为出块时间（块之间的时间）和最终确定时间（区块肯定不会被恢复的时间）。出块时间和完成时间很容易衡量。

但是要实际测量吞吐量，您需要一个标准的测量单位。什么的吞吐量？ 我们没有使用代币转移，而是查看了以太坊上消耗gas的产品之一：Uniswap V2，并将其变成了一个非常简单的基准。如果你用 Uniswap V2 风格的交易填满了整个区块，每秒有多少笔交易可以清算？

![](https://storage.googleapis.com/papyrus_images/63345f763ab2d27dcc94a3d3fbc8f2c63b95591c9c93e32ffefe7d25797bb5d9.png)

我们选择这个基准是因为 1）它简单且易于测量，2）每个区块链都有一个 Uniswap V2 风格的 AMM 在运行，3）它是常见的智能合约使用模式的典型代表。 对于大多数设置有gas费的区块链来说，这种粗略的操作应该很简单。首先，找到区块gas限制和出块时间，推导出链的gas/sec吞吐量；接下来，找到一个 Uniswap v2 风格的 AMM 并选择一个SwapETHforTokens等价交易；最后，将第一个数字除以第二个数字，得出如果它的块充满相同的 AMM 交易，它将达到多少 tx/sec。

\*\*注意：这不是一个完美的基准！\*\*它是特殊的，它不考虑可并行交易（因为 Uniswap 在同一个池上的交易必须是线性化的），并且它不能代表每种使用模式。但智能合约的使用始终是幂律分布的，并且最常用的 Dapps 往往是 AMM，因此在一组基准测试中，我们认为这有助于全面了解性能。

![](https://storage.googleapis.com/papyrus_images/cc558592ef1ab0144c8e753734cd979a45e011d734899e32e02c64b36322826d.png)

**Uniswap v2 每秒交易**：平均 9.19，最大 18.38（由于EIP-1559） **平均出块时间：13.2s**（PoW，所以块是在泊松过程中随机挖掘的） **最终确定时间：66 秒**（大约，ETH 块不是真正的最终确定）

\*\*假设和方法：\*\*在 15M gas 目标下，这是以太坊与 EIP-1559 达到平衡的目标，以太坊每秒可以进行 9.19 次交易；在30M 的 gas 限制下，它可以实现每秒 18.38 次交易（但如果留在这里，费用将成倍增加）。我们使用这个swapExactETHForTokens 交易作为代表链上一跳交易。假设区块生产者可以用 Uniswap 交易完美地填充 1500 万个 gas 限制区块，每笔交易花费 123,658 个燃料，这意味着我们可以将 15M/123,658 = ~121.3 个交换放入一个区块中。如果我们假设区块每 13.2 秒到达一次，这意味着以太坊每秒处理 121.3/13.2s = 9.19 Uniswap v2 交换。

**我们将对列表中的其他 EVM 链使用类似的计算。** （注意：我们忽略了这种方法的汇总，因为所有智能合约 L1 都能够添加汇总。）

![](https://storage.googleapis.com/papyrus_images/7c70b036befbda05bda14cbd0a5baa46f98591ceeac15b675d7aada775ecacbe.png)

Ubeswap**每秒交易：平均 24.93，最大 49.86**（由于EIP-1559） **平均出块时间：5s 完成时间：5 秒**（Celo 使用 PBFT 风格的协议，可立即完成区块）

假设：本次swap交易为代表性交易，gas费目标值10M，最大值20M 。

![](https://storage.googleapis.com/papyrus_images/351066e3787220d0db9f92870572c5f2a0ea30a0b4c9b557a0d85e2703e55f4f.png)

**每秒快速交易：平均 47.67，最大95.33（由于 EIP-1559） 平均出块时间：2.5s**

**终结时间 : Polygon 有两种终结性概念** \*\*1.概率：\*\*这类似于大多数以太坊风格的区块链，其中规范链取决于完成的最多工作（最重）。在 Polygon 的案例中，Bor 层（即区块生产者层）的最终确定性取决于难度较高的分叉。 \*\*2. 可证明：\*\*这类似于 Tendermint/IBFT，在规范链上的绝对多数签名。这发生在Heimdall 层（这是 Polygon 的验证器管理和状态同步层），通过checkpointing。这些检查点被提交给以太坊。 重组和分叉可以发生在 Bor 层，但不能发生在 Heimdall。检查点是 Bor 链状态的快照。一旦一个块被包含在一个提交的检查点中，它就不能被重新组织（除非 >=1/3 的验证器集是不诚实的）。检查点大约每 25 分钟提交一次。

假设：本次swap交易为代表性交易，gas费目标15M，最大值30M。

![](https://storage.googleapis.com/papyrus_images/4138270c98e9a84446b333f617188e2aebc9e9ffa4fa93cf48dcd47386fe5f94.png)

交易平台 Joe平均每秒交易31.65 次，但由于其弹性出块时间，在最大吞吐量下， Avalanche C 链可以处理足够的气体以达到每秒 175.68 次交易。但是，将吞吐量维持在该水平会导致费用成倍增加。 平均出块时间：平均2 秒（Avalanche 是一种具有弹性出块时间的无领导者协议：只要支付足够的最低费用，就可以随时产生区块。Avalanche C 链曾有过在 1 秒内产生超过 10 个区块的时期.) 完成时间：出块后约 1.75 秒

假设：本次swap交易为代表性交易，当前 gas 费最大值为8M。

Avalanche 相对难以比较，因为它的区块生产机制与以太坊和 PoS 链不同。对于 Avalanche，它以最大吞吐量执行的操作与以平均吞吐量执行的操作之间存在很大差异。（像以太坊这样已经实现 EIP-1559 的链的平均吞吐量是其平均吞吐量的 2 倍。）

![](https://storage.googleapis.com/papyrus_images/4fcbfa28acffbec67283ff290377fd46236dda31401edd1b4f92c97cdcf91681.png)

**PancakeSwap每秒交易次数：194.60**（币安智能链不使用 EIP-1559，所以这是一个固定数字） **平均出块时间：3s 完成时间：75s**

假设：本次swap交易为代表性交易，gas上限为80M。

这结束了 EVM 区块链的基准测试——其虚拟机以以太坊为模型的区块链。由于所有 EVM 链都使用相同的 gas 模型，我们可以将 gas/sec 视为吞吐量的基准。实心条表示目标吞吐量，空心条表示限制。

![](https://storage.googleapis.com/papyrus_images/3ba578ec1556bf4df5ce6713dc5e105d9e6e39f37dd7b7a6fb1d9fac5b0d0f67.png)

`EVM 链的 gas/sec` 您可以想象，当您以绝对极限运行 EVM 时，会发生币安智能链。如果你想从智能合约中获得更高的性能，你将不得不完全远离 EVM。

![](https://storage.googleapis.com/papyrus_images/75d4940b00f661f1e880a06c04037223f837eed34cd01553f465ff318f07c386.png)

**每秒Orca交易次数：273.34 出块时间：590 毫秒 完成时间：13 秒**（Solana 也发出更快的“乐观确认”，但这些只能抵抗约 4.7% 的腐败。大多数 Dapps 都接受这个阈值。）

我们首先想为 Solana 找到一个等效的“gas 上限”。你在区块浏览器上找不到任何这样的数字。我们首先询问了一些我们认识的 Solana 开发人员，但似乎没有人确切知道是否存在这样的限制。于是我们进一步一探究竟。

我们首先了解到 Solana 确实有gas费机制，称为计算单元 (CU)，它在此处定义。从我们与验证者的对话来看，大多数人似乎认为 Solana 验证是“争分夺秒地在区块时间内打包尽可能多的交易”，但实际的限制是每个区块只能包含4800 万个 CU。 其次，只有有限数量的 CU 可在单个块中写入单个帐户。这个限制是为了防止过多的交易写入同一个账户，从而减少一个块的并行性——尽管这正是在大规模拥塞期间发生的事情，例如在 IDO 流行期间，所有交易都在竞争使用单个合约。 每个帐户的限制为12M。如果您遵循这个 12M 帐户 CU 限制、主网上 590 毫秒的出块时间以及每个 Orca 交换 74,408 CU的成本，我们得出的理论限制为273.34 交换/秒。 这个数字似乎低于预期！为了让我们相信这个数字，我们希望通过经验验证这种方法。

为了确认我们正确地测量了它的性能，我们决定直接对 Solana 进行垃圾邮件攻击测试。我们不想向主网发送垃圾邮件，因此我们针对 Solana 开发网。请注意，Solana 的开发网运行在较小的生态上，因此比主网具有更快的出块时间（380 毫秒对主网的 590 毫秒），与主网相比，这将提高其性能。给定 380 毫秒的出块时间，我们应该期望开发网每秒清除 424.40 次交换。 我们在 devnet 上向 Orca SOL-ORCA 交易对发送垃圾邮件，以查看我们可以在单个区块中进行多少 Orca 交换，然后推断为最大吞吐量。

![](https://storage.googleapis.com/papyrus_images/dd4a833059d00a7a0bd71eb139c9e317a90fe781fdf09a4981217aab796d9f52.png)

在Devnet 区块 106784857中，我们设法获得了 184 个 Orca 交换

我们测量到的最高数字是单个区块中包含 184 次交易信息。假设出块时间为 380 毫秒，这样我们算出 devnet 上的性能为 484.21 交换/秒。（请注意，区块时间并不准确，因此这些数字存在一些偏差。如果您在我们获得最多交易的 3 个区块中取平均值，它看起来更像是每秒 381 次交换，这似乎更合理）。这似乎证实了我们的分析是正确的（约 10-15% 的增量），因此这意味着 Solana 的主网可能在 AMM 上执行大约 273 次交换/秒。 当然这只是一次测试结果，所以我们鼓励您使用它并与我们分享您的结果。 我们在这里掩盖了大量细节，如果没有我们在 Blockdaemon 的朋友的帮助，这一切都是不可能的。如果您想了解执行此操作所需的详细信息（以及更深入地了解 Solana 内部结构），请查看第 2 部分，我们将介绍技术细节。

**Solana 通常会执行3000 TPS吗？**

区块浏览器衡量 Solana 的 TPS 的方式可能会产生误导——它将内部共识消息视为交易，这是其他区块链所没有的。Solana大约80% 的吞吐量是共识消息。除去这些，您将获得约 600 TPS，其中大部分是非常便宜的 Serum 交易。只要接触到足够多的其他合同，Solana 也可以在运行中实现更高的性能。

![](https://storage.googleapis.com/papyrus_images/b45f44c6715f2a3f514c08e882bf7d217e107478faed2e66aed06daf7300e883.png)

AMM 测试：Uniswap v2 风格的 swaps/sec 性能

**那么这一切的结果是什么？** 首先，不要把这当成福音，自己算算。 其次，请记住，所有这些区块链都是移动目标。它们不断被优化，技术也在迅速发展，而任何基准都是即时快照，我们希望看到更多独立组织创建的标准化基准，但这是我们最好的尝试。 第三，请注意，这些区块链之间的性能差异并不像宣传说的那么大。以太坊和最好的链之间的性能差异大约是 10-25 倍，而不是 100 倍或 1000 倍。没有人能从线性化的 VM 事务中获得如此出色的性能。这将需要更多的工作和优化。 第四，如果你想要真正的高性能，你必须放弃 EVM。我们在这里只对 Solana 进行了基准测试，但还有其他非 EVM L1公链，例如 NEAR 和 Terra，它们也实现了较高的性能。但与 Solana 一样，他们无法从 EVM 的工具和生态系统中受益。（尽管 NEAR 拥有与 EVM 兼容的Aurora shard，并且其他 L1 正在尝试开发类似的虚拟化 EVM 。） 第五，用户现在对非以太坊 L1 的性能并不那么敏感，他们更关心生态系统的整体实力、良好的用户体验和低费用。这些区块链目前没有在性能上竞争，因为它们实际上都没有在满负荷运转，除非在罕见的峰值期间，例如在 IDO 或市场崩溃期间。

我们预计所有主要 L1 的性能都会随着时间的推移而提高，因为开发团队会花费越来越多的时间来优化典型使用模式的性能。毫不奇怪，在早期阶段，这些区块链优化空间很大！ 但总的来说，我的印象是：以太坊是智能合约操作系统的 MS-DOS。但是当前的区块链将我们带入了 Windows 95 时代。

MS-DOS（左）到 Windows 95（右）

下一代区块链将有显着的技术升级，但从这里到主流采用还有很长的路要走。

原文链接： [https://medium.com/dragonfly-research/the-amm-test-a-no-bs-look-at-l1-performance-4c8c2129d581](https://medium.com/dragonfly-research/the-amm-test-a-no-bs-look-at-l1-performance-4c8c2129d581)

---

*Originally published on [会飞的鱼](https://paragraph.com/@yufly/amm-tps)*
