Solidity 最新 0.6.8 中文文档发布

最新 Solidity 0.6.8 中文文档发布, 这不单是一份 Solidity 速查手册,更是一份深入以太坊智能合约开发宝典。

## 翻译说明 [Solidity 最新 0.6.8 中文文档](https://learnblockchain.cn/docs/solidity/) 根据当前 最新官方版本v0.6.8 进行翻译,本翻译最初 [HiBlock](http://hiblock.one/) 社区发起,后经过 [深入浅出区块链社区](https://learnblockchain.cn/) 社区成员根据最新版本补充翻译。 大部分的译者,都是国内顶尖的[以太坊](https://learnblockchain.cn/2017/11/20/whatiseth/)开发和研究人员,部分译者如下: * [杨镇](https://github.com/riversyang) 《深入以太坊智能合约开发》作者,《精通以太坊》译者 * [姜信宝](https://github.com/bobjiang) HiBlock 区块链社区发起人 , * [Tiny熊](https://github.com/xilibi2003) 《精通以太坊智能合约开发》作者,[登链社区](https://learnblockchain.cn)发起人 * [盖方宇](https://github.com/gitferry) 哥伦比亚大学电子工程系博士,专注扩容研究 * [虞是乎](https://github.com/ysqi) 磨链发起人 * [左洪斌](https://github.com/hongbinzuo)《Scrum精髓(敏捷转型指南)》译者 感谢所有的译者贡献,献花~ 献花~ 这份文档无疑是最新质量最好的[ Solidity 中文文档](https://learnblockchain.cn/docs/solidity/),本文仅仅是部分摘要和目录, 完整文档请前往 https://learnblockchain.cn/docs/solidity/ 。 翻译工作是一个持续的过程(这份文档目前也还有部分未完成),我们热情邀请热爱区块链技术的小伙伴一起参与,欢迎加入我们Group: https://github.com/lbc-team 。 本中文文档大部分情况下,英中直译,但有时为了更好的理解也会使用意译,如需转载请联系Tiny熊(微信:xlbxiong). ## Solidity 语言简介 及 文档目录 Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在[以太坊虚拟机](https://learnblockchain.cn/2019/04/09/easy-evm/)(EVM)]上运行。 要理解智能合约及虚拟机是怎么运行,推荐这两篇非常好的文章 [完全理解以太坊智能合约](https://learnblockchain.cn/2018/01/04/understanding-smart-contracts/) 及 [深入浅出以太坊虚拟机](https://learnblockchain.cn/2019/04/09/easy-evm/) [Solidity](https://learnblockchain.cn/docs/solidity/) 是静态类型语言,支持继承、库和复杂的用户定义类型等特性, 以下是完整目录。 ### 文档目录 * [入门智能合约](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html) * [简单的智能合约](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#simple-smart-contract) * [存储合约(把一个数据保存到链上)](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#id3) * [子货币合约(Subcurrency)示例](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#subcurrency) * [区块链基础](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#blockchain-basics) * [交易/事务](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#index-4) * [区块](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#index-5) * [以太坊虚拟机](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#index-6) * [概述](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#id11) * [账户](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#index-7) * [交易](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#index-8) * [Gas](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#gas) * [存储,内存和栈](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#index-10) * [指令集](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#index-11) * [消息调用](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#index-12) * [委托调用/代码调用和库](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#index-13) * [日志](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#index-14) * [合约创建](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#index-15) * [失效和自毁](https://learnblockchain.cn/docs/solidity/introduction-to-smart-contracts.html#index-16) * [安装Solidity编译器](https://learnblockchain.cn/docs/solidity/installing-solidity.html) * [版本](https://learnblockchain.cn/docs/solidity/installing-solidity.html#id1) * [Remix](https://learnblockchain.cn/docs/solidity/installing-solidity.html#remix) * [npm / Node.js](https://learnblockchain.cn/docs/solidity/installing-solidity.html#npm-node-js) * [Docker](https://learnblockchain.cn/docs/solidity/installing-solidity.html#docker) * [二进制包](https://learnblockchain.cn/docs/solidity/installing-solidity.html#id4) * [从源代码编译](https://learnblockchain.cn/docs/solidity/installing-solidity.html#building-from-source) * [克隆代码库](https://learnblockchain.cn/docs/solidity/installing-solidity.html#id6) * [先决条件 - macOS](https://learnblockchain.cn/docs/solidity/installing-solidity.html#macos) * [先决条件 - Windows](https://learnblockchain.cn/docs/solidity/installing-solidity.html#windows) * [外部依赖](https://learnblockchain.cn/docs/solidity/installing-solidity.html#id8) * [命令行构建](https://learnblockchain.cn/docs/solidity/installing-solidity.html#id9) * [CMake参数](https://learnblockchain.cn/docs/solidity/installing-solidity.html#id10) * [SMT Solvers](https://learnblockchain.cn/docs/solidity/installing-solidity.html#smt-solvers) * [版本号字符串详解](https://learnblockchain.cn/docs/solidity/installing-solidity.html#id11) * [版本信息详情](https://learnblockchain.cn/docs/solidity/installing-solidity.html#id12) * [根据例子学习Solidity](https://learnblockchain.cn/docs/solidity/solidity-by-example.html) * [投票合约](https://learnblockchain.cn/docs/solidity/examples/voting.html) * [可能的优化](https://learnblockchain.cn/docs/solidity/examples/voting.html#id2) * [秘密竞价(盲拍)合约](https://learnblockchain.cn/docs/solidity/examples/blind-auction.html) * [简单的公开拍卖](https://learnblockchain.cn/docs/solidity/examples/blind-auction.html#simple-auction) * [秘密竞拍(盲拍)](https://learnblockchain.cn/docs/solidity/examples/blind-auction.html#id3) * [安全的远程购买合约](https://learnblockchain.cn/docs/solidity/examples/safe-remote.html) * [微支付通道合约](https://learnblockchain.cn/docs/solidity/examples/micropayment.html) * [创建及验证签名](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id3) * [创建签名](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id4) * [哪些内容需要签名](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id5) * [打包参数](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id6) * [在Solidity中还原消息签名者](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#solidity) * [提取签名参数](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id7) * [计算信息的Hash](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#hash) * [ReceiverPays 完整合约代码](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#receiverpays) * [编写一个简单的支付通道](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id9) * [什么是支付通道?](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id10) * [打开支付通道](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id11) * [进行支付](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id12) * [关闭状态通道](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id13) * [通道有效期](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id14) * [完整合约代码](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id15) * [验证支付](https://learnblockchain.cn/docs/solidity/examples/micropayment.html#id16) * [库合约使用](https://learnblockchain.cn/docs/solidity/examples/modular.html) * [深入理解Solidity](https://learnblockchain.cn/docs/solidity/solidity-in-depth.html) * [Solidity 源文件结构](https://learnblockchain.cn/docs/solidity/layout-of-source-files.html) * [Pragmas](https://learnblockchain.cn/docs/solidity/layout-of-source-files.html#pragmas) * [版本标识](https://learnblockchain.cn/docs/solidity/layout-of-source-files.html#version-pragma) * [标注实验性功能](https://learnblockchain.cn/docs/solidity/layout-of-source-files.html#experimental-pragma) * [导入其他源文件](https://learnblockchain.cn/docs/solidity/layout-of-source-files.html#import) * [语法与语义](https://learnblockchain.cn/docs/solidity/layout-of-source-files.html#id5) * [路径](https://learnblockchain.cn/docs/solidity/layout-of-source-files.html#id6) * [在实际的编译器中使用](https://learnblockchain.cn/docs/solidity/layout-of-source-files.html#import-compiler) * [注释](https://learnblockchain.cn/docs/solidity/layout-of-source-files.html#index-4) * [合约结构](https://learnblockchain.cn/docs/solidity/structure-of-a-contract.html) * [状态变量](https://learnblockchain.cn/docs/solidity/structure-of-a-contract.html#structure-state-variables) * [函数](https://learnblockchain.cn/docs/solidity/structure-of-a-contract.html#structure-functions) * [函数 修饰器modifier](https://learnblockchain.cn/docs/solidity/structure-of-a-contract.html#modifier) * [事件 Event](https://learnblockchain.cn/docs/solidity/structure-of-a-contract.html#event) * [结构体](https://learnblockchain.cn/docs/solidity/structure-of-a-contract.html#structure-struct-types) * [枚举类型](https://learnblockchain.cn/docs/solidity/structure-of-a-contract.html#structure-enum-types) * [类型](https://learnblockchain.cn/docs/solidity/types.html) * [值类型](https://learnblockchain.cn/docs/solidity/types.html#value-types) * [布尔类型](https://learnblockchain.cn/docs/solidity/types.html#index-2) * [整型](https://learnblockchain.cn/docs/solidity/types.html#index-3) * [定长浮点型](https://learnblockchain.cn/docs/solidity/types.html#index-4) * [地址类型 Address](https://learnblockchain.cn/docs/solidity/types.html#address) * [合约类型](https://learnblockchain.cn/docs/solidity/types.html#contract-types) * [定长字节数组](https://learnblockchain.cn/docs/solidity/types.html#index-7) * [变长字节数组](https://learnblockchain.cn/docs/solidity/types.html#id17) * [地址字面常量](https://learnblockchain.cn/docs/solidity/types.html#address-literals) * [有理数和整数字面常量](https://learnblockchain.cn/docs/solidity/types.html#rational-literals) * [字符串字面常量及类型](https://learnblockchain.cn/docs/solidity/types.html#string-literals) * [十六进制字面常量](https://learnblockchain.cn/docs/solidity/types.html#index-11) * [枚举类型](https://learnblockchain.cn/docs/solidity/types.html#enums) * [函数类型](https://learnblockchain.cn/docs/solidity/types.html#function-types) * [引用类型](https://learnblockchain.cn/docs/solidity/types.html#reference-types) * [数据位置](https://learnblockchain.cn/docs/solidity/types.html#data-location) * [数组](https://learnblockchain.cn/docs/solidity/types.html#arrays) * [结构体](https://learnblockchain.cn/docs/solidity/types.html#structs) * [映射](https://learnblockchain.cn/docs/solidity/types.html#mapping-types) * [涉及 LValues 的运算符](https://learnblockchain.cn/docs/solidity/types.html#lvalues) * [delete](https://learnblockchain.cn/docs/solidity/types.html#delete) * [基本类型之间的转换](https://learnblockchain.cn/docs/solidity/types.html#types-conversion-elementary-types) * [隐式转换](https://learnblockchain.cn/docs/solidity/types.html#id38) * [显式转换](https://learnblockchain.cn/docs/solidity/types.html#id39) * [字面常量与基本类型的转换](https://learnblockchain.cn/docs/solidity/types.html#types-conversion-literals) * [整型](https://learnblockchain.cn/docs/solidity/types.html#id41) * [定长字节数组](https://learnblockchain.cn/docs/solidity/types.html#id42) * [地址类型](https://learnblockchain.cn/docs/solidity/types.html#id43) * [类型推断(已弃用)](https://learnblockchain.cn/docs/solidity/types.html#type-deduction) * [单位和全局变量](https://learnblockchain.cn/docs/solidity/units-and-global-variables.html) * [以太币Ether 单位](https://learnblockchain.cn/docs/solidity/units-and-global-variables.html#ether) * [时间单位](https://learnblockchain.cn/docs/solidity/units-and-global-variables.html#index-1) * [特殊变量和函数](https://learnblockchain.cn/docs/solidity/units-and-global-variables.html#id3) * [区块和交易属性](https://learnblockchain.cn/docs/solidity/units-and-global-variables.html#index-2) * [ABI 编码函数](https://learnblockchain.cn/docs/solidity/units-and-global-variables.html#abi) * [错误处理](https://learnblockchain.cn/docs/solidity/units-and-global-variables.html#index-4) * [数学和密码学函数](https://learnblockchain.cn/docs/solidity/units-and-global-variables.html#index-5) * [地址相关](https://learnblockchain.cn/docs/solidity/units-and-global-variables.html#address-related) * [合约相关](https://learnblockchain.cn/docs/solidity/units-and-global-variables.html#index-7) * [类型信息](https://learnblockchain.cn/docs/solidity/units-and-global-variables.html#meta-type) * [表达式和控制结构](https://learnblockchain.cn/docs/solidity/control-structures.html) * [输入参数和输出参数](https://learnblockchain.cn/docs/solidity/control-structures.html#index-0) * [输入参数](https://learnblockchain.cn/docs/solidity/control-structures.html#id3) * [输出参数](https://learnblockchain.cn/docs/solidity/control-structures.html#id4) * [控制结构](https://learnblockchain.cn/docs/solidity/control-structures.html#index-1) * [函数调用](https://learnblockchain.cn/docs/solidity/control-structures.html#function-calls) * [内部函数调用](https://learnblockchain.cn/docs/solidity/control-structures.html#internal-function-calls) * [外部函数调用](https://learnblockchain.cn/docs/solidity/control-structures.html#external-function-calls) * [具名调用和匿名函数参数](https://learnblockchain.cn/docs/solidity/control-structures.html#id9) * [省略函数参数名称](https://learnblockchain.cn/docs/solidity/control-structures.html#id10) * [通过 new 创建合约](https://learnblockchain.cn/docs/solidity/control-structures.html#new) * [赋值](https://learnblockchain.cn/docs/solidity/control-structures.html#index-4) * [解构赋值和返回多值](https://learnblockchain.cn/docs/solidity/control-structures.html#index-5) * [数组和结构体的复杂性](https://learnblockchain.cn/docs/solidity/control-structures.html#id13) * [作用域和声明](https://learnblockchain.cn/docs/solidity/control-structures.html#default-value) * [错误处理:Assert, Require, Revert and Exceptions](https://learnblockchain.cn/docs/solidity/control-structures.html#assert-require-revert-and-exceptions) * [合约](https://learnblockchain.cn/docs/solidity/contracts.html) * [创建合约](https://learnblockchain.cn/docs/solidity/contracts.html#index-1) * [可见性和 getter 函数](https://learnblockchain.cn/docs/solidity/contracts.html#getter) * [Getter 函数](https://learnblockchain.cn/docs/solidity/contracts.html#getter-functions) * [函数 修饰器modifier](https://learnblockchain.cn/docs/solidity/contracts.html#modifier) * [Constant 状态变量](https://learnblockchain.cn/docs/solidity/contracts.html#constant) * [函数](https://learnblockchain.cn/docs/solidity/contracts.html#functions) * [函数参数及返回值](https://learnblockchain.cn/docs/solidity/contracts.html#function-parameters-return-variables) * [View 函数](https://learnblockchain.cn/docs/solidity/contracts.html#view) * [Pure 函数](https://learnblockchain.cn/docs/solidity/contracts.html#pure) * [Fallback 回退函数](https://learnblockchain.cn/docs/solidity/contracts.html#fallback) * [函数重载](https://learnblockchain.cn/docs/solidity/contracts.html#overload-function) * [事件](https://learnblockchain.cn/docs/solidity/contracts.html#events) * [日志的底层接口](https://learnblockchain.cn/docs/solidity/contracts.html#index-14) * [其它学习事件机制的资源](https://learnblockchain.cn/docs/solidity/contracts.html#id13) * [继承](https://learnblockchain.cn/docs/solidity/contracts.html#index-15) * [构造器](https://learnblockchain.cn/docs/solidity/contracts.html#constructor) * [基类构造函数的参数](https://learnblockchain.cn/docs/solidity/contracts.html#index-17) * [多重继承与线性化](https://learnblockchain.cn/docs/solidity/contracts.html#multi-inheritance) * [继承有相同名字的不同类型成员](https://learnblockchain.cn/docs/solidity/contracts.html#id20) * [抽象合约](https://learnblockchain.cn/docs/solidity/contracts.html#abstract-contract) * [接口](https://learnblockchain.cn/docs/solidity/contracts.html#interfaces) * [库](https://learnblockchain.cn/docs/solidity/contracts.html#libraries) * [库的调用保护](https://learnblockchain.cn/docs/solidity/contracts.html#id24) * [Using For](https://learnblockchain.cn/docs/solidity/contracts.html#using-for) * [Solidity汇编](https://learnblockchain.cn/docs/solidity/assembly.html) * [内联汇编](https://learnblockchain.cn/docs/solidity/assembly.html#inline-assembly) * [例子](https://learnblockchain.cn/docs/solidity/assembly.html#id2) * [语法](https://learnblockchain.cn/docs/solidity/assembly.html#id3) * [操作码](https://learnblockchain.cn/docs/solidity/assembly.html#id4) * [字面常量](https://learnblockchain.cn/docs/solidity/assembly.html#id5) * [函数风格](https://learnblockchain.cn/docs/solidity/assembly.html#id6) * [访问外部变量和函数](https://learnblockchain.cn/docs/solidity/assembly.html#id7) * [标签](https://learnblockchain.cn/docs/solidity/assembly.html#id8) * [汇编局部变量声明](https://learnblockchain.cn/docs/solidity/assembly.html#id9) * [赋值](https://learnblockchain.cn/docs/solidity/assembly.html#id10) * [If](https://learnblockchain.cn/docs/solidity/assembly.html#if) * [Switch](https://learnblockchain.cn/docs/solidity/assembly.html#switch) * [循环](https://learnblockchain.cn/docs/solidity/assembly.html#id11) * [函数](https://learnblockchain.cn/docs/solidity/assembly.html#id12) * [注意事项](https://learnblockchain.cn/docs/solidity/assembly.html#id13) * [Solidity 惯例](https://learnblockchain.cn/docs/solidity/assembly.html#id14) * [独立汇编](https://learnblockchain.cn/docs/solidity/assembly.html#id15) * [汇编语法](https://learnblockchain.cn/docs/solidity/assembly.html#id16) * [杂项](https://learnblockchain.cn/docs/solidity/miscellaneous.html) * [存储storage 中的状态变量储存结构](https://learnblockchain.cn/docs/solidity/miscellaneous.html#storage) * [内存memory 中的存储结构](https://learnblockchain.cn/docs/solidity/miscellaneous.html#memory) * [调用数据存储结构](https://learnblockchain.cn/docs/solidity/miscellaneous.html#index-2) * [内部机制 - 清理变量](https://learnblockchain.cn/docs/solidity/miscellaneous.html#index-3) * [内部机制 - 优化器](https://learnblockchain.cn/docs/solidity/miscellaneous.html#index-4) * [源代码映射](https://learnblockchain.cn/docs/solidity/miscellaneous.html#index-5) * [技巧和窍门](https://learnblockchain.cn/docs/solidity/miscellaneous.html#id6) * [速查表](https://learnblockchain.cn/docs/solidity/miscellaneous.html#id7) * [操作符优先级](https://learnblockchain.cn/docs/solidity/miscellaneous.html#order) * [全局变量](https://learnblockchain.cn/docs/solidity/miscellaneous.html#index-7) * [函数可见性说明符](https://learnblockchain.cn/docs/solidity/miscellaneous.html#index-8) * [修改器](https://learnblockchain.cn/docs/solidity/miscellaneous.html#index-9) * [保留字](https://learnblockchain.cn/docs/solidity/miscellaneous.html#id12) * [语法表](https://learnblockchain.cn/docs/solidity/miscellaneous.html#id13) * [Solidity v0.5.0 重大更新](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html) * [语义变化](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#id2) * [语义及语法更改](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#id3) * [准确性要求](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#id4) * [弃用元素](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#id5) * [弃用命令行及 JSON 接口](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#json) * [构造函数变更](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#id6) * [弃用函数](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#id7) * [弃用类型转换](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#id8) * [弃用字面量及后缀](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#id9) * [弃用变量](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#id10) * [弃用语法](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#id11) * [和老合约进行交互](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#interoperability) * [举例](https://learnblockchain.cn/docs/solidity/050-breaking-changes.html#id13) * [注释描述规范](https://learnblockchain.cn/docs/solidity/natspec-format.html) * [文档举例](https://learnblockchain.cn/docs/solidity/natspec-format.html#header-doc-example) * [标签](https://learnblockchain.cn/docs/solidity/natspec-format.html#header-tags) * [Dynamic expressions](https://learnblockchain.cn/docs/solidity/natspec-format.html#dynamic-expressions) * [Inheritance Notes](https://learnblockchain.cn/docs/solidity/natspec-format.html#inheritance-notes) * [文档输出](https://learnblockchain.cn/docs/solidity/natspec-format.html#header-output) * [用户文档](https://learnblockchain.cn/docs/solidity/natspec-format.html#header-user-doc) * [开发者文档](https://learnblockchain.cn/docs/solidity/natspec-format.html#header-developer-doc) * [安全考量](https://learnblockchain.cn/docs/solidity/security-considerations.html) * [陷阱](https://learnblockchain.cn/docs/solidity/security-considerations.html#id2) * [私有信息和随机性](https://learnblockchain.cn/docs/solidity/security-considerations.html#id3) * [重入](https://learnblockchain.cn/docs/solidity/security-considerations.html#re-entance) * [gas 限制和循环](https://learnblockchain.cn/docs/solidity/security-considerations.html#gas) * [发送和接收 以太币Ether](https://learnblockchain.cn/docs/solidity/security-considerations.html#ether) * [调用栈深度](https://learnblockchain.cn/docs/solidity/security-considerations.html#id5) * [tx.origin问题](https://learnblockchain.cn/docs/solidity/security-considerations.html#tx-origin) * [整型溢出问题](https://learnblockchain.cn/docs/solidity/security-considerations.html#underflow-overflow) * [细枝末节](https://learnblockchain.cn/docs/solidity/security-considerations.html#id7) * [推荐做法](https://learnblockchain.cn/docs/solidity/security-considerations.html#id8) * [认真对待警告](https://learnblockchain.cn/docs/solidity/security-considerations.html#id9) * [限定 以太币Ether 的数量](https://learnblockchain.cn/docs/solidity/security-considerations.html#id10) * [保持合约简练且模块化](https://learnblockchain.cn/docs/solidity/security-considerations.html#id11) * [使用“检查-生效-交互”(Checks-Effects-Interactions)模式](https://learnblockchain.cn/docs/solidity/security-considerations.html#checks-effects-interactions) * [包含故障-安全(Fail-Safe)模式](https://learnblockchain.cn/docs/solidity/security-considerations.html#fail-safe) * [形式化验证](https://learnblockchain.cn/docs/solidity/security-considerations.html#id12) * [资源](https://learnblockchain.cn/docs/solidity/resources.html) * [常用资源](https://learnblockchain.cn/docs/solidity/resources.html#id2) * [Solidity IDE及编辑器](https://learnblockchain.cn/docs/solidity/resources.html#solidity-ide) * [Solidity 工具](https://learnblockchain.cn/docs/solidity/resources.html#id6) * [第三方 Solidity 解析器](https://learnblockchain.cn/docs/solidity/resources.html#id7) * [使用编译器](https://learnblockchain.cn/docs/solidity/using-the-compiler.html) * [使用命令行编译器](https://learnblockchain.cn/docs/solidity/using-the-compiler.html#commandline-compiler) * [编译器输入输出JSON描述](https://learnblockchain.cn/docs/solidity/using-the-compiler.html#json) * [输入说明](https://learnblockchain.cn/docs/solidity/using-the-compiler.html#id3) * [输出说明](https://learnblockchain.cn/docs/solidity/using-the-compiler.html#id4) * [错误类型](https://learnblockchain.cn/docs/solidity/using-the-compiler.html#id5) * [合约的元数据](https://learnblockchain.cn/docs/solidity/metadata.html) * [元数据哈希字节码的编码](https://learnblockchain.cn/docs/solidity/metadata.html#id2) * [自动化接口生成和 以太坊标准说明格式natspec 的使用方法](https://learnblockchain.cn/docs/solidity/metadata.html#natspec) * [源代码验证的使用方法](https://learnblockchain.cn/docs/solidity/metadata.html#id4) * [应用二进制接口Application Binary Interface(ABI) 说明](https://learnblockchain.cn/docs/solidity/abi-spec.html) * [基本设计](https://learnblockchain.cn/docs/solidity/abi-spec.html#id2) * [函数选择器Function Selector](https://learnblockchain.cn/docs/solidity/abi-spec.html#function-selector) * [参数编码](https://learnblockchain.cn/docs/solidity/abi-spec.html#id3) * [类型](https://learnblockchain.cn/docs/solidity/abi-spec.html#id4) * [编码的形式化说明](https://learnblockchain.cn/docs/solidity/abi-spec.html#id5) * [函数选择器Function Selector 和参数编码](https://learnblockchain.cn/docs/solidity/abi-spec.html#id6) * [例子](https://learnblockchain.cn/docs/solidity/abi-spec.html#id7) * [动态类型的使用](https://learnblockchain.cn/docs/solidity/abi-spec.html#id8) * [事件](https://learnblockchain.cn/docs/solidity/abi-spec.html#id9) * [JSON](https://learnblockchain.cn/docs/solidity/abi-spec.html#json) * [处理 元组tuple 类型](https://learnblockchain.cn/docs/solidity/abi-spec.html#tuple) * [非标准打包模式](https://learnblockchain.cn/docs/solidity/abi-spec.html#abi-packed-mode) * [Yul](https://learnblockchain.cn/docs/solidity/yul.html) * [Yul 语言说明](https://learnblockchain.cn/docs/solidity/yul.html#id2) * [语法层面的限制](https://learnblockchain.cn/docs/solidity/yul.html#id3) * [作用域规则](https://learnblockchain.cn/docs/solidity/yul.html#id4) * [形式规范](https://learnblockchain.cn/docs/solidity/yul.html#id5) * [类型转换函数](https://learnblockchain.cn/docs/solidity/yul.html#id6) * [低级函数](https://learnblockchain.cn/docs/solidity/yul.html#id7) * [后端](https://learnblockchain.cn/docs/solidity/yul.html#id8) * [后端: EVM](https://learnblockchain.cn/docs/solidity/yul.html#evm) * [后端: “EVM 1.5”](https://learnblockchain.cn/docs/solidity/yul.html#evm-1-5) * [后端: eWASM](https://learnblockchain.cn/docs/solidity/yul.html#ewasm) * [Yul 对象说明](https://learnblockchain.cn/docs/solidity/yul.html#id9) * [编程风格指南](https://learnblockchain.cn/docs/solidity/style-guide.html) * [概述](https://learnblockchain.cn/docs/solidity/style-guide.html#id2) * [代码结构](https://learnblockchain.cn/docs/solidity/style-guide.html#id3) * [缩进](https://learnblockchain.cn/docs/solidity/style-guide.html#id4) * [制表符或空格](https://learnblockchain.cn/docs/solidity/style-guide.html#id5) * [空行](https://learnblockchain.cn/docs/solidity/style-guide.html#id6) * [代码行的最大长度](https://learnblockchain.cn/docs/solidity/style-guide.html#maximum-line-length) * [源文件编码格式](https://learnblockchain.cn/docs/solidity/style-guide.html#id8) * [Imports 规范](https://learnblockchain.cn/docs/solidity/style-guide.html#imports) * [函数顺序](https://learnblockchain.cn/docs/solidity/style-guide.html#id9) * [表达式中的空格](https://learnblockchain.cn/docs/solidity/style-guide.html#id10) * [控制结构](https://learnblockchain.cn/docs/solidity/style-guide.html#id11) * [函数声明](https://learnblockchain.cn/docs/solidity/style-guide.html#id12) * [映射](https://learnblockchain.cn/docs/solidity/style-guide.html#id13) * [变量声明](https://learnblockchain.cn/docs/solidity/style-guide.html#id14) * [其他建议](https://learnblockchain.cn/docs/solidity/style-guide.html#id15) * [命名规范](https://learnblockchain.cn/docs/solidity/style-guide.html#id16) * [命名方式](https://learnblockchain.cn/docs/solidity/style-guide.html#id17) * [应避免的名称](https://learnblockchain.cn/docs/solidity/style-guide.html#id18) * [合约和库名称](https://learnblockchain.cn/docs/solidity/style-guide.html#id19) * [结构体名称](https://learnblockchain.cn/docs/solidity/style-guide.html#id20) * [事件名称](https://learnblockchain.cn/docs/solidity/style-guide.html#id21) * [函数名称](https://learnblockchain.cn/docs/solidity/style-guide.html#id22) * [函数参数命名](https://learnblockchain.cn/docs/solidity/style-guide.html#id23) * [局部变量和状态变量名称](https://learnblockchain.cn/docs/solidity/style-guide.html#id24) * [常量命名](https://learnblockchain.cn/docs/solidity/style-guide.html#id25) * [修饰符命名](https://learnblockchain.cn/docs/solidity/style-guide.html#id26) * [枚举变量命名](https://learnblockchain.cn/docs/solidity/style-guide.html#id27) * [避免命名冲突](https://learnblockchain.cn/docs/solidity/style-guide.html#id28) * [描述注释 NatSpec](https://learnblockchain.cn/docs/solidity/style-guide.html#natspec) * [通用模式](https://learnblockchain.cn/docs/solidity/common-patterns.html) * [从合约中提款](https://learnblockchain.cn/docs/solidity/common-patterns.html#withdrawal-pattern) * [限制访问](https://learnblockchain.cn/docs/solidity/common-patterns.html#index-1) * [状态机](https://learnblockchain.cn/docs/solidity/common-patterns.html#index-3) * [示例](https://learnblockchain.cn/docs/solidity/common-patterns.html#id5) * [已知bug列表](https://learnblockchain.cn/docs/solidity/bugs.html) * [贡献方式](https://learnblockchain.cn/docs/solidity/contributing.html) * [怎样报告问题](https://learnblockchain.cn/docs/solidity/contributing.html#id2) * [Pull Request 的工作流](https://learnblockchain.cn/docs/solidity/contributing.html#pull-request) * [运行编译器测试](https://learnblockchain.cn/docs/solidity/contributing.html#id4) * [编写和运行语法测试](https://learnblockchain.cn/docs/solidity/contributing.html#id5) * [通过 AFL 运行 Fuzzer](https://learnblockchain.cn/docs/solidity/contributing.html#afl-fuzzer) * [Whiskers 模板系统](https://learnblockchain.cn/docs/solidity/contributing.html#whiskers) * [LLL](https://learnblockchain.cn/docs/solidity/lll.html) * [常见问题](https://learnblockchain.cn/docs/solidity/frequently-asked-questions.html) * [基本问题](https://learnblockchain.cn/docs/solidity/frequently-asked-questions.html#id2) * [高级问题](https://learnblockchain.cn/docs/solidity/frequently-asked-questions.html#id12) * [怎样才能在合约中获取一个随机数?(实施一份自动回款的博彩合约)](https://learnblockchain.cn/docs/solidity/frequently-asked-questions.html#id13) * [从另一份合约中的 non-constant 函数获取返回值](https://learnblockchain.cn/docs/solidity/frequently-asked-questions.html#non-constant) * [让合约在首次被挖出时就开始做些事情](https://learnblockchain.cn/docs/solidity/frequently-asked-questions.html#id16) * [怎样才能创建二维数组?](https://learnblockchain.cn/docs/solidity/frequently-asked-questions.html#id17)

翻译说明

Solidity 最新 0.6.8 中文文档 根据当前 最新官方版本v0.6.8 进行翻译,本翻译最初 HiBlock 社区发起,后经过 深入浅出区块链社区 社区成员根据最新版本补充翻译。

大部分的译者,都是国内顶尖的以太坊开发和研究人员,部分译者如下:

  • 杨镇 《深入以太坊智能合约开发》作者,《精通以太坊》译者
  • 姜信宝 HiBlock 区块链社区发起人 ,
  • Tiny熊 《精通以太坊智能合约开发》作者,登链社区发起人
  • 盖方宇 哥伦比亚大学电子工程系博士,专注扩容研究
  • 虞是乎 磨链发起人
  • 左洪斌《Scrum精髓(敏捷转型指南)》译者

感谢所有的译者贡献,献花~ 献花~

这份文档无疑是最新质量最好的 Solidity 中文文档,本文仅仅是部分摘要和目录, 完整文档请前往 https://learnblockchain.cn/docs/solidity/ 。

翻译工作是一个持续的过程(这份文档目前也还有部分未完成),我们热情邀请热爱区块链技术的小伙伴一起参与,欢迎加入我们Group: https://github.com/lbc-team 。

本中文文档大部分情况下,英中直译,但有时为了更好的理解也会使用意译,如需转载请联系Tiny熊(微信:xlbxiong).

Solidity 语言简介 及 文档目录

Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)]上运行。

要理解智能合约及虚拟机是怎么运行,推荐这两篇非常好的文章 完全理解以太坊智能合约 及 深入浅出以太坊虚拟机

Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性, 以下是完整目录。

文档目录

  • 入门智能合约
    • 简单的智能合约
      • 存储合约(把一个数据保存到链上)
      • 子货币合约(Subcurrency)示例
    • 区块链基础
      • 交易/事务
      • 区块
    • 以太坊虚拟机
      • 概述
      • 账户
      • 交易
      • Gas
      • 存储,内存和栈
      • 指令集
      • 消息调用
      • 委托调用/代码调用和库
      • 日志
      • 合约创建
      • 失效和自毁
  • 安装Solidity编译器
    • 版本
    • Remix
    • npm / Node.js
    • Docker
    • 二进制包
    • 从源代码编译
      • 克隆代码库
      • 先决条件 - macOS
      • 先决条件 - Windows
      • 外部依赖
      • 命令行构建
    • CMake参数
      • SMT Solvers
    • 版本号字符串详解
    • 版本信息详情
  • 根据例子学习Solidity
    • 投票合约
      • 可能的优化
    • 秘密竞价(盲拍)合约
      • 简单的公开拍卖
      • 秘密竞拍(盲拍)
    • 安全的远程购买合约
    • 微支付通道合约
      • 创建及验证签名
        • 创建签名
        • 哪些内容需要签名
        • 打包参数
        • 在Solidity中还原消息签名者
        • 提取签名参数
        • 计算信息的Hash
        • ReceiverPays 完整合约代码
      • 编写一个简单的支付通道
        • 什么是支付通道?
        • 打开支付通道
        • 进行支付
        • 关闭状态通道
        • 通道有效期
        • 完整合约代码
        • 验证支付
    • 库合约使用
  • 深入理解Solidity
    • Solidity 源文件结构
      • Pragmas
      • 版本标识
        • 标注实验性功能
      • 导入其他源文件
        • 语法与语义
        • 路径
        • 在实际的编译器中使用
      • 注释
    • 合约结构
      • 状态变量
      • 函数
      • 函数 修饰器modifier
      • 事件 Event
      • 结构体
      • 枚举类型
    • 类型
      • 值类型
        • 布尔类型
        • 整型
        • 定长浮点型
        • 地址类型 Address
        • 合约类型
        • 定长字节数组
        • 变长字节数组
        • 地址字面常量
        • 有理数和整数字面常量
        • 字符串字面常量及类型
        • 十六进制字面常量
        • 枚举类型
        • 函数类型
      • 引用类型
        • 数据位置
        • 数组
        • 结构体
      • 映射
      • 涉及 LValues 的运算符
        • delete
      • 基本类型之间的转换
        • 隐式转换
        • 显式转换
      • 字面常量与基本类型的转换
        • 整型
        • 定长字节数组
        • 地址类型
      • 类型推断(已弃用)
    • 单位和全局变量
      • 以太币Ether 单位
      • 时间单位
      • 特殊变量和函数
        • 区块和交易属性
        • ABI 编码函数
        • 错误处理
        • 数学和密码学函数
        • 地址相关
        • 合约相关
        • 类型信息
    • 表达式和控制结构
      • 输入参数和输出参数
        • 输入参数
        • 输出参数
      • 控制结构
      • 函数调用
        • 内部函数调用
        • 外部函数调用
        • 具名调用和匿名函数参数
        • 省略函数参数名称
      • 通过 new 创建合约
      • 赋值
        • 解构赋值和返回多值
        • 数组和结构体的复杂性
      • 作用域和声明
      • 错误处理:Assert, Require, Revert and Exceptions
    • 合约
      • 创建合约
      • 可见性和 getter 函数
        • Getter 函数
      • 函数 修饰器modifier
      • Constant 状态变量
      • 函数
        • 函数参数及返回值
        • View 函数
        • Pure 函数
        • Fallback 回退函数
        • 函数重载
      • 事件
        • 日志的底层接口
        • 其它学习事件机制的资源
      • 继承
        • 构造器
        • 基类构造函数的参数
        • 多重继承与线性化
        • 继承有相同名字的不同类型成员
      • 抽象合约
      • 接口
        • 库的调用保护
      • Using For
    • Solidity汇编
      • 内联汇编
        • 例子
        • 语法
        • 操作码
        • 字面常量
        • 函数风格
        • 访问外部变量和函数
        • 标签
        • 汇编局部变量声明
        • 赋值
        • If
        • Switch
        • 循环
        • 函数
        • 注意事项
        • Solidity 惯例
      • 独立汇编
        • 汇编语法
    • 杂项
      • 存储storage 中的状态变量储存结构
      • 内存memory 中的存储结构
      • 调用数据存储结构
      • 内部机制 - 清理变量
      • 内部机制 - 优化器
      • 源代码映射
      • 技巧和窍门
      • 速查表
        • 操作符优先级
        • 全局变量
        • 函数可见性说明符
        • 修改器
        • 保留字
        • 语法表
    • Solidity v0.5.0 重大更新
      • 语义变化
      • 语义及语法更改
      • 准确性要求
      • 弃用元素
        • 弃用命令行及 JSON 接口
        • 构造函数变更
        • 弃用函数
        • 弃用类型转换
        • 弃用字面量及后缀
        • 弃用变量
        • 弃用语法
      • 和老合约进行交互
      • 举例
  • 注释描述规范
    • 文档举例
    • 标签
      • Dynamic expressions
      • Inheritance Notes
    • 文档输出
      • 用户文档
      • 开发者文档
  • 安全考量
    • 陷阱
      • 私有信息和随机性
      • 重入
      • gas 限制和循环
      • 发送和接收 以太币Ether
      • 调用栈深度
      • tx.origin问题
      • 整型溢出问题
      • 细枝末节
    • 推荐做法
      • 认真对待警告
      • 限定 以太币Ether 的数量
      • 保持合约简练且模块化
      • 使用“检查-生效-交互”(Checks-Effects-Interactions)模式
      • 包含故障-安全(Fail-Safe)模式
    • 形式化验证
  • 资源
    • 常用资源
    • Solidity IDE及编辑器
    • Solidity 工具
    • 第三方 Solidity 解析器
  • 使用编译器
    • 使用命令行编译器
    • 编译器输入输出JSON描述
      • 输入说明
      • 输出说明
        • 错误类型
  • 合约的元数据
    • 元数据哈希字节码的编码
    • 自动化接口生成和 以太坊标准说明格式natspec 的使用方法
    • 源代码验证的使用方法
  • 应用二进制接口Application Binary Interface(ABI) 说明
    • 基本设计
    • 函数选择器Function Selector
    • 参数编码
    • 类型
    • 编码的形式化说明
    • 函数选择器Function Selector 和参数编码
    • 例子
    • 动态类型的使用
    • 事件
    • JSON
      • 处理 元组tuple 类型
    • 非标准打包模式
  • Yul
    • Yul 语言说明
      • 语法层面的限制
      • 作用域规则
      • 形式规范
      • 类型转换函数
      • 低级函数
      • 后端
      • 后端: EVM
      • 后端: “EVM 1.5”
      • 后端: eWASM
    • Yul 对象说明
  • 编程风格指南
    • 概述
    • 代码结构
      • 缩进
      • 制表符或空格
      • 空行
      • 代码行的最大长度
      • 源文件编码格式
      • Imports 规范
      • 函数顺序
      • 表达式中的空格
      • 控制结构
      • 函数声明
      • 映射
      • 变量声明
      • 其他建议
    • 命名规范
      • 命名方式
      • 应避免的名称
      • 合约和库名称
      • 结构体名称
      • 事件名称
      • 函数名称
      • 函数参数命名
      • 局部变量和状态变量名称
      • 常量命名
      • 修饰符命名
      • 枚举变量命名
      • 避免命名冲突
    • 描述注释 NatSpec
  • 通用模式
    • 从合约中提款
    • 限制访问
    • 状态机
      • 示例
  • 已知bug列表
  • 贡献方式
    • 怎样报告问题
    • Pull Request 的工作流
    • 运行编译器测试
      • 编写和运行语法测试
    • 通过 AFL 运行 Fuzzer
    • Whiskers 模板系统
  • LLL
  • 常见问题
    • 基本问题
    • 高级问题
      • 怎样才能在合约中获取一个随机数?(实施一份自动回款的博彩合约)
      • 从另一份合约中的 non-constant 函数获取返回值
      • 让合约在首次被挖出时就开始做些事情
      • 怎样才能创建二维数组?
  • 发表于 2019-05-08 17:25
  • 阅读 ( 14399 )
  • 学分 ( 31 )
  • 分类:Solidity

评论