#########
Resources
#########

General Resources
=================

* `Ethereum.org Developer Portal <https://ethereum.org/en/developers/>`_
* `Ethereum StackExchange <https://ethereum.stackexchange.com/>`_
* `Solidity Portal <https://soliditylang.org/>`_
* `Solidity Changelog <https://github.com/ethereum/solidity/blob/develop/Changelog.md>`_
* `Solidity Source Code on GitHub <https://github.com/ethereum/solidity/>`_
* `Solidity Language Users Chat <https://matrix.to/#/#ethereum_solidity:gitter.im>`_
* `Solidity Compiler Developers Chat <https://matrix.to/#/#ethereum_solidity-dev:gitter.im>`_
* `Awesome Solidity <https://github.com/bkrem/awesome-solidity>`_
* `Solidity by Example <https://solidity-by-example.org/>`_
* `Solidity Documentation Community Translations <https://github.com/solidity-docs>`_

Integrated (Ethereum) Development Environments
==============================================

    * `Brownie <https://eth-brownie.readthedocs.io/en/stable/>`_
        Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine.

    * `Dapp <https://dapp.tools/>`_
        Tool for building, testing and deploying smart contracts from the command-line.

    * `Embark <https://framework.embarklabs.io/>`_
        Developer platform for building and deploying decentralized applications.

    * `Foundry <https://github.com/foundry-rs/foundry>`_
        Fast, portable and modular toolkit for Ethereum application development written in Rust.

    * `Hardhat <https://hardhat.org/>`_
        Ethereum development environment with local Ethereum network, debugging features and plugin ecosystem.

    * `Remix <https://remix.ethereum.org/>`_
        Browser-based IDE with integrated compiler and Solidity runtime environment without server-side components.

    * `Truffle <https://trufflesuite.com/truffle/>`_
        Ethereum development framework.

Editor Integrations
===================

* Emacs

    * `Emacs Solidity <https://github.com/ethereum/emacs-solidity/>`_
        Plugin for the Emacs editor providing syntax highlighting and compilation error reporting.

* IntelliJ

    * `IntelliJ IDEA plugin <https://plugins.jetbrains.com/plugin/9475-solidity/>`_
        Solidity plugin for IntelliJ IDEA (and all other JetBrains IDEs).

* Sublime Text

    * `Package for SublimeText - Solidity language syntax <https://packagecontrol.io/packages/Ethereum/>`_
        Solidity syntax highlighting for SublimeText editor.

* Vim

    * `Vim Solidity by Thesis <https://github.com/thesis/vim-solidity/>`_
        Syntax highlighting for Solidity in Vim.

    * `Vim Solidity by TovarishFin <https://github.com/TovarishFin/vim-solidity>`_
        Vim syntax file for Solidity.

    * `Vim Syntastic <https://github.com/vim-syntastic/syntastic>`_
        Plugin for the Vim editor providing compile checking.

* Visual Studio Code (VS Code)

    * `Ethereum Remix Visual Studio Code extension <https://github.com/ethereum/remix-vscode>`_
        Ethereum Remix extension pack for VS Code

    * `Solidity Visual Studio Code extension, by Juan Blanco <https://juan.blanco.ws/solidity-contracts-in-visual-studio-code/>`_
        Solidity plugin for Microsoft Visual Studio Code that includes syntax highlighting and the Solidity compiler.

    * `Solidity Visual Studio Code extension, by Nomic Foundation <https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity>`_
        Solidity and Hardhat support by the Hardhat team, including: syntax highlighting, jump to definition, renames, quick fixes and inline solc warnings and errors.

    * `Solidity Visual Auditor extension <https://marketplace.visualstudio.com/items?itemName=tintinweb.solidity-visual-auditor>`_
        Adds security centric syntax and semantic highlighting to Visual Studio Code.

    * `Truffle for VS Code <https://marketplace.visualstudio.com/items?itemName=trufflesuite-csi.truffle-vscode>`_
        Build, debug and deploy smart contracts on Ethereum and EVM-compatible blockchains.

Solidity Tools
==============

* `ABI to Solidity interface converter <https://gist.github.com/chriseth/8f533d133fa0c15b0d6eaf3ec502c82b>`_
    A script for generating contract interfaces from the ABI of a smart contract.

* `abi-to-sol <https://github.com/gnidan/abi-to-sol>`_
    Tool to generate Solidity interface source from a given ABI JSON.

* `Doxity <https://github.com/DigixGlobal/doxity>`_
    Documentation Generator for Solidity.

* `Ethlint <https://github.com/duaraghav8/Ethlint>`_
    Linter to identify and fix style and security issues in Solidity.

* `evmdis <https://github.com/Arachnid/evmdis>`_
    EVM Disassembler that performs static analysis on the bytecode to provide a higher level of abstraction than raw EVM operations.

* `EVM Lab <https://github.com/ethereum/evmlab/>`_
    Rich tool package to interact with the EVM. Includes a VM, Etherchain API, and a trace-viewer with gas cost display.

* `hevm <https://github.com/dapphub/dapptools/tree/master/src/hevm#readme>`_
    EVM debugger and symbolic execution engine.

* `leafleth <https://github.com/clemlak/leafleth>`_
    A documentation generator for Solidity smart-contracts.

* `Scaffold-ETH <https://github.com/scaffold-eth/scaffold-eth>`_
    Forkable Ethereum development stack focused on fast product iterations.

* `sol2uml <https://www.npmjs.com/package/sol2uml>`_
    Unified Modeling Language (UML) class diagram generator for Solidity contracts.

* `solc-select <https://github.com/crytic/solc-select>`_
    A script to quickly switch between Solidity compiler versions.

* `Solidity prettier plugin <https://github.com/prettier-solidity/prettier-plugin-solidity>`_
    A Prettier Plugin for Solidity.

* `Solidity REPL <https://github.com/raineorshine/solidity-repl>`_
    Try Solidity instantly with a command-line Solidity console.

* `solgraph <https://github.com/raineorshine/solgraph>`_
    Visualize Solidity control flow and highlight potential security vulnerabilities.

* `Solhint <https://github.com/protofire/solhint>`_
    Solidity linter that provides security, style guide and best practice rules for smart contract validation.

* `Sourcify <https://sourcify.dev/>`_
    Decentralized automated contract verification service and public repository of contract metadata.

* `SÅ«rya <https://github.com/ConsenSys/surya/>`_
    Utility tool for smart contract systems, offering a number of visual outputs and information about the contracts' structure. Also supports querying the function call graph.

* `Universal Mutator <https://github.com/agroce/universalmutator>`_
    A tool for mutation generation, with configurable rules and support for Solidity and Vyper.

Third-Party Solidity Parsers and Grammars
=========================================

* `Solidity Parser for JavaScript <https://github.com/solidity-parser/parser>`_
    A Solidity parser for JS built on top of a robust ANTLR4 grammar.