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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20