> For the complete documentation index, see [llms.txt](https://docs.lumia.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.lumia.org/reference/evm-opcode-support.md).

# EVM opcode support

**Who this is for:** developers writing or auditing contracts that touch opcode-level behavior. For the task-level explanation of why these differ, see [`/build/smart-contracts/evm-differences`](https://app.gitbook.com/s/chmhPiVNAafGw48c4oU2/build-on-lumia/smart-contracts/evm-differences-on-lumia), which transcludes this page.

### Modified opcodes

| Opcode         | Behavior on Lumia zkEVM                                            |
| -------------- | ------------------------------------------------------------------ |
| `SELFDESTRUCT` | "removed by SENDALL"                                               |
| `EXTCODEHASH`  | "returns hash contract bytecode from zkEVM state tree"             |
| `DIFFICULTY`   | "returns 0"                                                        |
| `BLOCKHASH`    | "returns all previous block hashes (not just the last 256 blocks)" |
| `NUMBER`       | "number of processable transactions"                               |

### Unsupported opcodes

Quoted: "Lumia zkEVM supports all opcodes but SHA256, BLAKE and PAIRINGS."

| Opcode     | Status      |
| ---------- | ----------- |
| `SHA256`   | Unsupported |
| `BLAKE`    | Unsupported |
| `PAIRINGS` | Unsupported |

### Precompile support

Quoted: "ecRecover and identity are presently supported. Others return a revert."

| Precompile  | Status    |
| ----------- | --------- |
| `ecRecover` | Supported |
| `identity`  | Supported |
| All others  | Revert    |

### Source / last verified

Quoted from `docs.lumia.org/build/faqs`.
