14 октября 2021

Kukai 2.0: как разработчики адаптировали кошелек для работы с NFT

По данным tzkt.io, пользователи Tezos провели на маркетплейсе hitecnunc 5,7 млн операций и выпустили 424 тысячи токенов. Тем не менее кошельки Tezos добавили поддержку NFT лишь несколько недель назад. Kukai Wallet первым научился отображать невзаимозаменяемые токены.

Мы пообщались с разработчиками Kukai Wallet, и расскажем о том, почему кошельки раньше некорректно показывали NFT и как Kukai решил эту проблему.

Что такое Kukai Wallet

Kukai — это веб-кошелек Tezos. Он работает в браузере и доступен на любых устройствах с доступом к интернету.

Пользователь может импортировать существующий кошелек из файла с ключами (*.tez), мнемонической фразы или Ledger. Также он может создать новый адрес с привязкой к аккаунту Gmail, Facebook, Twitter или Reddit.

Kukai подойдет тем, кто хочет управлять своим кошельком с мобильного телефона или быстро сделать бэкап ключей, чтобы хранить их на внешнем накопителе. А после обновления — и для коллекционеров, которым надоело для просмотра своих NFT заходить на маркетплейсы.

Почему Kukai Wallet некорректно отображал NFT 

Любой токен на блокчейне — это запись в хранилище смарт-контракта в виде «Баланс адреса TZ1 составляет Х токенов». Для правильного отображения баланса кошельку нужно получить метаданные: название, тикер, количество знаков после запятой и логотип контракта. По стандартам TZIP-12 и TZIP-16, разработчик должен добавить эту информацию в хранилище смарт-контракта в поле metadata: в виде отдельной структуры данных (map) или ссылки на файл с метаданными. 

Для взаимозаменяемых токенов чтение метаданных контракта работает отлично. Но метаданные NFT устроены по-другому:

  1. У каждого токена с уникальным id должны быть собственные метаданные в виде map или ссылки на файл.
  2. Кроме стандартных данных вроде имени и логотипа, метаданные отдельного NFT содержат ссылки на токенизируемый объект — artifactUri, обложку — displayUri, и иконку — thumbnailUri. 

Из-за того, что кошельки не умели читать специфические метаданные NFT, невзаимозаменяемые токены отображались в виде названия и логотипа контракта-минтера. Разные NFT из одного маркетплейса выглядели как взаимозаменяемые токены.

Как разработчики решили проблему с отображением NFT в Kukai Wallet

В сентябре разработчики научили Kukai читать метаданные NFT. Кошелек сначала проверяет адреса контрактов, которые взаимодействовали с пользователем. Затем он отправляет API-запросы обозревателю Better Call Dev и получает в ответ ссылки на метаданные токенов этих контрактов. Kukai считывает из метаданных ссылки на токенизированные изображения, загружает их и кеширует на своем сервере.

Благодаря индексации Better Call Dev и кешированию Kukai загружает превью NFT за несколько секунд. В случае медленной работы Better Call Dev кошелек может считать метаданные напрямую из блокчейна с помощью Taquito — для этого нужно нажать кнопку «Clear all token metadata» в настройках.

На момент публикации Kukai Wallet отображает форматы .jpg, .png, .svg и .gif. Видео и аудио-NFT пока не поддерживаются. 

Подписывайтесь на социальные сети Tezos Ukraine, чтобы ничего не пропустить:

  1. Telegram-канал
  2. Facebook.
  3. Twitter на русском и украинском языках
  4. Twitter на английском языке
  5. YouTube-канал
  6. Instagram
  7. LinkedIn
  8. hub на ForkLog

Изначально мы опубликовали этот материал в блоге Tezos Ukraine.

Обсудить в Discord!