Solidity是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受C++,Python和Javascript语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。
Solidity是静态类型语言,支持继承、库和复杂的用户定义类型等特性。
下面您将会看到,使用Solidity语言,可以为投票、众筹、秘密竞价(盲拍)、多重签名的钱包以及其他应用创建合约。
Note
目前尝试Solidity编程的最好的方式是使用 Remix (需要时间加载,请耐心等待)。
Warning
因为软件是人写的,就会有bug,所以,创建智能合约也应该遵循软件开发领域熟知的最佳实践。这些实践包括代码审查、测试、审计和正确性证明。
同时也要注意:代码的用户有时比作者更有信心。 最后,区块链本身有些东西需要留意,请参考 :ref:`security_considerations`。
本文档由社区志愿者翻译成多种语言,但是英语版本作为主要参考。
- Remix
- 基于浏览器的IDE,集成了编译器和Solidity运行时环境,不需要服务端组件。
- IntelliJ IDEA plugin
- IntelliJ IDEA的Solidity插件(可用于其他所有的JetBrains IDEs)
- Visual Studio Extension
- Microsoft Visual Studio的Solidity插件,包含Solidity编译器。
- Package for SublimeText — Solidity language syntax
- SublimeText编辑器的语法高亮包。
- Etheratom
- Atom编辑器的插件,支持高亮、编译和运行时环境(后端节点,虚拟机兼容)。
- Atom Solidity Linter
- Atom编辑器的插件,提供Solidity语言的Lint检查(静态检查)。
- Atom Solium Linter
- Atom的可配置的Solidty静态检查器,基于Solium。
- Solium
- 一种静态检查器,识别和修复Solidity中的风格以及安全问题。
- Solhint
- 一种静态检查器,提供安全和风格指南以及智能合约验证的最佳实践规则。
- Visual Studio Code extension
- Microsoft Visual Studio Code插件,包含语法高亮和Solidity编译器。
- Emacs Solidity
- Emacs编辑器的插件,提供语法高亮和编译错误报告。
- Vim Solidity
- Vim编辑器的插件,提供语法高亮。
- Vim Syntastic
- Vim编辑器的插件,提供编译检查。
停止使用:
- Mix IDE
- 基于Qt的IDE,可以设计、调试和测试Solidity智能合约。
- Ethereum Studio
- 专门的网页IDE,也提供一个完整以太坊环境的脚本访问。
- Dapp
- Solidity语言的构建工具,包管理器以及部署助手。
- Solidity REPL
- 一个命令行控制台,可以立刻尝试Solidity语言。
- solgraph
- 可视化的Solidity控制流,并能标明潜在的安全漏洞。
- evmdis
- EVM反汇编程序,可以执行字节码的静态分析,能提供比EVM操作更高级的抽象。
- Doxity
- Solidity语言的文档生成器。
- solidity-parser
- JavaScript的Solidity解析器
- Solidity Grammar for ANTLR 4
- ANTLR 4解析器生成器的Solidity语法
下面的页面中,我们首先会看到一个使用Solidity写的 :ref:`简单智能合约 <simple-smart-contract>`,随后讲解 :ref:`区块链 <blockchain-basics>` 基础,然后是 :ref:`以太坊虚拟机 <the-ethereum-virtual-machine>` 。
下一节会通过给出有用的 :ref:`合约样例 <voting>` ,解释Solidity的几个*特性* , 记住你都可以 在你的浏览器中 尝试这些合约!
最后也是最长的一节会深入讲解Solidity的所有方面。
如果还有问题,你可以尝试搜索或在 Ethereum Stackexchange 上提问,或者到我们的 gitter频道 来。 随时欢迎改善Solidity或本文档的想法!
:ref:`Keyword Index <genindex>`, :ref:`Search Page <search>`
.. 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