A curated list of awesome Solidity resources, libraries, tools and more.
Contents
Resources
Official
- Docs – Official documentation.
- Cheatsheet – Cheatsheet from the official docs.
- Ethereum Wiki – The Ethereum Wiki.
- Ethereum Stackexchange – Ethereum’s Stackexchange board.
- Gitter – Gitter channel.
- ethereum/solidity – Source code.
- ethereum/solc-bin – Current and historical builds of the compiler.
- ethereum/solidity-examples – Loose collection of example code.
Tutorials
- androlo/solidity-workshop – Comprehensive series of tutorials covering contract-oriented programming and advanced language concepts.
- buildspace.so – Hands-on Web3 course especially for beginners. It is completely free and you get an NFT on completion.
- Cadena – Tutorials for building smart contracts, dapps, on multiple chains and earn a Cadena NFT Certificate.
- CryptoZombies – Interactive code school that teaches you to write smart contracts through building your own crypto-collectibles game.
- cryptodevhub.io – Community-driven effort to unite like-minded people interested in Blockchain- and Crypto Technologies.
- Discover Ethereum & Solidity (ludu.co) – Complete course that takes you through the process of creating a decentralized Twitter clone using best practices.
- ExtropyIO/defi-bot – Tutorial for building DeFi arbitrage bots.
- karmacoma-eth/sending-ether-cheat-sheet – Tips and best practices for sending Ether.
- LearnXInY – Learn Solidity in 15 mins (for experienced devs).
- manojpramesh/solidity-cheatsheet – Cheat sheet and best practices.
- Questbook – Questbook is building a University DAO where learning is always free. Starting with crypto-dev courses by leading devs.
- Solidity and Vyper cheat sheet – Review syntax of both languages side-by-side.
- Teach Yourself Web3 – Join a community of Web3 engineers & educators that can help you supercharge your way into Web3 development.
- topmonks/solidity_quick_ref – Syntax overview.
- willitscale/learning-solidity – Complete guide on getting started, creating your own crypto, ICOs and deployment.
- useweb3.xyz/tutorials – A curated list of free, community tutorials that are based around specific projects, tasks or challenges.
Articles
- Best Practices for Smart Contract Development (yos.io, Yos Riady, 2019) – Developer handbook for smart contract developers.
- Clean Contracts (wslyvh.com, Wesley van Heije, 2020) – Developer guide to writing clean smart contract code.
- The Complete Guide to Full Stack Ethereum Development (dev.to, Nader Dabit, 2021) – Building Full Stack dApps with React, Ethers.js, Solidity, and Hardhat.
- How to create an ERC20 Token and a Solidity Vendor Contract (medium.com, Emanuele Ricci, 2021) – Create your own ERC20 Token and a Token Vendor Contract that will handle the sell/buy process.
- soliditydeveloper.com/blog – Concepts, guides, design patterns and more.
Security
- Capture the Ether – Game in which you hack Ethereum smart contracts to learn about security.
- crytic/awesome-ethereum-security – Curated list of awesome Ethereum security references, guidance, tools, and more.
- crytic/building-secure-contracts – Guidelines and training material to write secure smart contracts.
- crytic/not-so-smart-contracts – Examples of common vulnerabilities, including code from real smart contracts.
- Crypto-Virus/cream-finance-exploit-example – Example implementation of the Cream Finance flashloan exploit.
- d-xo/weird-erc20 – Minimal example implementations of ERC20 tokens with surprising/unexpected behaviour.
- Ethereum Smart Contract Security Best Practices (Consensys) – General security philosophy, known attacks, and sample code.
- OriginProtocol/security – Materials related to security: docs, checklists, processes.
- Rari-Capital/security-checklist – Opinionated security and code quality checklist for smart contracts.
- securing/SCSVS – Smart Contract Security Verification Standard.
- sigp/solidity-security-blog – Comprehensive list of known attack vectors and common anti-patterns.
Audits
- Trail of Bits – Public security audits by the Trail of Bits Team.
- OpenZeppelin – Public security audits by the OpenZeppelin Security Team.
- Consensys Diligence – Public security audits by the Consensys Diligence Team.
- MixBytes – Public security audits by the MixBytes Team.
Examples
Educational
- alephao/solidity-benchmarks – Benchmarks of popular implementations of ERC standards.
- cyrusadkisson/solidity-baby-steps – Comprehensive collection of contract examples.
- flashbots/simple-arbitrage – Example arbitrage bot using Flashbots.
- fravoll/solidity-patterns – A collection of patterns and best practices for smart contract development.
- libevm/subway – A practical example on how to perform sandwich attacks on Ethereum.
- lsaether/bonding-curves – Smart contracts for bonding curves (aka curve bonded tokens).
- kauri.io – Archive of kauri community’s content created with the goal to foster the spread of Ethereum development knowledge far and wide.
- miguelmota/solidity-idiosyncrasies – Common gotchas, pitfalls, limitations, and idiosyncrasies.
- m1guelpf/lil-web3 – Simple, intentionally-limited versions of web3 protocols & apps.
- pedrobergamini/flashloaner-contract – Smart contracts that operate arbitrages between Sushiswap and Uniswap.
- raineorshine/solidity-by-example – A collection of short yet fully-functional contracts that demonstrate language features.
- Solidity By Example – An introduction to the language with simple examples.
- useWeb3 – Learn web3 development – A curated overview of the best and latest resources on Ethereum, Solidity and Web3 development.
Deployed on Ethereum Mainnet
- Abracadabra-money/magic-internet-money – Magic Internet Money (MIM) contracts.
- andrecronje/rarity – D20srd reference implementation.
- axieinfinity/ronin-smart-contracts – Axie Infinity Ronin contracts.
- bancorprotocol/contract-solidity – Bancor Protocol contracts.
- compound-finance/compound-protocol – Compound Protocol contracts.
- dharma-eng/dharma-smart-wallet – Smart wallet for earning interest on stablecoins while retaining custody of funds, with an added security backstop provided by Dharma Labs.
- ensdomains/ens-contracts – Ethereum Name Service (ENS) contracts.
- graphprotocol/contracts – Graph Protocol Contracts.
- OlympusDAO/olympus-contracts – OlympusDAO contracts.
- smartcontractkit/LinkToken – LINK token contracts for the Chainlink Network.
- sushiswap/kashi-lending – Kashi Lending platform contracts.
- sushiswap/sushiswap – Sushiswap smart contracts.
- Synthetixio/synthetix – Synthetix smart contracts.
- trusttoken/smart-contracts – TrustToken smart contracts.
- Uniswap/uniswap-v3-core – Core smart contracts of Uniswap v3.
- wyvernprotocol/wyvern-v3 – Core smart contracts for Wyvern v3, a decentralized digital asset exchange protocol.
Templates
- austintgriffith/scaffold-eth – Github template providing an Ethereum dev stack focused on fast product iterations.
- ethereum-boilerplate/ethereum-boilerplate – React components and hooks to build dApps fast without running your own backend.
- gakonst/dapptools-template – Forkable template to get you started with Dapp Tools.
- NodeFactoryIo/solidity-node-docker-starter – Github template with Docker containers for building dApps with Truffle and Node.js as backend server.
- paulrberg/solidity-template – Github template for writing contracts (uses: Hardhat, TypeChain, Ethers, Waffle, Solhint, Solcover, Prettier Plugin Solidity).
- rhlsthrm/typescript-solidity-dev-starter-kit – Starter kit for developing, testing, and deploying smart contracts with a full Typescript environment.
- tomhirst/solidity-nextjs-starter – A full-stack dApp starter built with Next.js (React).
- wighawag/template-ethereum-contracts – Template to develop smart contracts.
- ZumZoom/solidity-template – Hardhat template with preconfigured Github Actions and Coveralls support.
Books
- Blockchain in Action – Book that teaches the essential principles of blockchain and how to create your own decentralized apps.
- Mastering Ethereum – Mastering Ethereum is a book for developers, offering a guide to the operation and use of the Ethereum, Ethereum Classic, RootStock (RSK) and other compatible EVM-based open blockchains.
Practice
- ChainShot – Hands-on learning with challenging coding tutorials.
- OpenZeppelin/damn-vulnerable-defi – A set of challenges to hack implementations of DeFi in Ethereum.
- OpenZeppelin/ethernaut – Ethernaut is a Web3/Solidity based wargame to be played in the Ethereum Virtual Machine. Each level is a smart contract that needs to be ‘hacked’.
Jobs
- cryptocurrencyjobs.co – Job board for blockchain and cryptocurrency jobs.
- cryptojobslist.com – Job board for blockchain and cryptocurrency jobs.
- web3.career – Job board for web3 jobs.
- crypto.jobs – CryptoJobs is the #1 website for blockchain jobs.
Libraries
- 0age/AttributeRegistry ERC-1616 Attribute Registry Standard – interface, tests and implementation.
- 0age/HomeWork – An autonomous utility for finding, sharing and reusing home addresses for contracts.
- 0age/Spawner – Spawn EIP 1167 minimal proxies with an included initialization step during contract creation.
- 0xcert/ethereum-erc721 – Non-fungible token implementation for Ethereum-based blockchains.
- alexvansande/ENSTools – A set of contracts to extend ENS functionality to other smart contracts.
- Arachnid/solidity-stringutils – Basic string utilities for Solidity.
- create-truffle-dapp – CLI to create and deploy Truffle projects with no configuration.
- dapp-bin – Ethereum repo providing implementations for many common data structures and utilities in Solidity, Serpent and LLL.
- dapp-scratch – CLI for generating javascript modules from Contracts for Decentralized Apps.
- dapphub/dappsys – Contract system framework for flexible multi-contract dapps.
- dapphub/dapptools – Command-line-friendly tools for blockchain development.
- dmihal/hardhat-interface-generator – Hardhat plugin to automatically generate interfaces from code.
- EthWorks/Waffle – Library for writing and testing smart contracts.
- gakonst/foundry – Blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
- gelatodigital/auto-top-up – Automatically top up multiple ETH addresses once their ETH balance falls below a certain threshold.
- hifi-finance/prb-math – Smart contract library for advanced fixed-point math.
- ItsNickBarry/hardhat-abi-exporter – Export contract ABIs on compilation via Hardhat.
- instant-dapp-ide – Complete Dapp and Solidity development environment as a docker image you can run from command line.
- Keydonix/uniswap-oracle – General purpose price feed oracle built on Uniswap v2 that uses merkle proofs under the hood.
- makerdao/multicall – Aggregate multiple constant function call results into one.
- maple-labs/erc-20 – Maple implementation of the ERC-20 standard.
- mattdf/RingCrypto – Ring signature related implementations for Ethereum.
- mds1/solidity-trigonometry – Library with basic trigonometry functions.
- Modular Libraries – Deployed utility libraries to use in your smart contracts.
- mzhu25/sol2string –
LibUintToString
library for efficiently convertinguint256
values to strings. - NTA-Capital/SolMATe – Libraries for floating-point matrix manipulation, linear algebra operations, and vector math.
- OpenZeppelin – Framework to build secure smart contracts.
- OpenZeppelin/openzeppelin-contracts – A library for secure smart contract development.
- OpenZeppelin/openzeppelin-contracts-upgradeable – Upgradeable variant of OpenZeppelin Contracts, meant for use in upgradeable contracts.
- optionality/clone-factory – Simple clone contract factory. Install a master copy of a contract, then easily (cheaply) create clones with separate state.
- pcaversaccio/xdeployer – Hardhat plugin to deploy your smart contracts across multiple EVM chains with the same deterministic address.
- rugpullindex/indexed-sparse-merkle-tree – Dapptools-ready and gas-optimized implementation of a sparse merkle tree.
- Smart Contracts Skeleton – Preconfigured skeleton repository for building or starting with development of Smart contracts.
- solana-labs/solana-solidity.js – Compile, deploy, and use contracts on Solana.
- Solidity Collections – Collections of code snippets and utility libraries.
- Solidity Standard Library – Standard library (Array, random, math, string).
- solidstate-network/solidstate-solidity – Upgradeable-first smart contract development library.
- studydefi/money-legos – NPM package that provides you with the mainnet addresses, ABIs, and Solidity interfaces for popular DeFi protocols.
- Truffle – Development environment, testing framework and asset pipeline for Ethereum.
- truffle-assertions – Adds additional assertions and utilities used in testing smart contracts with truffle.
- Rari-Capital/solmate – Modern, opinionated and gas optimized building blocks for smart contract development.
- Uniswap/merkle-distributor – Smart contract that distributes a balance of tokens according to a merkle root.
- Uniswap/uniswap-v2-periphery – Peripheral smart contracts for interacting with Uniswap V2.
- Uniswap/uniswap-v3-periphery – Peripheral smart contracts for interacting with Uniswap V3.
- wbobeirne/eth-balance-checker – Smart contract and library pair that allows you to check for multiple ERC20 and Ether balances across multiple addresses in a single RPC call.
- weiroll/weiroll – A simple and efficient operation-chaining/scripting language for the EVM.
- Unicode Ethereum Project – Libraries and contracts for Unicode data, algorithms, and utilities.
Tools
General
- Anish-Agnihotri/MultiFaucet – MultiFaucet drips ETH, tokens, and NFTs across many testnet networks, at once.
- Cryptofex – Standalone IDE and compiler.
- dethcrypto/ethereum-code-viewer – View the source of deployed Ethereum contracts in VSCode.
- eagr/sol-repl – Lightweight, feature-rich REPL for instant feedback.
- EthFiddle – Find, share and embed contracts.
- eth-brownie/brownie – Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine.
- Hardhat – Development environment to compile, deploy, test, and debug your Ethereum software.
- Laika – Make requests to smart contracts without the hassle of writing a single line of code.
- Remix – Online realtime compiler and runtime.
- EthereumStudio – Standalone desktop IDE.
- raineorshine/solidity-repl – REPL CLI.
- SIF – Code generation from the AST, analyse and instrument source code.
- Smart Contract Sanctuary – A home for ethereum smart contracts, all verified smart contracts from Etherscan.
- naddison36/sol2uml – Unified Modeling Language (UML) class diagram generator for smart contracts.
- solgraph – Visualize control flows for smart contract security analysis.
- sol-merger – Merges all imports into single file for contracts.
- solidity-docgen – Documentation generator for Solidity projects.
- Tenderly – Easily monitor your smart contracts with error tracking, alerting, performance metrics, and detailed contract analytics.
- tintinweb/solidity-shell – An interactive Solidity shell with lightweight session recording.
Utility
- Aniket-Engg/sol-profiler – CLI tool to list & store solidity smart contract methods attributes.
- Aniket-Engg/sol-verifier – Verify solidity smart contracts on Etherscan.
- cleanunicorn/abi2signature – Use the ABI of a smart contract to find out the function signatures.
- crytic/solc-select – CLI to quickly switch between compiler versions.
- DiverseSolutions/Diverse-Eth-Calculator – Website with Ethereum unit conversion & utility components.
- duaraghav8/Ethlint – Linter to identify and fix style & security issues in Solidity smart contracts.
- prettier-solidity/prettier-plugin-solidity – Prettier plugin for automatically formatting your code.
- protofire/solhint – Solidity linter that provides security, style guide and best practice rules for smart contract validation.
- rkalis/truffle-plugin-verify – Truffle plugin to verify smart contracts on Etherscan from the Truffle command line.
- sambacha/prettier-config-solidity – Prettier config optimized to reduce AST churn & conform to the Solidity spec.
- sc-forks/solidity-coverage – Code coverage tool.
- Tenderly/tenderly-cli – Speed up your development with error stack traces.
- tintinweb/solgrep – A scriptable semantic grep utility for Solidity.
Audit
- Echidna – Define properties for your smart contract then use fuzzing to catch security bugs.
- Manticore – Detects many common bug types, and can prove correctness properties with symbolic execution.
- Mythril – Security analysis tool for smart contracts.
- ethereum/sourcify – Re-compiler that can be used to verify that bytecode corresponds to certain source code.
- eth-sri/securify2 – Tool for analyzing smart contracts for vulnerabilities and insecure coding.
- Slither – Static analyzer with support for many common bug types, including visualization tools for security-relevant information.
- MythX – Detection for security vulnerabilities in Ethereum smart contracts throughout the development life cycle
DevOps
- Embark – Framework that allows you to easily develop and deploy DApps.
- Moesif – Service that provides Ethereum smart contract analytics and anomaly detection for DApps and DAPIs.
Languages
JavaScript
- deno-web3/solc – Solidity bindings for Deno.
- solc-js – JavaScript bindings for the Solidity compiler.
- solidity-parser – Solidity parser built in JavaScript.
- sulk – Configurable contract compilation.
TypeScript
- Soltsice – Generates strongly-typed TypeScript classes for contracts from Truffle artifacts with a single command.
- TypeChain – TypeScript bindings for Ethereum smart contracts.
Rust
- hyperledger-labs/solang – A Solidity-to-WASM-and-BPF compiler written in Rust.
- rust-ethereum/ethabi -Encode and decode smart contract invocations.
OCaml
- ocaml-solidity – OCaml library providing a parser, a typechecker and miscellaneous utilities for manipulating contracts.
Editor Plugins
Atom
- autocomplete-solidity – Parses Solidity files to give you contextual autocomplete suggestions.
- Etheratom – Compile and deploy Solidity code from atom editor.
- language-ethereum – Adds syntax highlighting and snippets to Solidity and Serpent files in Atom.
- linter-solidity – Linter.
Eclipse
- uml2solidity – Model smart contracts with UML.
Emacs
- emacs-solidity – Solidity mode for Emacs.
- company-solidity – Autocomplete with company-mode.
IntelliJ
- intellij-solidity – Solidity plugin for IntelliJ.
Sublime
- SublimeEthereum – Solidity syntax for SublimeText.
Vim
- solidity.vim – Vim compiler plugin.
- vim-solidity – Vim syntax file.
Visual Studio Code
? For a comprehensive list, see results for "Solidity" on Visual Studio Marketplace.
- Ethereum Security Bundle – A meta-extension bundling marketplace plugins for secure Ethereum smart contract development.
- sol-profiler-vscode – Visual Code Extension to generate & store smart contract methods profile.
- vscode-solidity – Visual Studio Code language support extension.
- Solidity Visual Developer – Visual Security audit, Security centric syntax and semantic highlighting, detailed class outline, UML diagram generator, and many more features.
- Solidity Contract Flattener – Flatten Solidity Contracts using truffle-flattener
- Truffle for VS Code – Truffle for VS Code simplifies how you create, build, debug and deploy smart contracts on Ethereum and all EVM-compatible blockchains and layer 2 scaling solutions.