Solidity 练习:Ownable

2022-12-29 Web3 Solidity

# 一、题目说明

创建具有一个 owner 的合约,并且只有 owner 可以分配新的 owner。

# 二、任务列表

  • 创建此合约时,将 owner 初始化为 msg.sender。
  • 创建一个函数修饰符 onlyOwner,该修饰符将函数调用限制为当前 owner。
    • 它应该在执行其余代码之前检查调用者是当前 owner,否则会抛出错误,并显示消息 “not owner”。
  • 创建一个 external 函数 setOwner(address _newOwner),用于将 owner 更新为 _newOwner。
    • 这个函数只能被当前 owner 调用。
    • 检查 _newOwner 是否是 address(0),如果是的话,抛出错误 “new owner = zero address”。

# 三、解答代码

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

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), "new owner = zero address");
        owner = _newOwner;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 四、参考资料

Last Updated: 2023-01-28 4:31:25