# Utilisation d'une dérivation avec Ğcli

**URL:** https://forum.duniter.org/t/utilisation-dune-derivation-avec-gcli/12761
**Category:** Ğ1cli
**Tags:** derivation, gcli
**Created:** [4 December 2024 17:31 UTC](https://forum.duniter.org/t/utilisation-dune-derivation-avec-gcli/12761 "2024-12-04T17:31:51Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![daigongen](https://forum.duniter.org/user_avatar/forum.duniter.org/daigongen/32/8842_2.png) [@daigongen](https://forum.duniter.org/u/daigongen)
#### Post date: [4 December 2024 17:31 UTC](https://forum.duniter.org/t/utilisation-dune-derivation-avec-gcli/12761/1 "2024-12-04T17:31:51Z")

</div>

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 :

```auto
gcli smith update-keys
Mnemonic: 

```

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

```auto
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 :

```auto
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

```auto
5EC1SAhGEFGzCkDeYuxBDCTsvnBeaaBvkntVbpMj83G1GnXQ

```

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

```auto
5HZ31wG4rw5E2VoQzRK9m1eBVcA1chJ1qTPEix5VoJwX8Nox

```

---

<div class="post-metadata">

### Author: ![tuxmain](https://forum.duniter.org/user_avatar/forum.duniter.org/tuxmain/32/6423_2.png) [@tuxmain](https://forum.duniter.org/u/tuxmain)
#### Post date: [4 December 2024 22:10 UTC](https://forum.duniter.org/t/utilisation-dune-derivation-avec-gcli/12761/2 "2024-12-04T22:10:48Z")

</div>

Ğ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&nbsp;: [Polkadot Accounts In-Depth · Polkadot Wiki](https://wiki.polkadot.network/docs/learn-account-advanced#derivation-paths)

---

<div class="post-metadata">

### Author: ![daigongen](https://forum.duniter.org/user_avatar/forum.duniter.org/daigongen/32/8842_2.png) [@daigongen](https://forum.duniter.org/u/daigongen)
#### Post date: [5 December 2024 10:32 UTC](https://forum.duniter.org/t/utilisation-dune-derivation-avec-gcli/12761/3 "2024-12-05T10:32:03Z")

</div>

merci @tuxmain. You are making my day !

---

<div class="post-metadata">

### Author: ![HugoTrentesaux](https://forum.duniter.org/user_avatar/forum.duniter.org/hugotrentesaux/32/6396_2.png) [@HugoTrentesaux](https://forum.duniter.org/u/HugoTrentesaux)
#### Post date: [5 December 2024 14:18 UTC](https://forum.duniter.org/t/utilisation-dune-derivation-avec-gcli/12761/4 "2024-12-05T14:18:32Z")

</div>

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 à

> [@daigongen](#):
>
> ```auto
> Mnemonic:
> 
> ```

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

---

<div class="post-metadata">

### Author: ![daigongen](https://forum.duniter.org/user_avatar/forum.duniter.org/daigongen/32/8842_2.png) [@daigongen](https://forum.duniter.org/u/daigongen)
#### Post date: [5 December 2024 16:08 UTC](https://forum.duniter.org/t/utilisation-dune-derivation-avec-gcli/12761/5 "2024-12-05T16:08:42Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Nicolas80](https://forum.duniter.org/user_avatar/forum.duniter.org/nicolas80/32/11019_2.png) [@Nicolas80](https://forum.duniter.org/u/Nicolas80)
#### Post date: [29 December 2024 14:03 UTC](https://forum.duniter.org/t/utilisation-dune-derivation-avec-gcli/12761/6 "2024-12-29T14:03:05Z")

</div>

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:

> [@Request for review - Adding db persistence for all SecretFormat of vault keys as well as supporting derivations](https://forum.duniter.org/t/request-for-review-adding-db-persistence-for-all-secretformat-of-vault-keys-as-well-as-supporting-derivations/12829/1#p-110137-derivation-command-9):
>
> Post écrit…

---

<div class="post-metadata">

### Author: ![Nicolas80](https://forum.duniter.org/user_avatar/forum.duniter.org/nicolas80/32/11019_2.png) [@Nicolas80](https://forum.duniter.org/u/Nicolas80)
#### Post date: [20 January 2025 07:23 UTC](https://forum.duniter.org/t/utilisation-dune-derivation-avec-gcli/12761/7 "2025-01-20T07:23:03Z")

</div>

@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**](https://polkadot.js.org/docs/keyring/start/suri/) (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:

```auto
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`

```auto
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`):

```auto
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:

```auto
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`”

```auto
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`

---

<div class="post-metadata">

### Author: ![ENO](https://forum.duniter.org/user_avatar/forum.duniter.org/eno/32/7840_2.png) [@ENO](https://forum.duniter.org/u/ENO)
#### Post date: [20 April 2025 09:46 UTC](https://forum.duniter.org/t/utilisation-dune-derivation-avec-gcli/12761/8 "2025-04-20T09:46:46Z")

</div>

Est-possible de réaliser pour un compte , un reset de ce mot de passe, par exemple en cas de perte de celui-ci , avec son secret (mnemonic) .  
a savoir :

- supprimer ancien “mot de passe” et re-chiffrer avec un nouveau “mdp”  
ou bien
- recréer un nouveau “vault”?

---

<div class="post-metadata">

### Author: ![Nicolas80](https://forum.duniter.org/user_avatar/forum.duniter.org/nicolas80/32/11019_2.png) [@Nicolas80](https://forum.duniter.org/u/Nicolas80)
#### Post date: [20 April 2025 11:02 UTC](https://forum.duniter.org/t/utilisation-dune-derivation-avec-gcli/12761/9 "2025-04-20T11:02:33Z")

</div>

Il est possible de réimporter `vault import` le même mnémonique/_substrate uri_ et cela devrait proposer d’écraser la clé avec un nouveau mot de passe. S’il y a des clés dérivées elles restent présentes et rattachées à la clé que l’on a remplacée.

Sinon il est également possible de supprimer n’importe quelle entrée vault avec `vault remove`. Pour cette commande, cela supprime l’entrée vault et toutes les clés dérivée.

Aucune de ces 2 actions ne nécessite de connaître le mot de passe de l’_ancienne_ clé vu qu’on la remplace ou supprime.

Il est également possible de supprimer tout le vault si on préfère. Voir ou est situé le vault avec `vault where`; et dans ce répertoire là, juste supprimer le fichier de la db `gcli.sqlite`

---

<div class="post-metadata">

### Author: ![ENO](https://forum.duniter.org/user_avatar/forum.duniter.org/eno/32/7840_2.png) [@ENO](https://forum.duniter.org/u/ENO)
#### Post date: [20 April 2025 21:52 UTC](https://forum.duniter.org/t/utilisation-dune-derivation-avec-gcli/12761/10 "2025-04-20T21:52:36Z")

</div>

Merci @Nicolas80 pour ces réponses claires 👍.
