Если вы еще не являетесь участником Medium и хотите получить полный доступ к моим историям, воспользуйтесь этой ссылкой, чтобы подписаться на членство в Medium. Ваш членский взнос напрямую поддерживает меня и побуждает писать больше качественных материалов в будущем. Здоровья!
Это седьмая статья цикла. Если вы не знакомы с тем, как пользоваться Remix IDE, предлагаю вам сначала пройти первую статью этой серии.
2021 год отмечен как год NFT. В этом отрывке вы узнаете, как построить NFT с использованием стандарта ERC721 в твердости.
Итак, начнем!
Что такое ERC721?
Подобно ERC20, ERC721 — это стандарт, разработанный для смарт-контрактов NFT, чтобы позволить различным смарт-контрактам взаимодействовать друг с другом. Но ERC721 намного сложнее, чем ERC20. Вы можете найти стандартный контракт ERC721 здесь.
Как разработать токен ERC721?
Контрактное наследование
Итак, теперь давайте разработаем наш первый токен ERC721. В отличие от нашего предыдущего руководства по токену ERC20. Мы не будем копировать код построчно в наш контракт. Вместо этого мы будем использовать концепцию, называемую наследованием контрактов, для разработки нашего контракта. Сначала импортируем в наш код контракт ERC721 вот так:
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/2bd75a44bb5f419d132bdca6f1bf483d1479f550/contracts/token/ERC721/ERC721.sol";
Теперь вы можете использовать что-то вроде этого, чтобы наследовать контракт ERC721:
contract NewNFT is ERC721 { }
Теперь, используя этот код, наш контракт NewNFT
может использовать все функции, определенные в контракте ERC721. Например, в коде контракта ERC721 есть конструктор, как показано ниже:
Итак, чтобы построить контракт, нам просто нужно указать имя и символ. Затем мы можем сделать что-то вроде этого:
contract NewNFT is ERC721 { constructor() ERC721("NewNFT", "NNFT") {} }
Теперь, после компиляции и развертывания контракта, проверки доступных функций, вы обнаружите, что все функции, доступные для ERC721, также доступны для вашего контракта:
Чтобы понять, что означает каждая функция, вы можете обратиться к документу здесь.
Выпустить токен
В приведенном выше коде вы успешно разработали свой первый контракт ERC721. Однако как отчеканить токен из контракта? Речь идет о функции _mint
, определенной в контракте ERC721. Это выглядит следующим образом:
Итак, здесь вам нужно указать два параметра: адрес, по которому отчеканен токен, и tokenid. Чтобы вызвать эту функцию из нашего контракта NewNFT, нам нужно использовать super
для ее вызова. Итак, мы должны добавить еще одну функцию с именем mint
в наш контракт NewNFT, как показано ниже:
contract NewNFT is ERC721 { constructor() ERC721("NewNFT", "NNFT") {} function mint(address _to, uint256 _tokenId) external { super._mint(_to, _tokenId); } }
Теперь разверните контракт. Найдите функцию монетного двора, которую мы только что добавили слева. Введите адрес, который вы хотите отчеканить, и токен (например, 1):
Теперь перейдите к функции ownerOf
и поставьте 1, она вернет адрес учетной записи, которую вы создали:
Заключение
Поздравляем! Вы выпустили свой первый токен, используя Solidity. Впрочем, вы можете подумать. Как вы могли поместить свои фотографии или произведения искусства в этот NFT? Это касается концепции метаданных. Мы обсудим это подробнее в нашем следующем отрывке. Так что, пожалуйста, следите за обновлениями и увидимся в следующий раз!
Разработка смарт-контрактов с помощью Solidity (1) — Hello World
Разработка смарт-контрактов на Solidity (2) — Калькулятор
Разработка смарт-контрактов с помощью Solidity (3) — игра на угадывание чисел
Разработка смарт-контрактов с Solidity (4) — Банк
Разработка смарт-контрактов с Solidity (5) — создайте свой собственный токен ERC20
Разработка смарт-контрактов с помощью Solidity (6) — Децентрализованная биржа (DEX)
Разработка смарт-контрактов с помощью Solidity (7) — создайте свой собственный NFT