Suggested Resources
Monad is fully EVM bytecode-compatible, with all supported opcodes and precompiles as of the Shanghai fork. Monad also preserves the standard Ethereum JSON-RPC interfaces.
As such, most development resources for Ethereum Mainnet apply to development on Monad.
This page suggests a minimal set of resources for getting started with building a decentralized app for Ethereum. Child pages provide additional detail or options.
As Solidity is the most popular language for Ethereum smart contracts, the resources on this page focus on Solidity; alternatively see resources on Vyper or Huff. Note that since smart contracts are composable, contracts originally written in one language can still make calls to contracts in another language.
IDEs
- Remix is an interactive Solidity IDE. It is the easiest and fastest way to get started coding and compiling Solidity smart contracts without the need for additional tool installations.
- VSCode + Solidity extension
Basic Solidity
- CryptoZombies is a great end-to-end introduction to building dApps on the EVM. It provides resources and lessons for anyone from someone who has never coded before, to experienced developers in other disciplines looking to explore blockchain development.
- Solidity by Example introduces concepts progressively through simple examples; best for developers who already have basic experience with other languages.
- Blockchain Basics course by Cyfrin Updraft teaches the fundamentals of blockchain, DeFi, and smart contracts.
- Solidity Smart Contract Development by Cyfrin Updraft will teach you how to become a smart contract developer. Learn to build with projects and get hands-on experience.
- Ethereum Developer Degree by LearnWeb3 is the a good course to go from no background knowledge in web3 to being able to build multiple applications and understanding several key protocols, frameworks, and concepts in the web3 space.
Intermediate Solidity
- The Solidity Language official documentation is an end-to-end description of Smart Contracts and blockchain basics centered on EVM environments. In addition to Solidity Language documentation, it covers the basics of compiling your code for deployment on an EVM as well as the basic components relevant to deploying a Smart Contract on an EVM.
- Solidity Patterns repository provides a library of code templates and explanation of their usage.
- The Uniswap V2 contract is a professional yet easy to digest smart contract that provides a great overview of an in-production Solidity dApp. A guided walkthrough of the contract can be found here.
- Cookbook.dev provides a set of interactive example template contracts with live editing, one-click deploy, and an AI chat integration to help with code questions.
- OpenZeppelin provides customizable template contract library for common Ethereum token deployments such as ERC20, ERC712, and ERC1155. Note, they are not gas optimized.
- Rareskills Blog has some great in-depth articles on various concepts in Solidity.
- Foundry Fundamentals course by Cyfrin Updraft is a comprehensive web3 development course designed to teach you about Foundry the industry-standard framework to build, deploy, and test your smart contracts.
- Smart Contract Programmer YT channel has a plenty of in-depth videos about various Solidity concepts like ABI encoding, EVM memory, and many more.
Advanced Solidity
- The Solmate repository and Solady repository provide gas-optimized contracts utilizing Solidity or Yul.
- Yul is a intermediate language for Solidity that can generally be thought of as inline assembly for the EVM. It is not quite pure assembly, providing control flow constructs and abstracting away the inner working of the stack while still exposing the raw memory backend to developers. Yul is targeted at developers needing exposure to the EVM's raw memory backend to build high performance gas optimized EVM code.
- Huff is most closely described as EVM assembly. Unlike Yul, Huff does not provide control flow constructs or abstract away the inner working of the program stack. Only the most upmost performance sensitive applications take advantage of Huff, however it is a great educational tool to learn how the EVM interprets instructions its lowest level.
- Advanced Foundry course by Cyfrin Updraft teaches you about Foundry, how to develop a DeFi protocol and a stablecoin, how to develop a DAO, advanced smart contract development, advanced smart contracts testing and fuzzing and manual verification.
- Smart Contract Security course by Cyfrin Updraft will teach you everything you need to know to get started auditing and writing secure protocols.
- Assembly and Formal Verification course by Cyfrin Updraft teaches you about Assembly, writing smart contracts using Huff and Yul, Ethereum Virtual Machine OPCodes, Formal verification testing, Smart contract invariant testing and tools like Halmos, Certora, Kontrol.
- Smart Contract DevOps course by Cyfrin Updraft teaches about access control best practices when working with wallets, post-deployment security, smart contract and web3 devOps and live protocols maintenance and monitoring.
- Secureum YT Channel has plenty videos about Solidity from Solidity Basics to all the way to advanced concepts like Fuzzing and Solidity auditing.
Local nodes
Developers often find it helpful to be able to run a 1-node Ethereum network with modified parameters to test interaction with the blockchain:
- Anvil is a local Ethereum node packaged in the Foundry toolkit
- Hardhat Network is a local Ethereum node packaged in the Hardhat toolkit
Installation is most easily done as part of installing the respective toolkit, described in the next section.
Toolkits
Developers often find it helpful to build their project in the context of a broader framework that organizes external dependencies (i.e. package management), organizes unit and integration tests, defines a deployment procedure (against local nodes, testnet, and mainnet), records gas costs, etc.
Here are the two most popular toolkits for Solidity development:
- Foundry is a Solidity framework for both development and testing. Foundry manages your dependencies, compiles your project, runs tests, deploys, and lets you interact with the chain from the command-line and via Solidity scripts. Foundry users typically write their smart contracts and tests in the Solidity language.
- Hardhat is a Solidity development framework paired with a JavaScript testing framework. It allows for similar functionality as Foundry, and was the dominant toolchain for EVM developers prior to Foundry.
Interacting with the Ethereum RPC API
Frontends for dapps typically use JavaScript or Python to submit read or write queries to an RPC node. This code is typically referred to as the "client side", as web developers can roughly equate the blockchain to a backend server.
A few libraries provide standard methods for submitting queries or transactions to an RPC node:
- Python:
- Javascript:
Here is a quick example for creating a frontend: create-eth-app.
Testnets
Monad Testnet will be available for developers in the coming months, however, being bytecode and RPC compatible with the EVM means developers wishing to deploy on Monad can preliminary use Ethereum's Testnets.
Further details
Child pages add additional resources: