1

我正在尝试重新创建一个 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;
  }
}
4

2 回答 2

0

是 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 {
   ...
  }

...

}

这是它的文档,他们也会指导你,最好的问候。

于 2021-08-01T05:36:33.017 回答
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 { ... }
}
于 2021-08-01T11:25:46.667 回答