Комментарии 4
1) почему ERC721Enumerable , а не ERC721URIStorage ?
2) почему вы используете какието свои контукции для метаданных , а не IERC721Metadata?
3) как можно установить картинку для контакта? я видел на etherscan когда заходишь у некоторых картинка отображается
4) как можно сжешь токен?
5) от вопроса 4. как то можно соединить два nft в один? или это просто сжечь две штуки и сминтить новый?
6) вы указали цену 80000000000000000 , они перемещаются на кошелек кто создал смартконтакт?
7) для чего нужны supportsInterface и beforetransfer ?
1) Если у NFT коллекции baseURL общий, то нет необходимости хранить URL для каждого токена отдельно, т.к. его можно получить по формуле: baseURL/${TOKEN_ID}. В нашем случае, базовый URL был общий, поэтому это был самый оптимальный вариант.
2) Нам было очень важно торговаться на бирже opensea, у них есть документация, в каком формате должны быть аттрибуты.
3) Нужно выполнить верификацию на ehterscan, например с помощью hardhat достаточно запустить скрипт npx hardhat verify --network mainnet YOU_CONTRACT_ID
4) Нужно реализовать OpenZeppelin ERC721Burnable
5) Да, именно так и делают большинство NFT проектов
6) Сумма перемещается на адрес смарт-контракта, перевести на свой кошелек может только владелец смарт-контракта. Или например можно создать метод в смарт-контракте, который будет переводить равные суммы всем основателям.
function withdrawAll() public payable onlyOwner {
uint256 _each = address(this).balance / 2;
require(payable(developer).send(_each));
require(payable(ceo).send(_each));
}
спасибо за статью!
Так я и не понял как реализуется функция
function tokenURI(uint256 _tokenId) public view returns (string) {
return Strings.strConcat(
baseTokenURI(),
Strings.uint2str(_tokenId)
);
}
Откуда OpenSia знает ID токена до его генерации?
Пошаговая инструкция как создать NFT коллекцию на Golang + Ethereum (часть 3)