OpenZeppelin ERC721 完全导入

问题描述

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

解决方法

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,他们也会指导您,最好的问候。

,

取而代之的是导入:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...