Skip to main content
Immutable Chain is built from a geth fork and maintains high compatibility with Ethereum. However, there are some notable differences developers should be aware of.

Source Code

View the Immutable geth fork on GitHub

Solidity Compatibility

Immutable Chain’s most recent hard fork aligns with Ethereum’s Cancun fork. We officially support Solidity versions up to and including 0.8.28.
// Recommended pragma
pragma solidity >=0.8.19 <0.8.29;
If you use ^0.8.19, you may pull a compiler version not compatible with Immutable Chain. Always pin your version.

EVM Differences

EIP-4844 Blobs

Blob transactions are not supported. Any such transactions will be rejected by the RPC.
Op CodeBehavior
BLOBHASHReturns empty bytes32 (0x0)
BLOBBASEFEEReturns 0x1
Block headers blobGasUsed and excessBlobGas are always 0x0.

PREVRANDAO Op Code

The PREVRANDAO op code (EIP-4399) always returns uint256(0) on Immutable Chain.
Do not rely on PREVRANDAO for randomness. Use an oracle like Supra VRF instead.

RPC Endpoint Differences

Some RPC methods are disabled for security and performance:
CategoryMethodsReason
Debugdebug_*Unbounded memory usage, DDoS risk
Engineengine_*Not needed for external use
Txpooltxpool_*Prevents front-running
Adminadmin_*Internal operations only
For debug methods, use QuickNode which provides dedicated endpoints.

Gas Pricing

Immutable Chain uses EIP-1559 gas pricing:
ParameterValue
Minimum Priority Fee10 gwei
Base FeeDynamic
// Always set minimum priority fee
const tx = await contract.method({
  maxPriorityFeePerGas: 10_000_000_000n, // 10 gwei
  maxFeePerGas: 15_000_000_000n,
});

Resources