什么是智能合约
智能合约是运行在链上的程序,合约开发者可以通过智能合约实现与链上资产、数据进行交互,用户可以通过自己的链上账户来调用合约、访问资产与数据。
与一般程序的差异在于,智能合约的部署与后续写入需要一定费用,所以会更看重资源的消耗。
什么是Solidity
Solidity
是一门面向合约的、为实现智能合约而创建的高级编程语言,在 EVM
虚拟机上运行,语法与 JavaScript
类似,是目前最流行的智能合约语言,也是入门区块链与web3必须掌握的语言。
如何部署智能合约
Solidity
是以 .sol
为后缀的文件,无法直接执行,需要编译为 EVM
可识别的字节码才能在链上运行。
开发框架/工具
Solidity核心语法
基本数据类型
- boolean
- int
- uint
- address
- bytes
- …
复杂数据类型
枚举 enum
数组 array
映射 mapping
类型,key
必须是基本数据类型,并且需要自己实现一个迭代器,并不能被原生迭代器遍历。
结构体 struct
类型
变量
类型:
- local(只存在于方法里,不会存储在链上)
- state(可以存储在链上)
- global
关键字声明:
- storage(声明的变量可以存在链上)
- memory(只有方法被调用时,声明的变量才会被定义)
- calldata(特殊的memory)
常量
- constant(值不可变,节约 gas fee)
- immutable(可以在constructor中初始化,但不可以再次改变)
函数
- 可见性
- public
- private
- internal
- external
- 关键字
- view(可以读取变量,但是不能更改)
- pure(不可以读取和更改)
- 函数修饰符
- modifier(可以在函数运行前或运行后被调用,常用于参数校验和权限控制)
函数选择器
合约
-
constructor
-
interface
-
导入库
事件
错误处理
通过 require / revert / assert
处理错误