Si tout sâest bien passĂ©, vous avez pu crĂ©er deux adresses de type âaccountâ. Vous avez bien sĂ»r conservĂ© les clĂ©s privĂ©es et publiques associĂ©es dans les dossiers respectifs.
But de la manip du jour : Envoyer quelques ADA de lâadresse 1 vers lâadresse 2
Avant de débuter
Effectuer une transaction sur le rĂ©seau Cardano nâest pas gratuit. Il existe des frais de transaction que lâenvoyeur doit rĂ©gler afin que la transaction rĂ©ussisse. Le calcul de ces frais de transaction dĂ©pend des constantes qui sont dĂ©clarĂ©es dans le âgenesis blockâ.
Pour connaĂźtre ces constantes, tapez dans votre terminal :
jcli rest v0 settings get -h http://127.0.0.1:3101/api
Sur le testnet actuellement en cours, vous aurez la réponse
block0Hash: adbdd5ede31637f6c9bad5c271eec0bc3d0cb9efb86a5b913bb55cba549d0770
block0Time: "2019-02-22T07:53:34+00:00"
consensusVersion: genesis
currSlotStartTime: "2019-10-01T19:18:16+00:00"
fees:
certificate: 10000
coefficient: 50
constant: 1000
maxTxsPerBlock: 255
Tout est lĂ . Envoyer un certificate
, câest 10000 lovelaces (Cela ne nous intĂ©resse pas pour aujourdâhui). Le coefficient
est le coĂ»t Ă payer (en lovelace) pour chaque opĂ©ration dâentrĂ©e ou de sortie (input/output). constant
est un coût fixe (en lovelace) qui sera toujours là (une constante quoi !).
Pour commencer, il faut vous placer dans le dossier qui contient votre addr1, la clé privées sk1 et la clé publique pk1.
A partir de ce dossier, vous allez effectuer dans le terminal lâenchainement de commandes qui suit.
Tout dâabord, vous allez dĂ©clarer vouloir faire une transaction. Ici, la transaction portera le nom de âtxâ. Mais vous pouvez mettre ce que vous voulez.
jcli transaction new --staging tx
DĂ©clarer dâoĂč vont partir les fonds et quel montant va partir.
jcli transaction add-account $(cat addr1) 1001100 --staging tx
DĂ©clarer oĂč doivent arriver ces fond. Il serait bon dâavoir copiĂ© au prĂ©alable lâadresse de rĂ©ception quelque part et accessible âŠ
jcli transaction add-output COLLER_ICI_ADRESSE_DE_RECEPTION 1000000 --staging tx
Vous remarquerez que le chiffre qui apparait est exactement : montant envoyé - (coût fixe + entrée + sortie). Cela nous fait donc : 1001100-(1000+50+50) = 1000000
Il est important de ne pas rater ce calcul, sinon votre transaction sera refusĂ©e. Attention toutefois, personne ne vous empĂȘchera de payer plus de frais que nĂ©cessaire âŠ
Finalisez votre transaction
jcli transaction finalize --staging tx
RĂ©cupĂ©rer lâidentifiant de la transaction
jcli transaction id --staging tx
Cette commande va vous renvoyer un IDENTIFIANT_DE_TRANSACTION. Copiez le dans le presse-papier.
Signez la transaction Ă lâaide de la clĂ© privĂ©e du compte envoyeur.
jcli transaction make-witness IDENTIFIANT_DE_TRANSACTION --genesis-block-hash adbdd5ede31637f6c9bad5c271eec0bc3d0cb9efb86a5b913bb55cba549d0770 --type account --account-spending-counter 0 witness.output sk1
Ici, --type
se rĂ©fĂšre Ă la nature du compte. Nous avons utilisĂ© une adresse de type âaccountâ (comme sur Ethereum), et non un âutxoâ (comme sur Bitcoin).
Vous noterez la présence de --account-spending-counter
. Ce paramÚtre est tout simplement le nombre de transactions déjà effectuées à partir de cette adresse. Si votre compte est tout neuf, il est à 0
. Si vous ne vous en souvenez plus, il existe un moyen facile de le retrouver :
jcli rest v0 account get $(cat addr1) -h http://127.0.0.1:3101/api
Le terminal vous retournera les infos relative Ă cette adresse dont le fameux âcounter :
â.
Le terme witness.output
est la sortie de la commande. Et le terme sk1
est la clĂ© privĂ©e du compte. Si vous ĂȘtes bien dans le dossier account_1
, alors tout est bon - ca devrait fonctionner.
Ajoutez le witness.output
Ă votre transaction
jcli transaction add-witness witness.output --staging tx
Scellez votre transaction
jcli transaction seal --staging tx
Transformez votre transaction en message et lâenvoyer sur le rĂ©seau en une seule commande
jcli transaction to-message --staging tx | jcli rest v0 message post -h http://127.0.0.1:3101/api
Vérifier que les ADA sont bien partis de votre compte envoyeur, en réitérant la commande présentée plus haut
jcli rest v0 account get $(cat addr1) -h http://127.0.0.1:3101/api
Vous devriez voir que le counter
est passé à 1
(si vous Ă©tiez Ă 0) et que lâadresse a perdu 1001100 lovelaces.
Vous pouvez vérifier la bonne réception des fonds en tapant :
jcli rest v0 account get ADRESSE_RECEVEUSE -h http://127.0.0.1:3101/api
Amusez vous bien. Câest tout pour ce soir.
@Psychomb