DIFFICULTY). Others don't exist because they're more trouble than they're worth (like
SELFDESTRUCT). Here's a record of every missing opcode.
OVM_ExecutionManager(opens new window)contract. Our fork of the Solidity compiler handles this translation automatically so you don't need to worry about this in practice.
LOG3) normally cause a revert when executed during a
STATICCALLin the EVM. However, these opcodes can be triggered within a
STATICCALLwithin the OVM without causing a revert.
enqueue(opens new window)function,
NUMBERwill return the timestamp and block number of the block in which
NUMBERcan be any arbitrary number that satisfies the following conditions:
NUMBERon L2 may not be greater than the timestamp and block number at the time the transaction is bundled and submitted to L1.
NUMBERmust be monotonic: the timestamp of some
transaction Nmust be greater than or equal to the timestamp of
0(the transaction came from the Sequencer), then this function returns the zero address (
0x00...00). If the result of
1, then this function returns the address that called
OVM_CanonicalTransactionChain.enqueue(opens new window)and therefore triggered this transaction.
address.transfer(value). It's the exact same thing you'd do on Ethereum.
ORIGINEVM opcode) in the OVM. Some applications use
tx.originto try to block certain transactions from being executed by smart contracts via:
upgrade(...)method attached to the proxy. Only the account itself can trigger this call, so it's not possible for someone else to upgrade your account.
0x06a506A506a506A506a506a506A506A506A506A5is used to store gas-related metadata (cumulative gas spent, gas spent since the last epoch, etc.). You'll see this account pop up in transaction traces and during transaction result challenges.