Изменчивость

Данные в Irys являются неизменными. Однако вы можете имитировать изменчивость, используя изменяемые ссылки. С помощью изменяемых ссылок вы создаете единый статичный URL-адрес, который связан с последовательной серией транзакций.

Вы можете в любое время добавить новую транзакцию в серию транзакций, и URL-адрес всегда будет изменяться в последней транзакции в сети.

Чтобы создать изменяемую ссылку:

  1. Загрузите базовую транзакцию в Irys и сошлитесь на нее, используя URL-адрес в следующем формате https://gateway.irys.xyz/mutable/:txId

const irysUploader = await getIrysUploader();
const receiptOne = await irysUploader.upload("First TX");
console.log(`TX 1 uploaded https://gateway.irys.xyz/mutable/${receiptOne.id}`);
  1. Загрузите дополнение к серии в качестве новой транзакции и добавьте тег с именем Root-TX со значением исходного идентификатора транзакции.

const tags = [{ name: "Root-TX", value: receiptOne.id }];
const receiptTwo = await irysUploader.upload("Second TX", { tags: tags });
console.log(`TX 2 uploaded https://gateway.irys.xyz/mutable/${receiptOne.id}`);

Исходный URL-адрес (https://gateway.irys.xyz/mutable/:txId) теперь изменяется во второй транзакции в сети.

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

Детализация

Изменяемые ссылки основаны на временных метках Irys с точностью до миллисекунд. Вы можете публиковать несколько последовательных обновлений для данной транзакции и быть уверенными, что транзакция, обслуживаемая конечной точкой /mutable/, всегда будет самой последней в хронологическом порядке.

Версионность

Хотя конечная точка https://gateway.irys.xyz/mutable/:txId всегда будет изменяться в самую последнюю транзакцию в цепочке, можно напрямую получить доступ к любой транзакции в цепочке, используя идентификатор транзакции и URL-адрес в формате https://gateway.irys.xyz/:id

Вы можете запросить цепочку версий с помощью GraphQL:

query getChain {
  transactions(
    tags: [
      {
        name: "Root-TX"
        values: ["WF--VR1ZERvABYy1aNYD3QJ0OAVDSUF8dTlg6zFKveQ"]
      }
    ]
    owners: ["0x591b5ce7ca10a55a9b5d1516ef89693d5b3586b8"]
    order: ASC
  ) {
    edges {
      node {
        id
        timestamp
      }
    }
  }
}

Примеры использования

Изменяемые ссылки Irys открывают новые возможности для разработчиков, в том числе:

  • Игровые NFT: метаданные изменяются в зависимости от действий в игре

  • Динамические NFT: изображения изменяются в зависимости от активности в цепочке

  • Распространение программного обеспечения: последняя версия всегда доступна по одной и той же ссылке

  • Публикация контента / социальные сети: контент может быть обновлен в любое время, и пользователи всегда будут иметь самую последнюю версию.

Оригинал статьи: https://docs.irys.xyz/build/d/features/mutability

Последнее обновление