BetaThis app is under active development. Features may change or break.Share Feedback →

Monad Developer Guide

Deploy smart contracts on Monad, set up your development environment, and leverage parallel execution for high-throughput dApps.

Overview

Monad is fully EVM-compatible, so if you can develop on Ethereum, you can develop on Monad. Use the same languages (Solidity, Vyper), tools (Hardhat, Foundry, Remix), and wallets — just point to a different RPC endpoint.

Environment Setup

Configure your development tools with Monad's RPC endpoint:

Hardhat — add to hardhat.config.ts:

networks: {
  monad: {
    url: "https://testnet-rpc.monad.xyz",
    chainId: 10143,
    accounts: [process.env.PRIVATE_KEY],
  },
}

Foundry — use the --rpc-url flag:

forge create src/MyContract.sol:MyContract \
  --rpc-url https://testnet-rpc.monad.xyz \
  --private-key $PRIVATE_KEY

Deploy a Contract

Deploying to Monad is identical to deploying to Ethereum. Any Solidity contract that compiles for Ethereum will work on Monad without changes.

  1. Write your Solidity contract as usual
  2. Compile with your preferred tool (Hardhat, Foundry, Remix)
  3. Deploy using Monad's RPC endpoint
  4. Verify on the Monad AI Explorer

Contract Size Limit

Monad supports contracts up to 128 KB (vs 24.5 KB on Ethereum). This allows more complex contracts without splitting into libraries.

Parallel Execution Tips

While parallel execution is automatic and transparent, understanding it helps you write more efficient contracts:

  • Minimize shared state — contracts that access independent storage slots parallelize better
  • Avoid unnecessary reads — each state read is a potential conflict point
  • Use events for off-chain data — events don't cause execution conflicts
  • Nonce ordering is fixed — transactions from the same sender are always sequential (same as Ethereum)

Gas Model

Monad charges gas based on the gas limit (not actual usage). This is a DoS prevention mechanism. Key implications:

  • Set appropriate gas limits — don't use unnecessarily high values
  • The mempool prioritizes higher gas fees
  • Unconfirmed transactions are automatically resent
  • Opcode pricing is identical to Ethereum

Debug with AI

After deploying, use Monad AI Explorer to inspect your contract transactions. The AI assistant can decode function calls, explain failed transactions, and show how your contract interactions behave under parallel execution — just paste the tx hash and ask.

FAQ

Do I need to learn a new language to develop on Monad?
No. Monad supports Solidity and Vyper — the same languages used on Ethereum. All existing tools (Hardhat, Foundry, Remix, OpenZeppelin) work without modification.
Why does Monad charge based on gas limit instead of usage?
Gas limit-based charging is a DoS prevention mechanism. It ensures that the cost of a transaction is predictable and prevents attackers from consuming resources cheaply.
Can I use OpenZeppelin contracts on Monad?
Yes. All OpenZeppelin contracts are fully compatible with Monad. Import and use them exactly as you would on Ethereum.
How do I verify my contract on Monad?
You can verify contracts using the Monad block explorer or Etherscan V2 API. Standard verification with Hardhat or Foundry plugins works as expected.