现在正是将@optimismPBC和@arbitrum拉出来较量一下的时候了。久等了各位,我们现在就开始!???
我们先来看一下 Optimism 和 Arbitrum 之间的共同点:
都属于 Rollup,是货真价实的 Layer 2 方案,将所有交易数据都存储在 Layer 1 上
都是 “乐观型(optimistic)”,即,使用欺诈证明
都使用定序器来实现即时 “确定性”
都具备通用的跨链消息传递功能,可以用来构建高级代币桥,如@MakerDAO的快速取款桥:https://forum.makerdao.com/t/announcing-the-optimism-dai-bridge-with-fast-withdrawals/6938
接下来是重头戏 —— 不同点。Optimism 和 Arbitrum 之间最大的不同点在于欺诈证明机制的实现,即,一笔交易执行完后,如果状态引起争议该如何解决?
Optimism 采用单轮欺诈证明。也就是说,Layer 1 会在链上执行整个 Layer 2 交易,来验证状态根。这使得欺诈证明具有即时性,这是优点。
但是,这里面也存在一些问题:
你需要监督交易执行,为此需要使用 OVM(即为了避免副作用而重新编写的EVM)
Layer 2 交易的 gas 使用量不得超过 Layer 1 区块的 gas 上限
每执行一笔交易,你都需要在链上生成状态根 —— 导致成本上升:(
存在安全隐患
Arbitrum 采用多轮欺诈证明。简单来说,就是通过二分查找,找到引起分歧的那个区块的第一个操作码。找到之后,只需在链上执行这个操作码。
多轮欺诈证明的优点如下:
它只需为一整批交易生成一个状态证明,并发布到链上
Layer 1 区块 gas 上限并不重要,因为 Layer 2 交易不完全在 Layer 1 上执行
缺点如下:
需要 EVM -> AVM 翻译(幸好是自动的)
速度很慢 —— 最坏情况下,需要长达 2 周时间才能完成欺诈证明。实际上是一周时间。
需要原始提款人在线并配合
从另一种角度来思考,Optimism 是集装箱化的,而 Arbitrum 是虚拟化的。
Optimism 的方法有一个很大的缺点。想象一下,如果出现硬分叉,导致 以太坊 共识规则改变,操作码被删除/重新定价或修改。这时,突然在 Layer 1 上重新执行过去的交易会得到截然不同的最终状态。我不知道 Optimism 团队会如何解决这个问题,但是我想真到了那一天他们会想出办法的。Arbitrum 完全控制 AVM 规范,因此不用担心这种问题。
这两个项目都试图尽可能贴近以太坊生态系统,但是这里面有一些不同。总的来说,你依然可以使用你所知道的与 EVM 相关的工具(solidity、hardhat 和 waffle 等)。但实际上没那么简单。
Optimism 需要一个特殊的 solidity 编译器来生成 OVM 字节码。因此,它只与 Solidity ,而且是特定版本的 Solidity 兼容。另一方面,Optimism 的 Layer 2 节点只是经过了修改的 geth 客户端,修改的目的是为了提高兼容性。
从表面上来看,Arbitrum 完全兼容 EVM/JSON RPC 规范,但是它的节点是自定义实现。Arbitrum 通过自动化的EVM-> AVM 翻译来支持欺诈证明。因此,它支持任何 EVM 语言(vyper、YUL+ 等)。
Optimism 使用 weth,而且内置钱包抽象。Arbitrum 自带 ETH 支持。
Arbitrum 提供统一的免许可桥,来实现任意代币和 Layer 2 之间的桥接(它部署了一个通用 ERC20 合约作为 Layer 2 对手方)。Optimism 更喜欢专用桥,不过在 Optimism 上构建通用桥也是有可能的。关于这点,@dmihal知道得更详细;)
最后一个差别是上线实现。Arbitrum 将在本月底上线 “面向开发者的主网”,Optimism 则要等到 7 月。
如果你想要了解更多内容,我建议你观看这场由@stonecoldpat0主持的@karl_dot_tech和@hkalodner之间的友好辩论。
就我个人而言,这两个项目我都很支持。我已经等不及看到它们主网上线了。整个以太坊社区都亟需合适的 Layer 2 方案,而不是什么可扩展侧链。
如果你想要了解 Optimism 桥的例子,可以查看https://github.com/makerdao/optimism-dai-bridge。我们准备在下周发布兼容 Arbitrum 的版本。