NFTs
Un Iroha NFT est un objet de registre unique avec un propriétaire. Utilisez NFTs lorsqu'un enregistrement a besoin de sa propre identité, de métadonnées, d'événements du cycle de vie et de la sémantique de transfert de propriété, mais n'a pas besoin d'un équilibre numérique.
Contrairement à un actif numérique , un NFT n'a pas de précision, de mintabilité ou de quantités par compte. Le NFT existe comme un seul objet enregistré et la propriété est suivie directement sur cet objet.
La structure
Un Nft enregistré contient:
id: uneNftIdcontent: métadonnées qui décrivent le NFTowned_by: le compte qui détient le NFT
Le champ content est une carte Metadata. Gardez-le compact: stockez les champs descriptifs, les références stables, les hachages, les chemins URIs ou SoraFS là-bas. Stoquez les grands documents, médias ou l'état de l'application à haute fréquence hors chaîne et gardez uniquement une référence vérifiable sur le NFT.
Essayez le sur Taira
Vérifiez que le réseau de test public Taira possède actuellement des enregistrements NFT:
curl -fsS 'https://taira.sora.org/v1/nfts?limit=5' \
| jq '{total, nft_ids: [.items[].id]}'Vérifiez le document OpenAPI en direct pour les itinéraires NFT exposés par le nœud:
curl -fsS https://taira.sora.org/openapi.json \
| jq -r '.paths | keys[] | select(startswith("/v1/nfts") or startswith("/v1/explorer/nfts"))'Un tableau items vide est une réponse valide sur un réseau de test public. Cela signifie qu'il n'y a pas de NFTs dans la page en cours, pas que les instructions NFT ne soient pas disponibles.
NFT IDs
NftId utilise le formulaire suivant:
name$domain
name$domain.dataspacePar exemple, badge$docs.universal désigne les badge NFT dans le docs.universal Si l'espace de données est omis, l'analyseur actuel utilise le universal l'espace de données, donc badge$docs décide de badge$docs.universal.
Utilisez des noms stables pour NFT IDs. L'identité d'objet utilisée par les instructions, les requêtes, les autorisations, les filtres d'événements et les références d'application est le ID.
Cycle de vie
NFT utilisation des opérations du cycle de vie Iroha Instructions particulières:
Registercrée le NFT avec l'originalcontent.Unregisterélimine le NFT.- Les modifications de
Transferàowned_by. - La mise à jour des métadonnées
SetKeyValueetRemoveKeyValueNFT
Essayez de le faire localement
Ces exemples supposent que vous avez lancé un réseau local et que la configuration du client a été générée à partir du guide CLI :
export IROHA_CONFIG=./localnet/client.toml
export NFT_DOMAIN=wonderland.universal
export NFT_ID='badge_intro$wonderland.universal'Le localnet généré définit déjà wonderland.universal et son bail SNS. Pour utiliser un domaine différent, créez-le d'abord avec le flux de travail déclaratif app alias setup plan et app alias setup apply décrit dans Domains.
Enregistrer un NFT. L'enregistrement lit le contenu initial JSON à partir de l'entrée standard:
printf '{"kind":"badge","level":"intro","issuer":"docs"}\n' |
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft register --id "$NFT_ID"Inspecter directement le NFT puis répertorier tous les NFTs avec des entrées complètes:
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft get --id "$NFT_ID"
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft list all --verboseAjoutez une clé de métadonnées et lisez à nouveau le 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"Supprimer la clé de métadonnées:
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft meta remove --id "$NFT_ID" --key traitsTransfert optionnellement le NFT. Utilisez ledger nft get pour lire le propriétaire actuel de owned_by, et utilisez ledger account list all pour trouver un compte de destination 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"Retirez l'exemple NFT après le passage. Si vous l'avez transféré, transférez-le de nouveau ou soumettez la commande non enregistrée avec la configuration du compte actuel du propriétaire.
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft unregister --id "$NFT_ID"Des questions et des événements
Utilisez FindNfts pour répertorier NFTs et FindNftsByAccountId pour répertorian NFTs détenus par un compte.
NFT Les mises à jour de l'enregistrement, de la suppression, du transfert et des métadonnées émettent NFT les événements de données. Nft Filtre d'événements de données lors de l'abonnement à des modifications du registre ou à des déclencheurs de construction qui réagissent NFT événements du cycle de vie.
Autorisations
La surface d'autorisation par défaut comprend les jetons spécifiques à NFT:
CanRegisterNftCanUnregisterNftCanTransferNftCanModifyNftMetadata
Les contrôles d'autorisation sont exécutés par le validateur de temps d'exécution actif, afin qu'un réseau puisse personnaliser l'autonomisation en mettant à jour l'exécuteur. Voir Permission Tokens pour la liste actuelle des jetons par défaut.
Le choix de NFTs
Utiliser un NFT pour les enregistrements où l'unicité et la propriété sont importantes:
- certificats, badges, licences et attestations
- enregistrements d'adhésion ou d'accès
- enregistrements des demandes liés à l'identité ou détenus par le compte
- des références à des médias, documents ou manifestes hors chaîne
Utilisez un actif numérique pour les soldes fungibles, et utilisez des métadonnées simples lorsque les données ne sont qu'un attribut compact d'un objet de registre existant.
Voir aussi: