Solidity 最新 0.5.8 中文文档发布

本文首发于深入浅出区块链社区

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

翻译说明

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

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

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

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

这份文档无疑是最新质量最好的中文文档,本文仅仅是部分摘要和目录, 完整文档请前往 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 函数获取返回值
      • 让合约在首次被挖出时就开始做些事情
      • 怎样才能创建二维数组?

深入浅出区块链 - 系统学习区块链,学区块链都在这里,打造最好的区块链技术博客。

转载于:https://blog.51cto.com/13457438/2392023

你可能感兴趣的:(Solidity 最新 0.5.8 中文文档发布)