以太坊仍在致力于并行 EVM 的补充计划,但比特币很快就会推出自己的并行 VM 第 2 层。
我们首先来了解一下为什么以太坊无法实现并行EVM。
为了保持网络一致性和安全性,EVM 在其设计中有一个关键特性:交易按顺序执行。顺序执行可确保交易和智能合约可以以确定的顺序执行,从而更易于管理和预测区块链的状态。这种设计选择优先考虑安全性,减少了与并行执行相关的潜在复杂性和漏洞。然而,在交易请求负载较高的情况下,这种顺序执行可能会导致网络拥塞和延迟,类似于单车道高速公路。
单纯增加通道可行吗?参考现有的所谓并行虚拟机解决方案,包括像 Near 这样的分片链。这些链提出通过引入更多虚拟机来扩展智能合约,从而实现区块链的扩展。本质上一个智能合约的工作量仍然在某个虚拟机上。如果这条链上的所有智能合约都消耗相同数量的 TPS,那么问题就解决了。但是,如果只有少数合约(例如 Aave 和 Uniswap 协议)消耗了 90% 以上的区块空间,那么在单个分片上运行合约意味着只能在链级别扩展,而无法受益于分片带来的改进。增加通道而不能切换通道代表了当前虚拟机并行化的困境。
并行EVM在数据层涉及到数据的切割或缓存,但受限于EVM的编程模型,作为目前最流行的智能合约编程语言,Solidity无法充分发挥区块链并行架构的潜力,就好比在NVIDIA的GPU上不能用SQL编程一样,Solidity缺少Relay Execution等并行架构的表达,也缺少对并行交易最终原子性的定义。
区块链架构中真正的并行性需要实现一个智能合约的交易可以同时在多个虚拟机上运行。需要像 CUDA 这样的编程模型来充分利用区块链架构中的并行模型。
比特雷克斯 提到比特币引入了图灵完备的并行虚拟机第 2 层,为比特币生态系统中的实际应用提供底层基础设施支持,以及并行虚拟机的专属编程模型 PREDA。
BitReXe 如何在比特币上实现并行虚拟机
并行虚拟机
下图突出显示了 BitReXe 与其他推广并行虚拟机的计划之间的区别。如图最左侧部分所示,以太坊遵循单机状态模型,其中所有代码(智能合约)和状态(数据)都由每个区块链节点通过其以太坊虚拟机 (EVM) 复制和管理。现有项目使用并行 EVM,如图中间部分所示,其中单个智能合约部署在专用虚拟机上(或指定分片内的虚拟机以维持共识)。与智能合约有关的所有交易都由虚拟机(或以完全复制的方式分片的虚拟机)处理。
在 BitReXe 的统一并行化模型中,如图最右侧所示,所有智能合约都部署在网络的所有虚拟机上。智能合约的状态在不同的虚拟机实例之间进行分区和分配,确保分配不重叠。相应地,智能合约的交易被分段和分布,以便在虚拟机之间独立和并行处理。在理想情况下,这种方法有助于随着虚拟机数量的增加,整体交易吞吐量和状态容量实现线性扩展。
主要挑战在于有效地管理执行逻辑(代码)和合约状态(数据)之间的依赖关系,同时实现独立的虚拟机执行并避免同步,因为交易的综合执行逻辑可能需要访问合约状态的多个部分,每个部分在状态分区后驻留在单独的虚拟机中。
教
我们提出并行中继执行分布式架构(教),一种突破性的编程模型,旨在扩展分片区块链、平行链系统和第 2 层区块链上的智能合约。PREDA 支持并行架构:如果将以太坊的 Solidity 比作在单核 CPU 上编程,那么 PREDA 的 BitReXe 并行架构类似于 NVIDIA GPU 的 CUDA。
PREDA 模型引入了两个关键组件:(1)“可编程合约范围”,使程序员能够根据应用程序的数据访问模式定义合约状态分区,缩小数据访问范围并最大限度地减少数据依赖性;(2)“异步功能中继”,使程序员能够将交易逻辑与隐式数据依赖性联系起来,以便在多个执行引擎 (VM) 上灵活执行。PREDA 作为一种扩展的 Solidity 语言实现,包括可编程合约范围的附加语法和异步功能中继的语句。
该图展示了简化版 ERC20 合约的 PREDA 版本。关键字“@address”定义了用户余额的范围,相当于 Solidity 的映射定义,但指定了按地址分区的细粒度和可分离状态。在运行时,按地址分区的状态由 BitReXe 链中的一组 VM 管理。不同的状态不是由不同的 VM 组维护的。付款人(即发起转账交易的用户地址)调用的“@address”范围内的转账函数会启动一个“中继”以存款给收款人。此中继由托管收款人地址状态的 VM 执行,将资金添加到收款人的余额中。
在 PREDA 中,智能合约可以具有多个范围,其中定义了变量和函数。可以在一个范围内定义多个函数和任意类型的变量(包括容器)。可以在单个函数调用中有条件或无条件地启动多个中继,从而允许递归启动并使交易执行流程能够在不同的 VM 实例之间进行多跳移动。这种中继执行方法将交易分解为多个微交易,确保在单个虚拟机中有限的状态访问并避免竞争条件。在 PREDA 转移智能合约中,将交易分解为“提款”微交易和“存款”微交易,可以并行执行这两种类型的微交易,只要它们的目标(在本例中为地址)映射到不同的虚拟机即可。
BitReXe 将虚拟机组织成多个共识组,每个共识组独立运行共识协议(在实现中基于 PoW)以就已执行的交易达成共识。实现跨组共识是为了维护异步功能中继的正确性和一致性,在 BitReXe 中实现为中继交易。
比特币第 2 层
Luke 表示,比特币层上的资产发行范式(如铭文)不断利用比特币的漏洞。虽然货币永不沉睡,但铭文也永不消亡。比特币迫切需要一个真正可扩展的第二层,以释放这种压力并防止账本规模增长过快,从而削弱去中心化。EVM+Bridge 解决方案不太可能实现这一目标。
BitReXe 提出并行虚拟机和 PREDA 来扩展比特币,同时适应比特币的安全性,使用 BTC 作为 gas 费,共享比特币的安全性,并在两条链之间提供无需信任的资产结算。
BitReXe 重用比特币网络的哈希计算能力,该能力由链上区块、孤立区块和过早区块作为工作量证明,以在不修改比特币协议的情况下在第二层网络中创建有效区块。合并矿工收到 rxBTC 作为奖励,BitReXe 网络上的比特币 1:1 挂钩。用户使用 rxBTC 支付交易、与智能合约交互和其他链上活动的 gas 费用。PREDA 和 BitReXe 的开发团队 Fullnodes lab 即将在比特币和 BitReXe 之间引入一种无需信任的资产结算桥解决方案,其中 rxbtc 的挂钩出同时是某人的 BTC 挂钩入。不再需要官方的挂钩出地址,因此消除了信任假设。
我们对比特币生态系统的高度期望源于它能够解决以太坊(作为比特币的测试网)尚未解决的问题。
@Bit_ReXe 认为该问题源于 EVM 缺乏并行机制导致的区块链三难困境,并旨在直接在比特币第 2 层上解决该问题。
如果比特币能够解决这个问题,那么比特币第 2 层上的 TVL 对标甚至超越以太坊三倍以上将是一个根本性的突破。”
这是 BitPNova 的客座文章。表达的观点完全是他们自己的观点,并不一定反映 BTC Inc 或 Bitcoin Magazine 的观点。