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

Starname Technologies annonce une innovation importante dans l’espace blockchain NFT : le Creator’s Token

Paris (ots/PRNewswire) – IOV Sas, une société de blockchain basée en Europe, a annoncé aujourd’hui une innovation majeure pour l’industrie mondiale de la blockchain et de la propriété intellectuelle. Appelé le jeton du créateur, il devrait révolutionner le paysage des jetons non fongibles (NFT) en attribuant de manière irréfutable l’authenticité vérifiée du créateur d’un jeton […]

Learn More

Jeton non fongible | Alexandrie

Les jetons non fongibles (NFT) sont des crypto-monnaies qui ne possèdent pas la propriété de fongibilité. Traditionnellement, les crypto-monnaies comme Bitcoin sont fongibles, ce qui signifie que chaque unité de BTC est exactement la même qu’une autre unité de BTC et qu’elles peuvent être échangées les unes contre les autres sans autre considération. La fongibilité […]

Learn More

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

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 avoirs. Les […]

Learn More

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *