一文读懂 LeapDAO 如何让智能合约在 Layer 2 上运行
以太坊社区的核心目标之一是将智能合约放到二层区块链上执行。这个目标具有很大的发展潜力,能够扩大以太坊的资金转移量,增强以太坊的规则执行力度。为了实现这一目标,我们设计了一个名为 SolEVM Enforcer 的计算验证游戏,让 EVM 字节码可以在链下执行。SolEVM 由 3 部分组成:
链上步进器—— Enforcer 合约
链下解释器—— ECMAScript 的执行方式跟 Solidity 合约相同,以此实现高性能的链下执行
库——带有易于开发者理解的接口
SolEVM enforcer 本质上类似于 Truebit OS ,可以独立于 Plasma 链使用,因此有很多用例:
执行区块链游戏的规则
验证因数据量过大而无法在链上验证的零知识证明
验证合约内的工作量证明
执行正确的唱票程序
作为使用以太猫等非同质化代币的状态性 dApp 的侧链
相比于 Truebit OS ,SolEVM enforcer 既能够用 WASM 代码,也能够用 EVM 字节码运行。要对以太坊主网和 Plasma Leap 上的合约正确执行与否作出判断,这种代码兼容性就是必须的。
SolEVM enforcer 将被整合进 Plasma 链,防止合约被非法执行(invalid execution)。总的来说,LeapDAO 社区正在开发两个独立的系统,而且打算将二者融合起来,如下表所示:
下面几节将介绍 SolEVM enforcer 的必要开发步骤,以及如何将它嵌入 Plasma 链。虽然 Plasma 链制定了自己的里程碑路线图,我们团队的主要贡献是通过计算验证游戏来实现智能合约在 Plasma 上的运行。我们会基于 Plasma 的里程碑路线图来讲解我们的开发进度。
里程碑 1 —— 拂晓之歌
内容:SolEVM Enforcer 允许计算在链下进行,并为每一个执行步骤生成证明。计算结果会记录在链上,其他人可以挑战先前生成的证明。最后会生成一个去中心化的计算预言机,解题者(solver)可以将链下计算结果与保证金一起放入预言机,发现无效计算结果的挑战者可以获得奖励。
局限性:在这个里程碑中,我们取消了包含 CALLDATACOPY, CODECOPY, RETURNDATACOPY, EXTCODECOPY 操作码的计算,因为它们的证明过程比较复杂。
此外,在我们的整个路线图中都不会支持下列操作码,因为这些操作码的富状态性(statefulness):
SLOAD STORE
CREATE CREATE2
CALLCODE
上文提到的去中心化计算预言机在博弈设计上仍不够稳健,开发人员必须为挑战者完善激励机制。
可交付成果:这个里程碑能够将简单的链下计算结果(由任何未禁用操作码组成的 EVM 字节码)整合到任意智能合约内。开发人员可以使用已部署的实例代码和库,将这一功能加入他们的 dApp 里。
部署在测试网上的链上步进器。
链下解释器和简单代码库已经打包发布在了 npm. CLI 工具上,用来进行执行登记(Enforcer)和争议处理(Dispute)。
关于如何将计算结果上链以及如何在争议中胜出的博客文章和讲解视频。
里程碑 2 —— 铜墙铁壁
内容:将 SolEVM Enforcer 整合入 More Viable Plasma 的退出机制(exit game)中。这样一来,就能确保只有包含有效计算结果的交易可以参与 Plasma 退出交易机制的挑战游戏,而且智能合约能够在第二层区块链上执行。
局限性: 我们需要引入两种措施:要么,我们引入一种紧凑的证明,用来给 CALLDATACOPY、CODECOPY、RERURNDATACOPY 和 EXTCODECOPY 操作码提供数据;要么,我们引入对 callData、代码、returnData 和内存的大小限制。这将决定 SolEVM 可承受的计算量极限。正如上一个里程碑中所说,只有无状态计算才能够执行。
可交付成果:
部署在主网上的链上步进器
在链上步进器上添加一个能够翻译 Plasma Leap 交易的组件
整合进 Plasma 节点的链下解释器
能够监控所有退出 Plasma 链的操作并且挑战无效计算的「瞭望塔」
关于如何在 Plasma 链上编写并运行智能合约的文档
挑战游戏设计完成,等待审计
里程碑 3 —— The Kink-Spring
内容:前两个阶段只能执行无状态计算,极大地限制了 Plasma 链上智能合约的应用范围。到了这个里程碑阶段,我们重新引入了存储措施,不过不是用 SLOAD、SSTORE 操作码,而是可以由合约直接使用的非同质代币。存储和合约资金可以单独通过 More Viable Plasma 的退出机制退回,智能合约可以从第二层区块链上迁移至主网。
局限性:在单一运营者设置下运行的 Plasma 链虽然能够确保计算安全地运行,但是仍有可能会审查交易。dApp 可能不愿意迁移到这样的环境中,除非 Plasma 链通过 PoS 设置实现了抗审查性。
可交付成果
支持 / 转至君士坦丁堡分叉。我们不会实现 CREATE2 操作码。
关于如何编写有状态的 Plasma 合约的文档
组织一场 Plasma dApp 的黑客马拉松
退出机制设计完成,等待审计
作为一个开源软件社区,Leap 是在各成员的努力之下发展起来的。看过了上面的路线图之后,你是不是心动了呢?不管你有什么兴趣和技能,我们提供了很多参与机会,一起来提高区块链的可扩展性,将区块链技术带入千家万户吧!
Scan QR code with WeChat