В Части 1 [LINK] мы познакомились с основными концепциями NFT и с тем, как создать свой собственный контракт, теперь пришло время взаимодействовать с вашим новым контрактом.

Взаимодействие с вашим контрактом 💻

После развертывания контракта вам понадобится способ взаимодействия с ним (не забудьте просмотреть видео [это], если вам нужна помощь в развертывании).

Для взаимодействия вам необходимо подключить свой сайт к блокчейну, это не так страшно, как кажется. Для подключения вашего сайта вам необходимо использовать библиотеку под названием [WEB3JS].

Как вы теперь должны знать, как только вы успешно скомпилируете и перенесете свой контракт с [Truffle], у вас будет файл ABI в формате JSON для вашего контракта.

Это файл abi.json, который вы будете использовать для подключения к своему контракту. Файл ABI содержит всю информацию о вашем контракте. Одна из важных частей информации, которую он имеет, - это его адрес в цепочке блоков.

Без знания адреса нет возможности взаимодействовать.

Web3 JS

Вот готовый пример подключения к вашему контракту с помощью [Web3] с веб-сайта на основе React. (Еще раз, если вы действительно чувствуете себя потерянным, посмотрите видео [это]).

Мне нравится использовать [Web3Modal] вместе с Web3 JS, это позволяет нам легко подключать кошелек пользователей к нашему сайту.

  • Ниже приведен фрагмент проекта React с использованием хуков.
  • Я прокомментировал код там, где это важно
import React, { useEffect} from "react";
import Web3 from "web3";
import Web3Modal from "web3modal";
import Contract from "../truffle/abis/NFT.json";
const loadWeb3 = async()=>{
 //THIS ALLOWS YOU TALK TO BLOCKCHAIN
  const web3Modal = new Web3Modal({
    network: "mainnet", // optional
    cacheProvider: true, // optional
    providerOptions: {}, // required
  });
  const provider = await web3Modal.connect();
  const web3 = new Web3(provider);
  const netId = await web3.eth.net.getId();
  //THIS WILL LOAD YOUR CONTRACT FROM BLOCKCHAIN
  const contract = new web3.eth.Contract(
    Contract.abi,
    Contract.networks[netId].address
  );
  // FROM HERE YOU CAN NOW QUERY YOUR CONTRACT FOR DATA
  // HERE ARE A FEW EXAMPLES
  // THE TOKEN ID YOU WANT TO QUERY
  const tokenID = 1;
  // GET THE AMOUNT OF NFTs MINTED 
  const totalSupply = await contract.methods.totalSupply().call();
  // GET THE TOKEN URI
  // THE URI IS THE LINK TO WHERE YOUR JSON DATA LIVES
  const uri = await contract.methods.tokenURI(tokenID).call();
  // GET THE OWNER OF A SPECIFIC TOKEN
  const owner = await contract.methods.ownerOf(tokenID).call();
  // CHECK IF A SPECIFIC TOKEN IS SOLD
  const sold = await contract.methods.sold(tokenID).call();
  // GET PRICE OF A SPECIFIC TOKEN
  const price = await contract.methods.price(tokenID).call();
}
const ExampleComponent = ()=>{
useEffect(()=>{
    loadWeb3();
},[])
return (<p>My component</p>)
}
export default ExampleComponent

IPFS?

«IPFS - это одноранговая (p2p) сеть хранения данных. Контент доступен через одноранговые узлы, расположенные в любой точке мира, которые могут передавать информацию, хранить ее или делать то и другое. IPFS знает, как найти то, что вы просите, используя адрес содержания, а не местонахождение ».

Хорошо, теперь у вас есть код для взаимодействия с вашим контрактом 👆, но на данный момент у вас нет отчеканенных токенов или каких-либо предметов, готовых к чеканке.

Мне нравится использовать [ipfs-http-client], когда я хочу добавить элементы в IPFS, это действительно просто в использовании.

После успешного добавления элемента в IPFS он вернет CID, CID - это ваш уникальный хэш, который позволяет вам найти ваше изображение в IPFS. При желании вы можете закрепить свои CID, это предотвратит сбор мусора и удаление ваших загрузок из IPFS.

Лучшая практика для NFT:

  • добавить свое изображение в IPFS
  • создать базовый файл JSON, содержащий не менее 3 ключей (имя, описание, изображение)
  • Ключ изображения будет полным URL-адресом элемента, который вы добавили в IPFS.
  • добавьте свой файл метаданных в IPFS
  • Закрепите идентификаторы CID для изображений и загружаемых метаданных
  • Создайте путь к файлу метаданных (распространенное заблуждение состоит в том, что вы указываете путь к файлу изображения)

Что такое чеканка?

«Минтинг в основном относится к процессу превращения цифрового искусства в часть блокчейна Ethereum как публичного реестра. … NFT обеспечивают репрезентативность ваших цифровых произведений искусства. В то же время это также гарантирует, что произведения искусства можно будет гибко продавать или покупать на рынке ».

Вы должны чеканить свои NFT, чтобы иметь возможность продать их / передать право собственности.

Подробнее о чеканке читайте в [ЗДЕСЬ].

Файл метаданных 📝

Как упоминалось выше, чеканка представляет собой трехэтапный процесс.

1- Вы загружаете изображение в IPFS

2- Вы создаете и загружаете файл JSON метаданных в IPFS.

3- Вы закрепляете CID, который возвращается для каждого из этих

Я заявил, что ваш файл метаданных будет содержать 3 ключа, но на самом деле их может быть сколько угодно, однако у вас должны быть 3 требуемых ключа.

Вот действительный пример файла метаданных, который я создал для контракта NFT в блокчейне Polygon Mainnet.

{
  "name":"Stupid Schaefer",
  "description":"number 1 of the series 1 low collection",       "image":"https://ipfs.infura.io/ipfs/QmPAMRJhbEKSjf6dwM65wqWmw5Jtmwi4jCS5Y78TUZ7YPW",
  "uid":"0-4-5-29-25-29-59-59-64-86-194-48",
  "timestamp":1629664820425
}

Как вы можете видеть выше, у меня есть имя, описание и изображение, но у меня также есть идентификатор пользователя и временная метка.

Важно понимать функцию трех обязательных ключевых слов, поэтому вот разбивка.

1- Имя: это имя, которое будет отображаться для вашего уникального токена в таких местах, как [Opensea]

2- Описание: это описание, которое будет отображаться для вашего уникального токена в таких местах, как [Opensea]

3- Изображение: изображение позволит отображать изображение вашего токена в кошельке пользователя и в таких местах, как [Opensea]

Любые дополнительные добавленные ключи можно использовать для ваших собственных целей, количество ключей, которые вы можете добавить, не ограничено.

Крипто-вурдалак

Для исследования этой темы я создал свой собственный веб-сайт, основанный на блокчейне, в многоугольной сети, который позволяет пользователям покупать NFT, проверять их и, если вам нравится, покупать один из моих NFT. Https://cryptoghoulz.com.

Если у вас есть какие-либо вопросы относительно Crypto Ghoulz, свяжитесь с нами через твиттер.

Код проекта

Если вы хотите начать с этого, вы можете найти репозиторий шаблонов [ЗДЕСЬ].

Это хороший проект, который поможет вам по-настоящему почувствовать, как все работает.

Что дальше?

В части 3 мы будем добывать наши NFT, покупать их и проверять право собственности. Нажмите [ЗДЕСЬ], чтобы просмотреть часть 3.

Присоединяйтесь к Coinmonks Telegram Channel и узнайте о криптовалютной торговле и инвестировании.

Также прочтите