Solidity中文文档
0.8.0
基础
入门智能合约
简单的智能合约
存储合约
货币合约(Subcurrency)示例
区块链基础
交易/事务
区块
以太坊虚拟机
概述
账户
交易
Gas
存储,内存和栈
指令集
消息调用
委托调用/代码调用和库
日志
合约创建
失效和自毁
安装Solidity编译器
版本
Remix
npm / Node.js
Docker
Linux 包
macOS Packages
冻结的二进制版本
从源代码编译
预先安装环境 - 所有平台
最低的编译器版本
环境依赖条件 - 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``检查异常(Panic) 和
require
检查错误(Error)
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 输出
内存布局
Differences to Layout in Storage
Example for Difference in Arrays
Example for Difference in Struct Layout
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 的变化
怎样修改代码
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
注释描述规范
文档举例
标签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中文文档
Docs
»
索引
编辑
索引
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
R
|
S
|
T
|
U
|
V
|
W
|
Y
A
abi
,
[1]
,
[2]
abstract contract
access
restricting
account
addmod
,
[1]
address
,
[1]
,
[2]
anonymous
application binary interface
array
,
[1]
,
[2]
allocating
length
literals
pop
push
slice
array of strings
asm
,
[1]
assembly
,
[1]
assembly-statement (Antlr4 production rule)
assert
,
[1]
,
[2]
assignment
,
[1]
destructuring
auction
blind
open
B
balance
,
[1]
,
[2]
,
[3]
ballot
base
constructor
base class
blind auction
block
,
[1]
,
[2]
number
,
[1]
timestamp
,
[1]
block (Antlr4 production rule)
block.timestamp
bool
boolean-literal (Antlr4 production rule)
break
break-statement (Antlr4 production rule)
Bugs
byte array
bytes
,
[1]
bytes32
C
C3 linearization
call
,
[1]
call-argument-list (Antlr4 production rule)
callcode
,
[1]
,
[2]
cast
catch-clause (Antlr4 production rule)
codehash
,
[1]
coding style
coin
coinbase
,
[1]
commandline compiler
comment
common subexpression elimination
compile target
compiler
commandline
constant
,
[1]
constant propagation
constant-variable-declaration (Antlr4 production rule)
constructor
,
[1]
arguments
constructor-definition (Antlr4 production rule)
continue
continue-statement (Antlr4 production rule)
contract
,
[1]
abstract
base
creation
interface
modular
contract creation
contract type
contract verification
contract-body-element (Antlr4 production rule)
contract-definition (Antlr4 production rule)
contracts
creating
creationCode
cryptography
,
[1]
D
data
,
[1]
data-location (Antlr4 production rule)
days
decimal-number (Antlr4 production rule)
declarations
default value
delegatecall
,
[1]
,
[2]
,
[3]
delete
deriving
difficulty
,
[1]
do-while-statement (Antlr4 production rule)
do/while
double-quoted-printable (Antlr4 production rule)
dynamic array
E
ecrecover
,
[1]
elementary-type-name (Antlr4 production rule)
else
emit-statement (Antlr4 production rule)
encode
encoding
enum
,
[1]
enum-definition (Antlr4 production rule)
errors
escape-sequence (Antlr4 production rule)
escrow
ether
ethereum virtual machine
event
,
[1]
,
[2]
event-definition (Antlr4 production rule)
event-parameter (Antlr4 production rule)
evm
EVM version
evmasm
,
[1]
exception
experimental
expression (Antlr4 production rule)
expression-statement (Antlr4 production rule)
external
,
[1]
F
fallback function
fallback-function-definition (Antlr4 production rule)
false
finney
fixed
fixed point number
fixed-bytes (Antlr4 production rule)
for
for-statement (Antlr4 production rule)
function
call
,
[1]
external
fallback
getter
internal
modifier
,
[1]
,
[2]
,
[3]
pure
receive ! receive
view
function type
function-definition (Antlr4 production rule)
function-type-name (Antlr4 production rule)
functions
G
gas
,
[1]
,
[2]
gas price
,
[1]
,
[2]
getter
function
goto
gwei
H
hex-number (Antlr4 production rule)
hex-string (Antlr4 production rule)
hex-string-literal (Antlr4 production rule)
hours
I
identifier (Antlr4 production rule)
,
[1]
identifier-path (Antlr4 production rule)
if
if-statement (Antlr4 production rule)
import
import-directive (Antlr4 production rule)
indexed
inheritance
multiple
inheritance-specifier (Antlr4 production rule)
inline
arrays
inline-array-expression (Antlr4 production rule)
installing
instruction
int
integer
interface contract
interface-definition (Antlr4 production rule)
internal
,
[1]
iterable mappings
iulia
J
julia
K
keccak256
,
[1]
L
length
library
,
[1]
,
[2]
library-definition (Antlr4 production rule)
linearization
linker
literal
,
[1]
,
[2]
address
rational
string
literal (Antlr4 production rule)
location
log
lvalue
M
mapping
,
[1]
,
[2]
mapping-key-type (Antlr4 production rule)
mapping-type (Antlr4 production rule)
memory
,
[1]
message call
metadata
minutes
modifier-definition (Antlr4 production rule)
modifier-invocation (Antlr4 production rule)
modifiers
modular contract
msg
,
[1]
mulmod
,
[1]
N
natspec
new
,
[1]
non-empty-string-literal (Antlr4 production rule)
number
,
[1]
number-literal (Antlr4 production rule)
number-unit (Antlr4 production rule)
O
open auction
optimizer
origin
,
[1]
overload
override-specifier (Antlr4 production rule)
overriding
function
modifier
P
packed
parameter-list (Antlr4 production rule)
path (Antlr4 production rule)
payable
pop
pragma
,
[1]
,
[2]
pragma-token (Antlr4 production rule)
precedence
private
,
[1]
public
,
[1]
purchase
pure
pure function
push
R
receive ether function
receive-function-definition (Antlr4 production rule)
reference type
remote purchase
require
,
[1]
,
[2]
return
return array
return string
return struct
return-statement (Antlr4 production rule)
revert
,
[1]
,
[2]
ripemd160
,
[1]
runtimeCode
S
scoping
seconds
selfdestruct
,
[1]
,
[2]
send
,
[1]
,
[2]
sender
,
[1]
set
sha256
,
[1]
signed-integer-type (Antlr4 production rule)
single-quoted-printable (Antlr4 production rule)
solc
Solidity (Antlr4 grammar)
SolidityLexer (Antlr4 lexer grammar)
source file
source mappings
source-unit (Antlr4 production rule)
stack
state machine
state variable
,
[1]
state-mutability (Antlr4 production rule)
state-variable-declaration (Antlr4 production rule)
statement (Antlr4 production rule)
storage
,
[1]
,
[2]
,
[3]
string
,
[1]
,
[2]
string-literal (Antlr4 production rule)
,
[1]
struct
,
[1]
,
[2]
,
[3]
struct-definition (Antlr4 production rule)
struct-member (Antlr4 production rule)
style
subcurrency
super
switch
symbol-aliases (Antlr4 production rule)
szabo
T
this
,
[1]
throw
time
timestamp
,
[1]
transaction
,
[1]
transfer
,
[1]
true
try-statement (Antlr4 production rule)
tuple-expression (Antlr4 production rule)
type
,
[1]
contract
conversion
function
reference
struct
value
type-name (Antlr4 production rule)
U
ufixed
uint
unchecked-block (Antlr4 production rule)
unicode-string-literal (Antlr4 production rule)
,
[1]
unsigned-integer-type (Antlr4 production rule)
using for
,
[1]
using-directive (Antlr4 production rule)
V
value
,
[1]
value type
variable-declaration (Antlr4 production rule)
variable-declaration-statement (Antlr4 production rule)
variable-declaration-tuple (Antlr4 production rule)
variably sized array
version
view
view function
visibility
,
[1]
(Antlr4 production rule)
voting
W
weeks
wei
while
while-statement (Antlr4 production rule)
withdrawal
Y
years
yul
yul-assignment (Antlr4 production rule)
yul-block (Antlr4 production rule)
yul-boolean (Antlr4 production rule)
yul-decimal-number (Antlr4 production rule)
yul-evm-builtin (Antlr4 production rule)
yul-expression (Antlr4 production rule)
yul-for-statement (Antlr4 production rule)
yul-function-call (Antlr4 production rule)
yul-function-definition (Antlr4 production rule)
yul-hex-number (Antlr4 production rule)
yul-identifier (Antlr4 production rule)
yul-if-statement (Antlr4 production rule)
yul-literal (Antlr4 production rule)
yul-path (Antlr4 production rule)
yul-statement (Antlr4 production rule)
yul-string-literal (Antlr4 production rule)
yul-switch-statement (Antlr4 production rule)
yul-variable-declaration (Antlr4 production rule)
当前版本
v: 0.8.0
Versions
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文档由
登链社区
维护