合约的访问控制

本文探讨了智能合约中的访问控制,包括所有权概念和基于角色的访问控制(RBAC)。通过Ownable合约实现基本所有权,而AccessControl合约则提供更细粒度的权限管理。此外,还介绍了如何动态授予和撤销角色,以及使用TimelockController进行延迟操作以增强安全性。
摘要由CSDN通过智能技术生成

合约的访问控制

访问控制的意思就是谁被允许做这件事。这在智能合约中非常重要。合约的访问控制可以治理谁可以铸造代币,谁可以提案,或冻结或转移或者其他权限。

所有权和Ownable

最常见和最基本的访问控制是所有权的概念:合约有一个owener的账号可以做一些管理的任务。这个方法可以完美合理的适用于只有一个管理员用户的情况。

OpenZeppelin合约提供了一个Ownable用于实现合约里面的所有权。

// contracts/MyContract.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

import "@openzeppelin/contracts/access/Ownable.sol";

contract MyContract is Ownable {

    function normalThing() public {

        // anyone can call this normalThing()

    }

    function specialThing() public onlyOwner {

        // only the owner can call specialThing()!

    }

}

默认情况下,一个Ownable 合约的所有人是部署者的账号。

Ownable 也可以做到:

transferOwnership转移所有者账户到另一个人;

renounceOwnership所有者放弃管理权限

注意:完全移除所有者权限意味着管理员功能受保护且onlyOwner 不能再被调用。

一个合约也可以是另一个合约的所有者!通过这种方法使用组合可以对合约添加一些复杂一点的访问控制功能。

RBAC基于角色的访问控制

简单的系统或需要快速作出原型可以使用简单的ownership ,实际项目中需要不同级别的授权。RBAC在这方面非常灵活。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值