NEAR Exemple : jeton non fongible (NFT)



Ouvrir dansGitlabParcourir surGitHubimage/svg+xml

Ouvrir dans Gitpod

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

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

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

La source de ce contrat est en nft/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.

./build.sh

Nous avons des tests qui peuvent être exécutés. Ce qui suit exécutera simplement nos tests simples pour vérifier que notre code de contrat fonctionne.

cargo test -- --nocapture

Les tests de simulation les 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 --helperUrl https://near-contract-helper.onrender.com

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 sur 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 :

echo $CONTRACT_NAME

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.

near login

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):

ID=MY_ACCOUNT_NAME

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 :

echo $ID

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 10

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 --deposit 0.000000000000000000000001

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 se trouve dans le 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

Le largage APENFT (NFT) d’août aux détenteurs de jetons TRON s’est terminé | par APENFT

CONTINUER → UNELe largage APENFT (NFT) d’août aux détenteurs de jetons de la famille TRON (BTC, ETH, TUSD, TRX, BTT et JST) et aux participants à l’exploitation minière TRON DeFi est terminé. Toutes les adresses qualifiées sur la blockchain TRON, gelées ou non, peuvent recevoir des APENFT (NFT) larguées par avion au prorata de leurs […]

Learn More

Meilleure agence de promotion NFT | Promoteur NFT

CONTINUER → N’engageriez-vous pas l’agence qui a promu les plus grands projets NFT sur Internet ? Club nautique Bored Ape, Mutant Ape Yacht Club, Les crypto-punks, Foncier décentralisé et plus…? Nous sommes les premiers promoteurs NFT que vous auriez dû contacter et les derniers dont vous aurez besoin. Notre stratégie de promotion NFT & Crypto commence […]

Learn More

Qu’est-ce qu’un non fungible token (NFT) ou token non fongible ?

CONTINUER → Le potentiel de la blockchain dépasse le simple cadre des cryptomonnaies. Celle-ci peut permettre le stockage de documents tels que des diplômes, l’identité numérique, des informations concernant un bien immobilier et tant d’autres possibilités. Afin de faciliter l’ensemble des applications citées précédemment, le recours aux jetons non fongibles est indispensable. Qu’est-ce que la […]

Learn More