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;
  }
}

2 ответа

Вместо этого импортируются:

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

Вот файл 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 {
   ...
  }

...

}

Вот документы для этого, они также помогут вам, с наилучшими пожеланиями.

Другие вопросы по тегам