权限管理是指控制谁可以访问和更新智能合约中的函数和数据。
以下是一个简单的权限管理合约示例,它使用了 modifier 和 address 类型。
pragma solidity ^0.8.7;
contract MyContract {
address owner;
// 在构造函数中设置合约的所有者
constructor() public {
owner = msg.sender;
}
// 定义一个修饰符,只有合约的所有者可以调用
modifier onlyOwner() {
require(msg.sender == owner, "Only the owner can call this function.");
_;
}
// 一个只能由合约所有者调用的函数
function transferOwnership(address newOwner) public onlyOwner {
owner = newOwner;
}
}
上面的代码中,onlyOwner 是一个修饰符,它只允许合约的所有者调用。在 transferOwnership 函数上使用了这个修饰符,意味着只有合约的所有者才能调用这个函数,其他人将会收到错误信息 "Only the owner can call this function."。
在构造函数中,将 msg.sender 赋值给 owner 变量,表示合约的创建者即为合约的所有者。
transferOwnership 函数中,将新的所有者地址赋值给 owner 变量,实现合约所有权的转移。
另外,还可以在合约中使用 address 类型的变量来存储其他地址,并通过 require 函数来进行权限验证。