Solidity 事物控制断言与自定义函数修饰符(2023版)

断言的作用:

条件不成立时,回退之前的操作

断言的方法

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。这里的自定义函数修饰符可以自定义一个标识,每次写的时候直接把这个标识拿过来直接用就可以了。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值