19

_msgSender()和msg.sender的区别是什么? | 登链社区 | 技术问答

 2 years ago
source link: https://learnblockchain.cn/question/2641
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
_msgSender()和msg.sender的区别是什么? | 登链社区 | 技术问答

5 _msgSender()和msg.sender的区别是什么?

回答问题即可获得 5 经验值,回答被采纳后即可获得 10 学分。
stirlingx - 去中心化搬砖工 5小时前

_msgSender是一个函数,内部返回一个地址,有多种实现方式,看你代码继承了哪个类,比如:

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/fa64a1ced0b70ab89073d5d0b6e01b0778f7e7d6/contracts/GSN/GSNRecipient.sol#L90

function _msgSender() internal view virtual override returns (address payable) {
        if (msg.sender != getHubAddr()) {
            return msg.sender;
        } else {
            return _getRelayedCallSender();
        }
 }

或者
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/0db97c9681f488cdd739c65d911636fc6accc72c/contracts/utils/Context.sol#L15

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
为理想而活 - 打杂 2小时前

_msgSender()是个经过封装的方法内部是solidity语言的原生方法,可自己增加条件,msg.sender是solidity的原生方法,仅返回msg成员的值

您需要登录后才可以回答问题,登录 或者 注册

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK