Utilisation d'une dérivation avec Ğcli

J’ai le sentiment que les dérivations ne sont pas complètement prises en charge avec gcli.
En effet, lorsque je passe une commande avec gcli, je n’ai pas de retour. Cela peut rester comme cela pendant longtemps.
Voici l’output d’un commande type :

gcli smith update-keys
Mnemonic: 

Cela peut rester des heures sans action apparente.
Ma configuration est la suivante:

gcli config show
Ğcli config
duniter endpoint ws://127.0.0.1:9944
indexer endpoint https://squid.gdev.coinduf.eu/v1/graphql
address 5HZ31wG4rw5E2VoQzRK9m1eBVcA1chJ1qTPEix5VoJwX8Nox

Quand je passe la mnémonique en ligne de commande, j’obtiens cela :

gcli -S substrate --secret "$MY-EN-MNEMO_cachee_pour_le_forum" smith update-keys
transaction submitted to the network, waiting 6 seconds...
Pallet error: AuthorityMembers::MemberIdNotFound

Ma clef principale est

5EC1SAhGEFGzCkDeYuxBDCTsvnBeaaBvkntVbpMj83G1GnXQ

La clef secondaire (dérivation //0) est la suivante :
Cette clef est membre et smith

5HZ31wG4rw5E2VoQzRK9m1eBVcA1chJ1qTPEix5VoJwX8Nox

ĞCli devrait accepter un mnemonic suffixé du chemin de dérivation, par exemple "suite de mots//0". Si on ne lui donne que le mnemonic il utilisera la clé sans dérivation.

La syntaxe est détaillée ici : Polkadot Accounts In-Depth · Polkadot Wiki

3 Likes

merci @tuxmain. You are making my day !

D’autre part, Ğcli a un “vault” qui consiste pour l’instant en un fichier chiffré par mot de passe dans lequel on peut mettre un mnemonic. Si le secret associé à la clé configurée est présent dans le vault, il demande le mot de passe à la place. Si le secret n’est pas donné, il l’attend dans stdin suite à

C’est comme un mot de passe, tu le colles (il n’est pas affiché à l’écran), tapes “entrer”, et ça passe.

1 Like

fonction très utile, je viens de tester cela fonctionne parfaitement.

Actuellement dans GCli, les dérivations sont uniquement possible avec l’utilisation du mnémonique (ou predefined qui fait la même chose avec un mnémonique spécifique dans le code).

J’ajoute ici un lien vers une demande de review d’un changement qui ajoute entre autre la possibilité de faire des dérivations pour les différentes sortes de clés prises en comptes dans GCli:

1 Like

@BulmAnanaBelle Il y a toujours un changement en cours de développement pour GCli qui devrait permettre de gérer plus facilement les dérivations (voir mon message au dessus).

Mais donc pour le moment dans la version actuelle, lors de l’utilisation du paramètre de base -S substrate ou lors de l’import dans le vault (vault import), quand on doit introduire le “Mnemonic:” on peut en réalité introduire un suri ou Substrate URI (voir la définition en lien)

Des cas concrets pour expliquer.

Avec la commande subkey inspect on peut vérifier quel est le “Secret seed” == “mini-secret” pour une suri

Ici, pour le mnemonic de test (qui contient “//Alice”) on a:

suri:        "bottom drive obey lake curtain smoke basket hold race lonely fit walk"
mini-secret: "0xfac7959dbfe72f052e5a0c3c8d6530f202b02fd8f9f5ca3580ec8deb7797479e"
SS58 Address:"5DfhGyQdFobKM8NsWvEeAKk5EQQgYe9AydgJ7rMB6E1EqRzV"

Ces 2 valeurs suri(==Mnémonique dans ce cas-ci) et mini-secret peuvent être utilisées de manière interchangeable; on peut faire le test avec la commande gcli suivante, on aura le même résultat les 2 fois => address 5DfhGyQdFobKM8NsWvEeAKk5EQQgYe9AydgJ7rMB6E1EqRzV

gcli -S substrate config show     
Mnemonic: 
Ğcli config
duniter endpoint ws://127.0.0.1:9945
indexer endpoint http://127.0.0.1:8081/v1/graphql
address 5DfhGyQdFobKM8NsWvEeAKk5EQQgYe9AydgJ7rMB6E1EqRzV

Et si on ajoute la dérivation “//Alice”, cela nous donne (en vérifiant avec subkey inspect):

suri:        "bottom drive obey lake curtain smoke basket hold race lonely fit walk//Alice"
mini-secret: "0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a"
SS58 Address:"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY"

Et si on teste la dérivation à partir du mini-secret précédent:

suri:        "0xfac7959dbfe72f052e5a0c3c8d6530f202b02fd8f9f5ca3580ec8deb7797479e//Alice"
mini-secret: "0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a"
SS58 Address:"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY"

Et de nouveau on peut tester avec les 3 valeurs suivantes qui nous donneront toutes la même adresse SS58

  • le mnémonique plus une dérivation : “bottom drive obey lake curtain smoke basket hold race lonely fit walk//Alice
  • le mini-secret du mnémonique plus une dérivation : “0xfac7959dbfe72f052e5a0c3c8d6530f202b02fd8f9f5ca3580ec8deb7797479e//Alice
  • le mini-secret de la dérivation : “0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a
gcli -S substrate config show
Mnemonic: 
Ğcli config
duniter endpoint ws://127.0.0.1:9945
indexer endpoint http://127.0.0.1:8081/v1/graphql
address 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY

On a bien address 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY

2 Likes