译者注:本文为英文原文翻译,如有疑问,请参考原文链接。
无论是在传统的数据库领域还是在区块链技术中,并行执行模型的设计都较为复杂。 这是因为,在设计过程中,需要综合考虑多个维度,而每个维度的选择都会对系统的整体性能和可扩展性产生深远影响。本文将深入探讨当前最具代表性的几种区块链执行层并行架构,并详细呈现我们针对这些架构在性能和可扩展性方面所做的实验结果。
从一个维度来说,区块链领域一直处在对链的高性能和高可扩展性的持续追求中。即使在多链系统和Layer 2系统出现后,每个智能合约的执行能力仍受限于单一虚拟机VM的能力。随着并行虚拟机(Parallel VM)的出现,这一局限得到了突破。并行虚拟机允许单个智能合约的交易在多个EVM/VM上同时执行,从而利用更多的CPU核心来提高性能。
我们认为,在众多支持并行VM的高性能区块链系统中,Sei(V2)、Aptos、Sui、Crystality和PREDA最具代表性,每个系统都具备设计上的独特优势。
在本文开篇,我们展示了第一组实验结果。下图展示了在128核的机器上,执行相同的ERC20智能合约时,Sei、Aptos、Sui、Crystality和PREDA的每秒交易数(TPS)的绝对值。从这组实验结果来看,PREDA模型在五个并行执行系统的TPS和可扩展性比较中占据了显著优势。
其他实验数据和分析,我们将在后文详细展开。
https://lh7-rt.googleusercontent.com/docsz/AD_4nXf4FKiDhF-b8Z58VZWYMyzpXoijVROZmpcdHiEtgEjcQBlmGNPW-jbn_BYvA0GprfxyGxeEkXEw-tWtv5ZEwFZr9Xl8hd6UyA6f1lsQoLXHgrRPM7MOluIrKnqkzYHiXd9Pcy87swtifHVHnDTueCXNU4I?key=jTfkx_omQRc7yL1uKcft3w
以下,我们将详细说明我们实验中的具体方法和操作:
我们首先比较了五个系统的TPS值,即吞吐量。在不同链上进行的TPS对比实验中所用的交易量相同。
考虑到不同系统中采用的不同编程语言和底层虚拟机不同,单一的吞吐量比较不能完全说明系统的优劣,我们还进行了相对加速结果即Speedup Ratio的比较,即同样数量的交易在多个VM相对于在一个VM上执行的加速效果。在Sui、Aptos、Crystality和PREDA中,每个线程都分配了一个专用CPU core。
所有详细的实验数据,包括绝对TPS值和加速比,请参阅完整的实验报告。
下表中展示了实验中所用的数据来源、实施过程和评估方法。
硬件配置 | 在一台高性能多核机器上进行实验,该机器配备了两颗AMD EPYC 7742 CPU(64核,2.25GHz - 3.4GHz最大加速)和2TB内存,运行Linux Ubuntu 20.04。 |
---|---|
软件配置 | ● 上述评估集中在以太坊上的ERC代币转移实验。本文接下来的评估涉及各种智能合约,包括ETH转账、投票、空投、CryptoKitties和MillionPixel,这些合约最初都在以太坊上部署和执行。 |
● 对于Sei,使用标准的Solidity合约。对于Sui和Aptos,分别使用Sui Move和Aptos Move语言实现等效合约。 | |
● 对于PREDA和Crystality的评估,分别使用PREDA语言和在Solidity基础上的扩展语言实现等效合约,其中Crystality合约通过其源代码到源代码转译器转换为标准的Solidity合约。 | |
实验设置 | 这些五个系统的最新开源代码均从其GitHub库中获取。具体如下: |
● Sei (V2): main branch, commit ID 867a…71a3 | |
● Aptos: main branch, commit ID a182...7b0b | |
● Sui: testnet branch, commit ID 4dbc...c9a0 | |
● Crystality: testnet branch, commit ID a8cf...6a98 | |
● PREDA: main branch, commit ID 13e9...1806 | |
数据来源 | 在Sei中,每个轻量级的Goroutine由其Go运行时管理。使用随机生成的交易对ERC20、投票、空投、CryptoKitties和MillionPixel合约进行评估。具体而言,每个系统生成10,000个地址和100,000笔交易。 |
对于TokenTransfer,重放了历史ETH交易。历史数据集包括2024年1月的ETH转账交易,准备了100,000笔连续交易的批次。结果显示了第一个批次的情况,包括2024年1月1日凌晨12:00至04:48(UTC)的区块高度18,908,895至18,910,315之间的100,000笔交易。经过适当格式转换后,该数据集在所有五个系统上分别重放。 | |
说明 | |
在评估中,采用了相似的系统设置进行并行执行,排除了共识开销,但包括了其他元素,如交易签名验证。所有五个系统均配置在其单节点基准测试框架中,并尽可能优化性能。 |
Aptos 和 Sui两个项目,都衍生于 Meta( 曾名Facebook)宣告失败的区块链项目 Diem。两个项目均由前 Meta 工程师创立——Aptos 由 Avery Ching 创立,Sui 由 Sam Blackshear 创立。二者随后沿循的技术路线却不尽相同,Aptos 严格遵循为 Diem 开发的原始 Move 编程语言,但 Sui 对 Move 进行了大量修改。
接下来,我们将探讨 Aptos 和 Sui 的并行化模型的差异,分析它们采取的不同方法如何影响性能,并重点介绍它们各自的优势。
Aptos 是一个 Layer 1,通过乐观并行化机制实现智能合约的并行执行,从而提升高性能。具体来说在乐观并行化中,交易被初步假设为无状态冲突并以并行方式执行。执行后,系统会检查冲突,并通过回滚和串行执行方式或通过不同的调度,重新执行冲突交易来解决冲突。这种推测执行方法假设大多数交易不会发生冲突,从而最大化并行执行的优势,同时提供了处理冲突的备用机制。