Ethereum 部署智能合约时如何设置所有者地址
以下是与Ethereum 部署智能合约时如何设置所有者地址,ethereum,solidity,Ethereum,Solidity,以下是与所有者签订的简单智能合同: pragma ^0.7.2 contract simple { address owner; constructor() public { //do something } modifier() { require( owner == msg.sender, 'No sufficient right' ) } function setOwner() ownerOnly exter
所有者签订的简单智能合同
:
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;
}
}
我的问题是如何安全地将所有者地址设置为智能合约所有者的地址?您应该直接在构造函数中设置所有者地址。msg.sender字段将代表合同创建者
constructor () {
owner = msg.sender;
}
而且你的函数setOwner没有太多意义,因为即使在创建过程中设置了owner,它也不能被更改。修改器将拒绝所有不是从所有者发送的事务。否则,它只会将所有者重新分配给同时也是所有者的msg.sender。
应该是这样的:
function setOwner(address newOwner) ownerOnly external {
owner = newOwner;
}