Aptos Token

РУКОВОДСТВО ПО ТОКЕНАМ APTOS Также смотрите руководство "Ваше первое NFT".

Обзор NFT

NFT - это невзаимо-заменяемый токен или данные, хранящиеся в блокчейне, которые однозначно определяют право собственности на актив. Впервые NFT были определены в EIP-721, а затем расширены в EIP-1155. Как правило, NFT определяются с помощью следующих свойств:

  • name: Имя актива. Оно должно быть уникальным в пределах коллекции.

  • description (описание): Описание актива.

  • uri: Указатель URL-адреса для получения дополнительной информации об активе вне сети. Активом может быть медиа, например, изображение или видео, или дополнительные метаданные.

  • supply: Общее количество единиц данного NFT. Многие NFT имеют только одну позицию, а те, которые имеют более одной, называются изданиями.

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

  • name: Имя коллекции. Имя должно быть уникальным в пределах учетной записи создателя.

  • description (описание): Описание коллекции.

  • uri: Указатель URL-адреса вне сети для получения дополнительной информации об активе. Активом может быть медиа, например, изображение или видео, или дополнительные метаданные.

Стандарт токенов

Стандарт токенов Aptos разработан с учетом следующих основ:

  • Совместимость: Обеспечить стандартную поддержку для улучшения совместимости между проектами экосистемы. Более того, то, что Move является статическим языком без динамической обработки, делает этот принцип еще более необходимым.

  • Ликвидность: Достичь максимальной ликвидности, определив в одном контракте NFT, взаимозаменяемые (недесятичные) и полузаменяемые токены. Эти различные типы токенов могут легко храниться, передаваться и совершаться одинаковым образом. Как следствие, становится проще достичь максимальной совместимости между торговыми площадками, биржами и другими методами обмена.

  • Разнообразные свойства токенов в сети: Обеспечение возможности настройки свойств токенов на сети. Пользователи могут определять свои собственные свойства и хранить их на сети. Это может потенциально устранить необходимость в метаданных вне сети.

  • Снижение накладных расходов: Снижение затрат на создание большого количества NFT из взаимозаменяемых токенов. Это может привести, например, к снижению накладных расходов для аналогичных токенов за счет повторного использования метаданных на сети для определенных сходных токенов.

ЗАМЕНИМЫЙ ТОКЕН → NFT Стандарт токенов Aptos поддерживает преобразование функционального токена в NFT.

Хранение настроенных свойств токенов на сети

В дополнение к стандартным атрибутам токенов, стандарт токенов Aptos предоставляет поле default_properties - хранилище ключевых значений с информацией о типе для хранения настроенных свойств на сети. Используйте это поле для настройки свойств токена и хранения их на сети. Эти свойства могут быть непосредственно прочитаны и записаны другими смарт-контрактами.

Эволюция от взаимозаменяемых токенов к NFT

Заменяемые Токены имеют одинаковые значения свойств по умолчанию. Однако со временем эти значения свойств могут изменяться и становиться отличными друг от друга. Для поддержки такой эволюции свойств токенов в стандарте токенов Aptos предусмотрено поле property_version. Вот как оно работает:

  • Во время создания токенов (минта) все токены изначально имеют property_version, установленную на 0, и эти токены могут быть сложены вместе как взаимозаменяемые токены.

  • Когда создатели изменяют свойства токена по умолчанию, измененному токену присваивается уникальная property_version для создания нового token_id, чтобы отличить его от других взаимозаменяемых токенов. Этот уникальный token_id позволяет токену иметь свои собственные значения свойств, и все дальнейшие изменения этого токена не изменяют property_version снова. Теперь этот токен, по сути, становится NFT.

Настройка изменяемости

Чтобы сделать изменяемость явной для создателя и владельца, стандарт токенов Aptos предоставляет mutability_config как на уровне коллекции, так и на уровне токена для управления тем, какие поля являются изменяемыми. Конфигурируемое здесь означает, что создатель может настроить это поле на изменяемое или неизменяемое во время создания.

Хранение метаданных вне сети

Вы также можете хранить метаданные токена в файле JSON, расположенном во внесетевом хранилище, таком как arweave или IPFS, и указать ссылку на файл JSON в поле uri токена или коллекции. Мы рекомендуем разработчикам следовать схеме данных внесетевом хранилище ERC-1155 для форматирования своих JSON-файлов.

{
  "image": "https://www.arweave.net/abcd5678?ext=png",
  "animation_url": "https://www.arweave.net/efgh1234?ext=mp4",
  "external_url": "https://solflare.com",
  "properties": {
    "files": [
      {
        "uri": "https://www.arweave.net/abcd5678?ext=png",
        "type": "image/png"
      },
      {
        "uri": "https://watch.videodelivery.net/9876jkl",
        "type": "unknown",
        "cdn": true
      },
      {
        "uri": "https://www.arweave.net/efgh1234?ext=mp4",
        "type": "video/mp4"
      }
    ],
    "simple_property": "example value",
        "rich_property": {
                "name": "Name",
                "value": "123",
                "display_value": "123 Example Value",
                "class": "emphasis",
                "css": {
                    "color": "#ffffff",
                    "font-weight": "bold",
                    "text-decoration": "underline"
                }
         },
         "array_property": {
                "name": "Name",
                "value": [1,2,3,4],
                "class": "emphasis"
            }
  }
}

Передача токенов

Чтобы защитить пользователя от получения нежелательных NFT, пользователю сначала должны быть предложены NFT, после чего пользователь должен заявить о своих правах на предложенные NFT. Затем только эти NFT будут помещены в хранилище токенов пользователя. Это поведение при передаче токенов по умолчанию. Например:

  • Если Alice хочет отправить Bob NFT, она должна сначала предложить Bob этот NFT. Этот NFT все еще хранится на учетной записи Alice.

  • Только когда Bob потребует NFT, этот NFT будет удален с учетной записи Alice и сохранен в хранилище токенов Bob.

МОДУЛЬ ПЕРЕДАЧИ ТОКЕНОВ

Передача токенов реализована в модуле token_transfer.

Прямой перевод

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

Обратите внимание, что и при переводе токенов по умолчанию, и при методе прямой передачи пользователь получит NFT в хранилище токенов пользователя.

ОТКЛЮЧЕНИЕ ПРЯМОГО ПЕРЕВОДА Пользователь также может отключить функцию прямого перевода, вызвав ту же функцию opt_in_direct_transfer, чтобы вернуть функцию к функцию по умолчанию.

Модель данных токена

Ресурсы токенов

Данные, связанные с токенами, хранятся как в учетной записи создателя, так и в учетной записи владельца.

Ресурс, хранящийся по адресу создателя

НаправлениеОписание

Collections

Содержит таблицу collection_data, которая сопоставляет имя коллекции с CollectionData. В ней также хранятся все TokenData, которые создал данный создатель.

CollectionData

Хранит метаданные коллекции. supply - количество токенов, созданных для текущей коллекции. maxium максимальное количество токенов в данной коллекции.

CollectionMutabilityConfig

Определение об изменении коллекции

TokenData

Основная структура для хранения метаданных токена. Properties - это место, где пользователь может добавить свои собственные свойства, которые не определены в данных токена. Пользователь может создавать несколько токенов на основе данных TokenData, и они используют одни и те же данные TokenData.

TokenMutabilityConfig

Контролирует, какие значения могут быть выполнены.

TokenDataId

Идентификатор, используемый для представления и запроса TokenData в сети. Этот идентификатор в основном содержит 3 значения, включая адрес создателя, имя коллекции и имя токена.

Royalty

Укажите знаменатель и числитель для расчета роялти. Здесь также указывается адрес учетной записи получателя для перечисления роялти.

PropertyValue

Содержит как значение свойства, так и тип свойства.

Ресурс хранящиеся по адресу владельца:

НаправлениеОписание

TokenStore

Основная структура для хранения токена, принадлежащего данному адресу. Она сопоставляет TokenId с фактическим токеном.

Token

amount - количество токенов.

TokenId

TokenDataId указывает на метаданные этого токена. Property_version представляет токен с измененной PropertyMap из default_properties в TokenData

Last updated