quasi-exemples/NFT : exemples de mise en œuvre de jetons pour représenter des actifs uniques, tels que des objets de collection ou des actes, à l’aide de la spécification NEP-171 (similaire à ERC-721)

Ouvrir dans Gitpod

Ce référentiel comprend un exemple de mise en œuvre d’un jeton non fongible contrat qui utilise des normes quasi contractuelles et des tests de simulation.

Si vous utilisez Gitpod, vous pouvez ignorer cette étape.

  • Assurez-vous que Rust est installé selon les conditions préalables dans near-sdk-rs.
  • Assurez-vous que near-cli est installé.

La source de ce contrat est en nft/src/lib.rs. Il fournit des méthodes pour gérer l’accès aux jetons, transférer les jetons, vérifier l’accès et obtenir le propriétaire du jeton. Notez qu’une exploration plus approfondie à l’intérieur des macros de rouille est nécessaire pour voir comment le NonFungibleToken contrat est mis en œuvre.

Exécutez ce qui suit, et nous construirons notre projet de rouille via cargo. Cela générera nos binaires WASM dans notre res/ annuaire. C’est le contrat intelligent que nous déploierons plus tard sur la blockchain NEAR.

Nous avons quelques tests que vous pouvez exécuter. Par exemple, ce qui suit exécutera nos tests simples pour vérifier que notre code de contrat fonctionne.

cargo test -- --nocapture

Les tests de simulation plus complexes ne sont pas exécutés avec cette commande, mais nous pouvons les trouver dans tests/sim.

Déploiement le plus rapide

Vous pouvez créer et déployer ce contrat intelligent sur un compte de développement. Comptes de développement sont des comptes générés automatiquement pour aider à développer et tester des contrats intelligents. S’il vous plaît voir le Déploiement standard section pour créer un compte plus personnalisé sur lequel déployer.

near dev-deploy --wasmFile res/non_fungible_token.wasm

Dans les coulisses, il s’agit de créer un compte et de déployer un contrat sur celui-ci. Sur la console, remarquez un message comme :

Déploiement terminé sur dev-1234567890123

Dans ce cas, le compte est dev-1234567890123. Un fichier a été créé contenant une paire de clés du compte, situé à neardev/dev-account. Pour faciliter les prochaines étapes, nous allons définir une variable d’environnement contenant cet identifiant de compte de développement et l’utiliser lors du copier/coller des commandes. Exécutez cette commande pour définir la variable d’environnement :

source neardev/dev-account.env

Vous pouvez savoir si la variable d’environnement est correctement définie si votre ligne de commande affiche le nom du compte après cette commande :

La commande suivante initialise le contrat en utilisant le new méthode:

near call $CONTRACT_NAME new_default_meta '{"owner_id": "'$CONTRACT_NAME'"}' --accountId $CONTRACT_NAME

Pour afficher les métadonnées NFT :

near view $CONTRACT_NAME nft_metadata

Déploiement standard

Ce contrat intelligent sera déployé sur votre compte NEAR. Pour cet exemple, veuillez créer un nouveau compte NEAR. Étant donné que NEAR permet de mettre à niveau les contrats sur le même compte, les fonctions d’initialisation doivent être effacées. Si vous souhaitez exécuter cet exemple sur un compte NEAR sur lequel des contrats antérieurs ont été déployés, veuillez utiliser le near-cli commander near delete, puis recréez-le dans Wallet. Pour créer (ou recréer) un compte, veuillez suivre les instructions dans Portefeuille de test ou (PROCHE Portefeuille si nous utilisons mainnet).

Dans la racine du projet, connectez-vous à votre compte nouvellement créé avec near-cli en suivant les instructions après cette commande.

Pour rendre ce tutoriel plus facile à copier/coller, nous allons définir une variable d’environnement pour notre identifiant de compte. Dans la commande ci-dessous, remplacez MY_ACCOUNT_NAME avec le nom de compte avec lequel nous venons de nous connecter, y compris le .testnet (ou .near pour mainnet):

Nous pouvons savoir si la variable d’environnement est correctement définie si notre ligne de commande affiche le nom du compte après cette commande :

Nous pouvons maintenant déployer le contrat compilé dans cet exemple sur votre compte :

near deploy --wasmFile res/non_fungible_token.wasm --accountId $ID

Le contrat NFT doit être initialisé avant utilisation. Plus d’informations sur les métadonnées sur nomicon.io. Mais pour l’instant, nous allons initialiser avec les métadonnées par défaut.

near call $ID new_default_meta '{"owner_id": "'$ID'"}' --accountId $ID

Nous pourrons voir nos métadonnées juste après :

near view $ID nft_metadata

Alors, frappons notre premier jeton. Cela créera un NFT basé sur Olympus Mons où il n’existe qu’une seule copie :

near call $ID nft_mint '{"token_id": "0", "receiver_id": "'$ID'", "token_metadata": { "title": "Olympus Mons", "description": "Tallest mountain in charted solar system", "media": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Olympus_Mons_alt.jpg/1024px-Olympus_Mons_alt.jpg", "copies": 1}}' --accountId $ID --deposit 0.1

Créons un compte sur lequel transférer notre jeton fraîchement créé. Ce compte sera un sous-compte du compte NEAR avec lequel nous nous sommes connectés à l’origine via near login.

near create-account alice.$ID --masterAccount $ID --initialBalance 10

Vérification du compte d’Alice pour les jetons :

near view $ID nft_tokens_for_owner '{"account_id": "'alice.$ID'"}'

Ensuite, nous transférerons le NFT sur le compte d’Alice. Il faut joindre exactement 1 yoctoNEAR de dépôt :

near call $ID nft_transfer '{"token_id": "0", "receiver_id": "alice.'$ID'", "memo": "transfer ownership"}' --accountId $ID --depositYocto 1

La vérification du compte d’Alice nous montre qu’elle a le jeton Olympus Mons.

  • La valeur d’équilibre maximale est limitée par U128 (2**128 – 1).
  • Les appels JSON doivent transmettre U128 en tant que chaîne de base 10. Par exemple « 100 ».
  • Cela n’inclut pas la fonctionnalité d’entiercement, car ft_transfer_call fournit une approche supérieure. Un système d’entiercement peut, bien sûr, être ajouté en tant que contrat distinct ou fonctionnalité supplémentaire au sein de ce contrat.

Actuellement, AssemblyScript n’est pas pris en charge pour cet exemple. Une ancienne version peut être trouvée dans l’exemple NEP4, mais cela n’est pas recommandé car il est obsolète et ne respecte pas les normes actuellement définies par le NEAR SDK.

Related articles

5 projets NFT à surveiller – Comparaison des projets NFT à venir de 2022

› NFT Quels sont les meilleurs projets NFT à venir cette année ? Explorons leurs caractéristiques et soulignons le potentiel d’investissement qu’elles peuvent avoir. Sponsorisé / 18 mars 2022 à 7h30 UTC / 5 minutes lire Couverture/illustration via CryptoSlate

Learn More

Comment transférer un NFT : guide étape par étape pour le faire correctement

Que vous ayez déjà sauté dans le train NFT ou que vous fassiez simplement des recherches avant de plonger votre orteil dans l’eau, l’une des choses les plus importantes que vous devrez savoir est comment transférer correctement un NFT (et en toute sécurité). Après tout, c’est le monde de la cryptographie, et il peut être […]

Learn More

Flippies NFT

Flippies est une collection de 10 000 jetons non fongibles (NFT) générés de manière unique qui visent à envahir la blockchain Solana.

Learn More

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.