文章
问答
讲堂
百科图谱
线下集训
更多
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
文章
问答
讲堂
线下集训
专栏
活动
工作
文档
集市
搜索
登录/注册
5
_msgSender()和msg.sender的区别是什么?
回答问题即可获得
5
贡献值,回答被采纳后即可获得
9
学分。
0 条评论
分类:
DeFi
请先
登录
后评论
默认排序
时间排序
2 个回答
stirlingx
- 去中心化搬砖工
2021-10-19 11:28
_msgSender是一个函数,内部返回一个地址,有多种实现方式,看你代码继承了哪个类,比如: [https://github.com/OpenZeppelin/openzeppelin-contracts/blob/fa64a1ced0b70ab89073d5d0b6e01b0778f7e7d6/contracts/GSN/GSNRecipient.sol#L90](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](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; } } ```
请先
登录
后评论
Zhumaomao.eth
- 打杂
2021-10-19 14:27
_msgSender()是个经过封装的方法内部是solidity语言的原生方法,可自己增加条件,msg.sender是solidity的原生方法,仅返回msg成员的值
请先
登录
后评论
您需要登录后才可以回答问题,
登录
关注
2
关注
收藏
0
收藏,
5650
浏览
提出于 2021-10-19 11:02
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因: