EVM Differences from Ethereum

Opcodes

OpcodeScroll Behavior
BLOCKHASHReturns keccak(chain_id || block_number) for the last 256 blocks.
COINBASEReturns the fee vault address (predeployed contract 0x5300000000000000000000000000000000000005).
DIFFICULTY / PREVRANDAOAlways return 0.
BASEFEEDisabled because currently we disabled EIP-1559. If the opcode is encountered, the transaction will be reverted.
SELFDESTRUCTDisabled. If the opcode is encountered, the transaction will be reverted.

Precompiled Contracts

AddressNameScroll behavior
0x02SHA2-256Currently not supported.
0x03RIPEMD-160Currently not supported.
0x05modexpRestrict the input values B, E, M to unsigned integers less than 22562^{256}.
0x08ecPairingThe inputs are still multiple of 6 32-byte values, but limit the number of tuples to at most 4.
0x09blake2fCurrently not supported.

The remaining precompiled contracts have the same behavior as Ethereum. However, their maximum usage within a block is constrained by a limit tied to the zkEVM circuit capacity.

EIPs

Our sequencer was developed based on the London fork initially. We disabled some EIPs in the London fork and introduced a few EIPs from the Shanghai fork to improve the compatibility.

Disabled EIPs until the London fork:

EIPs imported from the Shanghai fork:

What's Next

Stay up-to-date on the latest Scroll Developer news
Roadmap updates, virtual and live events, ecosystem opportunities and more
Thank you for subscribing!

Resources

Follow Us