estarriolvetch / ERC721Psi

MIT License
117 stars 29 forks source link

Use IERC721ReceiverUpgradeable #38

Open RickVM opened 1 year ago

RickVM commented 1 year ago

From ERC721PsiUgradeable.sol

pragma solidity ^0.8.0;

import "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721EnumerableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol";
import "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import "solidity-bits/contracts/BitMaps.sol";

Why refer to IERC721Receiver rather than the upgradable version? Even if its no issue, it requires you to install both regular openzeppelin package as the opzeppelin upgradable package

estarriolvetch commented 1 year ago

There is no difference for the interface id, but I can change it to follow openzeppelin's convention. Since upgradeable and non-upgradeable versions are in the same package, it will require you to install both of the OZ libraries even if only use the upgradeable package.