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 接口
- 构造函数变更
- 弃用函数
- 弃用类型转换
- 弃用字面量及后缀
- 弃用变量
- 弃用语法
- 和老合约进行交互
- 举例
- Solidity 源文件结构
- 注释描述规范
- 文档举例
- 标签
- 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 对象说明
- Yul 语言说明
- 编程风格指南
- 概述
- 代码结构
- 缩进
- 制表符或空格
- 空行
- 代码行的最大长度
- 源文件编码格式
- Imports 规范
- 函数顺序
- 表达式中的空格
- 控制结构
- 函数声明
- 映射
- 变量声明
- 其他建议
- 命名规范
- 命名方式
- 应避免的名称
- 合约和库名称
- 结构体名称
- 事件名称
- 函数名称
- 函数参数命名
- 局部变量和状态变量名称
- 常量命名
- 修饰符命名
- 枚举变量命名
- 避免命名冲突
- 描述注释 NatSpec
- 通用模式
- 从合约中提款
- 限制访问
- 状态机
- 示例
- 已知bug列表
- 贡献方式
- 怎样报告问题
- Pull Request 的工作流
- 运行编译器测试
- 编写和运行语法测试
- 通过 AFL 运行 Fuzzer
- Whiskers 模板系统
- LLL
- 常见问题
- 基本问题
- 高级问题
- 怎样才能在合约中获取一个随机数?(实施一份自动回款的博彩合约)
- 从另一份合约中的 non-constant 函数获取返回值
- 让合约在首次被挖出时就开始做些事情
- 怎样才能创建二维数组?
- 发表于 2019-05-08 17:25
- 阅读 ( 14399 )
- 学分 ( 31 )
- 分类:Solidity
评论