15-Solidity8.0-Ownable合约

556 阅读1分钟

下面写一个 Ownable 权限合约,是对前面的学习进行一个总结;

构造函数:构造函数不是必须的,它与合约同名,构造函数只在合约最初被创建的时候执行一次;

函数修饰符:modifier onlyOwner()。 修饰符跟函数很类似,不过是用来修饰其他已有函数用的, 在其他语句执行前,先验证一下是否满足条件。

合约创建,构造函数先行,将其 owner 设置为msg.sender(其部署者)

为它加上一个修饰符 onlyOwner,它会限制陌生人的访问,将访问某些函数的权限锁定在 owner 上。

允许将合约所有权转让给他人。

onlyOwner 简直人见人爱,大多数人开发自己的 Solidity DApps,都是从复制/粘贴 Ownable 开始的,从它再继承出的子类,并在之上进行功能开发。

image.png

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
    }

}