这是简单的智能合约owner:
pragma ^0.7.2
contract simple {
address owner;
constructor() public {
//do something
}
modifier() {
require(
owner == msg.sender,
'No sufficient right'
)
}
function setOwner() ownerOnly external {
owner = msg.sender;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何安全地将所有者地址设置为智能合约所有者的地址?
小智 6
您应该直接在构造函数中设置所有者地址。msg.sender字段将代表合约创建者。
constructor () {
owner = msg.sender;
}
Run Code Online (Sandbox Code Playgroud)
而且您的函数setOwner没有多大意义,因为即使在创建过程中设置了所有者,也无法更改它。修改者将拒绝所有不是由所有者发送的交易。否则,它只会将所有者重新分配给也是所有者的msg.sender。它应该看起来像这样:
function setOwner(address newOwner) ownerOnly external {
owner = newOwner;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7414 次 |
| 最近记录: |