Solidity ======== .. image:: logo.svg :width: 120px :alt: Solidity logo :align: center Solidity is a contract-oriented, high-level language for implementing smart contracts. It was influenced by C++, Python and JavaScript and is designed to target the Ethereum Virtual Machine (EVM). Solidity is statically typed, supports inheritance, libraries and complex user-defined types among other features. As you will see, it is possible to create contracts for voting, crowdfunding, blind auctions, multi-signature wallets and more. .. note:: The best way to try out Solidity right now is using `Remix `_ (it can take a while to load, please be patient). Translations ------------ This documentation is translated into several languages by community volunteers, but the English version stands as a reference. * `Spanish `_ * `Russian `_ (rather outdated) Useful links ------------ * `Ethereum `_ * `Changelog `_ * `Story Backlog `_ * `Source Code `_ * `Ethereum Stackexchange `_ * `Gitter Chat `_ Available Solidity Integrations ------------------------------- * `Remix `_ Browser-based IDE with integrated compiler and Solidity runtime environment without server-side components. * `IntelliJ IDEA plugin `_ Solidity plugin for IntelliJ IDEA (and all other JetBrains IDEs) * `Visual Studio Extension `_ Solidity plugin for Microsoft Visual Studio that includes the Solidity compiler. * `Package for SublimeText — Solidity language syntax `_ Solidity syntax highlighting for SublimeText editor. * `Etheratom `_ Plugin for the Atom editor that features syntax highlighting, compilation and a runtime environment (Backend node & VM compatible). * `Atom Solidity Linter `_ Plugin for the Atom editor that provides Solidity linting. * `Atom Solium Linter `_ Configurable Solidty linter for Atom using Solium as a base. * `Solium `_ A commandline linter for Solidity which strictly follows the rules prescribed by the `Solidity Style Guide `_. * `Solhint `_ Solidity linter that provides security, style guide and best practice rules for smart contract validation. * `Visual Studio Code extension `_ Solidity plugin for Microsoft Visual Studio Code that includes syntax highlighting and the Solidity compiler. * `Emacs Solidity `_ Plugin for the Emacs editor providing syntax highlighting and compilation error reporting. * `Vim Solidity `_ Plugin for the Vim editor providing syntax highlighting. * `Vim Syntastic `_ Plugin for the Vim editor providing compile checking. Discontinued: * `Mix IDE `_ Qt based IDE for designing, debugging and testing solidity smart contracts. * `Ethereum Studio `_ Specialized web IDE that also provides shell access to a complete Ethereum environment. Solidity Tools -------------- * `Dapp `_ Build tool, package manager, and deployment assistant for Solidity. * `Solidity REPL `_ Try Solidity instantly with a command-line Solidity console. * `solgraph `_ Visualize Solidity control flow and highlight potential security vulnerabilities. * `evmdis `_ EVM Disassembler that performs static analysis on the bytecode to provide a higher level of abstraction than raw EVM operations. * `Doxity `_ Documentation Generator for Solidity. Third-Party Solidity Parsers and Grammars ----------------------------------------- * `solidity-parser `_ Solidity parser for JavaScript * `Solidity Grammar for ANTLR 4 `_ Solidity grammar for the ANTLR 4 parser generator Language Documentation ---------------------- On the next pages, we will first see a :ref:`simple smart contract ` written in Solidity followed by the basics about :ref:`blockchains ` and the :ref:`Ethereum Virtual Machine `. The next section will explain several *features* of Solidity by giving useful :ref:`example contracts ` Remember that you can always try out the contracts `in your browser `_! The last and most extensive section will cover all aspects of Solidity in depth. If you still have questions, you can try searching or asking on the `Ethereum Stackexchange `_ site, or come to our `gitter channel `_. Ideas for improving Solidity or this documentation are always welcome! Contents ======== :ref:`Keyword Index `, :ref:`Search Page ` .. toctree:: :maxdepth: 2 introduction-to-smart-contracts.rst installing-solidity.rst solidity-by-example.rst solidity-in-depth.rst security-considerations.rst using-the-compiler.rst metadata.rst abi-spec.rst julia.rst style-guide.rst common-patterns.rst bugs.rst contributing.rst frequently-asked-questions.rst