OP Stack和以太坊主网之间有哪些差异_ACK:ORI

2023年2月23日,Coinbase宣布推出基于OPStack的Base测试网。同时,OptimismCollective宣布将升级为Optimism超级链。

但不管是Base测试网,还是Optimism超级链,都是基于OPStack。那么OPStack和以太坊主网有哪些差别呢?

目前的OPStack版本为Bedrock,OPStack官网文档详述了Bedrock和以太坊主网之间的差异。金色财经xiaozou翻译了本文档:

值得注意的是,Optimism和以太坊的行为间存在各种微小的差异。当你在Optimism或OPStack代码库上建设应用程序时,你应该对这些差异有所了解。

Opcode差异

`tx.origin==msg.sender`

在以太坊L1上,只有当智能合约直接从外部帐户调用时,tx.origin才等于msg.sender。然而,在Optimism上,tx.origin是Optimism上的origin,也可能是一个EOA。然而,对于来自L1的消息,来自L1上的智能合约的消息有可能出现在L2上,这时tx.origin==msg.origin。这不太可能产生明显的差异,因为L1智能合约不能直接操纵L2状态。但是,也可能存在我们没有考虑到的边缘情况。

获取L1信息

如果你需要最新L1块的等效信息,你可以从L1Block合约中获得。该预部署合约是地址0x42000000000000000000000000000000000000000015。你可以使用getter函数获取这些参数:

number:L2已知的最新L1块号。

timestamp:最新L1块的时间戳。

basefee:最新L1块的基本费用。

hash:最新L1块的哈希值。

sequenceNumber:epoch内L2块的数量。

AddressAliasing

凭借CREATE操作码的behavior,用户可以在L1和L2上创建一个共享相同地址但具有不同字节码的合约。这可能会破坏信任假设,因为一个合约可能是可信的,而另一个合约可能是不可信的。为了避免这个问题,L1和L2之间ORIGIN和CALLER操作码的behavior略有不同。

tx.origin的值确定如下:

顶级msg.sender值总是等于tx.origin。因此,如果tx.origin值受到上面定义的规则的影响,则msg.sender的顶级值也将受到影响。

注意,一般情况下,tx.origin不应该用于身份认证。但是,这与地址别名是不同的问题,因为地址别名也会影响msg.sender。

为什么地址别名是个问题?

两个相同的源地址的问题是,我们是基于地址扩展信任。有可能我们想要信任其中一个合约,而不是另一个。

HelenaHacker分叉Uniswap创建了她自己的交易所,称为Hackswap。

注意:在Uniswap上实际上有多个合约,所以这个说明是个简化处理。

HelenaHacker为Hackswap提供流动性,看起来可提供有利可图的套利机会。比如你可以花1DAI买入1.1USDT。这两种币的价值都是1美元。

NimrodNaive知道,如果一件事看起来好得令人难以置信,那么它很可能就是假的。但是,他检查了Hackswap合约的字节码,验证后确定其与Uniswap完全相同。他认为这意味着可以信任该合约的行为与Uniswap完全一致。

Nimrod批准了Hackswap合约的1000DAI交易。Nimrod希望在Hackswap上调用swap函数,并收到近1100USDT。

在Nimrod的swap交易被发送到区块链之前,HelenaHacker从与Hackswap地址相同的L1合约发送了一笔交易。这笔交易将1000DAI从Nimrod的地址转移到HelenaHacker的地址。如果这个交易来自L2上的Hackswap相同的地址,它将能够转移该1000DAI,因为Nimrod在上一步已经批准了Hackswap的代币交换。

尽管Nimrod很天真,但他受到了保护,因为Optimism修改了交易的tx.origin。这笔交易来自一个不同的地址,一个没有被批准的地址。

注意:在不同的链上,创建两个相同地址的不同合约很容易。但几乎不可能创建两个相同指定数额的不同合约,所以HelenaHacker不能这么做。

区块

L1以太坊和OptimismBedrock之间产生区块的方式有几点不同之处。

(1)这是理想状态。如果遗漏了任何块,则可能是整数倍数,如24秒、36秒等。

注意:L1以太坊参数值取自ethereum.org。OptimismBedrock值取自Optimism参数。

网络规范

JSON-RPC差异

OPStack代码库使用与以太坊相同的JSON-RPCAPI。引入了一些额外的OPStack特定的方法。

是否支持Pre-EIP-155

Pre-EIP-155交易没有链ID,这意味着一个以太坊区块链上的交易可以在其他以太坊区块链上重播。这是一个安全风险,因此OPStack默认不支持Pre-EIP-155交易。

交易成本

默认情况下,OPStack链上的交易成本包括L2执行费用和L1数据费用。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:0ms0-8:90ms