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 Code Behavior 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:
Category Methods Reason Debug debug_*Unbounded memory usage, DDoS risk Engine engine_*Not needed for external use Txpool txpool_*Prevents front-running Admin admin_*Internal operations only
For debug methods, use QuickNode which provides dedicated endpoints.
Gas Pricing
Immutable Chain uses EIP-1559 gas pricing:
Parameter Value Minimum Priority Fee 10 gwei Base Fee Dynamic
// Always set minimum priority fee
const tx = await contract . method ({
maxPriorityFeePerGas: 10_000_000_000 n , // 10 gwei
maxFeePerGas: 15_000_000_000 n ,
});
Resources