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

Investissement en diamant d’actif dur à jeton non fongible | Marché NFT

CONTINUER → Jacques est l’inventeur des places de marché de diamants en ligne. Il est le fondateur et ancien président de Polygon, l’une des initiatives les plus perturbatrices pour frapper l’industrie du diamant au cours des cinquante dernières années. Polygon – pour la première fois – a permis aux diamants d’être commercialisés à l’échelle mondiale […]

Learn More

Prix ​​NFT ROYAL TOKEN aujourd’hui, NRT en USD en direct, capitalisation boursière et graphique

CONTINUER → « Échange de jetons avec un crypto-actif de dernière technologie. Achetez ou vendez le produit ou le service dont vous avez besoin et obtenez des récompenses et des avantages incroyables. NFT-Royal Token a différentes options pour vous. Jalonnement La patience est une vertu ; utilisez-le pour multiplier votre argent et grâce au staking bénéficiez […]

Learn More

Enchères Curse NFT – Action maudite

CONTINUER → Les Malédiction NFT l’enchère aura lieu sur cette page. Bien que n’importe qui puisse faire une offre pendant la vente aux enchères, seules les offres faites par les détenteurs de billets seront prises en compte (le billet doit être dans le même portefeuille ETH qui fait l’offre). Nous confirmerons l’offre la plus élevée […]

Learn More