Links

Solidity Support

Solidity support and EVM compatibility on Mantle network
Since Mantle network is EVM compatible, you can deploy any contract written in Solidity, Vyper, or any other contract development language as long as it can be compiled to EVM bytecode.
There are some key differences in Solidity opcode behavior on L1 Ethereum and L2 Mantle VM. This can impact certain operations and features when deploying your dApps on Mantle. The following table lists the opcodes that behave differently accompanied with a description.

Opcode Differences

Opcode
Solidity Equivalent
Behaviour
PUSH0
N/A
Not supported currently, and so Solidity version 0.8.20 and higher cannot be used with the default shanghai EVM version. Configuring the EVM version: For Solc, refer here For Hardhat, refer here
COINBASE
block.coinbase
Returns a constant address 0x4200000000000000000000000000000000000011 Refers to the BVM_SequencerFeeVault contract that collects L2 gas fees
DIFFICULTY
block.difficulty
Returns constant 0
L1BLOCKNUMBER
N/A
Added in Mantle VM to query the L1 block number. Use iBVM_L1BlockNumber with address 0x4200000000000000000000000000000000000013 to call getL1BlockNumber()
NUMBER
block.number
Returns latest L2 block number
BASEFEE
block.basefee
Not supported currently, will be available with EIP-1559 update