Solidity中文文档
v0.7.5

基础

  • 入门智能合约
    • 简单的智能合约
      • 存储合约
      • 货币合约(Subcurrency)示例
    • 区块链基础
      • 交易/事务
      • 区块
    • 以太坊虚拟机
      • 概述
      • 账户
      • 交易
      • Gas
      • 存储,内存和栈
      • 指令集
      • 消息调用
      • 委托调用/代码调用和库
      • 日志
      • 合约创建
      • 失效和自毁
  • 安装Solidity编译器
    • 版本
    • Remix
    • npm / Node.js
    • Docker
    • 二进制包
    • 从源代码编译
      • 预先安装环境 - 所有平台
        • 最低的编译器版本
      • 环境依赖条件 - macOS
      • 环境依赖条件 - Windows
      • 依赖的帮助脚本
      • 克隆代码库
      • 命令行构建
    • CMake参数
      • SMT Solvers
    • 版本号字符串详解
    • 版本信息详情
  • 根据例子学习Solidity
    • 投票合约
      • 可能的优化
    • 秘密竞价(盲拍)合约
      • 简单的公开拍卖
      • 秘密竞拍(盲拍)
    • 安全的远程购买合约
    • 微支付通道合约
      • 创建及验证签名
        • 创建签名
        • 哪些内容需要签名
        • 打包参数
        • 在Solidity中还原消息签名者
        • 提取签名参数
        • 计算信息的Hash
        • ReceiverPays 完整合约代码
      • 编写一个简单的支付通道
        • 什么是支付通道?
        • 打开支付通道
        • 进行支付
        • 关闭状态通道
        • 通道有效期
        • 完整合约代码
        • 验证支付
    • 库合约使用

Solidity 详解

  • Solidity 源文件结构
    • SPDX License Identifier
    • Pragmas
    • 版本标识
      • ABI Coder Pragma
      • 标注实验性功能
        • ABIEncoderV2
        • SMTChecker
    • 导入其他源文件
      • 语法与语义
      • 路径
      • 在实际的编译器中使用
    • 注释
  • 合约结构
    • 状态变量
    • 函数
    • 函数 修改器(modifier)
    • 事件 Event
    • 结构体
    • 枚举类型
  • 类型
    • 值类型
      • 布尔类型
      • 整型
        • 比较运算
        • 位运算
        • 移位
        • 加、减、乘法运算
        • 除法运算
        • 模运算(取余)
        • 幂运算
      • 定长浮点型
      • 地址类型 Address
        • 地址类型成员变量
      • 合约类型
      • 定长字节数组
      • 变长字节数组
      • 地址字面常量
      • 有理数和整数字面常量
      • 字符串字面常量及类型
      • Unicode 字面常量
      • 十六进制字面常量
      • 枚举类型
      • 函数类型
    • 引用类型
      • 数据位置
        • 数据位置与赋值行为
      • 数组
        • bytes 和 strings 也是数组
        • 创建内存数组
        • 数组字面常量 / 内联数组
        • 数组成员
      • 数组切片
      • 结构体
    • 映射
      • 可迭代映射
    • 涉及 LValues 的运算符
      • delete
    • 基本类型之间的转换
      • 隐式转换
      • 显式转换
    • 字面常量与基本类型的转换
      • 整型与字面常量转换
      • 定长字节数组与字面常量转换
      • 地址类型
  • 单位和全局变量
    • 以太币(Ether) 单位
    • 时间单位
    • 特殊变量和函数
      • 区块和交易属性
      • ABI 编码及解码函数
      • 错误处理
      • 数学和密码学函数
      • 地址成员
      • 合约相关
      • 类型信息
  • 表达式和控制结构
    • 控制结构
    • 函数调用
      • 内部函数调用
      • 外部函数调用
      • 具名调用和匿名函数参数
      • 省略函数参数名称
    • 通过 new 创建合约
      • 加“盐”的合约创建 create2
    • 表达式计算顺序
    • 赋值
      • 解构赋值和返回多值
      • 数组和结构体的复杂性
    • 作用域和声明
    • 错误处理及异常:Assert, Require, Revert
      • assert and require
      • revert
      • try/catch
  • 合约
    • 创建合约
    • 可见性和 getter 函数
      • Getter 函数
    • 函数 修改器(modifier)
    • Constant 和 Immutable 状态变量
      • Constant
      • Immutable
    • 函数
      • 函数参数及返回值
        • 函数参数(输入参数)
        • 返回变量
        • 返回多个值
      • View 视图函数
      • Pure 纯函数
      • receive 接收以太函数
      • Fallback 回退函数
      • 函数重载
        • 重载解析和参数匹配
    • 事件 Events
      • 日志的底层接口
      • 其它学习事件机制的资源
    • 继承
      • 函数重写(Overriding)
      • 修改器重写
      • 构造函数
      • 基类构造函数的参数
      • 多重继承与线性化
      • 继承有相同名字的不同类型成员
    • 抽象合约
    • 接口
    • 库
      • 库的函数签名与选择器
      • 库的调用保护
    • Using For
  • 内联汇编
    • Example
    • Access to External Variables, Functions and Libraries
    • Things to Avoid
    • Conventions in Solidity
  • 速查表
    • 运算符优先级
    • 全局变量
    • 函数可见性
    • 修饰符
    • 保留关键字
  • 语言语法

深入 Solidity 内部

  • 状态变量储存结构
    • 映射和动态数组
      • bytes 和 string
    • JSON 输出
  • 内存布局
  • Call Data布局
  • 清理变量
  • Source Mappings
  • The Optimiser(优化器)
  • 合约的元数据
    • 字节码中元数据哈希的编码
    • 自动化接口生成和 |natspec| 的使用方法
    • 源代码验证的使用方法
  • 应用二进制接口说明
    • 基本设计
    • 函数选择器(Function Selector)
    • 参数编码
    • 类型
      • Mapping 到 ABI 类型
    • 编码的设计准则
    • 编码的形式化说明
    • 函数选择器(Function Selector) 和参数编码
    • 例子
    • 动态类型的使用
    • 事件
    • JSON
      • 处理 元组(tuple) 类型
    • 非标准打包模式

补充材料

  • Solidity v0.5.0 重大更新
    • 语义变化
    • 语义及语法更改
    • 准确性要求
    • 弃用元素
      • 弃用命令行及 JSON 接口
      • 构造函数变更
      • 弃用函数
      • 弃用类型转换
      • 弃用字面量及后缀
      • 弃用变量
      • 弃用语法
    • 和老合约进行交互
    • 举例
  • Solidity v0.6.0重大更新
    • 更改编译器不用关注的修改
    • 需要明确指定的更改
    • 语义和句法变化
    • 新特性
    • 接口变化
      • 新错误报告器
      • Metadata 哈希选项
      • Yul 优化器
      • C API Changes
    • 怎样修改代码
  • Solidity v0.7.0 重大更新
    • Silent Changes of the Semantics
    • Changes to the Syntax
      • Inline Assembly
    • Removal of Unused or Unsafe Features
      • Mappings outside Storage
      • Functions and Events
      • Expressions
      • Declarations
    • Interface Changes
    • How to update your code
  • 注释描述规范
    • 文档举例
    • 标签Tags
      • Dynamic expressions
      • Inheritance Notes
    • 文档输出
      • 用户文档
      • 开发者文档
  • 安全考量
    • 陷阱
      • 私有信息和随机性
      • 重入
      • gas 限制和循环
      • 发送和接收 以太币(Ether)
      • 调用栈深度
      • tx.origin问题
      • 整型溢出问题
      • Clearing Mappings
      • 细枝末节
    • 推荐做法
      • 认真对待警告
      • 限定 以太币(Ether) 的数量
      • 保持合约简练且模块化
      • 使用“检查-生效-交互”(Checks-Effects-Interactions)模式
      • 包含故障-安全(Fail-Safe)模式
      • Ask for Peer Review
    • 形式化验证
      • SMT Encoding
      • Model Checking Engines
        • Bounded Model Checker (BMC)
        • Constrained Horn Clauses (CHC)
      • Abstraction and False Positives
      • Reference Types and Aliasing
  • 资源
    • 常用资源
    • Solidity IDE及编辑器
    • Solidity 工具
    • 第三方 Solidity 解析器
  • 使用编译器
    • 使用命令行编译器
      • Basic usage
      • Optimizer options
      • Path remapping
      • Library linking
    • Setting the EVM version to target
      • Target options
    • 编译器输入输出JSON描述
      • 输入说明
      • 输出说明
        • 错误类型
    • Compiler tools
      • solidity-upgrade
        • How it works
        • Available upgrade modules
        • Synopsis
        • Bug Reports / Feature requests
        • Example
  • Yul
    • Motivation and High-level Description
    • Simple Example
    • Stand-Alone Usage
    • Informal Description of Yul
      • Syntax
      • Literals
      • Function Calls
      • Variable Declarations
      • Assignments
      • If
      • Switch
      • Loops
      • Function Declarations
    • Specification of Yul
      • Restrictions on the Grammar
      • Scoping Rules
      • Formal Specification
      • EVM Dialect
        • datasize, dataoffset, datacopy
        • setimmutable, loadimmutable
        • linkersymbol
        • memoryguard
    • Specification of Yul Object
    • Yul Optimizer
      • Optimization step sequence
    • Complete ERC20 Example
  • 编程风格指南
    • 概述
    • 代码结构
      • 缩进
      • 制表符或空格
      • 空行
      • 代码行的最大长度
      • 源文件编码格式
      • Imports 规范
      • 函数顺序
      • 表达式中的空格
      • 控制结构
      • 函数声明
      • 映射
      • 变量声明
      • 其他建议
    • Order of Layout
    • 命名规范
      • 命名风格
      • 应避免的名称
      • 合约和库名称
      • 结构体名称
      • 事件名称
      • 函数名称
      • 函数参数命名
      • 局部变量和状态变量名称
      • 常量命名
      • 修饰符命名
      • 枚举命名
      • 避免命名冲突
    • 描述注释 NatSpec
  • 通用模式
    • 从合约中提款
    • 限制访问
    • 状态机
      • 示例
  • 已知bug列表
  • 贡献方式
    • 怎样报告问题
    • Pull Request 的工作流
    • 运行编译器测试
      • 编写和运行语法测试
    • 通过 AFL 运行 Fuzzer
    • Whiskers 模板系统
  • Solidity Brand Guide
    • The Solidity Brand
    • Solidity Brand Name
    • Solidity Logo License
    • Solidity Logo Guidelines
    • Credits

相关文档

  • Web3.js 中文文档
  • Truffle 中文文档
  • ethers.js 中文文档
  • Solidity中文文档
    • »
    • 搜索
    • 编辑


    © 版权所有 2017-2021, Ethereum, HiBlock, 登链社区. 最后更新于 2021/01/07.

    利用 Sphinx 构建,使用了 主题 由 Read the Docs开发.
    当前版本 v: v0.7.5
    版本列表
    v0.8.28
    v0.8.17
    v0.8.13
    v0.8.0
    v0.7.5
    v0.7.1
    v0.6.12
    v0.6.9
    v0.6.4
    v0.5.x