awesome-solidity
⟠ A curated list of awesome Solidity resources, libraries, tools and more
Top Related Projects
OpenZeppelin Contracts is a library for secure smart contract development.
Solidity, the Smart Contract Programming Language
A curated list of awesome Ethereum security references
node of the decentralized oracle network, bridging on and off-chain computation
:warning: The Truffle Suite is being sunset. For information on ongoing support, migration options and FAQs, visit the Consensys blog. Thank you for all the support over the years.
Quick Overview
The bkrem/awesome-solidity
repository is a curated list of awesome Solidity resources, tools, and libraries. It aims to provide a comprehensive collection of materials for developers working with the Solidity programming language, which is used for writing smart contracts on the Ethereum blockchain.
Pros
- Comprehensive Collection: The repository covers a wide range of Solidity-related resources, including tutorials, libraries, tools, and best practices.
- Regularly Updated: The project is actively maintained, with new resources being added and existing ones being updated regularly.
- Community-Driven: The repository is a collaborative effort, with contributions from the Solidity community, ensuring a diverse and up-to-date collection of resources.
- Organized Structure: The resources are categorized and organized in a clear and intuitive manner, making it easy for developers to find the information they need.
Cons
- Potential Duplication: As a community-driven project, there may be some overlap or duplication of resources, which could make it slightly more challenging to navigate.
- Varying Quality: The quality of the resources listed may vary, as they are contributed by different sources, and there is no strict quality control process.
- Limited Depth: While the repository provides a broad overview of Solidity resources, it may not offer in-depth coverage or detailed explanations for some topics.
- Dependency on External Sources: The usefulness of the repository is largely dependent on the continued availability and maintenance of the external resources it links to.
Code Examples
This repository is a curated list of resources and does not contain any code examples itself. However, the resources listed within the repository may provide various Solidity code examples for different use cases and functionalities.
Getting Started
As this is a curated list of resources and not a code library, there are no specific getting started instructions. However, users can follow these general steps to get started with the bkrem/awesome-solidity
repository:
- Visit the bkrem/awesome-solidity repository on GitHub.
- Browse the table of contents to find the categories and resources that are most relevant to your needs.
- Click on the links to the external resources to explore tutorials, libraries, tools, and other materials related to Solidity development.
- Refer to the individual resource pages for any specific installation, setup, or usage instructions.
- Contribute to the repository by submitting new resources or updating existing ones through pull requests, if desired.
Competitor Comparisons
OpenZeppelin Contracts is a library for secure smart contract development.
Pros of openzeppelin-contracts
- Provides a comprehensive library of secure, tested, and community-audited smart contracts
- Regularly updated and maintained by a dedicated team of developers
- Offers standardized implementations of common contract patterns and ERC standards
Cons of openzeppelin-contracts
- Focuses solely on contract implementations, lacking broader resources and tools
- May require more in-depth knowledge to utilize effectively compared to a curated list
Code Comparison
openzeppelin-contracts:
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
// ... (additional implementation)
}
awesome-solidity:
## Libraries
- [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts) - A library for secure smart contract development.
- [solmate](https://github.com/Rari-Capital/solmate) - Modern, opinionated and gas optimized building blocks for smart contract development.
Summary
openzeppelin-contracts provides a robust library of smart contract implementations, while awesome-solidity offers a curated list of Solidity resources. The former is more focused on practical code, while the latter serves as a comprehensive guide to the Solidity ecosystem. Developers may find both repositories valuable for different aspects of their Solidity development journey.
Solidity, the Smart Contract Programming Language
Pros of Solidity
- Official Ethereum repository for the Solidity language
- Contains the actual Solidity compiler implementation
- Provides comprehensive documentation and language specifications
Cons of Solidity
- Focused solely on the Solidity language, not a curated list of resources
- May be overwhelming for beginners looking for learning materials
- Less community-driven content compared to Awesome Solidity
Code Comparison
Solidity (main repository):
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 private storedData;
function set(uint256 x) public {
storedData = x;
}
}
Awesome Solidity (example from a linked resource):
pragma solidity ^0.8.0;
contract Counter {
uint public count;
function increment() public {
count += 1;
}
}
Summary
Solidity is the official repository for the Solidity programming language, containing the compiler implementation and detailed specifications. It's ideal for developers working directly with the language or contributing to its development.
Awesome Solidity, on the other hand, is a curated list of Solidity resources, tutorials, and tools. It's more suitable for developers looking to learn Solidity or find helpful resources for their projects.
While Solidity provides the core language implementation, Awesome Solidity offers a community-driven collection of learning materials and tools to support Solidity development.
A curated list of awesome Ethereum security references
Pros of awesome-ethereum-security
- More focused on security aspects of Ethereum and smart contract development
- Includes tools, guidelines, and resources specifically for auditing and vulnerability detection
- Regularly updated with the latest security practices and tools
Cons of awesome-ethereum-security
- Narrower scope, primarily covering security-related topics
- May be less accessible for beginners due to its specialized focus
- Fewer general-purpose Solidity development resources
Code comparison
awesome-solidity example:
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 private storedData;
function set(uint256 x) public {
storedData = x;
}
}
awesome-ethereum-security example (security pattern):
pragma solidity ^0.8.0;
contract SecureStorage {
uint256 private storedData;
address private owner;
constructor() {
owner = msg.sender;
}
function set(uint256 x) public {
require(msg.sender == owner, "Only owner can set data");
storedData = x;
}
}
Summary
awesome-solidity provides a broader range of resources for Solidity development, including tutorials, libraries, and tools. It's more suitable for developers looking for general Solidity knowledge and resources.
awesome-ethereum-security focuses specifically on security aspects of Ethereum and smart contract development. It's ideal for developers and auditors looking to enhance their understanding of blockchain security practices and tools.
node of the decentralized oracle network, bridging on and off-chain computation
Pros of Chainlink
- Comprehensive blockchain oracle solution with production-ready code
- Active development and maintenance by a dedicated team
- Extensive documentation and integration guides for developers
Cons of Chainlink
- Focused specifically on oracle functionality, not a general Solidity resource
- Steeper learning curve for beginners compared to a curated list
- Requires more setup and infrastructure to use effectively
Code Comparison
Chainlink (smart contract integration):
import "@chainlink/contracts/src/v0.8/ChainlinkClient.sol";
contract MyContract is ChainlinkClient {
using Chainlink for Chainlink.Request;
// ... (contract implementation)
}
Awesome Solidity (example from a linked resource):
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 private storedData;
function set(uint256 x) public {
storedData = x;
}
}
Summary
Chainlink is a robust oracle solution for blockchain developers, offering production-ready code and extensive documentation. However, it has a narrower focus compared to Awesome Solidity, which serves as a curated list of Solidity resources. Chainlink is more suitable for developers working on projects requiring external data integration, while Awesome Solidity provides a broader overview of Solidity development resources and tools.
:warning: The Truffle Suite is being sunset. For information on ongoing support, migration options and FAQs, visit the Consensys blog. Thank you for all the support over the years.
Pros of Truffle
- Comprehensive development environment with built-in testing framework and asset pipeline
- Active community and regular updates
- Integrated with popular tools like Ganache for local blockchain development
Cons of Truffle
- Steeper learning curve for beginners compared to a curated list
- More opinionated and less flexible than a collection of resources
- Requires installation and setup, unlike a simple list of links
Code Comparison
Truffle configuration example:
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
}
}
};
Awesome Solidity doesn't contain code, but rather links to resources. For example:
## Tutorials
- [CryptoZombies](https://cryptozombies.io/) - Interactive code school that teaches Solidity through building your own crypto-collectibles game.
Summary
Truffle is a full-featured development environment for Ethereum, offering a complete suite of tools for smart contract development, testing, and deployment. It provides a more structured approach to Solidity development but requires more setup and has a steeper learning curve.
Awesome Solidity, on the other hand, is a curated list of resources for Solidity development. It offers a wide range of links to tutorials, tools, and libraries, making it easier for developers to find relevant information quickly. However, it doesn't provide a unified development environment like Truffle does.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
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.
- 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.
- topmonks/solidity_quick_ref - Syntax overview.
- nishuzumi/Web3-Enterprise-level-engineering - Web3 Enterprise Engineering Writing Specification Tutorial [Chinese Language - 䏿ç].
- 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.
- WTF Solidity - An open-source and community reviewed tutorial in Chinese and English, covering intro, advanced, and application topics.
- WTF Ethers - An open-source and community reviewed Ethers.js tutorial in Chinese covering intro and advanced topics [Chinese Language - 䏿ç].
Articles
- Best Practices for Smart Contract Development (yos.io, Yos Riady, 2019) - Developer handbook for smart contract developers.
- 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.
- SecDim - Online edutainment platform with content on smart contract security using real world examples, as well as online appsec games.
- securing/SCSVS - Smart Contract Security Verification Standard.
- sigp/solidity-security-blog - Comprehensive list of known attack vectors and common anti-patterns.
- SunWeb3Sec/DeFiHackLabs - Reproduce DeFi hacked incidents using Foundry.
Audits
- Arbitrary Execution - Public security audits by the Arbitrary Execution Team.
- 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.
- Hacken - Public security audits by the Hacken Team.
- [SpearbitDAO] (https://github.com/spearbit/portfolio) - Public security audits by the SpearbitDAO 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.
- WTF Academy - Web3 Open Academy - A Dapp that allows you to learn Solidity, test with quizzes, and get certificate for you skill [Chinese Language - 䏿ç].
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).
- transmissions11/foundry-template - Streamlined template for getting started with Foundry and Solmate.
- 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
- aworker.io - Job board for blockchain and cryptocurrency jobs.
- cryptocurrencyjobs.co - Job board for blockchain and cryptocurrency jobs.
- cryptojobslist.com - Job board for blockchain and cryptocurrency jobs.
- crypto.jobs - Job board for blockchain and cryptocurrency jobs.
- web3.career - Job board for blockchain and cryptocurrency 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.
- dapp-bin - Ethereum repo providing implementations for many common data structures and utilities in Solidity, Serpent and LLL.
- dapphub/dappsys - Contract system framework for flexible multi-contract dapps.
- 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.
- ItsNickBarry/hardhat-abi-exporter - Export contract ABIs on compilation via Hardhat.
- 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/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.
- partylikeits1983/num_complex_solidity - Smart contract library for handling complex numbers.
- 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.
- ThirdWeb/Contracts - Pre-built contracts for Token, NFT, Governance and Marketplace from ThirdWeb.
- truffle-assertions - Adds additional assertions and utilities used in testing smart contracts with truffle.
- transmissions11/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.
- 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.
- create-truffle-dapp - CLI to create and deploy Truffle projects with no configuration.
- dapp-scratch - CLI for generating javascript modules from Contracts for Decentralized Apps.
- dethcrypto/ethereum-code-viewer - View the source of deployed Ethereum contracts in VSCode.
- dapphub/dapptools - Command-line-friendly tools for blockchain development.
- eagr/sol-repl - Lightweight, feature-rich REPL for instant feedback.
- eth-brownie/brownie - Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine.
- EthFiddle - Find, share and embed contracts.
- EthereumStudio - Standalone desktop IDE.
- foundry-rs/foundry - Blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
- instant-dapp-ide - Complete Dapp and Solidity development environment as a docker image you can run from command line.
- 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.
- naddison36/sol2uml - Unified Modeling Language (UML) class diagram generator for smart contracts.
- OpenZeppelin - Framework to build secure smart contracts.
- raineorshine/solidity-repl - REPL CLI.
- Remix - Online realtime compiler and runtime.
- 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.
- Sourcify - Decentralized and open-sourced smart contract verification service.
- 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.
- Truffle - Development environment, testing framework and asset pipeline for Ethereum.
- tintinweb/solidity-shell - An interactive Solidity shell with lightweight session recording.
- weiroll/weiroll - A simple and efficient operation-chaining/scripting language for the EVM.
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.
- Bytes32 Converter Online - Convert Solidity bytes32 to utf8 string or integers and vice versa.
- 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 smart contracts.
- Ethereum Unit Converter - Online tool to convert the different ethereum denominations (wei, gwei, ether).
- ItsNickBarry/hardhat-contract-sizer - Output contract sizes with Hardhat.
- Online ABI Encoder - Online Solidity ABI Encoder to encode smart contract arguments, and also perform read and write operations on the blockchain.
- 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 and Sourcify 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
- a16z/metamorphic-contract-detector - Check whether a given contract exhibits red flags that could indicate the potential for metamorphism instead of immutability.
- 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.
- solidity-sizer - GitHub Action that adds a comment to the PR indicating the size of contracts, including size differences.
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
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.
- ConsenSys/vscode-solidity-auditor - Language support and visual security auditor for Visual Studio Code.
- 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
- Solidity + Hardhat - Adds general support for Solidity contracts development with features user expect to find in an IDE (code formatting, linting, prettifier, snippets, go to references, and so on). Go to choice for those relying on VSCode and Hardhat in their projects.
- 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.
Top Related Projects
OpenZeppelin Contracts is a library for secure smart contract development.
Solidity, the Smart Contract Programming Language
A curated list of awesome Ethereum security references
node of the decentralized oracle network, bridging on and off-chain computation
:warning: The Truffle Suite is being sunset. For information on ongoing support, migration options and FAQs, visit the Consensys blog. Thank you for all the support over the years.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot