What are the known differences between zkevm-rom and EVM

Created by Deepanshu Rathor, Modified on Mon, 19 Feb at 4:21 PM by Deepanshu Rathor

1. Opcodes
SELFDESTRUCT: removed by SENDALL
EXTCODEHASH: returns hash contract bytecode from zkEVM state tree (do not check if the account is empty)
DIFFICULTY: returns 0
BLOCKCHASH: returns all previous block hashes (not just the last 256 blocks)
BLOCKCHASH is the state root at the end of a processable transaction and it is stored on the system smart contract
NUMBER: number of processable transactions

2. Precompiled: zkEVM supported
- ecRecover
- identity
rest of the precompiled do a revert

Other Differences
Do not clean the storage when a contract is deployed in that address. (not possible due to Polygon zkEVM state tree specification)
JUMPDEST opcode allowed in push bytes (avoid runtime bytecode analysis)
implements eip-3541 which belongs to London hardfork
eip-2718 which defines Typed Transaction Envelope are not supported
eip-2930 tx type, Optional access lists is not supported

Additions
Zk-counters: batch resources available linked to state-machines components

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article