作者 | PAUL TIMOFEEV, MIKE JIN, AND GABE TRAMBLE
编译|白话区块链(ID:hellobtc)
如果说以分布式记账方式的比特币是区块链1.0,那么,以分布式状态机的方式实现去中心化应用( dApp )的以太坊则是区块链2.0。区块链网络从2008年发展到现在,不过才十几年的历史,但诞生了无数技术和商业模式的创新,从 Web3 基础设施到以 DeFi 、 NFT 、社交网络和 GameFi 等为代表的各种赛道,行业的蓬勃发展不断吸引新用户参与,这反过来也对产品体验提出了更高的要求。
而区块链不可能三角(Blockchain Impossible Triangle),又称为区块链三难问题,根据当前的技术,目前还无法很好的在同一个系统中同时实现所有要素。
因此自诞生以来,人们提出了各种各样的解决方案试图解决性能问题。这些解决方案大致可以分为两类:一类是链上扩容方案,如分片( sharding )和并行区块链;一类是链下扩容方案,如闪电网络、侧链和 Rollups 等。
今天我们就以Solana、Sei 和Monad 等案例,来看看业内的并行区块链的设计原理和发展状况。
以下为正文:
01
区块链交易
区块链是虚拟机器,一种基于去中心化物理计算机网络的软件计算模型,任何人都可以加入,但对于任何单个实体来说,想要控制它是极其困难的。
区块链的概念首次在中本聪(Satoshi Nakomoto)2008年撰写的比特币白皮书中出现,以作为实现比特币加密安全的点对点支付的核心基础设施。交易对于区块链来说就像日志对于社交媒体和互联网公司来说一样,它们作为该特定网络的活动记录,其关键区别在于区块链上的交易是不可变的,并且通常是公开可观察的。
但是交易到底是什么呢?
区块链上的交易是将数字资产从分布式账本上的一个地址转移到另一个地址,通过使用公钥密码学进行安全保护,可以用去中心化的点对点转账、也可以用于各种认证和验证过程来记录交易。
1)区块链交易的工作原理
当发起一笔交易时,例如Bob向Alice发送一些Token,Bob的交易会被分享到底层的区块链网络中。随后,网络上的专门节点群开始验证和确认该交易是否合法。一旦足够多的节点验证了交易的内容,该交易就会与其他用户的交易一起添加到一个区块中。当一个区块被填满后,它就会被添加到链上,因此得名为“区块链”。Bob的交易现在成为了一个安全透明的账本的一部分,他和Alice都可以验证其内容。
总的来说,所有区块链交易都包含元数据,指的是帮助运行和保护网络的节点识别和执行一组给定的指令和参数。每个交易都有原始发送者输入的高级数据,例如需要转移的金额、目标地址以及用于确认交易的数字签名,以及各种低级数据,这些数据会自动创建并附加,不过具体数据的形式会根据网络和设计的不同而有所差异。
然而,最终,在交易执行之前,在网络层背后涉及的过程会根据区块链的设计而有所不同。
内存池
内存池(或称为mempool)是传统区块链网络(如比特币和以太坊)中常见的一部分。内存池实际上是一种缓冲区或“等候室”,用于存放待处理的交易,这些交易尚未被添加到区块并执行。为了更好地理解,我们可以描述一下在使用内存池的区块链上交易的生命周期:
用户发起并签署一笔交易;
参与区块链网络的专门节点验证交易的内容,确保其合法,并包含适当的参数;
一旦验证通过,该交易与其他待处理交易一起被发送到公共内存池中;
最终,根据交易支付的gas费用相对于内存池中其他交易的情况,我们用户的待处理交易与其他待处理交易一起被选中形成区块链上的下一个区块。此时,我们的交易状态将显示为“成功”。
经过一段时间或基于区块数的阈值后,区块本身被最终确认,并且该交易成为记录在区块链上的不可变日志,除非发生51%攻击,否则几乎无法被篡改,而进行这样的攻击是一项非常困难的任务。
无内存池(Solana)
需要注意的是,一些区块链,如Solana,并不使用内存池,而是直接将交易转发给区块生产者,以实现通过连续的区块生产来实现高速度和吞吐量。
在无内存池的区块链上交易的生命周期是怎么样的呢?一起来看看:
用户为其正在使用的应用程序发起并签署一笔交易;
应用程序将交易信息路由到远程过程调用(RPC)服务器;
RPC提供者将交易发送给当前指定的区块生产者以及接下来的三个生产者;这是一种预防性措施,以防当前的领导者不能及时执行交易。Solana采用了一个槽位领导者计划,有助于RPC更轻松地路由交易;
区块生产者将已签名的交易发送给共识节点进行验证;
共识节点投票验证交易的内容,一旦完成,交易状态将通过RPC→ 应用程序→ 用户的路径返回,状态为“成功”或“失败”。
与基于内存池的区块链类似,区块本身在一定时间或达到基于区块的阈值后被最终确认。
2)顺序执行
较早的区块链,即比特币和以太坊,采用了顺序执行机制来处理交易。每次添加到区块链的交易都会引发网络状态的变化,为了安全起见,虚拟机结构被设计成一次只能处理一个状态变化。
这导致了底层网络吞吐量的严重瓶颈,因为可以添加到区块的交易数量受限,从而导致等待时间更长,交易成本出现前所未有的飙升,有时甚至使网络无法使用。此外,顺序执行模型在使用硬件组件时效率较低,因此无法从计算方面的突破,如多个处理器核心,获得好处。
02
并行执行
1)什么是并行执行?
并行计算是计算机体系结构的关键组成部分,其起源可以追溯到20世纪50年代末,尽管其理论和构想甚至可以追溯到1837年。按照定义,并行计算是指同时利用多个处理元素来解决一个操作的行为,其中将一个更大且更复杂的任务分解为较小的任务,比串行方式更高效地完成。
最初只在高性能计算系统中实施,随着互联网时代对计算需求的指数增长,并行计算已经发展成为如今计算机体系结构中的主导范式。
这种计算体系结构标准在区块链中也同样适用,只是计算机解决的主要任务是处理和执行交易,或者是从智能合约A向智能合约B的价值转移,因此称为并行执行。
并行执行意味着区块链不再按顺序处理交易,而是可以同时处理多个不冲突的交易。这可以极大地提高区块链网络的吞吐量,使其更具可扩展性和高效性,以处理更高负载的活动和对区块空间的需求。
举个简单的类比,考虑一家设有多个收银通道的杂货店的效率,与只有一个通道供所有顾客使用相比。
2)为什么并行执行很重要?
区块链中的并行执行旨在提高网络的速度和性能效率,尤其是在网络面临更高的流量和资源需求时。在加密货币生态系统的背景下,并行执行意味着如果Bob想要铸造最新的热门NFT收藏品,而Alice想要购买她最喜欢的Memecoin,网络将为两个用户提供服务,而不会在性能和用户体验方面有任何损失。
虽然这可能只是一个直观的生活质量特性,但通过并行执行解锁的网络性能改进为开发新的创新用例和应用提供了机会,这些用例和应用可以利用低延迟和大容量的特性,为将下一批大规模用户引入加密货币生态系统奠定了基础。
3)并行执行是如何工作的?
虽然并行执行的前提相对简单,但底层区块链设计的细微差别会影响并行执行过程的具体实施。设计具有并行执行功能的区块链最相关的特性是交易能够访问其底层网络的状态,包括账户余额、存储和智能合约。
区块链上的并行执行可以分为确定性和乐观性两种方式。确定性并行执行,比如Solana等区块链采用的方法,需要交易事先声明所有的内存依赖关系,即它们事先希望访问全局状态的哪些部分。虽然这一步骤为开发人员增加了额外的开销,但更广泛地说,它允许网络在执行之前对非冲突的交易进行排序和识别,从而创建出一个可预测和高效的优化系统。相反,乐观性并行执行的结构是为了同时处理所有交易,基于这样的假设,即不存在冲突。这使得底层区块链能够提供更快的交易执行速度,尽管在冲突发生时可能需要重新执行。如果发现提交了两个冲突的交易,系统可以重新处理和重新执行它们,无论是并行还是顺序执行。
为了更好地理解这些设计细节的影响,通过研究当前推动并行执行前沿的团队,可能会有所帮助。
4)如今并行执行的现状
为了更好地理解这些设计细节的影响,通过研究当前推动并行执行前沿的团队,可以更好地分析并行执行的意义。
03
虚拟机
1)Solana虚拟机(SVM)
Solana是第一个围绕并行执行设计的区块链网络,灵感来自创始人Anatoly Yakovenko在电信行业的经验。Solana旨在提供一个开发者平台,以物理学允许的速度运行,因此并行计算所释放出的速度和效率是一个简单而直观的设计选择。
实现Solana快速的速度和高吞吐量的关键组成部分是Sealevel(一项技术),该网络的并行智能合约运行时的环境。与基于EVM和WASM的环境不同,Sealevel采用了多线程架构,意味着它可以同时处理多个交易,以符合验证节点核心的容量。
实现Solana并行执行的关键在于,当启用一个交易时,网络会分配一系列指令来执行该交易,具体包括要访问的账户和状态以及要进行的更改,这是确定哪些交易是非冲突的并可以同时执行的关键,同时也使得试图访问相同状态的交易可以并发执行。参考标签在机场行李系统中提供的效率。
Solana还利用了自己定制的账户数据库Cloudbreak,用于存储和管理状态数据,以实现并发读写事务。Cloudbreak经过优化以实现并行执行,通过水平扩展将状态数据分布和管理在多个节点上。
由于其并行架构,Solana可以处理大量交易并且仍然快速执行,使交易几乎即时达到最终性。Solana目前平均每秒处理2000到10000个交易。此外,针对SVM的用例正在逐渐扩大,例如Eclipse团队正在推出旨在利用SVM作为执行环境的Layer 2基础设施。
2)并行EVM
并行EVM描述了一种新的区块链执行环境,旨在将Solana和以太坊的设计优点结合起来,具有Solana的速度和性能以及以太坊的安全性和流动性。通过并行处理交易而不是按照传统的EVM设计顺序执行,并行EVM使开发人员能够在高性能网络上构建应用程序,并能够利用与EVM流动性和开发工具的连接。
Sei Network
Sei Network是一个与EVM兼容的开源Layer1区块链,托管了许多围绕高性能构建的去中心化应用程序。Sei旨在为用户和开发人员提供快速速度和低成本,并行执行是实现这种性能和用户体验的关键组成部分。目前,Sei的主网提供了390毫秒的区块确认时间,并处理了超过19亿个交易。
最初,Sei采用了确定性并行执行模型,在该模型中,智能合约事先声明其所需的状态访问,以便系统能够同时运行非冲突的交易。随着V2升级的开始,Sei正在转向乐观性并行模型,这意味着所有交易在提交到网络后将被并行处理(执行阶段),然后将被与之前的交易进行冲突信息验证(验证阶段)。如果存在两个或多个冲突的交易,即试图访问相同网络状态的交易,Sei将识别冲突点,然后根据冲突的性质重新运行交易,可以是并行或顺序执行。
为了存储和维护交易数据,Sei还将引入SeiDB,这是一个定制数据库,旨在通过优化并行执行来改进V1的不足之处。SeiDB旨在降低存储冗余数据的开销,并实现高效的磁盘使用,以提升网络性能。V2减少了跟踪和存储所需的元数据量,并引入了预写日志,以在发生故障时帮助进行数据恢复。最后,Sei最近还宣布推出了其Parallel Stack,这是一个开源框架,用于使Layer2扩展解决方案(例如Rollups)能够利用并受益于并行执行。
Monad
Monad是一种即将推出的并行EVM Layer1区块链,为以太坊应用程序和基础设施提供完整的字节码和RPC兼容性。通过一系列创新的技术实现,Monad旨在提供比现有区块链更互动的体验,同时通过优化性能和可移植性来降低交易成本,具有1秒的区块时间和每秒高达10,000个TPS的最终性。
Monad实现了并行执行和超标量流水线技术,以优化交易的速度和吞吐量。类似于Sei V2,Monad将采用乐观执行模型,意味着网络开始同时执行所有传入的交易,然后分析和验证交易以查找冲突,并根据需要重新执行,最终目标是如果交易按顺序执行,结果将完全相同。
值得注意的是,为了与以太坊保持同步,Monad按照线性顺序对一个区块中的交易进行排序,每个交易按顺序更新。
为了比当前以太坊客户端提供更高效地维护和访问区块链数据,Monad创建了自己定制的MonadDB,原生构建用于区块链。MonadDB利用先进的Linux内核功能进行高效的异步磁盘操作,消除了同步输入/输出访问的限制。MonadDB提供异步输入/输出(异步I/O)访问,这是实现并行执行的关键功能,系统可以在等待读取先前交易的状态时开始处理下一个交易。
举个简单的类比,考虑做一道复杂的餐(意大利肉酱面)所涉及的步骤:1)准备酱料,2)煮肉丸,3)煮意面。一个高效的厨师会先烧开煮意面的水,然后准备酱料的材料,然后将意面放入沸水中煮,然后煮酱料,最后再煮肉丸,而不是一次只做一步,完成一个任务后再进行下一步。
3)Move
Move是一种编程语言,最初由Facebook团队于2019年为其已停用的Diem项目开发。Move旨在以安全的方式处理智能合约和交易数据,消除其他语言本地攻击向量(如重入攻击)。
MoveVM作为基于Move的区块链的本地执行环境,利用并行化来提供更快的交易执行速度和更高的整体效率。
Aptos
Aptos是基于Move开发的Layer1区块链,由前Diem项目成员开发,它实现了并行执行,为应用程序开发人员提供了高性能环境。Aptos利用了Block-STM,这是对软件事务性内存(STM)并发控制机制的修改实现。
Block-STM是一个多线程并行执行引擎,可以实现乐观并行执行。交易在区块内进行预排序和策略性排序,这是高效解决冲突并重新执行这些交易的关键。Aptos进行的研究发现,使用Block-STM的并行化技术,理论上可以支持高达160000TPS的吞吐量。Sui
与Aptos类似,Sui是由前Diem项目成员开发的Layer1区块链,使用Move语言。然而,Sui使用了自定义的Move实现,改变了原始Diem设计中的存储模型和资产权限。特别是,这使得Sui能够利用状态存储模型来表示独立的交易作为对象。每个对象在Sui的执行环境中具有唯一的ID,通过这种方式,系统可以轻松识别非冲突的交易并并行处理它们。
与Solana类似,Sui实现了确定性的并行执行,这要求交易预先声明它们需要访问的账户。Movement Labs是什么?
Movement Labs正在构建一套开发者工具和区块链基础设施服务,以便开发者能够轻松地利用Move进行开发。作为面向Move开发者的类似AWS的执行即服务提供商,Movement Labs将并行化作为核心设计特性,以实现更高的吞吐量和更高的整体网络效率。MoveVM是一个模块化的执行环境,使区块链网络能够根据需要扩展和调整其事务处理能力,以支持日益增长的交易量,增强其并行处理和执行交易的能力。
Movement还将推出M2,这是一个与EVM和Move客户端兼容的ZK-rollup解决方案。M2将继承Block-STM并行化引擎,并有望实现每秒数万笔的吞吐量。
04
小结
1)当今并行系统面临的挑战
在开发并行区块链时,需要思考一些重要的问题和考虑因素:
为了通过并行执行实现更好的性能,网络做出了哪些权衡?
少量的验证者可以提高验证和执行速度,但这是否会损害区块链的安全性,使验证者更容易共谋对抗网络?
是否有大量的验证者共同部署?这是一种在加密和非加密系统中都常见的减少延迟的策略,但如果特定数据中心受到威胁,网络会发生什么变化?
对于乐观并行系统,重新执行无效交易的过程是否会在网络扩展时造成瓶颈?这种效率如何进行测试和评估?
从高层次来看,并行区块链面临着分类账不一样的风险,即双重支付和交易顺序的变化(事实上,这是顺序执行的主要优势)。确定性并行化通过为底层区块链上的交易创建内部标记系统来解决这个问题;实施乐观处理的区块链必须确保用于验证和重新执行交易的机制安全且可用,并且为了性能而进行的权衡可以合理实现。
2)未来展望和机遇
计算机的发展历史告诉我们,并行系统随着时间的推移往往比顺序系统更高效和可扩展。后Solana时代的并行区块链的崛起凸显了这一概念在加密基础设施中同样适用。甚至以太坊创始人 Vitalik 最近也提到并行化是提高EVM Rollup可扩展性的潜在关键解决方案之一。
总体而言,加密/区块链的采用增长需要比当前系统更优化的系统,包括并行区块链。Solana最近的网络问题凸显了在开发并行区块链方面仍有很大改进空间。随着更多团队寻求推动链上领域的边界,并吸引下一批大规模用户和采用区块链本地应用和生态系统,并行执行模型为构建能够轻松处理大规模网络活动的系统提供了直观的框架,以达到与Web2公司相匹配的规模。
原文链接:https://www.shoal.gg/p/parallel-execution-the-next-generation
原文作者:PAUL TIMOFEEV, MIKE JIN, AND GABE TRAMBLE
END
推荐阅读
矿工日收入突破亿创纪录,比特币符文能否接力铭文?
资本热捧的USDe,会像UST一样脱锚归零吗?
终于,比特币挖开了黄金的“墙角”?
又一个不眠夜,比特币第四次减半后何去何从?
以太坊下一个目标:万链之母
『声明:本文为作者独立观点,不代表白话区块链立场,本内容仅供广大加密爱好者科普学习和交流,不构成投资意见或建议,请理性看待,树立正确的理念,提高风险意识。文章版权和最终解释权归白话区块链所有。』
喜欢请点「在看」👇