🇫🇷 #4 - Délégation à un "pool" ou groupe d'enjeu

Résumé des épisodes précédents :

#1 - Vous avez installé jormungandr et jcli - Voir ici
#2 - Vous avez créé au moins deux adresses de type account- Voir ici
#3 - Vous avez effectué votre première transaction entre ces deux adresses - Voir ici


Aujourd’hui, le but du TP : déléguer vers un groupe d’enjeu, aussi appelé “pool”, les fonds contenus dans une adresse.

Je ne rentrerai plus trop dans les détails commande à commande (entrer ou sortir des dossiers sous linux) et irait donc droit au but . Pour avancer sans encombres, je vous renvoie donc vers les 3 premiers TP !


Dans le terminal, lancer jormungandr et attendre que votre nœud se synchronise au réseau testnet. Ouvrir un second terminal pour effectuer la délégation, si jamais le noeud est actif sur le premier terminal.

Naviguer dans vos dossiers jusqu’à atteindre le dossier account1, celui contenant les fichiers addr1, pk1 et sk1.

Avant de commencer, il est important de connaître la liste des pools afin d’identifier celui vers lequel vous souhaitez déléguer vos ADA.

Pour cela :

jcli rest v0 stake-pools get -h http://127.0.0.1:3101/api

Cette commande vous renvoie une liste d’identifiants de pools sans plus d’informations. Voir ci dessous.

- 00c30e95ba85e4ece4a1b4a3b80c57c2e2d050367e7b0a5a8c646fd36735a1ac
- 7ab9cf75901e76b47ff7ed641d54386308dbd41db0065c8d0e9ff59baaf07cbe
- 25a46ca840894ebb337e1256a6d39c7f7b25f3b7bcd9db34ce12dda573bfcf0f
- 842bada798a994c060d0ff296c078b4a3fcfdd5a554a5a8034bfbc1c68cb6444
- c895a237b5cdfa48356ffe8a5a0e2718a578781d53668c1892a7cf60e56a6bb9
...
...
- 63e23cc1b057535151830f1a13c9f75ec81075b627469e13ba872dc3f12dab83

Il en existe aujourd’hui une cinquantaine sur le testnet. Si avoir les identifiants est déjà pas mal, en savoir un peu plus sur le pool que vous choisirez c’est toujours un peu mieux. Exécutez la commande ci-dessous :

jcli rest v0 stake get -h http://127.0.0.1:3101/api

Cette commande vous renvoie une liste d’identifiants de pools ET la somme des ADA qui leur ont été délégués. Cette liste ne recense que les pools actifs et non pas la totalité des pools déclarés avec un certificat. Elle est donc, en ce moment, un peu moins fournie que la liste présentée plus haut.

- - 6d8509b50dc9612f6db5f899f2b24d486479b61f158fd7cb9a271553c923018a
- 9999988950
- - c33ab94e9eb40f5792fe980d43bbe3a5747a3dbb8bdebfd3dff592526e85804f
- 0
- - 63e23cc1b057535151830f1a13c9f75ec81075b627469e13ba872dc3f12dab83
- 0
- - 2fa5db57f81c75126b6349f429370e277ed86c351e7e68beda34de41458937f6
- 0
- - 49786e8b516664f38877cbf62a94b02a263a48e577673f3fe7c62dda34271031
- 9999889145
...
...
- - b7b132fdff13b998da3313c93ce36a75e2ca2f52288e95d944c9a6d6ba9042f3
- 609999988950

Comment lire ce résultat ? Les lignes vont par deux, la première est l’identifiant du pool. La seconde représente la somme des lovelaces délégués à ce pool. Remarquez que certains sont encore vides bien qu’activés et reconnus par le protocole.

Une fois le pool choisi, toujours à partir du dossier account1, débutez la procédure.

Créer le certificat de délégation :

jcli certificate new stake-delegation IDENTIFIANT_DU_POOL pk1 cert

pk1 est la clé publique du compte qui délègue
cert est le nom du certificat créé.

Signer le certificat :

jcli certificate sign sk1 cert signed_cert

sk1 est la clé secrète du compte qui délègue
cert est le certificat tout juste créé
signed_cert est le certificat signé

Faire une transaction avec le certificat sur la blockchain :

Beaucoup d’étapes sont similaires à l’épisode #3. Voir ici

jcli transaction new --staging tx

jcli transaction add-account ADDRESSE_DU_COMPTE 11050 --staging tx

Notez les frais de transaction ici. Une certificat coûte 10000 lovelaces. Il existe 1000 lovelaces de frais constants et enfin, il vous en coûte 50 lovelaces pour inclure un “input”. Le coût total de la délégation est donc de 11050 lovelaces.

Ajouter le certificat signé à la transaction

jcli transaction add-certificate --staging tx signed_cert

jcli transaction finalize --staging tx

jcli transaction id --staging tx

Copier l’identifiant de la transaction dans le presse-papier

Si vous l’avez oublié, vérifiez le --account-spending-counter de votre adresse :

jcli rest v0 account get $(cat addr1) get -h http://127.0.0.1:3101/api

jcli transaction make-witness IDENTIFIANT_DE_LA_TRANSACTION --genesis-block-hash adbdd5ede31637f6c9bad5c271eec0bc3d0cb9efb86a5b913bb55cba549d0770 --type account --account-spending-counter COUNTER witness.output sk1

jcli transaction add-witness witness.output --staging tx

jcli transaction seal --staging tx

jcli transaction to-message --staging tx | jcli rest v0 message post -h http://127.0.0.1:8443/api

Vérifiez que la manip a bien fonctionné :

Avant délégation, la commande jcli rest v0 account get $(cat addr1) get -h http://127.0.0.1:3101/api vous renvoyait:

counter: 0
delegation:
[.]
value: 249989986749

Après délégation, la commande jcli rest v0 account get $(cat addr1) get -h http://127.0.0.1:3101/api vous renvoie:

counter: 1
delegation:
pools:
- - da0ed0ed3d82b70598cd277e78975201c3d194d91eed9ed197e2ed6465758477
- 1
value: 249989975699

Notez que vous déléguez la totalité des lovelaces de l’adresse moins les frais de transaction …


Amusez vous bien. C’est tout pour ce soir.
@psychomb