NFTs
Um Iroha NFT é um objeto de livro-razão único com um proprietário. Use NFTs quando um registro precisa de sua própria identidade, metadados, eventos do ciclo de vida e semântica de transferência de propriedade, mas não precisa de um equilíbrio numérico.
Ao contrário de um ativo numérico , um NFT não tem precisão, mintabilidade ou quantidades por conta. O NFT existe como um objeto registrado e a propriedade é rastreada diretamente nesse objeto.
Estrutura
Um Nft registado contém:
id: umNftIdcontent: metadados que descrevem o NFTowned_by: a conta que detém o NFT;
O campo content é um mapa Metadata. Mantenha-o compacto: armazenar campos descritivos, referências estáveis, hashes, caminhos URIs ou SoraFS lá. Armazenar documentos grandes, mídia ou estado de aplicação de alta frequência fora da cadeia e manter apenas uma referência verificável no NFT.
Tente em Taira
Verifique se a rede de teste pública Taira possui atualmente registos NFT:
curl -fsS 'https://taira.sora.org/v1/nfts?limit=5' \
| jq '{total, nft_ids: [.items[].id]}'Verifique o documento OpenAPI ao vivo para as rotas NFT expostas pelo nó:
curl -fsS https://taira.sora.org/openapi.json \
| jq -r '.paths | keys[] | select(startswith("/v1/nfts") or startswith("/v1/explorer/nfts"))'Uma matriz vazia items é uma resposta válida em uma rede de teste pública. Isso significa que não há nenhuma NFTs na página atual, não que as instruções NFT não estejam disponíveis.
NFT IDs
O NftId utiliza o seguinte formulário:
name$domain
name$domain.dataspacePor exemplo, badge$docs.universal identifica o badge NFT no domínio docs.universal. Se o espaço de dados for omitido, o analisador atual usa o espaço de data universal, por isso badge$docs resolve-se para badge$docs.universal.
Use nomes estáveis para NFT IDs. A identidade de objeto utilizada por instruções, consultas, permissões, filtros de eventos e referências de aplicativos é a ID.
Ciclo de vida
Utilização de operações do ciclo de vida NFT Iroha Instruções especiais:
- O
Registercria o NFT com inicialcontent. - O
Unregisterremove o NFT. Transferalteraçõesowned_by.- Metadados
SetKeyValueeRemoveKeyValueatualização NFT.
Tente localmente
Estes exemplos assumem que você lançou uma rede local e tem a configuração do cliente gerada a partir do guia CLI :
export IROHA_CONFIG=./localnet/client.toml
export NFT_DOMAIN=wonderland.universal
export NFT_ID='badge_intro$wonderland.universal'A rede local gerada já se configura wonderland.universal e do seu SNS Para usar um domínio diferente, criá-lo primeiro com o declarativo app alias setup plan e app alias setup apply fluxo de trabalho descrito em Domínios.
Registre um NFT. O registo lê o conteúdo inicial JSON a partir da entrada padrão:
printf '{"kind":"badge","level":"intro","issuer":"docs"}\n' |
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft register --id "$NFT_ID"Inspectar diretamente o NFT e, em seguida, listar todos os NFTs com entradas completas:
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft get --id "$NFT_ID"
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft list all --verboseAdicionar uma chave de metadados e ler a NFT novamente:
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"Retire a chave de metadados:
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft meta remove --id "$NFT_ID" --key traitsTransferir opcionalmente o NFT. Utilize o ledger nft get para ler o proprietário atual do owned_by e use o ledger account list all para encontrar uma conta de destino 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"Remova o exemplo NFT após a passagem. Se você o transferir, transfira-o de volta ou envie o comando de não registrar com a configuração da conta do proprietário atual.
cargo run --bin iroha -- --config "$IROHA_CONFIG" \
ledger nft unregister --id "$NFT_ID"Perguntas e Eventos
Use FindNfts para listar NFTs e FindNftsByAccountId para listar a NFTs de propriedade de uma conta.
As atualizações de registro, exclusão, transferência e metadados NFT emitem eventos de dados NFT. Use o filtro de eventos de dados de Nft ao se inscrever em alterações no livro-razão ou criar gatilhos que reagem a eventos do ciclo de vida NFT.
Permissões
A superfície de permissão padrão inclui tokens específicos do NFT:
CanRegisterNftCanUnregisterNftCanTransferNftCanModifyNftMetadata
Os controles de permissão são executados pelo validador ativo do tempo de execução, para que uma rede possa personalizar a autorização atualizando o executor. Veja Permission Tokens para a lista atual de tokens padrão.
A escolha NFTs
Usar um NFT para registos em que a singularidade e a propriedade sejam importantes:
- Certificados, crachetes, licenças e atestados
- registos de adesão ou acesso
- Registros de inscrições vinculados à identidade ou em conta
- Referências a mídias, documentos ou manifestos fora da cadeia
Use um ativo numérico para saldos fungíveis, e use metadados simples quando os dados são apenas um atributo compacto de um objeto do livro-razão existente.
Veja também: