Questions Silkaj v0.11.0 : nouvelle CLI, transfer

Salut,

Alors je voulais me pencher sur un tuto pour utiliser silkaj avec les timers de systemd, pour faire des virements automatiques.

Le souci, c’est que silkaj n’envoie plus d’argent (ok, c’est flou comme diagnostic).

Je fais

systemctl list-timers
Pour voir où j’en suis! Si, ça vaut toujours la peine!

silkaj authentication
Pour créer le fichier.
Je le trouve très petit!

echo HjWkHYDod49Cc9q6DB9BtUbiY2XgJ2tmQfKgyYKo5TQQ > destinataires.txt

Apparemment on fait plus comme ça, donc j’ai changé ça pour mettre dans le fichier destinataires.txt:

cat destinataires.txt
ABSOLUTE

# megadon-test
10 HjWkHYDod49Cc9q6DB9BtUbiY2XgJ2tmQfKgyYKo5TQQ

Puis je fais:

silkaj tx -f destinataires.txt
Usage: silkaj [OPTIONS] COMMAND [ARGS]...

Error: No such command 'tx'.

Mais là ça ne marche pas.

Alors je fais (en inventant un peu, on sait jamais!)

silkaj money send -f destinataires.txt
Usage: silkaj money [OPTIONS] COMMAND [ARGS]...

Error: No such command 'send'.

J’y arrive pas.

Je crois qu’il manque des données dans
silkaj -h

Je teste plein de combinaisons, les options ne sont pas reconnues, ou alors: le truc était devant mon nez! (forte proba que ça arrive!)

Quel est le problème ? La découverte de l’interface en ligne de commande ? Qui a pas mal changé depuis les dernières versions. Avec la dernière version, la v0.11.0, tu peux faire :

silkaj --help
silkaj money --help
silkaj money transfer --help

À présent il y a des groupes de commandes, ce qui donne des sous-sous-commandes :blerzb:
Si tu n’as pas vu passer l’annonce de la v0.11.

2 Likes

C’est top ce que tu as mis en place.

Mon souci est que j’ai le réflexe de regarder la page de manuel, et que je n’ai pas trouvé la commande “transfer”, j’en été resté à “tx”.

Mais c’est top.

Mais du coup je peux trouver où la liste des commandes?
Désolé si c’est potentiellement sous mon nez.

silkaj --help
Usage: silkaj [OPTIONS] COMMAND [ARGS]...

Options:
  -h, --help               Show this message and exit.
  -v, --version            Show the version and exit.
  -ep, --endpoint TEXT     Default endpoint to reach Ğ1 currency by its
                           official node g1.duniter.org This option allows to
                           specify a custom endpoint as follow: <host>:<port>.
                           In case no port is specified, it defaults to 443.
  -gt, --gtest             Default endpoint to reach ĞTest currency by its
                           official node: g1-test.duniter.org
  --auth-scrypt, --scrypt  Scrypt authentication: default method
  --nrp TEXT               Scrypt parameters: defaults N,r,p: "4096,16,1"
  -af, --auth-file         Authentication file. Defaults to: './authfile'
  --file TEXT              Path file specification with '--auth-file'
                           [default: authfile]
  --auth-seed, --seed      Seed hexadecimal authentication
  --auth-wif, --wif        WIF and EWIF authentication methods
  -d, --display            Display the generated document before sending it
  -n, --dry-run            By-pass licence, confirmation. Do not send the
                           document, but display it instead

Commands:
  about           Display program information
  authentication  Generate authentication file
  blockchain      Blockchain related commands
  checksum        Generate checksum out of a passed pubkey or an...
  license         Display Ğ1 monetary license
  money           Money management related commands
  wot             Web-of-Trust related commands

Celles qui ont related commands en description sont des groupes de commandes. Du coup, tu peux faire --help sur chacune d’elles pour découvrir les commandes de ce groupe.

3 Likes

J’aimerai envoyer une transaction sans devoir faire de mot de passe.
Du coup, je croyais que le authfile (mais il paraît petit, plus court que le couple id/mot de passe) pouvait le faire.
Je n’y arrive pas.

Il faut aussi une combinaison clé publique / checksum

Et une manière d’écrire le fichier destinataire.txt.

Je suis paumé, en tout cas je n’ai pas réussi à faire de transaction avec silkaj pour l’instant.

Je peux continuer à tester plein de combinaisons possibles.

Edit: je vais déjà lire ici clients / python / silkaj · GitLab

J’ai réussi avec la commande


silkaj money transfer -r HjWkHYDod49Cc9q6DB9BtUbiY2XgJ2tmQfKgyYKo5TQQ -a 10 --comment "test de virement via silkaj"

(mais il y a id / mots de passe)

Les commandes suivantes devraient faire ce que tu souhaites mettre en place :

silkaj authentication --file authfile.txt
silkaj --auth-file --file authfile.txt money transfer --file destinataire.txt --yes
1 Like

J’ai comme résultat:


silkaj --auth-file --file authfile.txt money transfer --file destinataire.txt -a 10 --yes
Error: Usage: `file_path` is mutually exclusive with arguments `amounts, amountsUD, recipients, allsources`.

 cat destinataires.txt
HjWkHYDod49Cc9q6DB9BtUbiY2XgJ2tmQfKgyYKo5TQQt

J’ai simplifié le fichier destinataires, c’est peut-être pas bon?

En rajoutant la somme dedans comme c’était, j’ai


silkaj --auth-file --file authfile.txt money transfer --file destinataire.txt --yes
Traceback (most recent call last):
  File "/home/daniel/.local/bin/silkaj", line 8, in <module>
    sys.exit(cli())
  File "/usr/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3.10/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3.10/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/home/daniel/.local/lib/python3.10/site-packages/silkaj/money/transfer.py", line 132, in transfer_money
    tx_amounts, recipients = parse_file_containing_amounts_recipients(file_path)
  File "/home/daniel/.local/lib/python3.10/site-packages/silkaj/money/transfer.py", line 213, in parse_file_containing_amounts_recipients
    with open(file_path, encoding="utf-8") as file:
FileNotFoundError: [Errno 2] No such file or directory: 'destinataire.txt'
[daniel@anvil ~]$ cat destinataires.txt
10 HjWkHYDod49Cc9q6DB9BtUbiY2XgJ2tmQfKgyYKo5TQQt

L’erreur dit que tu ne peux pas à la fois spécifier un montant via la CLI et via le fichier.

Le format du fichier est incorrect, cf « la documentation » :

C’était correct dans le premier post :

Je te mets au défi de trouver l’erreur :wink:

1 Like

Je viens de trouver, il manquait un “s” à destinataires…

Je me suis auto-embrouillé.

1 Like