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
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.
0x0apoint evaluationCurrently 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