2015-12-10 10:35:54 +00:00
Solidity
========
2015-12-07 20:16:25 +00:00
2016-10-14 10:09:51 +00:00
Solidity is a contract-oriented, high-level language whose syntax is similar to that of JavaScript
2017-03-16 00:43:25 +00:00
and it is designed to target the Ethereum Virtual Machine (EVM).
2016-10-14 10:09:51 +00:00
Solidity is statically typed, supports inheritance, libraries and complex
2016-10-26 17:23:53 +00:00
user-defined types among other features.
2016-10-14 10:09:51 +00:00
2016-06-27 12:51:07 +00:00
As you will see, it is possible to create contracts for voting,
2015-12-07 20:16:25 +00:00
crowdfunding, blind auctions, multi-signature wallets and more.
2015-12-10 10:35:54 +00:00
.. note ::
2017-03-15 22:58:14 +00:00
The best way to try out Solidity right now is using
`Remix <https://remix.ethereum.org/> `_
2015-12-10 10:35:54 +00:00
(it can take a while to load, please be patient).
Useful links
------------
* `Ethereum <https://ethereum.org> `_
2016-10-12 08:26:22 +00:00
* `Changelog <https://github.com/ethereum/solidity/blob/develop/Changelog.md> `_
2015-12-10 10:35:54 +00:00
* `Story Backlog <https://www.pivotaltracker.com/n/projects/1189488> `_
* `Source Code <https://github.com/ethereum/solidity/> `_
2016-01-27 17:04:30 +00:00
* `Ethereum Stackexchange <https://ethereum.stackexchange.com/> `_
2015-12-10 10:35:54 +00:00
* `Gitter Chat <https://gitter.im/ethereum/solidity/> `_
2016-05-20 13:10:50 +00:00
Available Solidity Integrations
-------------------------------
2016-05-26 11:37:10 +00:00
2017-03-15 22:58:14 +00:00
* `Remix <https://remix.ethereum.org/> `_
2016-05-24 16:09:59 +00:00
Browser-based IDE with integrated compiler and Solidity runtime environment without server-side components.
2016-05-20 13:10:50 +00:00
* `Ethereum Studio <https://live.ether.camp/> `_
2016-05-24 16:09:59 +00:00
Specialized web IDE that also provides shell access to a complete Ethereum environment.
2016-05-20 13:10:50 +00:00
2017-03-05 14:45:28 +00:00
* `IntelliJ IDEA plugin <https://plugins.jetbrains.com/plugin/9475-intellij-solidity> `_
Solidity plugin for IntelliJ IDEA (and all other JetBrains IDEs)
2016-05-20 13:10:50 +00:00
* `Visual Studio Extension <https://visualstudiogallery.msdn.microsoft.com/96221853-33c4-4531-bdd5-d2ea5acc4799/> `_
2016-05-24 16:09:59 +00:00
Solidity plugin for Microsoft Visual Studio that includes the Solidity compiler.
2016-05-20 13:10:50 +00:00
* `Package for SublimeText — Solidity language syntax <https://packagecontrol.io/packages/Ethereum/> `_
2016-05-24 16:09:59 +00:00
Solidity syntax highlighting for SublimeText editor.
2016-05-20 13:10:50 +00:00
2017-04-23 03:33:12 +00:00
* `Etheratom <https://github.com/0mkara/etheratom> `_
Plugin for the Atom editor that features syntax highlighting, compilation and a runtime environment (Backend node & VM compatible).
2016-05-20 13:10:50 +00:00
2016-05-28 03:39:22 +00:00
* `Atom Solidity Linter <https://atom.io/packages/linter-solidity> `_
2016-05-24 16:09:59 +00:00
Plugin for the Atom editor that provides Solidity linting.
2016-09-05 13:49:45 +00:00
* `Solium <https://github.com/duaraghav8/Solium/> `_
A commandline linter for Solidity which strictly follows the rules prescribed by the `Solidity Style Guide <http://solidity.readthedocs.io/en/latest/style-guide.html> `_ .
2016-05-28 03:39:22 +00:00
2016-05-20 13:10:50 +00:00
* `Visual Studio Code extension <http://juan.blanco.ws/solidity-contracts-in-visual-studio-code/> `_
2016-05-24 16:09:59 +00:00
Solidity plugin for Microsoft Visual Studio Code that includes syntax highlighting and the Solidity compiler.
2016-05-26 11:37:10 +00:00
* `Emacs Solidity <https://github.com/ethereum/emacs-solidity/> `_
2016-05-24 16:09:59 +00:00
Plugin for the Emacs editor providing syntax highlighting and compilation error reporting.
2016-05-26 11:37:10 +00:00
2016-05-24 16:09:59 +00:00
* `Vim Solidity <https://github.com/tomlion/vim-solidity/> `_
Plugin for the Vim editor providing syntax highlighting.
2016-05-20 13:10:50 +00:00
2016-08-16 11:12:19 +00:00
* `Vim Syntastic <https://github.com/scrooloose/syntastic> `_
Plugin for the Vim editor providing compile checking.
2016-07-27 15:42:21 +00:00
Discontinued:
* `Mix IDE <https://github.com/ethereum/mix/> `_
Qt based IDE for designing, debugging and testing solidity smart contracts.
2016-07-06 15:39:32 +00:00
Solidity Tools
2016-08-29 15:00:11 +00:00
--------------
2016-07-06 15:39:32 +00:00
2017-04-15 02:01:57 +00:00
* `Dapp <https://dapp.readthedocs.io> `_
Build tool, package manager, and deployment assistant for Solidity.
2016-09-05 14:29:08 +00:00
2016-07-06 15:39:32 +00:00
* `Solidity REPL <https://github.com/raineorshine/solidity-repl> `_
Try Solidity instantly with a command-line Solidity console.
2016-07-11 15:23:17 +00:00
2016-07-06 15:39:32 +00:00
* `solgraph <https://github.com/raineorshine/solgraph> `_
Visualize Solidity control flow and highlight potential security vulnerabilities.
* `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.
2016-12-27 18:29:25 +00:00
Third-Party Solidity Parsers and Grammars
-----------------------------------------
* `solidity-parser <https://github.com/ConsenSys/solidity-parser> `_
Solidity parser for JavaScript
* `Solidity Grammar for ANTLR 4 <https://github.com/federicobond/solidity-antlr4> `_
Solidity grammar for the ANTLR 4 parser generator
2015-12-10 10:35:54 +00:00
Language Documentation
----------------------
2015-12-07 20:16:25 +00:00
On the next pages, we will first see a :ref: `simple smart contract <simple-smart-contract>` written
in Solidity followed by the basics about :ref: `blockchains <blockchain-basics>`
and the :ref: `Ethereum Virtual Machine <the-ethereum-virtual-machine>` .
The next section will explain several *features* of Solidity by giving
useful :ref: `example contracts <voting>`
Remember that you can always try out the contracts
2017-03-15 22:58:14 +00:00
`in your browser <https://remix.ethereum.org> `_ !
2015-12-07 20:16:25 +00:00
The last and most extensive section will cover all aspects of Solidity in depth.
2016-01-27 17:06:41 +00:00
If you still have questions, you can try searching or asking on the
`Ethereum Stackexchange <https://ethereum.stackexchange.com/> `_
site, or come to our `gitter channel <https://gitter.im/ethereum/solidity/> `_ .
Ideas for improving Solidity or this documentation are always welcome!
2015-12-07 20:16:25 +00:00
2015-12-10 10:35:54 +00:00
See also `Russian version (русский перевод) <https://github.com/ethereum/wiki/wiki/%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE-%D0%BF%D0%BE-Solidity> `_ .
2015-12-07 20:16:25 +00:00
Contents
========
2015-12-10 10:35:54 +00:00
:ref: `Keyword Index <genindex>` , :ref: `Search Page <search>`
2015-12-07 20:16:25 +00:00
.. toctree ::
:maxdepth: 2
introduction-to-smart-contracts.rst
2015-12-10 10:35:54 +00:00
installing-solidity.rst
2015-12-07 20:16:25 +00:00
solidity-by-example.rst
solidity-in-depth.rst
2016-06-28 15:29:08 +00:00
security-considerations.rst
2016-06-10 15:25:51 +00:00
using-the-compiler.rst
2015-12-07 20:16:25 +00:00
style-guide.rst
common-patterns.rst
2017-04-12 10:23:34 +00:00
bugs.rst
2016-08-29 17:24:28 +00:00
contributing.rst
2015-12-07 20:16:25 +00:00
frequently-asked-questions.rst