НОВОЕ: Helius приобретает Light Protocol
как выпустить NFT в Solana
Блог/Разработка

Solana Dev 101 — как выпустить NFT в Solana

Инженер по удобству разработкиOwen Venter в XOwen Venter в LinkedIn
Чтение: 4 мин

Всем привет! В этой статье мы погрузимся в мир невзаимозаменяемых токенов (NFT) в Solana.

К концу статьи вы будете четко понимать весь процесс и сможете создавать собственные NFT в Solana с помощью JavaScript.

Если у вас возникнут вопросы, присоединяйтесь к Discord Helius или отметьте Helius в Twitter, чтобы получить помощь.

Установите необходимые инструменты:

Прежде чем начать, убедитесь, что на вашем компьютере установлены Node.js и npm. Скачать их можно здесь.

Шаг 1. Установите зависимости

Сначала установим необходимые зависимости.

Выполните следующие команды в терминале, чтобы установить JavaScript API для Solana и библиотеку Metaplex для JavaScript:

Код
npm install @solana/web3.js @metaplex-foundation/js

Шаг 2. Импортируйте зависимости

Теперь создадим файл mintNFTs.js и импортируем необходимые зависимости:

Код
const { Keypair, Connection } = require('@solana/web3.js');
const { Metaplex,keypairIdentity, bundlrStorage,toMetaplexFile } = require('@metaplex-foundation/js');
const {fs} = require('fs');

Шаг 3. Создайте кошелек, инициализируйте подключение и создайте экземпляр Metaplex

Нам нужен кошелек Solana для выпуска и хранения NFT. Для этого воспользуемся инструментами Solana CLI. Выполните следующую команду в терминале, чтобы создать новый кошелек. Он будет сохранен в виде JSON-файла с сид-фразой.‍

Код
solana-keygen new

‍Его можно импортировать в браузерное расширение кошелька, например Phantom или Backpack.

Теперь инициализируем подключение к кластеру Solana. Мы будем подключаться к кластеру mainnet через Helius. Это быстрее общедоступного RPC, для которого действуют строгие ограничения частоты запросов и который не поддерживает архивные данные. ( https://api.mainnet-beta.solana.com ). Если вы также хотите использовать более быстрый RPC-сервис премиум-класса вместо стандартного RPC, создайте бесплатный аккаунт Helius здесь.

Затем создадим пару ключей кошелька из сид-фразы только что созданного кошелька.

Код
async function createMetadata(imageName) {

  // Create an image buffer
  const metadataURI = await metaplex.nfts().uploadMetadata({
    name: "Helius NFT",
    description: "Helius NFT created in the SolanaDev 101 course",

    // Image: await uploadIMG(imageName),
    image: await toMetaplexFile(fs.readFileSync(imageName), "heliusLogo"),
    attributes: [
      { trait_type: "Test", value: "Yes" },
      { trait_type: "Logo", value: "Helius" },
    ],
  });
  return metadataURI;
}

В приведенном выше коде мы создаем экземпляр Metaplex SDK — набора инструментов для взаимодействия с протоколом Metaplex. Затем настраиваем для него подключение к кластеру Solana, кошелек пользователя и поставщика хранилища. .use(bundlrStorage()) настраивает использование Bundlr в качестве поставщика хранилища, где будут храниться метаданные и ресурсы NFT.

Шаг 4. Создайте и загрузите метаданные NFT

На этом шаге мы создадим и загрузим метаданные и изображение NFT с помощью функции createMetadata().

Одна из основных частей NFT — изображение. В этом примере мы используем логотип Helius. Добавьте нужное изображение в каталог, где вы создали файл mintNFT.js.

Сначала функция считывает файл изображения, указанный в imageName, с помощью fs, а затем преобразует его в подходящий для Metaplex формат с помощью toMetaplexFile(). Затем мы загружаем метаданные с помощью функции metaplex.nfts().uploadMetadata().

Метаданные содержат важную информацию о нашем NFT: название, описание, подготовленное изображение и набор атрибутов с дополнительными сведениями. В NFT можно включить гораздо больше данных. Подробнее о стандарте NFT от Metaplex читайте здесь.

После успешной загрузки метаданных функция вернет их URI, указывающий на расположение данных в интернете.

Код
async function createMetadata(imageName) {

  // Create an image buffer
  const metadataURI = await metaplex.nfts().uploadMetadata({
    name: "Helius NFT",
    description: "Helius NFT created in the SolanaDev 101 course",

    // Image: await uploadIMG(imageName),
    image: await toMetaplexFile(fs.readFileSync(imageName), "heliusLogo"),
    attributes: [
      { trait_type: "Test", value: "Yes" },
      { trait_type: "Logo", value: "Helius" },
    ],
  });
  return metadataURI;
}

Шаг 5. Выпустите NFT

Теперь перейдем к выпуску NFT и создадим функцию createNFT(). Сначала вызовем функцию createMetadata() с аргументом "./heliusLogo.png" — путем к файлу изображения.

Затем выпустим NFT, вызвав metaplex.nfts().create(). Эта функция принимает объект с несколькими свойствами: URI метаданных, названием NFT, комиссией продавца (здесь она равна 5%) и массивом создателей. Объект каждого создателя содержит адрес и долю роялти в процентах, которую должен получать соответствующий кошелек.

После успешного создания NFT функция выведет адрес минта NFT в журнал. Этот адрес — уникальный идентификатор NFT в блокчейне. Вы можете скопировать его и найти NFT в обозревателе блоков, например Orb.

Код
async function createNFT() {
  // Create and upload the metadata
  const metadata = await createMetadata("./heliusLogo.png");
  // Create the NFT
  const nft = await metaplex.nfts().create({
    uri: metadata.uri,
    name: "Helius NFT",
    seller_fee_basis_points: 500, // 5%
    creators: [{ address: wallet.publicKey, verified: true, share: 100 }],
  });

  // Log the NFT mint address
  console.log("NFT:", nft.mintAddress.toBase58());
}
createNFT();

Выполнение этого кода с помощью node mintNFT.js создало NFT, который можно увидеть здесь.

Заключение

Поздравляем! Вы только что создали NFT. Надеемся, это руководство помогло вам начать работу с NFT в Solana. NFT — важная часть экосистемы Solana, поэтому умение разбираться в их структуре и создавать их будет очень полезно.

Полный код доступен здесь. Удачи в разработке!

Ссылки:

‍

Подпишитесь на Helius

Следите за новостями разработки на Solana и получайте уведомления о наших публикациях

Увеличенное изображение