solidity的modifier修饰符

solidity的modifier修饰符

什么是modifier修饰符

修饰器(modifier)是solidity特有的语法,类似于面向对象编程中的decorator,声明函数拥有的特性,并减少代码冗余。

Solidity 中关键字 modifier 用于声明一个函数修改器。当它作用于一个函数上,可以在函数执行前或后(依赖于具体实现)预先执行modifier中的逻辑。

结合现实场景中的应用。在一些敏感操作中,我们需要设定特定的权限才允许执行相关操作;再者我们可以利用函数修改器进行数据的校验;

常用于如:检查输入条件、权限控制、重入控制、防止重复初始化等场景。

定义修饰符

函数修改器的定义语法如下:

modifier 修改器名 {
    条件体..
    _;
}

function a() 修改器名 {
    函数体..
}

函数修改器中有一行代码只有下划线 _ ,在实际执行中,我们可以将被修饰函数的代码视为下划线处的代码。即,下划线实际上帮我们标记了被modifier修饰函数的执行位置。

onlyOwner示例
pragma solidity >=0.8.0;


contract owned {
    function owned() public { owner = msg.sender; }
    address owner;

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


   function transferOwner(address _newO) public onlyOwner {
        owner = _newO;
    }
}

在这个示例中,onlyOwner修饰器用于限制只有合约所有者可以调用该函数。如果条件满足就继续往下走,不满足返回字符串“Not owner”。

“_;” 表示在执行修饰器之后将控制流交给被修饰函数的实际执行代码块。

参考

[推荐,视频讲解清晰]【20】Solidity的modifier函数修改器
参考URL: https://www.bilibili.com/video/BV1am411k7VW/

相关推荐

  1. soliditymodifier修饰符

    2024-06-08 06:28:05       22 阅读
  2. Compose_Modifier 修饰符常见使用

    2024-06-08 06:28:05       26 阅读
  3. Compose | UI组件(一) | Modifier修饰符

    2024-06-08 06:28:05       63 阅读
  4. C# 编程语言中访问修饰符(access modifiers

    2024-06-08 06:28:05       45 阅读
  5. OnlyOwner在Solidity中是一个修饰符,TypeError:

    2024-06-08 06:28:05       29 阅读
  6. springbootjpa中@Modifying用法

    2024-06-08 06:28:05       65 阅读
  7. 深入了解 Jetpack Compose 中 Modifier

    2024-06-08 06:28:05       47 阅读
  8. c#常用修饰符

    2024-06-08 06:28:05       59 阅读
  9. Vue 中修饰符

    2024-06-08 06:28:05       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 06:28:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 06:28:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 06:28:05       82 阅读
  4. Python语言-面向对象

    2024-06-08 06:28:05       91 阅读

热门阅读

  1. 数据分析------统计学知识点(一)

    2024-06-08 06:28:05       35 阅读
  2. QT部署程序的三种方式

    2024-06-08 06:28:05       28 阅读
  3. hadoop命令大全

    2024-06-08 06:28:05       27 阅读
  4. 监控易监测对象及指标之:全面监控神通数据库

    2024-06-08 06:28:05       29 阅读
  5. Vue 数据更新了但页面没有更新

    2024-06-08 06:28:05       25 阅读
  6. 【二进制部署k8s-1.29.4】十、coredns的安装部署

    2024-06-08 06:28:05       32 阅读
  7. Linux-struct list_head的快速使用

    2024-06-08 06:28:05       27 阅读
  8. 调用plt函数报错not ‘KeyboardModifier’

    2024-06-08 06:28:05       28 阅读
  9. 理解和实现 LRU 缓存置换算法

    2024-06-08 06:28:05       28 阅读
  10. 【Numpy】04 深入理解NumPy的高级索引技术

    2024-06-08 06:28:05       35 阅读
  11. MYSQL内存占用查询语句

    2024-06-08 06:28:05       24 阅读