Context.sol 在 Openzeppelin 中有什么用
What is Context.sol uses for in Openzepplin
我是 solidity 的新手,尝试使用 openzepplin.There 部署 ERC20 令牌是 context.sol 文件对我来说没有意义的一件事。
从评论部分看来,context.sol 的主要功能似乎是实现 GSN 兼容合约,因此您不使用 msg.sender,而是使用 _msgSender()
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 完全相同。
在这种情况下,是一样的。
我相信 OpenZeppelin 开发人员实现了此功能,以便在需要时更容易互换。因此,如果由于某种原因 msg.sender
变得过时,这只是在多个合同中更改一行而不是多行的问题(并且可能会忘记一些)。
以前也发生过类似的情况,当时一些区块链开发人员更喜欢 tx.origin
,但后来(由 Solidity lang 核心团队)弃用了 msg.sender
。
我是 solidity 的新手,尝试使用 openzepplin.There 部署 ERC20 令牌是 context.sol 文件对我来说没有意义的一件事。 从评论部分看来,context.sol 的主要功能似乎是实现 GSN 兼容合约,因此您不使用 msg.sender,而是使用 _msgSender()
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 完全相同。
在这种情况下,是一样的。
我相信 OpenZeppelin 开发人员实现了此功能,以便在需要时更容易互换。因此,如果由于某种原因 msg.sender
变得过时,这只是在多个合同中更改一行而不是多行的问题(并且可能会忘记一些)。
以前也发生过类似的情况,当时一些区块链开发人员更喜欢 tx.origin
,但后来(由 Solidity lang 核心团队)弃用了 msg.sender
。