我希望有人可以帮助解决这个问题。我一直在尝试使用 Solidity 和 tronbox 在 Tron 上学习智能合约,但在尝试创建 ERC721 代币时遇到了问题。
我使用 openzeppelin 文档创建了非常简单的 ERC20.sol 合约,但是在 openzeppelin 文档中发现 ERC721 合约出现错误。
https://docs.openzeppelin.com/contracts/4.x/erc721
TypeError: Member "isContract" not unique after argument-dependent lookup in address.
--> @openzeppelin/contracts/token/ERC721/ERC721.sol:375:13:
|
375 | if (to.isContract()) {
| ^^^^^^^^^^^^^
Compilation failed. See above.
我最初认为这可能是因为 Solidity 版本,但我已经更改了solidity 并多次安装了适当的 openzeppelin 版本,并且其他版本的 openzeppelin 存在相同的错误。
当前设置:
Ubuntu 20.04
tronbox version
Tronbox v2.7.23
Solidity v0.8.0 (tron-solc)
@openzeppelin/contracts 4.2.0
tronbox$ tail -n7 tronbox.js
compilers: {
solc: {
version: '0.8.0'
}
}
}
}
完整输出:
tronbox$ tronbox compile --network development
Compiling ./contracts/GameItem.sol...
Compiling ./contracts/Migrations.sol...
Compiling @openzeppelin/contracts/token/ERC721/ERC721.sol...
Compiling @openzeppelin/contracts/token/ERC721/IERC721.sol...
Compiling @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol...
Compiling @openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol...
Compiling @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol...
Compiling @openzeppelin/contracts/utils/Address.sol...
Compiling @openzeppelin/contracts/utils/Context.sol...
Compiling @openzeppelin/contracts/utils/Counters.sol...
Compiling @openzeppelin/contracts/utils/Strings.sol...
Compiling @openzeppelin/contracts/utils/introspection/ERC165.sol...
Compiling @openzeppelin/contracts/utils/introspection/IERC165.sol...
TypeError: Member "isContract" not unique after argument-dependent lookup in address.
--> @openzeppelin/contracts/token/ERC721/ERC721.sol:375:13:
|
375 | if (to.isContract()) {
| ^^^^^^^^^^^^^
Compilation failed. See above.