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.
- 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.
License
To the extent possible under law, Ben Kremer has waived all copyright and related or neighboring rights to this work.