本文由比特根编辑团队撰写,聚焦区块链智能合约在并发与并行处理上的根本挑战。我们将剖析以太坊当前的性能瓶颈,探讨底层账本模型对交易吞吐的影响,并提出可能的技术路径。想了解未来高效合约执行的关键因素,请继续阅读。
区块链智能合约中的并发性和并行性
以太坊很慢——极其缓慢。
最近我做了一个简单的 USDC 授权交易,花了约 3 小时才完成验证。
还有一个更具启发性的统计数据:以太坊平均每 10~20 秒产生一个区块,每个区块容纳不足 350 笔交易,折算下来大约是每秒 30 笔交易。
在批评以太坊的慢时,常会拿 Visa 的 2000 TPS 进行对比。也许这并不公平,因为以太坊仍处于持续研发阶段。
无论如何,以太坊在短期内难以主导数字金融。其低吞吐量是一个根本性瓶颈。

以太坊是基于账户的区块链:账本状态被表示为从账户地址到一段数据的键值映射。
一次普通的 ETH 转账(价值转移)只会增减相应账户的 ETH 余额;更复杂的交易(合约调用)则会修改指定账户的数据。
因此,以太坊交易本质上是全局账本状态的转换函数,这正是以太坊虚拟机(EVM)能够实现图灵完备并支持智能合约的原因——智能合约实际上是可交互的账户数据。
下面来看 EVM 如何处理或验证这些交易。并行处理所有交易并不可行。按照设计,所有交易都可能改变全局状态。
如果交易并行执行,EVM 将面临竞争条件:例如两个交易同时尝试递增同一个 uint 变量,结果只会增加一次而不是两次。
为避免此类并发错误,以太坊选择顺序执行交易。换言之,EVM 是一个单线程的状态机。
所以,以太坊实现的是 并发(Concurrency),而非 并行(Parallelism)。
可以把以太坊想象成只有一个出纳员的排队系统,排队的对象是待验证的交易,唯一的出纳员就是虚拟机。考虑到 gas 费用后,情况更为复杂——任何人都可以额外付费“插队”。当队列过长时,那些不愿或无法支付更高费用的用户只能等待更久。
低吞吐量在 Web3.0 场景下尤为突出。以太坊已经成为众多 Web 应用的底层平台。如果其吞吐量保持现状,诸如为 Reddit 上的一条评论加赞这样微不足道的操作,可能需要两个小时以上才能完成。我们处在一个速度决定成败的时代,以太坊的慢速已成为瓶颈。
有人会问,为什么不对冲突的交易采用并发处理,例如对同一账户的价值转移进行并行,而对其余交易并行执行?遗憾的是,Saraph 与 Herlihy 已经证明,此类加速最多只能带来适度提升。
为提升以太坊的可扩展性,已经提出了多种方案。近期的 EIP‑1559(伦敦硬分叉)虽不直接提升交易速度,但理论上能通过降低普通用户在交易处理前需等待的潜在区块数量,减缓大额交易高峰期的波动。随后出现的 Layer‑2 Rollup,则有望在不牺牲区块链去中心化信任的前提下,显著提升吞吐量。
与此同时,其他模拟通用虚拟机的区块链也在积极研发中。一些项目已经实现并行处理,承诺的吞吐量远超以太坊的 30 TPS。值得关注的包括 Algorand、Solana、Cardano 等,它们各自采用了在智能合约层面实现并行化的独特方式。
以上即为区块链智能合约中并发性与并行性的概述,更多相关资料请关注 Bitaigen(比特根)的其他文章。
关键要点
- 以太坊每秒约30笔交易,吞吐量有限
- EVM 采用顺序执行,避免状态冲突
- 以太坊实现并发而非并行处理
- Layer‑2 Rollup 可提升交易吞吐量
- Algorand、Solana 已实现并行
常见问题
以太坊的交易吞吐量大约是多少?
根据文章统计,以太坊平均每 10~20 秒产生一个区块,每个区块容纳不足 350 笔交易,折算下来约为每秒 30 笔交易(约 30 TPS),远低于传统支付网络的吞吐量。
以太坊为什么只能顺序执行交易?
以太坊的账本是全局状态映射,任何交易都可能修改同一份状态。若并行执行会产生竞争条件,例如两个交易同时递增同一变量只能生效一次。为避免此类并发错误,EVM 采用单线程顺序执行,确保状态一致性。
以太坊实现的是并发还是并行?
文章指出,以太坊实现的是并发(Concurrency),即多个交易在排队等待处理,但实际执行是单线程的顺序处理,属于并发而非真正的并行(Parallelism)。
EIP‑1559 对提升交易速度有何作用?
EIP‑1559(伦敦硬分叉)本身不直接提升区块链的处理速度,但通过引入基本费用和小费机制,降低用户在交易被打包前需要等待的潜在区块数量,从而在高峰期缓解拥堵,间接改善用户体验。
哪些区块链已经实现了智能合约并行处理?
文章提到 Algorand、Solana、Cardano 等项目在智能合约层面采用了并行化设计,承诺的吞吐量远超以太坊的约 30 TPS,展示了在并行处理方面的技术探索。
💡 注册币安使用邀请码 B2345 享平台手续费折扣。详见 币安完整教程。