NFTs
Iroha NFT - это уникальный объект бухгалтерского учета с одним владельцем. Используйте NFTs, когда запись нуждается в собственной идентичности, метаданных, событиях жизненного цикла и семантике передачи владения, но не требует цифрового баланса.
В отличие от цифр активы, в) NFT не имеет точности, возможности изготовления или количеств на счет. NFT существует как один зарегистрированный объект, и собственность отслеживается непосредственно на этом объекте.
Структура
Регистрированный Nft содержит:
id:NftIdcontent: метаданные, описывающие NFTowned_by: счет, на который принадлежит NFT
Поле content представляет собой карту Metadata. Сохраняйте ее компактной: храните там описательные поля, стабильные ссылки, хэши, пути URIs или SoraFS. Храните большие документы, средства массовой информации или высокопропускные приложения вне цепочки и храните только проверяемые ссылки на NFT.
Попробуй на Taira
Проверьте, есть ли в общественной Taira тестовой сети в настоящее время записи NFT:
curl -fsS 'https://taira.sora.org/v1/nfts?limit=5' \
| jq '{total, nft_ids: [.items[].id]}'Проверьте документ OpenAPI в режиме прямого действия для маршрутов NFT, выявленных узлом:
curl -fsS https://taira.sora.org/openapi.json \
| jq -r '.paths | keys[] | select(startswith("/v1/nfts") or startswith("/v1/explorer/nfts"))'Пустой массив items является действительным ответом на публичной тестовой сети. Это означает, что на текущей странице нет NFTs, а не то, что инструкции по NFT недоступны.
NFT IDs
NftId использует следующую форму текста:
name$domain
name$domain.dataspaceНапример, badge$docs.universal идентифицирует badge NFT в домене docs.universal. Если пространство данных выпущено, текущий анализатор использует пространство данных universal, поэтому badge$docs решается на badge$docs.universal.
Используйте стабильные имена для NFT IDs. В настоящее время ID является идентификацией объекта, используемой инструкциями, запросами, разрешениями, фильтрами событий и ссылками на приложение.
жизненный цикл
NFT эксплуатация жизненного цикла использование Iroha Специальные инструкции:
Registerсоздает NFT с начальнымcontent.Unregisterудаляет NFT.Transferизменения вowned_by.SetKeyValueиRemoveKeyValueобновление метаданных NFT.
Попробуйте на местном уровне
Эти примеры предполагают, что вы запустили локальную сеть и получаете конфигурацию клиента из руководства CLI:
export IROHA_CONFIG=./localnet/client.toml
export NFT_DOMAIN=wonderland.universal
export NFT_ID='badge_intro$wonderland.universal'Выработанная локальная сеть уже устанавливает wonderland.universal и ее SNS арендный договор. Для использования другого домена сначала создавайте его с помощью декларативного app alias setup plan и app alias setup apply потока работы, описанного в Доменах.
Зарегистрировать NFT.Зарегистрация читает начальное содержание JSON из стандартного ввода:
printf '{"kind":"badge","level":"intro","issuer":"docs"}\n' |
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft register --id "$NFT_ID"Проверьте NFT непосредственно, а затем перечислите все NFTs с полными записями:
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft get --id "$NFT_ID"
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft list all --verboseДобавьте ключ метаданных и прочтите NFT снова:
printf '{"color":"blue","rarity":"tutorial"}\n' |
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft meta set --id "$NFT_ID" --key traits
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft get --id "$NFT_ID"Удалить ключ метаданных:
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft meta remove --id "$NFT_ID" --key traitsНеобходимо перенести NFT. Используйте ledger nft get для прочтения текущего владельца из owned_by, а используйте ledger account list all для поиска учетной записи назначения ID.
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger account list all
export CURRENT_OWNER='<account-id-from-owned_by>'
export NEW_OWNER='<destination-account-id>'
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft transfer --id "$NFT_ID" --from "$CURRENT_OWNER" --to "$NEW_OWNER"Убрать пример NFT после прохождения. Если вы его перенесли, либо передайте обратно, либо представьте команду не регистрируйте с конфигурацией аккаунта текущего владельца.
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft unregister --id "$NFT_ID"Вопросы и события
Используйте FindNfts, чтобы перечислить NFTs и FindNftsByAccountId для перечисления NFTs в собственности счета.
Регистрация, удаление, передача и обновление метаданных NFT излучают события данных NFT. Используйте фильтр событий данных Nft при подписке на изменения в регистре или создании триггеров, которые реагируют на события жизненного цикла NFT.
Разрешения
Поверхность разрешений по умолчанию включает в себя токены, специфические для NFT:
CanRegisterNftCanUnregisterNftCanTransferNftCanModifyNftMetadata
Проверка разрешений выполняется активным проверщиком запуска, поэтому сеть может настраивать авторизацию путем обновления исполнителя. Токены разрешения для текущего списка дефолтных токенов.
Выбор NFTs
Используйте NFT для записей, в которых имеет значение уникальность и владение:
- сертификаты, значки, лицензии и удостоверения
- запись о членстве или доступе
- записи заявлений, связанных с идентичностью или имеющиеся на учете
- ссылки на СМИ, документы или манифесты вне цепи;
Используйте числовые активы для функциональных балансов и используйте простые метаданные, когда данные являются только компактным атрибутом существующего объекта учетной записи.
См. также: