sodility文档--modifier函数修改器

本文深入探讨Solidity中的modifier函数修改器,它能改变函数行为,控制逻辑。通过代码实例,解释了如何声明和使用修改器,包括参数传递、条件判断以及在继承中的应用。同时,介绍了不同写法的等价性,以及当多个修改器共同作用于函数时的执行顺序。
摘要由CSDN通过智能技术生成

modifier即函数的修改器,可以用来改变一个函数的行为,控制函数的逻辑。修改器是一种合约属性,可以被继承和重写。
下面以代码为例进行介绍(代码来源于CryptoKitties项目KittyAccessControl.sol合约,详细代码可以查看https://github.com/dapperlabs/cryptokitties-bounty

modifier onlyCLevel() {
        require(
            msg.sender == cooAddress ||
            msg.sender == ceoAddress ||
            msg.sender == cfoAddress
        );
        _;
    }

前面一段代码是一个修改器,声明了一个约束onlyClevel:仅当当前的地址为ceoAddress或者cfoAddress或者cooAddress时,可以执行后续代码。下划线_是一个占位符,代表了执行函数接下来的代码。
有时你还会看到上面那段代码写成如下形式:

modifier onlyCLevel() {
        if(
            msg.sender != cooAddress &&
            msg.sender != ceoAddress &&
            msg.sender != cfoAddress
        ) throw;
        _;
    }

其实两段代码是等价的,if()throw的写法是较为老式的写法,现在使用require()的写法较多。

function pause() external onlyCLevel whenNotPaused {
   
        paused = true;
    }

接下来一段代码声明了一个函数pause(),用于暂停合约,这里使用了onlyClevel约束,表明该函数的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值