下面写一个 Ownable 权限合约,是对前面的学习进行一个总结;
构造函数:构造函数不是必须的,它与合约同名,构造函数只在合约最初被创建的时候执行一次;
函数修饰符:modifier onlyOwner()。 修饰符跟函数很类似,不过是用来修饰其他已有函数用的, 在其他语句执行前,先验证一下是否满足条件。
合约创建,构造函数先行,将其 owner 设置为msg.sender(其部署者)
为它加上一个修饰符 onlyOwner,它会限制陌生人的访问,将访问某些函数的权限锁定在 owner 上。
允许将合约所有权转让给他人。
onlyOwner 简直人见人爱,大多数人开发自己的 Solidity DApps,都是从复制/粘贴 Ownable 开始的,从它再继承出的子类,并在之上进行功能开发。
pragma solidity ^0.8.7;
contract Ownable{
address public owner;
constructor(){
owner = msg.sender;
}
modifier onlyOwner(){
require(msg.sender == owner, "not owner");
_;
}
function setOwner(address _newOwner) external onlyOwner {
require(_newOwner != address(0), "invalid address");
owner = _newOwner;
}
function onlyOwnerCallThisFunc() external onlyOwner {
// code
}
function anyOneCanCall() external {
// code
}
}