下一代区块链:并行执行
区块链是虚拟机,一种软件基础的计算模型,它运行在任何人都可以加入但极难被单一实体控制的分布式物理计算机网络之上。区块链的概念最初在中本聪 2008 年发表的比特币白皮书中被提出,作为支持比特币中加密安全点对点支付的核心基础设施。对于区块链而言,交易就像是社交媒体和互联网公司的日志;它们作为特定网络活动记录,关键的区别在于区块链上的交易是不可篡改的,通常也是公开可查询的。
交易究竟是什么
区块链上的交易涉及将数字资产从一个地址转移到分布式账本上的另一个地址,这一过程通过公钥密码学技术来保护。交易不仅可用于去中心化的点对点转账,还可用于各种认证和验证流程。
区块链交易如何运作
当一笔交易被发起时,比如 Bob 向 Alice 发送一些代币,Bob 的交易会被广播到底层的区块链网络。随后,网络中的一群专门节点开始工作,验证并确认交易的合法性。一旦足够多的节点验证了交易内容,这笔交易就会被添加到一个区块中,并与其他用户交易一起被打包。当一个区块满了,它就会被添加到区块链上,这就是“区块链”名称的由来。此时,Bob 的交易成为了一个安全且透明的账本的一部分,他和 Alice 都可以验证交易内容。
一般来说,所有区块链交易都包含了元数据,这些数据帮助操作和保护网络的节点识别并执行一组给定的指令和参数。每一笔交易都会有发送者输入的高层级数据,比如要转移的金额、目的地地址和用来确认交易的数字签名,以及自动创建和附加的各种低层级数据,尽管这些数据会根据网络和设计的不同而有所变化。
然而,交易执行前在网络层面背后所涉及的过程会根据区块链的设计而有所不同。
内存池( Ethereum )
内存池(memory pool)简称 mempool,是区块链设计中的一个常见特性,传统区块链网络如比特币和以太坊都存在内存池。Mempools 本质上是缓冲区或“等待室”,用于存放那些尚未被添加到区块中执行的待处理交易。
为了更好地理解,我们可以概述一下在采用 mempool 的区块链上,交易的生命周期:
用户发起并签署一笔交易。
参与区块链网络的专门节点验证交易内容的合法性,并确保其包含适当的参数。
一旦验证通过,交易就会被路由到公共 mempool,并与其他待处理交易一起等待打包。
最终,根据用户为交易支付的燃气费相对于 mempool 中其他交易的燃气费,用户的待处理交易会被选中,并与其他待处理交易一起形成区块链上的下一个区块。此时,交易状态将显示为“成功”。
在一定时间或区块生成阈值过后,区块本身将被最终确定,交易成为记录在区块链上不可篡改的日志,除非发生 51% 攻击,否则这是极难实现的。
无内存池 (Solana)
值得注意的是,一些区块链,如 Solana,并不使用 mempool,而是直接将交易转发给区块生产者,以此来实现高速和高吞吐量,通过连续的区块生产。
让我们继续通过非 mempool 区块链上的交易生命周期来了解:
用户为其正在使用的应用程序发起并签署交易。
应用程序将交易信息路由到远程过程调用(RPC)服务器。
RPC 提供商将交易发送给当前指定的区块生产者,以及接下来的三个生产者;这是在当前领导者无法及时执行交易时的预防步骤。Solana 采用了时隙领导者计划,这有助于 RPC 更容易地路由交易。
区块生产者随后将已签名的交易发送给共识节点进行验证。
共识节点投票验证交易内容,一旦完成,交易状态就会被路由回 RPC > 应用程序 > 用户,显示为“成功”或“失败”。
与基于 mempool 的区块链类似,区块本身在一定时间或基于区块的阈值通过后会被最终确定。
顺序执行
较老的区块链,尤其是比特币和以太坊,采用交易的顺序执行机制。每笔添加到区块链上的交易都会引发网络状态的变化,而虚拟机(VM)被设计为仅为了安全起见一次只处理一个状态变化。
这导致了底层网络吞吐量的显著瓶颈,因为能够添加到区块中的交易数量受到限制,导致等待时间变长,交易成本的空前飙升,有时甚至使网络无法使用。此外,顺序执行模型使用硬件组件的效率相当低,因此无法从计算的突破性进展中受益,比如多处理器核心。
并行执行
并行计算是计算机架构的关键组成部分,其起源可以追溯到 20 世纪 50 年代末,尽管其理念和理论甚至可以追溯到 1837 年。根据定义,平行计算指的是同时使用多个处理元素来解决一个操作,其中将一个更大更复杂的任务分解为更小的任务,以便比串行方式更有效地完成。
最初仅在高性能计算系统中实施,随着互联网时代对计算的需求呈指数级增长,以及过去几十年频率缩放限制的加剧,平行计算已经演变成当今计算机架构中的主导范式。
这种架构标准同样适用于区块链,只是计算机解决的主要任务是处理和执行交易,或者从智能合约 A 到智能合约 B 的价值转移,因此称为并行执行。
并行执行意味着,区块链不是按顺序处理交易,而是可以同时处理多个不冲突的交易。这可以大大增加区块链网络的吞吐量,使其更具有可扩展性,更有效地处理更高的活动负载和区块空间的需求。
为了简化理解,可以想象一下杂货店的结账效率:有多个通道供顾客结账,与只有一个通道供所有人使用相对比。
为什么并行执行很重要
区块链中的并行执行旨在提高网络的速度和性能,尤其是在网络看到更高的流量和资源需求时。在加密生态系统的背景下,如果 Bob 想铸造最新的流行 NFT 系列,而 Alice 想购买她最喜欢的模因币,网络将同时为两个用户服务,而不会影响性能和用户体验。
虽然这可能看起来只是一个直观的生活质量特性,但并行执行所开启的网络性能提升为开发创新的用例和应用程序铺平了道路,这些应用程序可以利用低延迟和高容量,这本身为将下一批大规模用户群体引入加密生态系统奠定了基础。
并行执行如何工作
尽管并行执行的概念相对直接,但底层区块链设计的细节影响了并行执行过程本身的表现。设计具有并行执行的区块链的最重要特性是交易能够访问其底层网络的状态,包括账户余额、存储和智能合约。
区块链上的并行执行可以被归类为确定性或乐观性。确定性并行执行,如 Solana 所采用的,本质上要求交易事先声明所有内存依赖关系,即它们事先想要访问的全局状态的哪些部分。虽然这一步为开发人员创造了额外的开销,但它允许网络在执行前对不冲突的交易进行排序和识别,创建了一个可预测和高效的优化系统。相反,乐观的并行执行结构是为了并行处理所有交易,基于没有冲突的假设。这使得底层区块链能够提供更快的交易执行速度,尽管如果发生冲突,可能需要之后的潜在重新执行。如果发现两个冲突的交易,即尝试访问相同网络状态的交易,系统可以重新处理和重新执行它们,无论是并行还是顺序。
为了更好地理解这些设计细节的影响,通过当今推动并行执行前沿的团队的视角来分析并行执行可能会有所帮助。
当下并行执行的市场格局
Solana 虚拟机(SVM)
Solana 是第一个围绕并行执行设计的区块链网络,其灵感来自创始人 Anatoly Yakovenko 在电信行业的以往经验。Solana 旨在提供一个开发平台,其运行速度尽可能快,因此并行计算的速度和效率是一个简单直观的设计选择。
Sealevel 是 Solana 网络的并行智能合约运行时环境,是实现其快速速度和高吞吐量的关键组件。与基于 EVM 和 WASM 的环境不同,Sealevel 采用多线程架构,这意味着它可以在验证器核心的容量范围内同时处理多个交易。
Solana 并行执行的关键是在启用交易时,网络会为该交易分配一系列要执行的指令,具体是访问哪些账户和状态以及进行哪些更改——这是确定哪些交易不冲突并且可以同时执行的关键,同时也允许尝试访问相同状态的交易同时进行。
考虑机场托运行李系统中标签提供的效率。
Solana 还利用 Cloudbreak,其自定义的 accountsDB,用于存储和管理状态数据,以支持交易的并发读写。Cloudbreak 针对并行执行进行了优化,可以水平扩展以跨多个节点分布和管理状态数据。
得益于其并行架构,Solana 能够处理大量交易,同时仍然快速执行,为交易提供近乎即时的最终性。Solana 目前平均每秒处理 2,000 到 10,000 笔交易(TPS)。此外,随着像 Eclipse 这样的团队推出旨在利用 SVM 作为执行环境的 Layer 2 基础设施,SVM 的用例正在缓慢但稳步扩展。
并行EVM
Parallel EVM 描述了一种新的区块链执行环境,旨在结合 Solana 和 Ethereum 设计的优点,即 Solana 的速度和性能以及 Ethereum 的安全性和流动性。与传统的 EVM 设计不同,通过并行而不是顺序处理交易,Parallel EVM 使开发人员能够在一个高性能网络上构建应用程序,同时能够利用与 EVM 流动性和开发工具的连接。
Sei Network
Sei Network 是一个与 EVM 兼容的开源 Layer 1 区块链,它支持围绕高性能构建的各种去中心化应用程序。Sei 旨在为用户和开发者提供快速的速度和低成本,而并行执行是实现这一性能和用户体验的关键组成部分。目前,Sei 提供了 390 毫秒的区块确认时间,并在其太平洋主网上处理了超过 19 亿笔交易。
最初,Sei 采用了确定性并行执行模型,智能合约提前声明其所需的状态访问,以便系统能够同时运行不冲突的交易。随着他们 V2 升级的到来,Sei 正在过渡到一个乐观的并行模型,这意味着所有交易将在提交到网络时并行处理(执行阶段),然后在验证阶段检查与先前交易的冲突信息。如果发现两个或更多的冲突交易,即尝试访问相同网络状态的交易,Sei 会识别这一冲突点,然后根据冲突的性质,要么并行要么顺序地重新运行交易。
为了存储和维护交易数据,Sei 还将引入 SeiDB,这是一个定制数据库,旨在通过优化并行执行来改进 v1 版本的不足之处。SeiDB 的目标是减少存储冗余数据的开销,并保持高效的磁盘使用率,以提高网络性能。V2 减少了跟踪和存储所需的元数据量,并启用了预写日志,以帮助在崩溃事件中恢复数据。
最后,Sei 最近还宣布推出了其 Parallel Stack,这是一个开源框架,用于使 Layer 2 扩展解决方案(例如 rollups)能够利用并行执行并从中受益。
Monad
Monad 是一个即将到来的并行-EVM Layer 1 区块链,为以太坊应用程序和基础设施提供完整的字节码和 RPC 兼容性。通过一些创新的技术实现,Monad 旨在在保持较低交易成本的同时,通过优化性能和可移植性,提供比现有区块链更具互动性的体验,具有 1 秒的区块时间和高达 10,000 TPS 的最终确定性。
Monad 实现了并行执行和超标量流水线技术,以优化交易的速度和吞吐量。类似于 Sei v2,Monad 将采用乐观执行模型,这意味着网络将开始同时执行所有传入的交易,然后分析和验证交易以寻找冲突并相应地重新执行,最终目标是,如果交易按顺序执行,结果将是相同的。
重要的是要注意,在与以太坊保持同步的同时,Monad 会以线性顺序对区块中的交易进行排序,并顺序更新每个交易。
为了比当前以太坊客户端提供的状态更有效地维护和访问区块链数据,Monad创建了自己的定制 MonadDB,这是为区块链本地构建的。Monad DB 利用先进的 Linux 内核特性,实现高效的异步磁盘操作,消除了同步输入/输出访问的限制。MonadDB 提供异步输入/输出(async I/O)访问,这是实现并行执行的关键特性,系统可以在等待读取先前交易的状态的同时开始处理下一笔交易。
一个简单的类比是,考虑烹饪一个多步骤的餐点(比如肉丸意面)。所涉及的步骤是1)准备酱汁,2)煮肉丸,和3)煮面条。一个高效的厨师会先为面条煮水,然后准备酱汁的配料,然后在现在沸腾的水中煮面条,接着煮酱汁,最后煮肉丸,而不是一次完成一个步骤,每完成一个任务后再进行下一个。
Move
Move 是一种编程语言,最初由 Facebook 团队在 2019 年为现已废弃的 Diem 项目开发。Move 旨在以安全的方式处理智能合约和交易数据,消除了其他语言固有的攻击向量,如可重入性攻击。
MoveVM 作为基于 Move 的区块链的本地执行环境,利用并行化提供更快的交易执行速度和更高的整体效率。
Aptos
Aptos 是由前 Diem 项目成员开发的基于 Move 的 Layer 1 区块链,它通过并行执行提供了一个高性能的环境给应用开发者。Aptos 利用 Block-STM,这是一种软件事务内存(STM)并发控制机制的修改实现。
Block-STM 是一个多线程并行执行引擎,它允许乐观并行执行。交易在区块内被预排序和策略性地排序,这对于有效解决冲突和重新执行交易至关重要。Aptos 的研究发现,使用 Block-STM 的并行化理论上可以支持高达 160,000 TPS。
Sui
与 Aptos 类似,Sui 是由前 Diem 项目成员开发的 Layer 1 区块链,它也使用 Move 语言。然而,Sui 采用了自定义的 Move 实现,该实现从原始的 Diem 设计中改变了存储模型和资产权限。特别是,这允许 Sui 使用状态存储模型将独立交易表示为对象。每个对象在 Sui 的执行环境中都有唯一 ID ,从而允许系统轻松识别不冲突的交易再并行处理它们。
与 Solana 类似,Sui 实施了确定性并行执行,要求交易提前声明它们需要访问的账户。
Movement Labs
Movement 正在构建一套开发者工具和区块链基础设施服务,以便开发者能够轻松访问在 Move 上构建的好处。作为 Move 开发者的 AWS 类执行即服务平台,Movement 将并行化作为核心设计特性,以实现更高的吞吐量和更大的整体网络效率。MoveVM 是一个模块化的执行环境,它允许区块链网络根据需要扩展和调整其交易处理能力,以支持日益增长的交易量,增强其并行处理和执行交易的能力。
Movement 还将推出 M2,这是一个将与 EVM 和 Move 客户端互操作的 ZK-rollup。M2 将继承 Block-STM 并行化引擎,并有望因此实现数万 TPS。
并行系统的挑战
关于并行区块链的发展,有一些重要的问题和考虑需要深思:
网络为了通过并行执行实现更好的性能而做出了哪些权衡?
较少的验证者保护网络可以加快验证和执行速度,但这是否会妥协区块链的安全性,使其更容易受到验证者的共谋攻击?
是否有大量的验证者共址?这是一种在加密和非加密系统中都常见的最小化延迟的策略,但如果特定数据中心受到威胁,网络会发生什么?
对于乐观的并行系统,重新执行无效交易的过程是否会随着网络的扩展而成为瓶颈?这种效率是如何被测试和评估的?
从高层次来看,平行区块链面临着账本不一致的风险,即双重支付和交易顺序的变化(这确实是顺序执行的主要好处)。确定性并行化通过在底层区块链上为交易创建一个内部标记系统来解决这个问题。实施乐观处理的区块链必须确保它们用来验证和重新执行交易的机制是安全和实用的,并且为了性能所做的权衡可以合理实施。
未来展望
计算机的历史告诉我们,随着时间的推移,平行系统往往比顺序系统更有效和可扩展。Solana 之后的并行区块链的崛起强调了这一概念也适用于加密基础设施。即使是 Vitalik 也提到并行化为提高 EVM rollups 可扩展性的潜在关键解决方案之一。广义上讲,加密/区块链的采用增长需要比今天可用的系统更优越的系统,包括并行区块链。Solana 最近的网络挑战突出了并行区块链开发中还有很大的改进空间。随着更多的团队寻求推动链上前沿的界限,并将下一批大规模用户群体和采用引入到区块链原生应用和生态系统中,平行执行模型为构建能够高效处理网络活动量级、轻松匹配 Web2 公司规模的系统提供了一个直观的框架。