【问题标题】:What is Context.sol uses for in OpenzepplinContext.sol 在 Openzeppelin 中的用途是什么
【发布时间】:2021-08-14 16:56:56
【问题描述】:

我是solidity 的新手,并尝试使用openzepplin 部署ERC20 令牌。对我来说没有意义的一件事是context.sol 文件。 从评论部分看来,context.sol 的主要功能是实现与 GSN 兼容的合约,因此您可以使用 _msgSender() 而不是使用 msg.sender

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

根据我对 Solidity 的有限经验,它似乎对 msg.sender 做同样的事情。

【问题讨论】:

    标签: solidity ether


    【解决方案1】:

    在这种情况下,也是一样的。

    我相信 OpenZeppelin 开发人员实现了此功能,以便在需要时更容易互换。因此,如果由于某种原因 msg.sender 已过时,只需在多个合同中更改一行而不是多行(并且可能会忘记一些)。

    以前也发生过类似的情况,当时tx.origin 被一些区块链开发人员偏爱,但后来(被 Solidity lang 核心团队)弃用,取而代之的是msg.sender

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-29
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多