solidity基础-修饰器

  修饰器,通过定义一个方法,使用该方法去修饰其他方法。

  用个没有用修饰器的例子说明,onlyOwner 是一个校验地址是不是原来账号的地址的方法。

  将该合约部署

复制代码
contract Test {
    
    address public owner;
    uint256 public price;

    constructor(){
        owner = msg.sender;
    }

    function onlyOwner() public view{ 
        require(
            msg.sender == owner,
            "Only seller can call this."
        );   
    }

    function setPrice(uint256 _price) public{
        onlyOwner();
        price = _price;
    }
}
复制代码

此时的地址是第一个地址,调用 setPrice 方法,再查看 price 可以看到 123 的输出。

  

换一个地址

  

 

再调用,setPrice, 可以看到 console 输出,报错。

  

 

使用modifier

先定义一个 modifier 

再在方法中修饰  

复制代码
contract ModifierTest {
    
    address public owner;
    uint256 public price;

    constructor(){
        owner = msg.sender;
    }

    modifier onlyOwner(){ // Modifier
        require( msg.sender == owner,  "Only Owner can call this."  );   
        _;
    }

    function setPrice(uint256 _price) public
       onlyOwner
    {     
        price = _price;
    }
}
复制代码

部署测试

    

 

输出报错

    

 

是可以校验的

 

 

 

 

 

 

 

  

 

posted @   apeNote  阅读(88)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示