#ethereum #solidity
#ethereum #надежность
Вопрос:
Вот простой смарт-контракт с 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;
}
}
Мой вопрос в том, как безопасно установить адрес владельца на адрес владельца смарт-контракта?
Ответ №1:
Вы должны установить адрес владельца непосредственно в конструкторе. поле msg.sender будет представлять создателя контракта.
constructor () {
owner = msg.sender;
}
И ваша функция SetOwner не имеет большого смысла, потому что даже в случае, если владелец был установлен при создании, его нельзя изменить. Модификатор отклонит все транзакции, которые отправляются не от владельца. В противном случае он просто переназначит владельца на msg.sender, который также является владельцем.
Это должно выглядеть так:
function setOwner(address newOwner) ownerOnly external {
owner = newOwner;
}