Differences from L1 EVM

Lighter EVM mirrors Ethereum L1 EVM semantics as of the Fusaka BPO2 fork, with the following deviations.

Chain metadata

  • The Chain ID is chainId = 19_529 = 0x4C49 = "LI"
  • The block time is 1 second.

Transaction model differences

  • Blob txs are not supported: EIP-4844 blob transaction type 0x03 is unsupported.
  • New exogenous transaction type: Lighter EVM introduces one new EIP-2718 transaction type (0x7E) for handling deposits from L1 (and other non-user-originated protocol flows such as Core -> EVM async writes and protocol upgrades).
  • EIP-1559 parameters differ from Ethereum mainnet defaults: EIP-1559 parameters are used.
    • TARGET_GAS_LIMIT = 4,250,000
    • ELASTICITY_MULTIPLIER = 4 (MAX_GAS_LIMIT = 17,000,000)
    • BASE_FEE_MAX_CHANGE_DENOMINATOR = 334
    • INITIAL_BASE_FEE = 1 gwei
  • Priority transactions (L1-originated transactions) fee parameters:
    • MAX_PRIORITY_GAS_LIMIT = 10,000,000
    • BASE_FEE_OVERHEAD = 120,000
    • BASE_FEE_SCALAR = 9,700,000,000,000

Base fee burn

Unlike L1 Ethereum, Lighter EVM sends base fees to the BaseFeeVault instead of burning them.

L1 data fee

In addition to the ordinary execution fee, every fee-paying transaction pays for its metered L1 data contribution. The fee is exposed on receipts through l1Fee, l1GasUsed, and l1GasPrice; see L1 Data Fee.

Support for L1 predeploys

  • EIP-2935 contract (0x0000F90827F1C53a10cb7A02335B175320002935) serves the most recent 8191 Lighter EVM block hashes (not Ethereum L1 block hashes).
  • EIP-4788 contract (0x000F3df6D732807Ef1319fB7B8bB8522d0Beac02) is not supported (no code).
  • EIP-7002 contract (0x00000961Ef480Eb55e80D19ad83579A64c007002) is not supported (no code).
  • EIP-7251 contract (0x0000BBdDc7CE488642fb579F8B00f3a590007251) is not supported (no code).

There are additional new predeploys specific to Lighter EVM; see Chain info.

Opcodes and precompiles

  • PREVRANDAO: always returns 0.
  • COINBASE: always returns SEQUENCER_FEE_VAULT_ADDR.
  • BLOBHASH / BLOBBASEFEE: are treated as invalid opcodes and result in exceptional halt.
  • READ_CORE_ADDR precompile (0x6600000000000000000000000000000000000000): precompile for reading Core state. Returns (bytes memory data), where data is arbitrary data from the Core read.

See Reading Core from EVM for more details on how READ_CORE_ADDR is used.


Did this page help you?