Solidity
========
Solidity is a contract-oriented, high-level language whose syntax is similar to that of JavaScript
and it is designed to target the Ethereum Virtual Machine.
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 the
`Browser-Based Compiler `_
(it can take a while to load, please be patient).
Useful links
------------
* `Ethereum `_
* `Changelog `_
* `Story Backlog `_
* `Source Code `_
* `Ethereum Stackexchange `_
* `Gitter Chat `_
Available Solidity Integrations
-------------------------------
* `Browser-Based Compiler `_
Browser-based IDE with integrated compiler and Solidity runtime environment without server-side components.
* `Ethereum Studio `_
Specialized web IDE that also provides shell access to a complete Ethereum environment.
* `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.
* `Atom Ethereum interface `_
Plugin for the Atom editor that features syntax highlighting, compilation and a runtime environment (requires backend node).
* `Atom Solidity Linter `_
Plugin for the Atom editor that provides Solidity linting.
* `Solium `_
A commandline linter for Solidity which strictly follows the rules prescribed by the `Solidity Style Guide `_.
* `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.
Solidity Tools
--------------
* `Dapple `_
Package and deployment manager 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.
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!
See also `Russian version (русский перевод) `_.
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
style-guide.rst
common-patterns.rst
contributing.rst
frequently-asked-questions.rst