Solidity学习-3
一、函数修改器(modifier)
- 可以被继承
- 可以传递参数
- 多个可以同时使用,使用空格隔开
- 在修改器或函数体内使用
return语句,仅会跳出当前修改器或函数,_会继续执行。
二、payable
表示函数可以接受以太币进行调用
三、view
一个函数不能修改状态。 被认为修改了状态的操作有:
- 写状态变量
- 触发事件(event)
- 创建其他合约
call调用附加了以太币- 调用了任何没有被
view或pure修饰的函数 - 使用了低级别的调用
四、pure
一个函数不读取状态,也不修改状态。
- 读状态变量
- 访问了
.balance属性 - 访问了
block、tx、msg成员(msg.sig和msg.data)除外 - 调用了任何没有
pure修饰的函数
五、继承
- 继承的合约可以访问所有非
private成员 is可用于继承,或者通过复制代码实现继承 可见性:external,public,internal,private- 构造函数:派生合约需要调用父合约的构造函数,如果有参数则需要提供参数调用父合约的构造函数。
六、事件监听
solidity
// v1.3.0
event SetSuccess(string, uint8);
emit SetSuccess(name, age);对于触发的事件,可以直接通过 Promise 对象获取结果
js
const result = await yourContract.methods.yourMethod(...args).send({
from: xxx
})
console.log(result.events);