首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候msg.sender是业主?

什么时候msg.sender是业主?
EN

Ethereum用户
提问于 2021-01-09 10:15:37
回答 1查看 2.1K关注 0票数 1

我如何知道msg.sender是合同的所有者(部署人员)还是与契约交互的随机地址?例如,在这种情况下:

代码语言:javascript
复制
    address payable owner  =  msg.sender;   

    modifier onlyOwner(){
        require(msg.sender == owner);
        _;
    }
    function close() public onlyOwner { 
    selfdestruct(owner);  
}

为什么每次交互都不重置msg.sender?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2021-01-09 10:31:22

Solidity支持在合同创建时执行代码的构造函数。因此,需要在构造函数中实例化owner以捕获契约部署程序地址:

代码语言:javascript
复制
address payable owner;
constructor() public {
owner = msg.sender;
}

还有管理所有权的标准化合同。实现的例子可以在这里找到:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol

票数 4
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/92073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档