Ğcli: Un client GVA en ligne de commande écrit en Rust

J’ai fait une issue pour la commande tx-history, mais je n’ai pas le droit de me l’assigner.

Dans l’avis de licence, tu as laissé « either version 3 of the License, or (at your option) any later version », or dans Cargo.toml c’est « AGPL-3.0 », donc la licence est-elle AGPLv3 ou AGPLv≥3 ? Autoriser les versions ≥3 me paraît une faille de sécurité (c’est faire confiance aveuglément à la FSF et l’autoriser à retirer des restrictions de la licence du code).

Ce n’est pas prioritaire, mais pour que le client soit pratique à utiliser il faut qu’il supporte la panne du nœud Duniter par défaut. Pour ça il pourrait y avoir plusieurs nœuds par défaut, choisis au hasard à chaque exécution.

1 Like

Ok alors je pense supprimer la nécessité d’attribuer une issue, car une contribution doit pouvoir se faire sans avoir à demander des droits :slight_smile:

Tu as raison et si tu veux faire une MR pour ça je la mergerai.

L’idée est plutôt que l’utilisateur choisisse son noeud de référence au lancement de la commande. Il y a déjà une option -s qui le permet :slight_smile:
Je n’ai pas l’ambition de faire de ğcli un client p2p, ça me semble un peu overkill pour un client en ligne de commande . Mais si quelqu’un veut faire ça ok :slight_smile:

1 Like

Sans aller aussi loin que Sakia, juste en essayer plusieurs jusqu’à ce que ça marche. J’ai déjà tout ce qu’il faut dans ĞMixer pour ça (ça ajoute une boucle dans le client et un itérateur shuffle). J’ai toujours la flemme d’utiliser Silkaj à cause de ça, du coup je vais sur Cesium mais il ne gère pas ça très bien donc il faut attendre 30 secondes qu’il propose un autre nœud Cesium+…

1 Like

Donc pas de souci @tuxmain, implémente ce dont tu as besoin, tant que c’est propre, testé, lisible et maintenable :slight_smile:

1 Like

Est-ce que Gcli permet de générer des mnemonic et juste le sortie en output brut ?

Est-ce qu’il permet de générer un DEWIF avec code secret à partir de ce mnemonic ?

Si oui, des exemples d’utilisations ?

Non car personne ne l’a demandé. C’est rapide à faire, si tu en à besoin je peut implémenter la génération du mnemonic et du dewif. Le code Rust existe déjà, faut juste le «plugger» à ğcli :slight_smile:

1 Like

Oui ce serait super pratique pour énormément de choses ! :slight_smile:

@poka je viens de faire ça à l’arrache, regarde dans le README.

Pour l’instant gcli n’a pas de release, pour l’installer faut cloner le dépôt git puis compiler avec la commande cargo build --release. Le binaire final nommé gcli se trouve alors dans target/release :wink:

2 Likes

Il est désormais possible de faire un paiement simple avec ğcli :smiley: :

$ gcli balance 5txe6XBBJQ6WaQS82upPT6FmM2mc5JcBW97dAjyMpwq6
The server responded in 181 ms.
The balance of account 'SIG(5txe6XBBJQ6WaQS82upPT6FmM2mc5JcBW97dAjyMpwq6)' is 2.86 Ğ1 !
$ gcli wallet pay 3 -a 100 -r Do99s6wQR2JLfhirPdpAERSjNbmjjECzGxHNJMiNKT3P -c "from gcli"
Mnemonic: 
Sending 1.0 Ğ1 to Do99s6wQR2JLfhirPdpAERSjNbmjjECzGxHNJMiNKT3P from transparent account 5txe6XBBJQ6WaQS82upPT6FmM2mc5JcBW97dAjyMpwq6 …
Payment succesfully processed in 242.734 ms.

Je crois qu’il s’agit du premier paiement réalisé depuis un HD wallet :slight_smile:

ğcli ne supporte que les HD wallet, vous devez d’abord en générer un avec la commande gci wallet gen.

Ensuite, récupérez une clé publique d’un sous-compte transparent avec la commande gci wallet pubkey. puis envoyez des sous sur ce sous-compte transparent via un autre client Ğ1.

Enfin, réalisez votre paiement avec la commande gci wallet pay.

Prochaine étape, les paiements depuis un compte opaque/brouillé, ça va être une autre paire de manches :sweat_smile:

Je précise que ğcli est compatible DEWIF et qu’un HD wallet créé dans ğcli pourra être importé dans ğecko (et vice versa) via le mnemonic.

6 Likes

Bonjour,

Bravo pour les progrès :wink:

Est-ce que la commande gcli wallet pay est documenté ? à quoi correspondent les arguments ?

Là, je lis (sûrement de travers) que la commande est de payer 3 Ğ1 depuis un compte qui en présente 2.86
ou bien de payer 100 centimes de Junes ce qui fait bien un virement de 1 Ğ1 ? mais alors c’est quoi ce 3 ?

En fait le 3 ici correspond au numéro de dérivation de ton HD wallet.
On a choisi comme protocole d’utiliser les modulo 3 pour les dérivations “transparentes” des HD wallets (3,6,9,12, ect…).

Je pense qu’on détaillera cela avec Elois dans un poste à part.

2 Likes

Oui toutes les commandes comportent une aide embarquée, il te suffit de faire gcli wallet pay --help :slight_smile:

C’est déjà détaillé dans la RFC :

Ajout de la possibilité de payer un script, d’exprimer le montant en DU, et d’une confirmation pour éviter les erreurs :

$ gcli wallet pay 3 -u -a 0.1 -r "SIG(Do99s6wQR2JLfhirPdpAERSjNbmjjECzGxHNJMiNKT3P) && SIG(7F6oyFQywURCACWZZGtG97Girh9EL1kg2WBwftEZxDoJ)"
Mnemonic: 
Send 0.10 UDğ1 to SIG(Do99s6wQR2JLfhirPdpAERSjNbmjjECzGxHNJMiNKT3P) && SIG(7F6oyFQywURCACWZZGtG97Girh9EL1kg2WBwftEZxDoJ) from transparent account 5txe6XBBJQ6WaQS82upPT6FmM2mc5JcBW97dAjyMpwq6? [y/N]
Payment succesfully processed in 241.461 ms.
5 Likes