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.
The best way to try out Solidity right now is using Remix (it can take a while to load, please be patient). Remix is a web browser based IDE that allows you to write Solidity smart contracts, then deploy and run the smart contracts.
Since software is written by humans, it can have bugs. Thus, also smart contracts should be created following well-known best-practices in software development. This includes code review, testing, audits and correctness proofs. Also note that users are sometimes more confident in code than its authors. Finally, blockchains have their own things to watch out for, so please take a look at the section Security Considerations.
This documentation is translated into several languages by community volunteers, but the English version stands as a reference.
Available Solidity Integrations¶
- 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.
- 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.
- Linter to identify and fix style and security issues in Solidity.
- 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.
- Build tool, package manager, and deployment assistant for Solidity.
- Solidity REPL
- Try Solidity instantly with a command-line Solidity console.
- Visualize Solidity control flow and highlight potential security vulnerabilities.
- Documentation Generator for Solidity.
- EVM Disassembler that performs static analysis on the bytecode to provide a higher level of abstraction than raw EVM operations.
- ABI to solidity interface converter
- A script for generating contract interfaces from the ABI of a smart contract.
- Fully automated online static analyzer for smart contracts, providing a security report based on vulnerability patterns.
- 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.
- EVM Lab
- Rich tool package to interact with the EVM. Includes a VM, Etherchain API, and a trace-viewer with gas cost display.
Information like variable names, comments, and source code formatting is lost in the compilation process and it is not possible to completely recover the original source code. Decompiling smart contracts to view the original source code might not be possible, or the end result that useful.
Third-Party Solidity Parsers and Grammars¶
The last and most extensive section will cover all aspects of Solidity in depth.
- Introduction to Smart Contracts
- Installing the Solidity Compiler
- Solidity by Example
- Solidity in Depth
- Security Considerations
- Using the compiler
- Contract Metadata
- Contract ABI Specification
- Style Guide
- Common Patterns
- List of Known Bugs
- Frequently Asked Questions