Если вы еще не являетесь участником 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