我正在尝试从OpenZeppelin合同存储库导入ERC2981.sol。在他们的GitHub页面中,royaltyInfo是一个public函数。但是由于某种原因,当我在我的项目中导入它时,这个函数是external。这是一个(公开的)功能:
但在Remix上,这就是它看起来的样子,是external (在.debs/npm/@openzeppelin/contracts@4.5.0/token/commonERC2981.sol内部)。

我就是这样导入的:
pragma solidity ^0.8.0;
import "@openzeppelin/contracts@4.5.0/token/common/ERC2981.sol";我正在使用0.8.7+commit.e28d00a7作为Remix中的一个可靠的编译器。
我的问题是:我如何解决这个问题?我可以在我的硬帽子部署中将external更改为public,但我不喜欢这样做(手动更改)。
发布于 2022-04-18 20:42:37
这一变化似乎发生在过去3周内,v4.5.0于2月9日发布。尝试在import语句中使用预发布@4.6.0-rc.0而不是@4.5.0。在使用这些预发行版时要小心,因为可能会有bug。您应该会很好,但是在部署到Mainnet之前,我会检查您在那个GitHub中看到的代码。
pragma solidity ^0.8.0;
import "@openzeppelin/contracts@4.6.0-rc.0/token/common/ERC2981.sol";https://ethereum.stackexchange.com/questions/126466
复制相似问题