Differences between Monad and Ethereum
This list assembles notable behavioral differences between Monad and Ethereum from the perspective of a smart contract developer.
Virtual Machine
-
Max contract size is 128kb (up from 24.5kb in Ethereum).
-
Several opcodes are repriced, to reweight relative scarcities of resources due to Monad optimizations. Additionally, there is a larger refund for zeroing a storage slot. See Opcode Pricing and Refunds.
-
The
secp256r1
(P256) verification precompile in RIP-7212 is supported.
Transactions
-
Transactions are charged based on gas limit rather than gas usage, i.e. total tokens deducted from the sender's balance is
value + gas_bid * gas_limit
. As discussed in Gas in Monad, this is a DOS-prevention measure for asynchronous execution. -
Consensus and execution utilize the Reserve Balance mechanism to ensure that all transactions included in consensus can be paid for. This mechanism places light restrictions on transaction inclusion at consensus time, and defines select conditions under which a transaction will revert at execution time.
-
Transaction type 3 (EIP-4844 type aka blob transactions) is not supported.
-
There is no global mempool. For efficiency, transactions are forwarded to the next few leadersas described in Local Mempool.
Historical Data
- Due to Monad's high throughput, full nodes do not provide access to arbitrary historic state, as this would require too much storage. See Historical Data for a fuller discussion.
RPC
See: RPC Differences