EVM compatibility

Which forks are active, what behaves exactly like Ethereum, and what does not.

Docs / Build / EVM compatibility

Chain 2800 runs the Ethereum Virtual Machine. Contracts, tooling and the JSON-RPC surface behave as they do on Ethereum, with a small number of differences that are listed here in full.

Active forks

Homestead through Shanghai at block 0, Cancun and Prague at timestamp 1780189051, Osaka at timestamp 1780220351, and one AERE milestone at timestamp 1783820272, whose first block is 9,189,161.

Compile for osaka or any earlier EVM target. Nothing in the AERE milestone removes or changes an opcode.

What the AERE milestone adds

  • The five post-quantum precompiles at 0x0AE1 through 0x0AE5.
  • EIP-2935 historical block hashes, which performs one system state write per block into the ring

buffer at 0x0000F90827F1C53a10cb7A02335B175320002935.

It is isolated on the Osaka definition, not on upstream Besu's Amsterdam-based futureEips. That matters only if you are writing a node; see Chain parameters.

The differences that affect application code

A base fee floor. From block 10,141,734 the base fee cannot go below 1 Gwei. Everything else about EIP-1559 is unchanged. See Fees.

A 512-block state window on the public RPC. Beyond it, eth_getTransactionCount returns a false 0x0 instead of an error. Use eth_getProof for anything you intend to rely on. See Events and logs.

Large headers at anchor heights. Every 128th header carries a post-quantum certificate and is tens of kilobytes rather than hundreds of bytes. Read the field length; never assume a header size.

Empty blocks are normal. The chain produces a block every half second whether or not there are transactions, so most blocks carry none. A tool that treats an empty block as an error, or that infers chain liveness from transaction counts, will be wrong here.

What is the same

Address derivation, CREATE and CREATE2 addresses, gas costs for every standard opcode, ecrecover at 0x01, the pairing and KZG precompiles, transaction types including EIP-1559 and EIP-4844 shapes, receipts, logs and bloom filters, and the standard JSON-RPC method set.

System contracts

EIP-4788 beacon roots is active in genesis. The beacon roots contract has no code on this chain, so the system call fails on every block. The chain is unaffected: this is a logging condition, not a consensus one, and it is filtered rather than silenced so that other errors from the same class still appear.