Awesome Solidity
A curated list of awesome Solidity resources, libraries, tools and more.
Please check the contribution guidelines for information on formatting and writing pull requests.
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.
Tutorials
- androlo/solidity-workshop - Comprehensive series of tutorials covering contract-oriented programming and advanced language concepts.
- 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.
- LearnXInY - Learn Solidity in 15 mins (for experienced devs).
- Syntax cheat sheet - Quick syntax overview.
- Solidity and Vyper cheat sheet - Review syntax of both languages side-by-side.
- 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.
- 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.
- sigp/solidity-security-blog - Comprehensive list of known attack vectors and common anti-patterns.
Examples
Educational
- chriseth/solidity-examples - Examples which provide a starting point for data structures such as heaps and queues.
- 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.
- lsaether/bonding-curves - Smart contracts for bonding curves (aka curve bonded tokens).
- miguelmota/solidity-idiosyncrasies - Common gotchas, pitfalls, limitations, and idiosyncrasies.
- 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
- 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.
- 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).
- tomhirst/solidity-nextjs-starter - A full-stack dApp starter built with Next.js (React).
- ZumZoom/solidity-template - Hardhat template with preconfigured Github Actions and Coveralls support.
- rhlsthrm/typescript-solidity-dev-starter-kit - Starter kit for developing, testing, and deploying smart contracts with a full Typescript environment.
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.
- Eth Hole - Practice challenges for building portfolio, added to weekly.
- 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.
Libraries
- 0age/HomeWork - An autonomous utility for finding, sharing and reusing home addresses for contracts.
- 0xcert/ethereum-erc721 - Non-fungible token implementation for Ethereum-based blockchains.
- 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.
- 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.
- 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.
- Modular Libraries - Deployed utility libraries to use in your smart contracts.
- 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.
- Smart Contracts Skeleton - Preconfigured skeleton repository for building or starting with development of Smart contracts.
- Solidity Collections - Collections of code snippets and utility libraries.
- Solidity Standard Library - Standard library (Array, random, math, string).
- 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.
Tools
General
- Cryptofex - Standalone IDE and compiler.
- EthFiddle - Find, share and embed contracts.
- Hardhat - Development environment to compile, deploy, test, and debug your Ethereum software.
- Remix - Online realtime compiler and runtime.
- 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.
- crytic/solc-select - CLI to quickly switch between compiler versions.
- 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.
- sc-forks/solidity-coverage - Code coverage tool.
- Tenderly/tenderly-cli - Speed up your development with error stack traces.
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
- 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.
- 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
- Ethereum Security Bundle - A meta-extension bundling marketplace plugins for secure Ethereum smart contract development.
License
To the extent possible under law, Ben Kremer has waived all copyright and related or neighboring rights to this work.