Создание NFT с помощью API AvalancheGo

in #nft4 years ago

Всех приветствую!
Сегодня я хочу поделиться своим опытом по созданию NFT при помощи API AvalancheGo (до момента создания этого гайда я не создавал NFT, поэтому какая - то часть информации будет взята из гайда от Avalanche https://docs.avax.network/v1.0/en/tutorials/non-fungible-token-pt-1/ ) .
Я начну без вступления, т.к не вижу в нём смысл.
Также я предполагаю, что вы уже ознакомились с руководством по быстрому запуску и знакомы с архитектурой Avalanche Network.
Приступаем!
Мой NFT будет создан в X-Chain
Для начала призовём же! avm.createNFTAsset
Для этого нужно обязательно заполнить следующие параметры : name, symbol, minterSets, minters, threshold, from, changeAddr, username, password, assetID.
Что же всё это означает?
name - читаемое имя NFT, 0-128 символов
symbol - сокращенное обозначение 0-4 символов (необязательное поле)
minterSets - список, в котором каждый элемент указывает, что threshold адреса minters могут создавать больше актива.
Выполнение транзакции в X-Chain требует комиссии за транзакцию, уплачиваемой в AVAX. username и password обозначают пользователя, платящего комиссию.
from - адреса, которые вы хотите использовать для операции
changeAddr - адресс, на который будут отправляться любые изменения.
assetID - идентификатор нового актива

avm.createNFTAsset({
name: string,
symbol: string,
minterSets []{
minters: []string,
threshold: int
},
from: []string,
changeAddr: string,
username: string,
password: string
}) ->
{
assetID: string,
changeAddr: string,

Следует сказать о том, что при создании каждого minterSets элемента, avm.createNFTAsset создает NFT группу, т.е если создали 4 элемента, то avm.createNFTAsset создает 4 NFT группы.
Также следует сказать что каждый ответ приходит с assetID, в дальнейшем он вам понадобится для выпуска NFT.

Скажу сразу, что, если вы хотите увидеть кол-во своих NFT, то нужно вызвать строку avm.getUTXOs, там нужно проанализировать utxo, выходы передачи NFT имеют идентификатор типа 00 00 00 0bв шестнадцатеричном ( 11в десятичном) формате .
Теперь, расскажу про строку avm.getUTXOs
addresses - адреса для получения UTXO
numFetched - кол-во UTXO в отклике
utxos - строки в кодировке CB58
endIndex - обозначает последний вернувшийся UTXO.

avm.getUTXOs возвращает 2 UTXO. Давайте возьмем первый и расшифруем его, чтобы убедиться, что это результат NFT Mint . Сначала мы конвертируем закодированную в Base58Check строку, которая возвращается из avm.getUTXOs , в шестнадцатеричный. Следующая строка CB58 выражается в шестнадцатеричном виде.
Теперь мы можем разложить шестнадцатеричный код на отдельные компоненты UTXO, обратившись к формату сериализации транзакции.
Теперь нужно обратить внимание на то, что TypeID is 00 00 00 0a - это правильный идентификатор типа для вывода NFT Mint. Также обратите внимание, что файл GroupID is 00 00 00 00. Это GroupIDбыло создано на основе количества, MinterSets, которое я отправил в avm.createNFTAsset.
Теперь мы можем приступить к созданию NFT
Нужно вызвать строку avm.mintNFT
assetID - идентификатор NFT
payload - произвольная, полезная нагрузка в кодировке CB58, размером не больше 1024 байт
to- адресс, на который будет отправлен только что созданный NFT.
username - пользователь у которого есть ключи, дающие ему разрешение на создание большего количества этих NFT
password - пароль
txID - идентификатор транзакции
Ответ должен содержать ID транзакции.
Дальше нужно вызвать avm.getUTXOs и проанализировав UTXO, чтобы подтвердить, что теперь у нас есть выход NFT Transfer.
Теперь, как я уже рассказывал нужно расшифровать UTXO.
Сначала нужно конвертировать закодированную в Base58Check строку, которая возвращается из avm.getUTXOs, в шестнадцатеричный.
Следующая строка CB58 выражается в шестнадцатеричном виде.
Обратите внимание , что TypeID это 00 00 00 0b, что является правильным типом идентификатора для передачи вывода NFT . Полезная нагрузка теперь включена.
Поздравляю! Гайд окончен, также хочу сказать и о том, что отправку NFT вы можете посмотреть в официальном гайде от avalanche (ссылка на него в начале туториала) , более подробную информацию можете посмотреть в официальном гайде(ссылка на него в начале туториала)
До новых встреч!

Coin Marketplace

STEEM 0.20
TRX 0.15
JST 0.030
BTC 65144.58
ETH 2627.08
USDT 1.00
SBD 2.83