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