Logo
0.8.17

基础

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

Solidity 详解

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

编译器

  • 使用编译器
    • 使用命令行编译器
      • 基础用法
      • 优化器选项
      • 基本路径和导入重映射
      • 库链接
    • 将EVM版本设置为目标版本
      • EVM版本选项
    • 编译器输入输出JSON描述
      • 输入说明
      • 输出说明
        • 错误类型
    • Compiler tools
      • solidity-upgrade
        • How it Works
        • Available upgrade modules
        • Synopsis
        • Bug Reports / Feature Requests
        • Example
  • 分析编译器输出
  • Solidity 基于IR的代码生成变化
    • 仅语义上的变化
    • 内部变化
      • 内部函数指针
      • 清理

深入 Solidity 内部

  • 状态变量在储存中的布局
    • 映射和动态数组
      • bytes 和 string
    • JSON 输出
  • 变量在内存布局
    • 与存储中布局的不同
      • 数组的不同
      • 结构体的不同
  • CallData 布局
  • 清理变量
  • Source Mappings
  • The Optimizer
    • Benefits of Optimizing Solidity Code
    • Differences between Optimized and Non-Optimized Code
    • Optimizer Parameter Runs
    • Opcode-Based Optimizer Module
      • Simple Inlining
    • Yul-Based Optimizer Module
      • Optimizer Steps
      • Selecting Optimizations
      • Preprocessing
        • Disambiguator
        • FunctionHoister
        • FunctionGrouper
        • ForLoopConditionIntoBody
        • ForLoopInitRewriter
        • VarDeclInitializer
      • Pseudo-SSA Transformation
        • ExpressionSplitter
        • SSATransform
        • RedundantAssignEliminator
      • Tools
        • Movability
        • DataflowAnalyzer
      • Expression-Scale Simplifications
        • CommonSubexpressionEliminator
        • Expression Simplifier
        • LiteralRematerialiser
        • LoadResolver
        • ReasoningBasedSimplifier
      • Statement-Scale Simplifications
        • CircularReferencesPruner
        • ConditionalSimplifier
        • ConditionalUnsimplifier
        • ControlFlowSimplifier
        • DeadCodeEliminator
        • EqualStoreEliminator
        • UnusedPruner
        • StructuralSimplifier
        • BlockFlattener
        • LoopInvariantCodeMotion
      • Function-Level Optimizations
        • FunctionSpecializer
        • UnusedFunctionParameterPruner
        • EquivalentFunctionCombiner
      • Function Inlining
        • ExpressionInliner
        • FullInliner
      • Cleanup
        • ExpressionJoiner
        • SSAReverser
        • StackCompressor
        • Rematerialiser
        • ForLoopConditionOutOfBody
      • WebAssembly specific
        • MainFunction
  • 合约的元数据
    • 字节码中元数据哈希的编码
    • 自动化接口生成和 以太坊注释规范格式(Ethereum Nature Specification Format(natspec)) 的使用方法
    • 源代码验证的使用方法
  • 应用二进制接口说明
    • 基本设计
    • 函数选择器(Function Selector)
    • 参数编码
    • 类型编码
      • Solidity 到 ABI 类型 映射
    • 编码的设计准则
    • 编码的形式化说明
    • 函数选择器(Function Selector) 和参数编码
    • 例子
    • 动态类型的使用
    • 事件
    • 错误编码
    • JSON
      • 处理 元组(tuple) 类型
    • 严格编码模式
    • 非标准打包模式(Non-standard Packed Mode)
    • 事件索引参数的编码

补充材料

  • Solidity v0.5.0 重大更新
    • 语义变化
    • 语义及语法更改
    • 准确性要求
    • 弃用元素
      • 弃用命令行及 JSON 接口
      • 构造函数变更
      • 弃用函数
      • 弃用类型转换
      • 弃用字面量及后缀
      • 弃用变量
      • 弃用语法
    • 和老合约进行交互
    • 举例
  • Solidity v0.6.0重大更新
    • 更改编译器不用关注的修改
    • 需要明确指定的更改
    • 语义和句法变化
    • 新特性
    • 接口变化
      • 新错误报告器
      • Metadata 哈希选项
      • Yul 优化器
      • C API 的变化
    • 怎样修改代码
  • 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
  • Solidity v0.8.0 重大更新
    • Silent Changes of the Semantics
    • New Restrictions
    • Interface Changes
    • How to update your code
  • NatSpec(注释描述)规范
    • 文档举例
    • 标签Tags
      • Dynamic expressions
      • Inheritance Notes
    • 文档输出
      • 用户文档
      • 开发者文档
  • 安全考量
    • 陷阱
      • 私有信息和随机性
      • 重入
      • gas 限制和循环
      • 发送和接收 以太币(Ether)
      • 调用栈深度
      • 授权代理 Proxies
      • tx.origin问题
      • 整型溢出问题
      • 清理映射
      • 细枝末节
    • 推荐做法
      • 认真对待警告
      • 限定 以太币(Ether) 的数量
      • 保持合约简练且模块化
      • 使用“检查-生效-交互”(Checks-Effects-Interactions)模式
      • 包含故障-安全(Fail-Safe)模式
      • 请求同行 Review
  • SMTChecker和形式化验证
    • Tutorial
      • Overflow
      • Assert
      • State Properties
      • External Calls and Reentrancy
    • SMTChecker Options and Tuning
      • Timeout
      • Verification Targets
      • Unproved Targets
      • Verified Contracts
      • Reported Inferred Inductive Invariants
      • Division and Modulo With Slack Variables
      • Natspec Function Abstraction
      • Model Checking Engines
        • Bounded Model Checker (BMC)
        • Constrained Horn Clauses (CHC)
      • SMT and Horn solvers
    • Abstraction and False Positives
      • SMT Encoding and Types
      • Function Calls
      • Reference Types and Aliasing
      • Contract Balance
    • Real World Assumptions
  • 资源
    • 常用资源
    • Solidity IDE
    • 编辑器
    • Solidity 工具
    • 第三方 Solidity 解析器
  • Import Path Resolution
    • Virtual Filesystem
      • Import Callback
      • Initial Content of the Virtual Filesystem
    • Imports
      • Direct Imports
      • Relative Imports
    • Base Path and Include Paths
      • CLI Path Normalization and Stripping
    • Allowed Paths
    • Import Remapping
    • Using URLs in imports
  • 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
        • verbatim
    • Specification of Yul Object
    • Yul Optimizer
      • Optimization Step Sequence
    • Complete ERC20 Example
  • 编程风格指南
    • 概述
    • 代码结构
      • 缩进
      • 制表符或空格
      • 空行
      • 代码行的最大长度
      • 源文件编码格式
      • 导入文件规范
      • 函数顺序
      • 表达式中的空格
      • 控制结构
      • 函数声明
      • 映射
      • 变量声明
      • 其他建议
    • 布局顺序
    • 命名规范
      • 命名风格
      • 应避免的名称
      • 合约和库名称
      • 结构体名称
      • 事件名称
      • 函数名称
      • 函数参数命名
      • 局部变量和状态变量名称
      • 常量命名
      • 修饰符命名
      • 枚举命名
      • 避免命名冲突
    • 描述注释 NatSpec
  • 通用模式
    • 从合约中提款
    • 限制访问
    • 状态机
      • 示例
  • 已知bug列表
  • 贡献方式
    • 怎样报告问题
    • Pull Request 的工作流
    • 运行编译器测试
      • 编写和运行语法测试
    • 通过 AFL 运行 Fuzzer
    • Whiskers 模板系统
  • 其他语言的影响
关键字索引

相关文档

  • Foundry 中文文档
  • Hardhat 中文文档
  • Ethers.js 中文文档
  • Web3.js 中文文档
  • Truffle 中文文档
  • Solidity中文文档
    • »
    • 搜索
    • 编辑


    © 版权所有 2017-2022, Ethereum, 登链社区. 最后更新于 2022/09/26.

    利用 Sphinx 构建,使用了 主题 由 Read the Docs开发.
    当前版本 v: 0.8.17
    版本列表
    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
    Solidity中文文档由登链社区维护