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
Gas Pricing
Immutable Chain uses EIP-1559 gas pricing. See the full gas configuration:
Property Value Gas Model EIP-1559 Min Priority Fee 10 gwei Block Gas Limit 30,000,000 Gas Sponsorship Available for Passport users
// Always set minimum priority fee
const tx = await contract . method ({
maxPriorityFeePerGas: 10_000_000_000 n , // 10 gwei
maxFeePerGas: 15_000_000_000 n ,
});
See Gas Sponsorship for sponsored transactions.
Resources
Next Steps