openzeppelin学习笔记

权限控制

主要类为Ownable AccessControlAccessControl管理角色
<<interface>>
IAccessControl
<<abstract>>
AccessControl

  • _roles: mapping(bytes32 role => RoleData)
    <<abstract>>
    Context
    <<abstract>>
    Ownable
  • address _owner
    RoleData
  • bytes32 adminRole
  • hasRole:mapping(address account => bool)

Ownable 包含修改器onlyOwner

go 复制代码
modifier onlyOwner() {
   _checkOwner();
   _;
}

function _checkOwner() internal view virtual {
    if (owner() != _msgSender()) {
        revert OwnableUnauthorizedAccount(_msgSender());
    }
}

AccessControl包含修改器onlyRole

go 复制代码
modifier onlyRole(bytes32 role) {
   _checkRole(role);
    _;
}

function _checkRole(bytes32 role) internal view virtual {
    _checkRole(role, _msgSender());
}

function _checkRole(bytes32 role, address account) internal view virtual {
    if (!hasRole(role, account)) {
        revert AccessControlUnauthorizedAccount(account, role);
    }
}
相关推荐
一定要AK5 小时前
Spring 入门核心笔记
java·笔记·spring
AI成长日志5 小时前
【Agentic RL】1.1 什么是Agentic RL:从传统RL到智能体学习
人工智能·学习·算法
_李小白6 小时前
【OSG学习笔记】Day 38: TextureVisitor(纹理访问器)
android·笔记·学习
杨云龙UP7 小时前
从0到1快速学会Linux操作系统(基础),这一篇就够了!
linux·运维·服务器·学习·ubuntu·centos·ssh
头疼的程序员7 小时前
计算机网络:自顶向下方法(第七版)第八章 学习分享(三)
网络·学习·计算机网络
_李小白8 小时前
【OSG学习笔记】Day 37: NodeVisitor(顶点访问器)
笔记·学习
程序员雷欧8 小时前
大模型应用开发学习第八天
大数据·人工智能·学习
SccTsAxR8 小时前
算法基石:手撕离散化、递归与分治
c++·经验分享·笔记·算法
晓晓hh9 小时前
JavaSE学习——set集合和Map映射
学习
西梅汁9 小时前
C++ 观察者模式
笔记