OVM
名詞解析
OVM 是个功能完备、与 EVM 完全兼容的执行环境,适用于 L2 系统。我们可以通过 OVM 在 rollup 链进行在以太坊主链上能做的所有操作 —— 编写 Solidity 智能合约,并通过 Web3 API 与区块链进行交互。
OVM
简介
OVM 是个功能完备、与 EVM 完全兼容的执行环境,适用于 L2 系统。我们可以通过 OVM 在 rollup 链进行在以太坊主链上能做的所有操作 —— 编写 Solidity 智能合约,并通过 Web3 API 与区块链进行交互。
有了 OVM 后,将 dApp 移植到 L2 不再是架构级别的大工程,只剩下简化的部署操作。当然,dApp 的构建仍然要考虑紧耦合( tight coupling )及可组合性( composability ),但只要你需要,新的智能合约随时能够部署到使用 OVM 的链上。换言之,在 L2 打造货币乐高( money lego,泛指 defi 产品)依然可以非常方便。
OVM要解决的问题
问题描述:EVM 中的 EVM
所有乐观的 L2 方案都是围绕着执行结果及其分歧来打造的:从 plasma 到 rollup,其关键都在于 “乐观性执行( optimistic execution )”—— 乐观性执行的意思是:任何人(或群体)都能宣称 “嘿,Layer 1,这些交易的执行结果是 X,不用再执行验证了!”;如果结果不为 X ,(我们假设)会有其他群体愿意支付主链的执行成本,来证明结果 X 是错误的。
- 乐观性执行具备很好的扩展性,因为 L2 的 transaction 可以在 L1 重放(如果有需要的话!) -
理想情况下我们不需要在主链上执行 transaction,这也是为什么乐观性执行能很大程度上提高链的吞吐量。然而考虑到安全性,一旦出现错误的情况(如上图 tx2),我们也需要有 transaction 回溯机制!
Unipig 的自定义代码基本上就是 Unipig 编码形式的 execute_L2_tx(),你也可以称之为 execute_uniswap_tx() !
总的来说,其实我们需要的是 Unipig 编码实现 execute_EVM_tx() —— 一个能够让我们在 L1 transaction 中,嵌套执行任何以太坊 L2 transaction 的函数(以实现 fraud proof “错误性证明” 功能)。但是理想很丰满,现实很骨感,要让以太坊 transaction 嵌套执行本来就非常困难,更何况有些 L2 transaction 根本不适合 L1 !
为什么很难构建 EVM 中的 EVM
在我们深入解释我们所提出的独特解决方案之前,我们先想想 ——为什么这会成为一个问题 ?难道 EVM 不是执行 EVM transaction 的完美环境吗?它可是 EVM 呢!
解决之道:OVM
过去曾出现过两种解决 “ EVM 中的 EVM ” 问题的办法:要么是对 EVM 进行分叉,要么是硬着头皮用 Solidity 重新实现整个 EVM ;OVM 是一种全新的方法,对于当前的以太坊 1.0 有着更好的性能和灵活性,而且不需要分叉!