Why it matters
Solidity compilers target a specific EVM version. If you compile for a newer version than the chain supports, your contract can deploy and then fail at runtime with an “invalid opcode” error. Picking the right target avoids that.Compile for Cancun
Set your compiler’s EVM version tocancun. It works on both networks and with every Solidity version from 0.8.24.
prague also works on BOT Chain (tested 2026-10-01). Don’t use osaka. BOT Chain doesn’t support the Osaka upgrade yet: we ran the Osaka CLZ opcode on both networks on 2026-10-01 and it failed with “invalid opcode”. Recent Solidity releases may default to a newer EVM version, so set it explicitly.
Supported upgrades
Checked against both networks on 2026-10-01.
Don’t use
block.prevrandao (or the older block.difficulty) for randomness. On BOT Chain it returns the Parlia block difficulty, which was 2 in every block we checked on 2026-10-01. Use an oracle if your app needs random numbers.
Check it yourself
Ask the node for the latest block and look at the fields.baseFeePerGas shows EIP-1559, blobGasUsed and excessBlobGas show EIP-4844, and requestsHash shows Prague.
Related pages
Blob API
Read blob data from the RPC.
Gas and fees
How EIP-1559 fees work on BOT Chain.
Foundry setup
Configure the compiler target.
Hardhat setup
Configure the compiler target.