根基上,对付大概导致 L1 、 L2 呈现差异功效的 EVM 成果, 执行打点器都提供了担保其功效一致的函数。
https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52
虽然我们还需要稍微修改上面的合约,才气真正挪用 timestamp 容器而不是拿到错误的 block.timestamp。
如此一来,我们就可以或许在验证 fraud proof 的时候,配置 L1 容器中的 “虚拟区块高度”,来担保正确的返回值!
– 在 L1 上执行 L2 transaction —— 这是个很天真的步伐。-
– 差异的链,,差异的功效 –
抱负环境下我们不需要在主链上执行 transaction,这也是为什么乐观性执行能很洪流平上提高链的吞吐量。然而思量到安详性,一旦呈现错误的环境(如上图 tx2),我们也需要有 transaction 回溯机制!
这就是 ” EVM 中的 EVM ” —— OVM 的焦点观念:虚拟化所有大概在差异链上返回差异功效的 EVM 组件。详细点来说,约有 15 条以太坊指令需要被虚拟化,你可以从以下进口查察真正的执行打点器长啥样。
什么是 OVM ?
所以,OVM 是怎么办到的?OVM 实现起来为什么这么坚苦?让我们一探毕竟!
固然我们办理了功效差别性的问题,但这只浸染于该智能合约罢了。因此,为了保障 L2 的安详性,我们需要确保 L2 上的所有合约都利用了 timestamp 容器,没有错误利用 block.timestamp 的漏网之智能合约。
EVM 的焦点界说了一组计较机指令,以及界说了在 transaction 中每个指令对应地该执行什么。智能合约就像是个庞大又丑恶的指令荟萃——举个简朴的例子,下图是 Solidity 的 SafeMath.sol 库在陈设之前的部门编译:
contract TimeShifter { function getShiftedTime() returns(uint) { return block.timestamp + 42; }}
(在错误性挑战中)把这个合约从头陈设到 L1 上之后,还能返回沟通的值吗?
然而不能这样做,因为:差异的链,差异的功效
为什么很难构建 EVM 中的 EVM
– 乐观性执行具备很好的扩展性,因为 L2 的 transaction 可以在 L1 重放(假如有需要的话!) –
总的来说,其实我们需要的是 Unipig 编码实现 execute_EVM_tx() —— 一个可以或许让我们在 L1 transaction 中,嵌套执行任何故太坊 L2 transaction 的函数(以实现 fraud proof “错误性证明” 成果)。可是抱负很饱满,现实很骨感,要让以太坊 transaction 嵌套执行原来就很是坚苦,更况且有些 L2 transaction 基础不适合 L1 !
问题描写:EVM 中的 EVM
安详性:容器纯度查抄
办理之道:OVM
展望
假如你深入思考,你会发明这个问题险些会产生在所有智能合约上。好比对付某个 ERC 20 智能合约来说,你将合约重陈设在 L1 上之后,你要怎么配置 L2 上的余额呢?诸如此类,不计其数。
– 新的 TimeShifter 函数,利用 TimestampManager 作为容器。-
但对付其他智能合约来说,工作就变得巨大了。举个简朴的例子,下面的智能合约执行后会返回“当前的以太坊(区块)的时间戳 + 42”:
我们认为 OVM 的呈现代表着以太坊 L2 的奔腾,因为它差异于变着招 利用 以太坊,它就是以太坊自己的进步。只要加上几行代码,就可以或许实现快速且低本钱的 Solidity 智能合约迁移,这也是当前关于以太坊扩展方面最令我们欢快的 topic 。假如你想要自行体验一把,可以存眷我们最近的 OVM 测试——在尺度的以太坊东西中(如 Graph 和 Burner 钱包),及时运行部门的 Synthetix 巨大生意业务合约(见此处)。(完)
举例来说,我们结构一个容器来办理上述提到的时间戳纷歧致的问题:
要让智能合约只通过执行打点器来挪用某些指令,尚有一个问题就是开拓体验 —— 假如开拓者需要遍历整份智能合约,然后把所有 block.timestamp 替换为 getOvmTimestamp(),这种艰辛不奉迎的活必定没人愿意做。
有了 OVM 后,将 dApp 移植到 L2 不再是架构级此外大工程,只剩下简化的陈设操纵。虽然,dApp 的构建仍然要思量紧耦合( tight coupling )及可组合性( composability ),但只要你需要,新的智能合约随时可以或许陈设到利用 OVM 的链上。换言之,在 L2 打造钱币乐高( money lego,泛指 DeFi 产物)依然可以很是利便。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。