Jetons natifs(NFT) | Partie 2

(1) Premiers pas avec les jetons natifs

Conditions préalables

Cette section est destinée aux utilisateurs avancés qui maîtrisent l’interface des commandes (CLI) Cardano-node .

Cette section décrit comment :

  • créer de nouvelles devises et actifs ;
  • soumettre et envoyer des transactions contenant des jetons multi-actifs ;
  • envoyer et recevoir des lots de jetons ;
  • gérer vos adresses et vos valeurs.

Remarque : Les utilisateurs qui n’ont pas besoin de créer de nouveaux actifs (« détenteurs de jetons ») pourront envoyer et recevoir des jetons multi-actifs existants à l’aide d’un portefeuille tel que Daedalus ou Yoroi, et sans avoir à utiliser de commandes CLI.

Pour commencer, assurez-vous que vous êtes familiarisé avec la configuration et l’utilisation du nœud Cardano. Vous pouvez également consulter les instructions sur la façon de démarrer votre nœud pour soumettre les commandes. Vous n’aurez pas besoin de configurer et de démarrer un nœud de production de blocs complet (“pool de participation”), juste un nœud de relais beaucoup plus simple. Ce nœud devra se connecter à un réseau Cardano capable de traiter les jetons natifs (par exemple, l’environnement de préproduction de jetons natif (PPE) ou le réseau principal Cardano une fois qu’il a été mis à niveau).

Configuration de cardano-node pour s’exécuter à l’aide de cardano-cli

Ce document décrit comment interagir avec le nœud à partir d’une ligne de commande bash, mais il est également possible de télécharger et d’exécuter le nœud en tant qu’image docker , ce qui impliquera moins de configuration système. L’image docker est input-output/cardano-node - veuillez vous assurer que vous disposez de la dernière version du nœud.

Pour configurer cardno-node afin qu’il communique avec l’environnement public de testnet, créez et installez d’abord le nœud comme décrit dans GitHub - input-output-hk/cardano-node: The core component that is used to participate in a Cardano decentralised blockchain., puis configurez sa configuration :

mkdir - p testnet / config réseau de test cd # téléchargez et enregistrez les fichiers de configuration dans le sous-répertoire config

Vous pouvez ensuite utiliser la commande suivante à partir du mary-ppe répertoire pour démarrer le nœud de relais. Notez que vous n’avez pas besoin de configurer et d’exécuter le nœud en tant que “stake pool” (nœud producteur de blocs) :

exporter CARDANO_NODE_SOCKET_PATH = socket cardano - node run – topology config / topology . json – chemin de la base de données db – config config / config . json – port 3001 – socket - chemin “$CARDANO_NODE_SOCKET_PATH”

Utilisation de la CLI Cardano

Une fois qu’un nœud relais a été configuré, la cardano-cli commande peut être utilisée pour interagir avec le réseau comme d’habitude :

réseau de test cd cardan - cli …

Comprendre les valeurs

cardano-node version 1.32.1 et ultérieure de la cli ne prend plus en charge les noms de jeton ASCII, seul le format encodé hexadécimal est pris en charge. Le résultat de la course

$ echo - n “assetName” | xxd - ps

Les valeurs de Lovelace peuvent être spécifiées de deux manières :

  • ${quantity} lovelace (où quantité est un entier signé)
  • ${quantity} (où quantité est un entier signé)
  • ${assetName} (où assetName est codé en hexadécimal 61737365744e616d65)

Les valeurs des autres actifs peuvent être spécifiées comme suit :

  • ${quantity} ${policyId}.${assetName}
  • ${quantity} ${policyId}

quantity est un entier signé et policyIdest un ID de politique encodé en hexadécimal [un hachage de script] ), et assetName est un assetName encodé en hexadécimal.

Syntaxe des valeurs multi-actifs

Le cardano-clipeut spécifier des valeurs multi-actifs dans les sorties de transaction et lors de la frappe ou de la gravure de jetons. La syntaxe de ces valeurs a été conçue pour être rétrocompatible avec la précédente syntaxe ada uniquement (address+lovelace) :

  • les valeurs ada sont définies comme un entier (INT) lovelace, par exemple42 lovelace
  • les valeurs multi-actifs peuvent être définies comme :

INT policyid.assetName, par exemple 42 $MYPOLICY.61737365744e616d65

INT policyid, par exemple 42 $MYPOLICY(Aucun assetName spécifié)

policyid.assetName, par exemple $MYPOLICY.61737365744e616d65(Cela ne frappera qu’un seul des assetName)

  • Plusieurs actifs peuvent être combinés dans la même valeur multi-actifs à l’aide de l’ +opérateur, par exemple :

100 lovelace + 42 $MYPOLICY.666f6f + -2 $MYPOLICY.626172 + 10 lovelace

Nier les valeurs individuelles

Toute valeur individuelle peut être annulée à l’aide de l’ -opérateur de préfixe. Par exemple:

  • -42 $MYPOLICY
  • -72191 $MYPOLICY.666f6f
  • -100
  • -920 lovelace

Combiner des valeurs individuelles

Les valeurs peuvent être combinées à l’aide de l’opérateur binaire +. Par exemple:

  • 42 lovelace + -1 (this would result in a Value of 41 lovelace)
  • 20 $MYPOLICY + 12 $MYPOLICY.666f6f + -2 $MYPOLICY.626172
  • 201 4$MYPOLICY.666f6f + 12 + -1 + 9 lovelace + 10 $MYPOLICY

Création d’une transaction

La syntaxe des jetons natifs peut être utilisée dans les contextes suivants :

  • cardano-cli transaction build-raw --tx-out="..."
  • cardano-cli transaction build-raw --mint="..."

La commande CLI cardano-cli transaction build-raw crée le corps de la transaction. L’ --tx- outoption spécifie la sortie de la transaction de la manière habituelle (elle est exprimée sous la forme address+lovelace, où address est une adresse encodée Bech32, et lovelace est le montant en lovelace) , et l’ --mint option spécifie la valeur à frapper ou à brûler.

Sorties de transactions (TxOuts)

La syntaxe des valeurs TxOut a été étendue pour inclure les jetons multi-actifs. Ces valeurs peuvent être spécifiées de deux manières différentes :

  • $address $value
  • ${address}+${value}

(où l’adresse est une adresse Cardano et la valeur est une valeur). Le deuxième formulaire est fourni pour la rétrocompatibilité avec les versions antérieures du nœud.

Pour recevoir des jetons, il vous suffit de spécifier une adresse. Il n’est pas nécessaire d’utiliser des adresses spéciales pour contenir des jetons multi-actifs.

Pour inspecter les valeurs d’une adresse, vous devez afficher une valeur UTXO en utilisant :

cardano - cli query utxo - testnet - magic 1

Cela affichera le contenu de tous les lots de jetons que vous possédez. Vous pouvez choisir de voir une adresse spécifique en utilisant l’ --address $ADDRESS option :

cardano - cli query utxo – adresse “$ADDRESS” – testnet - magic 1

Politiques de frappe de jetons

Les politiques de frappe de jetons sont écrites à l’aide de scripts multi-signatures. Cela permet au contrôleur d’actifs d’exprimer des conditions telles que la nécessité pour des émetteurs de jetons spécifiques d’accepter de créer de nouveaux jetons ou d’interdire la création de jetons après un certain créneau (si le verouillage des jetons est également utilisé).

Voici un exemple de politique de frappe très simple, qui accorde le droit de frapper des jetons à une seule clé :

{ “keyHash” : “fe38d7…599” , “type” : “sig” }

Cette politique de frappe exige que toute transaction qui frappe des jetons soit attestée par la clé avec le hachage fe38d7...599. Des exemples plus complexes peuvent être trouvés dans la documentation des scripts simples multi-signatures.

Exemple : création d’un nouveau jeton natif

Aperçu

Cette section décrit comment créer manuellement un nouveau jeton natif (“melcoin”) à l’aide de cardano-cli, et envoyer une transaction de ce nouveau jeton à une nouvelle adresse.

Conditions préalables

. / cardano - node run – topologie . / lpconfig / testnet - topology . json – chemin de la base de données . / état - lp – port 3001 --config . _ / lpconfig / testnet - config . json – socket -path ~ / cardano - lp . _ prise exporter CARDANO_NODE_SOCKET_PATH = ~ / cardano - lp . prise

  • Générez une clé de vérification et une clé de signature :

cardano - clé d’adresse cli - gen \ – vérification - clé - fichier pay . vkey \ – signature - clé - fichier pay . clé

  • Le code devrait afficher quelque chose de similaire à ceci :

$ chat paye . clé { “type” : “PaymentSigningKeyShelley_ed25519” , “description” : “Clé de signature de paiement” , “cborHex” : “5820aed07e0b1ddd946da278ffb1f671cc5b24c8453e6b47c24b0a6b15d818444fe8” } $ chat paye . vkey { “type” : “PaymentVerificationKeyShelley_ed25519” , “description” : “Clé de vérification de paiement” , “cborHex” : “582031752dd50ffe7ed90ba136ea775dacd5113ff67d13001a25aac953f719aa1f92” }

  • Générez l’adresse de paiement :

. / cardano - construction d’adresse cli \ – paiement - vérification - fichier clé pay . vkey \ – hors fichier payer . adresse \ – testnet - magie 1

Ce code produit l’adresse de paiement suivante :

$ chat paye . adresse addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz

  • Vérifiez le solde de l’adresse de paiement :

. / cardano - cli query utxo – adresse addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz – testnet - magic 1

La réponse ne doit indiquer aucun fonds :

Montant TxHash TxIx – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

  • Exportez les paramètres de protocole dans un fichier pour une utilisation ultérieure :

cardano - protocole de requête cli - paramètres \ – testnet - magie 1 \ – protocole de sortie de fichier . json

Démarrer le processus de frappe

  • Créez une règle :

politique mkdir cardano - clé d’adresse cli - gen \ – vérification - fichier clé - politique / politique . vkey \ – politique de fichier de clé de signature / politique . clé touchez politique / politique . script && echo “” > politique / politique . scénario echo “{” >> politique / politique . scénario echo " "keyHash": "$(./cardano-cli address key-hash --payment-verification-key-file policy/policy.vkey)"," >> policy / policy . scénario echo " "type": "sig"" >> politique / politique . scénario echo “}” >> politique / politique . scénario chat . / politique / politique . scénario { “keyHash” : “5805823e303fb28231a736a3eb4420261bb42019dc3605dd83cccd04” , “type” : “sig” }

  • Frappez le nouvel actif :

$ . / cardano - cli transaction policyid – script - file . / politique / politique . scénario 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b

Construire la transaction brute

  • Utilisez ce code pour créer la transaction brute :

$ echo -n " melcoin" | xxd - ps 6d656c636f696e . / cardano - construction de transaction cli - brut \ – frais 0 \ – tx - in b1ddb0347fed2aecc7f00caabaaf2634f8e2d17541f6237bbed78e2092e1c414# 0 \ – tx - out addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz + 1000000000 + “1000000000 328a60495759e0d8e244eca5b85b2467d142c8a 755d6cd0592dff47b.6d656c636f696e” \ – menthe = “1000000000 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.6d656c636f696e” \ – out - file matx . brut

Calculer les frais minimaux

  • Utilisez ce code pour calculer les frais minimum requis pour la transaction :

. / cardano - transaction cli calculer - min - frais \ – tx - body - file matx . brut \ – tx - in - count 1 \ – tx - sortie - compte 1 \ – témoin - comptez 2 \ – testnet - magie 1 \ –protocole - params - fichier protocole . json 180109 Lovelace

Recréez la transaction

La transaction inclura désormais les frais :

. / cardano - construction de transaction cli - brut \ – frais 180109 \ – tx - in b1ddb0347fed2aecc7f00caabaaf2634f8e2d17541f6237bbed78e2092e1c414# 0 \ – tx - out addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz + 999819891 + “1000000000 328a60495759e0d8e244eca5b85b2467d142c8a7 55d6cd0592dff47b.6d656c636f696e” \ – menthe = “1000000000 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.6d656c636f696e” \ – out - file matx . brut

Signez la transaction :

. / cardano - signe de transaction cli \ – signature - clé - fichier pay . clé \ – politique de fichier de clé de signature / politique . clé \ – fichier de script policy / policy . script \ – testnet - magie 1 \ – tx - body - file matx . brut \ – out - file matx . signé

Soumettez la transaction :

. / cardano - cli transaction submit – tx - file matx . signé – testnet - magie 1

Pas de réponse, ce qui est le résultat attendu. Vérifiez l’Utxo pour

addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz

. / cardano - cli query utxo – adresse addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz – testnet - magic 1 Montant TxHash TxIx – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – fd0790f3984348f65ee22f35480b873b4eb9862065514f3e3a9c0f04d0a6ad63 0 999821915 lovelace + 1000000000 328a60495759e0d8e244eca5b85b2467d1 42c8a755d6cd0592dff47b . 6d656c636f696e

Envoyer le nouvel élément natif à une autre adresse

  • Générez une adresse de destinataire :

Tout d’abord, nous devons générer une adresse à laquelle envoyer l’actif nouvellement créé.

destinataire mkdir

  • Générez la paire de clés :

cardano - clé d’adresse cli - gen \ – fichier de clé de vérification destinataire / destinatairepay . vkey \ – fichier de clé de signature destinataire / destinatairepay . clé

  • Dérivez l’adresse de paiement :

. / cardano - construction d’adresse cli \ – paiement - vérification - fichier clé destinataire / destinatairepay . vkey \ – hors fichier destinataire / recipientpay . adresse \ – testnet - magie 1 $cat destinataire / destinatairepay . adresse addr_test1vp8s8zu6mr73nvlsjf935k0a38n8xvp3fptkyz2vl8pserqkcx5yz

  • Envoyez 1 melcoin à l’adresse du destinataire :

. / cardano - construction de transaction cli - brut \ – frais 0 \ – tx - in fd0790f3984348f65ee22f35480b873b4eb9862065514f3e3a9c0f04d0a6ad63# 0 \ – tx - out addr_test1vp8s8zu6mr73nvlsjf935k0a38n8xvp3fptkyz2vl8pserqkcx5yz + 10000000 + “1 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592 dff47b.6d656c636f696e” \ – tx - out addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz + 999821915 + “999000000 328a60495759e0d8e244eca5b85b2467d142c8a75 5d6cd0592dff47b.6d656c636f696e” \ –out - fichier rec_matx . brut

  • Calculez les frais minimaux.

Utilisez ce code pour calculer les frais minimums pour la transaction :

. / cardano - transaction cli calculer - min - frais \ –tx - body - file rec_matx . brut \ – tx - in - count 1 \ – tx - sortie - compte 2 \ – témoin - compte 1 \ – testnet - magie 1 \ –protocole - params - fichier protocole . json 178393 Lovelace . / cardano - construction de transaction cli - brut \ – frais 178393 \ – tx - in fd0790f3984348f65ee22f35480b873b4eb9862065514f3e3a9c0f04d0a6ad63# 0 \ – tx - out addr_test1vp8s8zu6mr73nvlsjf935k0a38n8xvp3fptkyz2vl8pserqkcx5yz + 10000000 + “1 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592 dff47b.6d656c636f696e” \ – tx - out addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz + 989643522 + “999999999 328a60495759e0d8e244eca5b85b2467d142c8a75 5d6cd0592dff47b.6d656c636f696e” \ –out - fichier rec_matx . brut

Signer la transaction

Signez la transaction à l’aide des clés générées précédemment :

. / cardano - signe de transaction cli \ – signature - clé - fichier pay . clé \ – testnet - magie 1 \ –tx - body - file rec_matx . brut \ –out - fichier rec_matx . signé

Soumettre la transaction

Soumettez la transaction à la chaîne :

. / cardano - cli transaction submit – tx - file rec_matx . signé – testnet - magie 1

Notez que nous devons envoyer plus de 1000000 Lovelace dans la transaction. Cette valeur minimale est spécifiée dans le fichier de configuration :

$ cat lpconfig / launchpad - shelley - genesis . json | grep minUTxOValue “minUTxOValue” : 1000000 ,

Vérifiez l’UTXO pour l’adresse addr_test1vp8s8zu6mr73nvlsjf935k0a38n8xvp3fptkyz2vl8pserqkcx5yz :

. / cardano - cli query utxo – adresse addr_test1vp8s8zu6mr73nvlsjf935k0a38n8xvp3fptkyz2vl8pserqkcx5yz – testnet - magic 1 Montant TxHash TxIx – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – f90b8457a2cf6a1aba9c0001ae2c7084f653083c6108826115a0a64e862333a3 0 10000000 lovelace + 1 328a60495759e0d8e244eca5b85b2467d142c8a755d6c d0592dff47b . 6d656c636f696e

L’adresse du destinataire que nous avons créée a maintenant 10000000 Lovelace et 1 melcoin.

Vérifiez l’UTXO pour l’adresse addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz :

. / cardano - cli query utxo – adresse addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz – testnet - magic 1 Montant TxHash TxIx – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – f90b8457a2cf6a1aba9c0001ae2c7084f653083c6108826115a0a64e862333a3 1 989643522 lovelace + 999999999 328a60495759e0d8e244eca5b85b2467d142 c8a755d6cd0592dff47b . 6d656c636f696e

L’adresse de l’expéditeur a maintenant 989643522 Lovelace et 999999999 melcoin.

Soumettre une transaction

Avant de soumettre la transaction au réseau, elle doit être signée. Nous avons besoin de témoins de deux clés - un pour dépenser l’entrée $UTXO et un pour satisfaire le script de politique de frappe :

SPENDING_KEY = … MINTING_KEY = … TX_BODY_FILE = … TX_FILE = … cardano - signe de transaction cli \ – signature - clé - fichier “$SPENDING_KEY” \ – signature - clé - fichier “$MINTING_KEY” \ –script - fichier "$SCRIPT " \ – testnet - magie 1 \ – tx - corps - fichier “$TX_BODY_FILE” \ – sortie - fichier “$TX_FILE”

Ici, $SPENDING_KEY est la clé qui permet de dépenser à partir de $UTXO, et $MINTING_KEY est la clé qui hache la valeur spécifiée dans le $SCRIPT.

Pour soumettre une transaction au réseau, utilisez la commande suivante :

cardano - soumission de transaction cli – tx - fichier “$ TX_FILE” – testnet - magie 1

Les jetons nouvellement créés apparaîtront dans l’UTXO et pourront être vérifiés par :

cardano - cli query utxo - testnet - magic 1

La sortie correspondante montre les différents types d’actifs qui sont intégrés dans l’UTXO :

Montant TxHash TxIx – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – - 377eab … ad7 0 500000000 lovelace + 5 1cc8a9 … a25 . couttscoin 377eab … ad7 1 500000000 lovelace

Une fois les jetons frappés, ils peuvent être communiqués à l’aide de transactions ordinaires, sans utiliser le --mint champ. Notez que pour être valide, une transaction doit être équilibrée et vous devez également avoir une valeur minimale de lovelace dans chaque sortie de transaction.

Transfert de jetons

Les jetons peuvent être envoyés comme ada par n’importe quel détenteur de jeton. Il y a une mise en garde : chaque sortie de transaction doit contenir de l’ada. En effet, il existe une valeur minimale d’ada nécessaire par sortie de transaction. Cette valeur est donnée par un paramètre de protocole. En particulier, il n’est pas possible d’envoyer uniquement des jetons multi-actifs dans une transaction, car certains ada doivent toujours être inclus dans chaque sortie.

Par exemple, certains couttscoin jetons peuvent être envoyés à l’aide des commandes suivantes :

TXID = $ ( cardano - transaction cli txid – tx - corps - fichier “$TX_BODY_FILE” ) TX_BODY_FILE_1 = … TX_FILE_1 = … cardano - construction de transaction cli - brut \ – frais 0 \ – tx - dans “$TXID” # 0 \ – tx - out = “$ADDR+$LOVELACE+5 $POLICYID.636f75747473636f696e” \ – sortie - fichier “$TX_BODY_FILE_1” cardano - signe de transaction cli \ – signature - clé - fichier “$SPENDING_KEY” \ – testnet - magie 1097911063 \ – tx - corps - fichier “$TX_BODY_FILE_1” \ – sortie - fichier “$TX_FILE_1” cardano - cli transaction submit – tx - file “$TX_FILE_1” – testnet - magic 1

Acheter et dépenser des jetons

Les détenteurs de jetons « achètent » des jetons auprès d’un émetteur de jetons. Cela impliquera généralement d’envoyer des ada à une adresse spécifique qui a été configurée par l’émetteur du jeton et d’informer l’émetteur du jeton de l’adresse à laquelle les jetons doivent être envoyés. L’émetteur du jeton mettra alors en place une transaction qui transférera un jeton multi-actifs à l’adresse spécifiée.

Les jetons qui ont été émis pour un détenteur de jetons peuvent être « dépensés » en les renvoyant à un émetteur de jetons (c’est-à-dire en échangeant les jetons). Cela se fait à l’aide d’une transaction normale. L’émetteur du jeton fournira alors au détenteur du jeton l’objet convenu en retour (qui peut être un élément de valeur, un service, un autre type de jeton, un ada, etc.).

cardano - cli transaction build - raw … – out - file txbody cardano - signe de transaction cli … – tx - body - file txbody – out - file tx cardano - cli transaction submit … – tx - fichier tx

Détruire (brûler) des jetons

Les jetons peuvent être détruits par un émetteur de jetons conformément à la politique de jeton en fournissant une valeur négative dans le --mint champ. Cela permet d’acquérir des jetons dans l’entrée UTXO à l’entrée d’une transaction, sans les ajouter à l’une des sorties, les détruisant ainsi. Par exemple, les jetons créés dans la section précédente peuvent être détruits comme suit :

TXID1 = $ ( cardano - transaction cli txid – tx - corps - fichier “$TX_BODY_FILE_1” ) TX_BODY_FILE_2 = … TX_FILE_2 = … cardano - construction de transaction cli - brut \ – frais 0 \ – tx - dans “$TXID1” # 0 \ – tx - out = “$ADDR+$LOVELACE” \ – menthe = “-5 $POLICYID.636f75747473636f696e” \ – sortie - fichier “$TX_BODY_FILE_2” cardano - signe de transaction cli \ – signature - clé - fichier “$SPENDING_KEY” \ – signature - clé - fichier “$MINTING_KEY” \ –script - fichier "$SCRIPT " \ – testnet - magie 1 \ – tx - corps - fichier “$TX_BODY_FILE_2” \ – sortie - fichier “TX_FILE_2” cardano - cli transaction submit – tx - file “$TX_FILE_2” – testnet - magic 1097911063

Remarque : La destruction de jetons nécessite à la fois les informations d’identification de paiement pour utiliser l’entrée UTXO avec les jetons et des informations d’identification pour le script de politique de frappe.

(2) Exercices sur les jetons natifs

Conditions préalables

  1. Vous devez être familiarisé avec la configuration et l’exploitation d’un nœud Cardano.
  2. Lisez l’explication sur les jetons multi-actifs, la documentation sur l’utilisation du nœud Cardano et les opérations avec les jetons multi-actifs dans les sections ci-dessus.
  3. Extrayez et construisez les github sources pour cardano-node qui ont été tagués avec mary.
  4. Démarrez un nœud Cardano auquel vous pouvez soumettre des commandes.

Objectifs

Cette série d’exercices vise à vous assurer que vous pouvez :

  1. Gérer les jetons natifs existants ;
  2. Créer de nouveaux jetons natifs ;
  3. Soumettez des transactions qui incluent des jetons natifs sur la blockchain Cardano.

Veuillez signaler tout bogue ou amélioration via le cardano-node référentiel github.

Des exercices

  1. Créez un ensemble de clés de signature privées/publiques, shelley et trois adresses (ada, mary et percy) . Fonds ada du robinet . Demandez des jetons Wollstonecraft au propriétaire du jeton pour financer votre adresse mary . Vérifiez que les deux adresses ont les valeurs attendues. Que remarquez-vous sur les valeurs de Marie ?
  2. Envoyez 100 ada d’ ada à mary et 10 Wollstonecraft de mary à percy . Vérifiez les valeurs des trois adresses avant et après les transactions.
  3. Définissez un script de politique de frappe pour la devise KingOfKings qui permet à Shelley de créer de nouveaux jetons Ozymandiens .
  4. Frappez 1000 nouveaux Ozymandiens à l’ adresse de Percy . Vérifiez qu’ils ont été frappés avec succès. Notez que vous devrez peut-être financer l’ adresse percy avec de l’ada supplémentaire .
  5. Quelle est la quantité minimale d’ ada que vous devez conserver dans chacune de vos adresses ? Quelle est la plus petite quantité d’ Ozymandians ou de Wollstonecraft que vous pouvez conserver dans une adresse ?
  6. Vous souhaitez échanger certains de vos jetons Wollstonecraft . Comment est-ce que tu fais ça? De même, comment rachetez-vous vos Ozymandiens ? Qu’advient-il de vos soldes ada lorsque vous échangez vos jetons ?
  7. Créez un nouveau script de politique de frappe qui permet à Shelley de créer des jetons Wollstonecraft , ada et Ozymandian . Fabriquez de nouveaux jetons de chaque type et envoyez-les à mary et percy . Vérifiez qu’ils ont bien été reçus. Que constatez-vous sur les soldes sur chacune des adresses ?
  8. Créez cinq nouvelles adresses de signature : athena , zeus , hera , poseidon et dionysus . Créez un script de politique de frappe qui permet à n’importe quelle majorité des cinq olympiens de frapper des médailles de platine , d’or , d’argent et de bronze . Envoyez à percy une nouvelle médaille d’or et envoyez à mary une nouvelle médaille de platine , deux médailles d’or et quatre médailles d’argent . Vérifiez les soldes pour chacune de vos adresses. Transférez maintenant une médaille d’or et uneMédaille d’argent de Mary à Percy et vérifiez à nouveau les soldes.

Exercices optionnels

  • Mettre en place un certain nombre de “monnaies” qui produisent chacune des pièces d’un type spécifique. Les valeurs de chacune des pièces sont données ci-dessous.

Chaque Monnaie peut produire de nouvelles pièces correspondant à la valeur de toutes les pièces envoyées à une adresse spécifique. Par exemple, si l’ adresse Bawbee est envoyée trois Groats , deux nouveaux Bawbees peuvent être frappés. Les pièces peuvent être frappées jusqu’à la valeur qui a été reçue. Tout excédent est perdu. Donc, si l’ adresse Noble Mint reçoit 8 pièces Shilling , une nouvelle pièce Noble est frappée en échange.

Veuillez noter que jusqu’à ce que nous ayons des scripts Plutus, il n’y a aucun moyen d’appliquer ces taux de conversion en chaîne, et vous devrez les faire manuellement.

  • Mettre en place un « échange de pièces » avec un ou plusieurs collègues. Chacun d’entre vous est responsable d’un ou plusieurs « menthes ». Vous devez chacun créer une adresse d’échange et la financer avec des pièces nouvellement frappées qui valent précisément vingt et un shillings. Entraînez-vous maintenant à envoyer des pièces et à les échanger contre des pièces de valeur équivalente. Par exemple, si quelqu’un vous envoie deux pièces Merk , vous pouvez retourner une pièce Pound et une pièce Noble , ou toute autre valeur équivalente que vous aimez. Utilisez les métadonnées de transaction pour enregistrer les échanges de pièces en chaîne. Si vous ne pouvez pas donner la monnaie exacte, donnez la valeur la plus proche possible.

  • Adaptez vos échanges afin de facturer des frais de 10% pour chaque transaction. Enregistrez cela dans un compte séparé. Échangez des pièces jusqu’à ce que l’un de vous ne puisse plus rendre la monnaie.

Merci d’avoir terminé les exercices !

Source : https://docs.cardano.org/native-tokens/exchange-multi-asset-management-scenarios/