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