我如何知道msg.sender是合同的所有者(部署人员)还是与契约交互的随机地址?例如,在这种情况下:
address payable owner = msg.sender;
modifier onlyOwner(){
require(msg.sender == owner);
_;
}
function close() public onlyOwner {
selfdestruct(owner);
}为什么每次交互都不重置msg.sender?
发布于 2021-01-09 10:31:22
Solidity支持在合同创建时执行代码的构造函数。因此,需要在构造函数中实例化owner以捕获契约部署程序地址:
address payable owner;
constructor() public {
owner = msg.sender;
}还有管理所有权的标准化合同。实现的例子可以在这里找到:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol。
https://ethereum.stackexchange.com/questions/92073
复制相似问题