我正在尝试重新创建一个 nft 项目,但文件 ERC721Full.sol 在当前版本的 OpenZeppelin Repo 中不再存在。我试图将 ERC721Full 导入的所有文件导入我的智能合约文件,但我的计算机似乎无法访问这些导入。有人知道解决办法吗?
pragma solidity ^0.4.24;
import "./ERC721.sol";
import "./ERC721Enumerable.sol";
import "./ERC721Metadata.sol";
contract Color is ERC721, ERC721Enumerable, ERC721Metadata {
constructor(string name, string symbol) ERC721Metadata(name, symbol)
public
{
// E.G. color = "#FFFFFF"
function mint(string memory _color) public {
require(!_colorExists[_color]);
colors.push(_color);
uint _id = colors.length - 1;
_mint(msg.sender, _id);
_colorExists[_color] = true;
}
}
答案 0 :(得分:0)
Here 是 ERC721Full 文件及其所有导入。
您可以下载该文件,并将其导入到您的项目本地,或将其复制粘贴到您的合同文件中。
导入后,只需在合同中执行以下操作:
contract Color is ERC721Full {
using SafeMath for uint;
...
constructor(string name, string symbol) ERC721Full(name, symbol) public {}
...
// E.G. color = "#FFFFFF"
function mint(string memory _color) public {
...
}
...
}
这是docs,他们也会指导您,最好的问候。
答案 1 :(得分:0)
取而代之的是导入:
import "./ERC721.sol";
import "./ERC721Enumerable.sol";
import "./ERC721Metadata.sol";
你必须导入这个:
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";
然后您的合同将如下所示:
contract Color is ERC721Enumerable, IERC721Metadata {
constructor(string name, string symbol) ERC721Enumerable(name, symbol)
public { ... }
}