断言的作用:
条件不成立时,回退之前的操作
断言的方法
assert:对用户惩罚,扣光gas
function assert(bool cond_expr);
- 用于内部变量判断;
- 用于pure函数;
- 用于监测系统错误;
require:相对温和,退还剩余的gas
function require(bool cond_expr,string msg);
- 业务逻辑判断
代码示例如下:
function deposit(uint256 _amount)public payable{
//if(_amount!=msg.value)return;
require(_amount==msg.value,"amount must == msg.value");
assert(_amount>0);
user=payable(msg.sender);
totalAmount=_amount;
emit Deposit(msg.sender,_amount); //触发充值事件;
//address(this).balance+= _amount;
}
通过require判断_amount是否与msg.value相等,如果不满足条件,直接回退。通过assert判断输入的数是否大于0。
自定义函数修饰符modifier
一般配合断言使用,在配置业务逻辑的时候,在合约内部可能有多个条件判断,这些条件判断都会写成require或者assert。这里的自定义函数修饰符可以自定义一个标识,每次写的时候直接把这个标识拿过来直接用就可以了。
<

最低0.47元/天 解锁文章
2736

被折叠的 条评论
为什么被折叠?



