За последние полтора года невзаимозаменяемые токены (NFT) набрали большую популярность, но следующее поколение NFT будет динамичным. Динамические NFT дают нам возможность исследовать новый уровень интерпретируемости NFT и других токенов, поскольку это позволяет нам изменять метаданные нашего NFT. «Динамичность» NFT часто зависит от какого-либо онлайн-события или события в реальной жизни, такого как произведение искусства или обновление персонажа на основе данных о погоде, реальных спортивных результатов или даже простых действий пользователя. В этой статье мы рассмотрим простой пример динамического NFT, объединяющего коллекционные карты и их атрибуты, обновляемые на основе смоделированных спортивных данных.


Введение в пересмотр

Revise — это платформа, которая позволит вам создавать динамические NFT. NFT сегодня довольно статичны. После покупки они не меняются. Что вы видите, то и получаете. Динамические NFT способны реагировать на внешний мир, данные, взаимодействие с пользователем и т. д. Они способны меняться и развиваться с течением времени.

Давайте воспользуемся Revise для создания собственных коллекций NFT футбольных команд, а затем добавим в них NFT и позволим им динамически изменяться. Мы не будем рассказывать, как развернуть эти NFT в Ethereum/Opensea (нажмите здесь, чтобы узнать больше).


Создать репозиторий

Давайте клонируем это репозиторий GitHub для начала. Репо представляет собой пустой проект Javascript с пересмотреть-SDK добавил в менеджер пакетов. Как только вы cd в папку проекта, вы можете запустить npm install для установки всех зависимостей. Давайте создадим index.js файл. Мы будем писать весь наш код в этом файле, мы будем использовать node index.js для запуска программы.

Скопируйте и вставьте следующий код в index.js файл.

const { Revise } = require("revise-sdk");
const AUTH_TOKEN = "...PASTE YOUR AUTH TOKEN HERE...";
const revise = new Revise({auth: AUTH_TOKEN});

async function run() {

    // write your code here

}
run()
Войти в полноэкранный режим

Выйти из полноэкранного режима

В первых нескольких строках мы импортируем Пересмотр-SDK и добавляем наш токен авторизации (подробнее о том, как его получить ниже). В третьей строке мы создаем экземпляр revise объект. Теперь мы можем использовать этот объект для вызова всех функций, необходимых для выполнения упражнения. Функции проверки в основном асинхронны, поэтому мы создаем run функция, которая является асинхронной и может вызывать функции проверки, используя await ключевое слово. Это сделает наш код более читабельным и удобным для сопровождения.

💡 Вы можете сгенерировать токен аутентификации из app.revise.network. Для получения более подробной информации обратитесь к следующему разделу этой статьи.


Сгенерировать ключ API (токен аутентификации)

Прежде чем мы продолжим писать остальной код, давайте возьмем ключ авторизации. Посещать Исправлять и нажмите «начать». После того, как вы создадите учетную запись и войдете в систему, вы увидите ссылку «сгенерировать ключ API» в заголовке. Нажмите на нее, теперь вы сможете сгенерировать ключ API (токен авторизации). Скопируйте ключ, показанный на экране, и сохраните его. Этот ключ не хранится на серверах Revise по соображениям безопасности. Если вы потеряете ключ, он будет утерян навсегда. Вы всегда можете вернуться и сгенерировать новый ключ.

Сгенерировать API-ключ

Давайте заменим AUTH_TOKEN в приведенном выше коде с ключом, который мы только что сгенерировали. Теперь мы готовы приступить к написанию динамического плеера NFT.


Добавить коллекцию

Для начала создадим коллекцию под названием «Моя динамичная футбольная команда». Эта коллекция может иметь несколько NFT. Каждый NFT — это торговая карточка игрока. Чтобы собрать коллекцию, мы вызовем метод addCollection функция. Нам нужно будет передать ему два параметра: имя коллекции и URI коллекции. collectionURI — это уникальное имя проекта, которое можно использовать для генерации ссылок для NFT (зачем нам нужны эти ссылки, описано далее). Мы должны убедиться, что URI уникален и состоит из одного слова. Например, «myfootballteam» является допустимым URI коллекции, а «my football team» — нет. Добавьте следующий код в свой index.js внутри run функция.

const collection = await revise.addCollection({name: "My Dynamic Football Team", uri: "..CREATE YOUR UNIQUE URI"})

// Collection Name : Use any name you want for your collection (this gets shown in the marketplace))
// Collection_URI  : Use a unique name (no spaces or special characters)
//                   this will generate a unique link for your collection
//                   for e.g. if you choose "mydynamicplayer12345"
//                   your baseURI wil be "mydynamicplayer12345.revise.link"
Войти в полноэкранный режим

Выйти из полноэкранного режима


Добавить NFT

Теперь давайте добавим наш первый NFT-плеер. Мы будем использовать addNFT функция для создания нашего игрока. Добавьте следующий код в свой run функция ниже addCollection вызов функции.

const nft = await revise.addNFT({
    image: 'https://revise-testing.fra1.cdn.digitaloceanspaces.com/players/bronze.png',
    name: 'Kylian Mbappe',
    tokenId: '1',
    description: 'Forward with exceptional abilities. Legend to have on your team'
  }, [
    {team: "PSG"}, {position: "Forward"}, {level: "Bronze"}, {offense: "75"}, {defense: "45"}, {stamina: "76"}, {skill: "71"}
  ], collection.id)

console.log(nft)
Войти в полноэкранный режим

Выйти из полноэкранного режима

Мы передаем параметры для изображения нашего игрока, имя, описание, tokenId и некоторые свойства. Мы также проходим collectionId мы получили после создания нашей коллекции для более раннего фрагмента кода. tokenId — это уникальный идентификатор вашего NFT в блокчейне. Это помогает блокчейну и торговым площадкам различать части NFT одной и той же коллекции. Два NFT не должны иметь одинаковых tokenId. Мы можем добавить любое количество пользовательских данных в наши NFT через его атрибуты. Как вы можете видеть в приведенном выше фрагменте, мы добавили «команда», «позиция», «нападение», «защита», «выносливость» и т. д. Здесь вы можете добавить любое количество атрибутов.


Бежать

Окончательное состояние нашего index.js файл должен выглядеть так сейчас.

const { Revise } = require("revise-sdk");
const AUTH_TOKEN = "...PASTE YOUR AUTH TOKEN HERE...";
const revise = new Revise({auth: AUTH_TOKEN});

async function run() {

    const collection = await revise.addCollection({name: "My Dynamic Football Team", uri: "..CREATE YOUR UNIQUE URI"})

    const nft = await revise.addNFT({
    image: 'https://revise-testing.fra1.cdn.digitaloceanspaces.com/players/bronze.png',
    name: 'Kylian Mbappe',
    tokenId: '1',
    description: 'Forward with exceptional abilities. Legend to have on your team'
  }, [
    {team: "PSG"}, {position: "Forward"}, {level: "Bronze"}, {offense: "75"}, {defense: "45"}, {stamina: "76"}, {skill: "71"}
  ], collection.id)

console.log(nft)

}
run()
Войти в полноэкранный режим

Выйти из полноэкранного режима

Давайте запустим этот файл, чтобы создать коллекцию и добавить наш первый NFT. Бежать node index.js в вашем терминале. Ожидаемый результат — это id как показано ниже.

запустить команду nodejs

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

💡 Примечание: tokenId а также nftId разные. tokenId используется торговыми площадками и кошельками для идентификации вашего NFT. nftId используется Revise для идентификации и управления NFT.

Посетите свой Пересмотреть панель инструментов чтобы увидеть своего NFT-плеера в действии.

Просмотр списка NFT

Нажмите кнопку «Просмотр», чтобы увидеть свой NFT, и он отобразится с бронзовым изображением.

профиль игрока


Добавление динамических возможностей в ваш NFT

Теперь, когда мы создали нашего первого NFT-плеера, давайте сделаем его динамичным, изменив его настроение.

Создайте новый файл с именем levels.js. Вставьте следующий код в файл.

const { Revise } = require("revise-sdk");
const AUTH_TOKEN = "...AUTH_TOKEN...";
const revise = new Revise({auth: AUTH_TOKEN});

const API = async function() {
  const options = [
    {level: 'Silver', offense: '82', defense: '51', stamina: '82', skill: '79', image: "https://revise-testing.fra1.cdn.digitaloceanspaces.com/players/silver.png"},
    {level: 'Gold', offense: '98', defense: '64', stamina: '92', skill: '87', image: "https://revise-testing.fra1.cdn.digitaloceanspaces.com/players/gold.png"}
  ]
  const randomIndex =  Math.floor(Math.random() * 2)
  return options[randomIndex];
}

async function run() {

  revise.every('2m').listenTo(API).start(async (data) => {
    const player = await revise.fetchNFT("0d6cee67-d3c1-41d5-bd57-ebbe4d34ebd3")
    revise.nft(player)
      .setProperty("level", data.level)
      .setProperty("offense", data.offense)
      .setProperty("defense", data.defense)
      .setProperty("stamina", data.stamina)
      .setProperty("skill", data.skill)
      .setImage(data.image)
      .save()

            console.log(`${player.name}'s is now at level ${data.level}`)
  })

}
run()
Войти в полноэкранный режим

Выйти из полноэкранного режима

В приведенном выше коде мы настраиваем автоматизацию, которая будет получать уровень каждые 2 минуты и обновлять атрибуты и изображение нашего игрока. Запустите указанный выше файл, запустив node levels.js. Программа будет выполняться автоматически и развивать наш NFT-плеер в фоновом режиме. Вы должны увидеть, как игрок меняет свой уровень на Серебряный или Золотой и последующие атрибуты, а также все старые версии (ревизии) NFT.

Пересмотреть страницу динамической панели мониторинга NFT

Поздравляем с созданием вашей динамической футбольной коллекции и плеера NFT! Опубликуйте свой Player NFT в Opensea и продемонстрируйте его всему миру.

Если вы хотите узнать больше или изучить возможности создания с помощью Revise, запланируйте звонок с нами. здесь или присоединиться наш дискорд или напишите нам Твиттер.