然而,许多项目希望能够创建自己的自定义逻辑和智能合约,独立于rollup运营商,这在特定于应用的rollup中是不可能的。此外,许多DeFi项目需要 “可组合性”,或与其他项目进行交互的能力(例如,许多DeFi项目使用Uniswap作为价格预言机)。只有当你的rollup不仅支持自定义代码,而且支持可以由任何用户部署的原生智能合约时,可组合性才有可能实现。为了实现这一点,我们需要修改我们的zk-rollup架构,以扩大每个组件的运用。 这种灵活性的增加要付出几个代价:性能大大降低,rollup参数的可定制性降低,以及更高的费用。然而,最大的代价是根本没有实现通用的zk-rollup,当然也没够实现批量生产的zk-rollup。但这种情况正在开始改变。 StarkNet目前已经在主网上运行。 3个独立的项目(zkSync, Polygon Hermez/zkEVM和Scroll)都在ETH CC 2022大会上宣布,他们将成为第一个到达主网的 “zkEVM”。 这些公告值得深入研究,因为这些团队不只是宣布了通用的rollup,他们还宣布了 “zkEVM”。随后,推特上出现了很多围绕 “EVM兼容性”、“EVM等效性”、“真正的zkEVM ”以及哪种方法更优越的争论。对于应用开发者来说,这些对话往往是噪音——所以本文的目的是解析这些术语、设计决策和理念,并解释它们对开发者的实际影响。 让我们从头开始:什么是EVM? 了解EVM 以太坊虚拟机(EVM)是执行以太坊交易的运行环境,最初在以太坊黄皮书中定义,后来被一系列以太坊改进提案(EIP)修改。它由以下部分组成: 一个用于执行程序的标准 “机器”,每笔交易都有的易失性 “存储器”,可以写入交易的持久性 “存储器 ”和一个操作 “堆栈” ~约140个定价的 “操作码”,在该机器中执行状态转换。 图表来自https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf 我们虚拟机的一些操作码例子: 堆栈操作—PUSH1 (向堆栈中添加东西) 算术操作—ADD(添加数字),SUBTRACT。 状态操作—SSTORE(存储数据),SLOAD(加载数据)。 交易操作— CALLDATA, BLOCKNUMBER (返回关于当前执行的交易的信息) 一个EVM程序只是一系列操作码和参数。当这些程序被表示为一个连续的代码区块时,我们称其结果为 “字节码”(通常表示为十六进制字符串)。 通过将大量这些操作码组合成一个执行序列,我们可以创建任意的程序。以太坊使用定制的虚拟机,而不是调整现有的虚拟机,因为它有独特的需求: (责任编辑:admin) |