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 {
...
}
...
}
Вот документы для этого, они также помогут вам, с наилучшими пожеланиями.