区块链的去中心化设计虽然带来了许多优势,但也使得交易处理的效率成为一个亟待解决的问题。执行层是区块链中处理交易并将其加入链中的核心部分,通过并行执行,我们可以大幅提升这一层的效率。本文将探讨并行执行的原理,并以以太坊为例,解释执行在交易生命周期中的位置。
交易从进入内存池开始,经过筛选和排序后,由 Builder 打包成区块。接着,Proposer 验证并提交区块,节点逐笔执行区块内的交易,更新状态。最后,验证者见证执行结果,确保区块的有效性。每个节点同步区块执行结果,形成新的状态根,保持链上状态的最新性。
传统的区块链采用顺序执行,每笔交易依次处理,更新状态,形成新的状态默克尔根。这种方式在高负载时容易导致拥堵。并行执行则允许多个交易同时处理,提高吞吐量,但需要解决状态冲突问题。
并行执行时,交易可能同时对同一数据进行操作,导致状态冲突。例如,两个交易同时更新同一个账户余额,结果可能不一致。为了解决这个问题,区块链系统通常采用冲突检测和回滚机制,或提前分析交易的依赖性,确保并行执行的正确性。
乐观并行先处理交易,发生冲突时再重新执行,依赖于对状态的快速预判。确定性并行则在交易排序时检查状态访问,避免冲突。这两种模式各有优劣,乐观并行可能提高性能,但冲突频发时会拖慢系统;确定性并行则增加了开发者的负担,但能避免冲突。
在以太坊虚拟机(EVM)中,状态存储采用默克尔树结构,更新状态需要递归计算根哈希,这使得并行更新变得复杂。解决状态冲突需要额外的机制,增加了实现难度。
例如,Solana 使用账户模型,每笔交易明确声明访问的账户和权限,避免路径冲突。Aptos 采用对象模型,每个对象独立存在,允许完全并行。这些设计在不同程度上解决了并行执行中的状态冲突问题。
一些项目如 Sui 和 Monad 尝试在 EVM 上实现并行。Sui 使用对象模型和状态隔离技术,乐观并行执行,发生冲突时使用回滚机制。Monad 通过静态代码分析预测交易依赖,并重构数据库以提高状态读取效率。这些尝试在提升效率的同时,也面临着复杂性和资源消耗的挑战。
并行执行是提升区块链执行层效率的重要手段,但需要解决状态冲突等问题。除了并行,优化执行环节还可以通过减少数据库读写操作来实现。选择是否采用并行技术,还需考虑对开发者的友好程度和对去中心化的影响。对于以太坊而言,并行执行并不是提升效率的最优解,尤其是在其 Rollup 中心化的路线图下。
丁丁打折网©版权所有,未经许可严禁复制或镜像 ICP证: 湘ICP备20009233号-2
Powered by 丁丁打折网本站为非营利性网站,本站内容均来自网络转载或网友提供,如有侵权或夸大不实请及时联系我们删除!本站不承担任何争议和法律责任!
技术支持:丁丁网 dddazhe@hotmail.com & 2010-2020 All
rights reserved