以太坊作为全球领先的智能合约平台,其核心是以太坊虚拟机(EVM)来执行智能合约代码,在早期,以太坊面临着与许多区块链类似的挑战:如何在保证安全性和去中心化的前提下,提升交易处理的效率和吞吐量,即实现有效的并发处理,本文将深入探讨以太坊实现并发的不同方式,从其最初的“伪并发”模型到当前向多线程演进的各种尝试与实现。

早期以太坊的“伪并发”模型:单线程执行与交易排队

在以太坊的早期阶段和许多其他区块链(如比特币)中,交易处理本质上是单线程的,其并发模型可以概括为“顺序执行 + 交易排队”:

  1. 交易池(Mempool):用户发起的交易首先进入节点的交易池,交易池是一个暂存区域,交易在这里等待被矿工打包进区块。
  2. 交易排序:矿工(或验证者)从自己的交易池中选择交易,并按照一定的规则(如Gas Price高低、交易发起时间等)进行排序,这个排序过程决定了交易的执行顺序。
  3. 区块打包与顺序执行:矿工将选定的交易打包成一个区块,广播到网络中,其他节点在验证区块时,会严格按照区块中交易的顺序,在EVM上逐个执行这些交易,每个交易执行完成后,其状态变更(如账户余额、合约存储)才会应用到以太坊的全局状态中,下一个交易才能开始执行。

这种模型的“并发”体现在何处?

  • 网络层面的并行:不同的节点可以并行验证不同的区块(如果它们分叉了)。
  • 交易池的并行处理:节点可以并行接收和广播交易。

但这种模型的局限性非常明显

  • 吞吐量低:由于交易必须严格顺序执行,一个复杂交易的执行会阻塞后续所有交易的执行,导致TPS(每秒交易处理量)较低。
  • 性能瓶颈:EVM的单线程执行模型无法充分利用现代多核CPU的计算能力。
  • 延迟问题:用户交易需要等待前面的交易执行完毕,确认时间较长。

以太坊2.0的基石:分片(Sharding)与跨分片通信

为了从根本上解决可扩展性问题,以太坊2.0引入了分片技术,这是实现真正意义上大规模并发处理的核心方案。

  1. 分片的基本概念随机配图