Silkaj : Installation, virements automatiques et multi-destinataires

Ok, faut que je vérifie ça.

Soit le nœud n’est pas atteignable, soit cette option doit être mis en dernière position.
Tu n’es pas obligé de mettre cette option. Ça utilise https://duniter.org par défaut.

Ah, oui, c’est possible que ça soit un bug non corrigé que je ne vois pas à cause de cache Python.

Par contre, là tu dois mettre à jour ton dépôt silkaj git pull.

Si tu veux utiliser silkaj installé via pip utilise simplement la commande silkaj.

Peut-être qu’en utilisant la dernière version les problèmes ci-dessus seront corrigés !

Voici une contribution simple pour celui qui veut avoir son nom dans l’historique git de silkaj.

j’ai bien a jour le dépôt, silkaj 0.5.3 est bien installé :

pip3 install silkaj --user
Collecting silkaj
  Using cached https://files.pythonhosted.org/packages/b3/fd/1fba05730f8bf6672ef64d37a04fc45b32dc14cb0904c0bd33a3b85ebd51/silkaj-0.5.3-py3-none-any.whl
Requirement already satisfied: ipaddress in /home/vincentux/.pyenv/versions/3.6.0/envs/silkaj-env/lib/python3.6/site-packages (from silkaj) (1.0.22)
Requirement already satisfied: pyaes in /home/vincentux/.pyenv/versions/3.6.0/envs/silkaj-env/lib/python3.6/site-packages (from silkaj) (1.6.1)
Requirement already satisfied: pynacl in /home/vincentux/.pyenv/versions/3.6.0/envs/silkaj-env/lib/python3.6/site-packages (from silkaj) (1.2.1)
Requirement already satisfied: scrypt in /home/vincentux/.pyenv/versions/3.6.0/envs/silkaj-env/lib/python3.6/site-packages (from silkaj) (0.8.6)
Requirement already satisfied: commandlines in /home/vincentux/.pyenv/versions/3.6.0/envs/silkaj-env/lib/python3.6/site-packages (from silkaj) (0.4.1)
Requirement already satisfied: tabulate in /home/vincentux/.pyenv/versions/3.6.0/envs/silkaj-env/lib/python3.6/site-packages (from silkaj) (0.8.2)
Requirement already satisfied: six in /home/vincentux/.pyenv/versions/3.6.0/envs/silkaj-env/lib/python3.6/site-packages (from pynacl->silkaj) (1.11.0)
Requirement already satisfied: cffi>=1.4.1 in /home/vincentux/.pyenv/versions/3.6.0/envs/silkaj-env/lib/python3.6/site-packages (from pynacl->silkaj) (1.11.5)
Requirement already satisfied: pycparser in /home/vincentux/.pyenv/versions/3.6.0/envs/silkaj-env/lib/python3.6/site-packages (from cffi>=1.4.1->pynacl->silkaj) (2.18)
Installing collected packages: silkaj
Successfully installed silkaj-0.5.3

mais :

silkaj : commande introuvable

Relance la commande d’installation de silkaj via pip dans un nouveau terminal.
Car, là tu l’as installé dans un shell pyenv.

dans un nouveau terminal :

pip3 install silkaj --user
Collecting silkaj
  Using cached https://files.pythonhosted.org/packages/b3/fd/1fba05730f8bf6672ef64d37a04fc45b32dc14cb0904c0bd33a3b85ebd51/silkaj-0.5.3-py3-none-any.whl
Collecting pyaes (from silkaj)
Collecting ipaddress (from silkaj)
  Using cached https://files.pythonhosted.org/packages/fc/d0/7fc3a811e011d4b388be48a0e381db8d990042df54aa4ef4599a31d39853/ipaddress-1.0.22-py2.py3-none-any.whl
Collecting tabulate (from silkaj)
Collecting commandlines (from silkaj)
  Using cached https://files.pythonhosted.org/packages/92/20/9fdf2c639119447ac03246ed3a04beb3c24aaf88d38f348e8c24375ec4aa/commandlines-0.4.1-py2.py3-none-any.whl
Collecting pynacl (from silkaj)
  Using cached https://files.pythonhosted.org/packages/77/03/927e4cdbd821f929392608ddb2220a9548ce164c52047e90fadd20786fd8/PyNaCl-1.2.1-cp36-cp36m-manylinux1_x86_64.whl
Collecting scrypt (from silkaj)
Collecting six (from pynacl->silkaj)
  Using cached https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Collecting cffi>=1.4.1 (from pynacl->silkaj)
  Using cached https://files.pythonhosted.org/packages/6d/c0/47db8f624f3e4e2f3f27be03a93379d1ba16a1450a7b1aacfa0366e2c0dd/cffi-1.11.5-cp36-cp36m-manylinux1_x86_64.whl
Collecting pycparser (from cffi>=1.4.1->pynacl->silkaj)
Installing collected packages: pyaes, ipaddress, tabulate, commandlines, six, pycparser, cffi, pynacl, scrypt, silkaj
Successfully installed cffi-1.11.5 commandlines-0.4.1 ipaddress-1.0.22 pyaes-1.6.1 pycparser-2.18 pynacl-1.2.1 scrypt-0.8.6 silkaj-0.5.3 six-1.11.0 tabulate-0.8.2

j’ai toujours :

silkaj : commande introuvable

Comment s’assurer de ne plus être dans shell pyenv ?

Ça semble être bon. Silkaj est installé.

Après, je sais pas pourquoi la commande n’est pas trouvable.
Essaye d’ouvrir un nouveau shell.

Avec Bash, le prompt est préfixé du nom du shell python.
Sinon, tu peux vérifier la version de python en comparaison avec celle du système.

python -V
Python 2.7.15rc1

sinon

python3 -V
Python 3.6.5

Salut,

C’est bizarre, je crois que pip installe la commande là:

$ which silkaj
/home/seba/.local/bin/silkaj

tu peux vérifier qu’elle est bien là ?

si c’est le cas, regarde si ce chemin est dans le path (liste des chemins où Linux va chercher les exécutables :

$ echo $PATH
/home/seba/.local/bin:/home/seba/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:...

Si le chemin de silkaj n’est pas là, dans ton fichier .bash_profile, ajoute:

export PATH=$HOME/.local/bin:$PATH

Et redémarre ton terminal ou tapes:

. ~/.bash_profile

Merged!

1 Like

Bon j’ai voulu re installer Silkaj mais j’ai du péter quelque chose :

 pip3 install silkaj --user
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'

j’avais pourtant supprimer python3-pip et reinstaller

sudo apt-get remove --auto-remove python3-pip

noob :confused:

[EDIT] toujours un souci avec pip3… si ça parle a quelqu’un :thinking:

cat `which pip3`
#!/usr/bin/python3
# GENERATED BY DEBIAN

import sys

# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import main
if __name__ == '__main__':
    sys.exit(main())

Ah peut-être une réponse ici ?

bon j’ai réussi, je suis en v0.5.0 et effectivement j’ai du ajouter cette ligne :wink: Merci

1 Like

que diriez-vous de spliter le topic en 2 :

  • Réaliser des virements automatiques et multi-destinataires avec Silkaj
  • Faciliter l’installation Silkaj
1 Like

Je t’en pris, je n’ai pas réussit à le faire.

Est-il possible de spliter un commentaire en 2 pour répartir les propos dans les topic approprié ?

En attendant, j’ai renommé le topic pour faire état de son contenu.

Il faut le faire manuellement.

2 messages ont été déplacés vers un nouveau sujet : Rémunération des contributeurs au projet Duniter

On dirait que ça ne fonctionne plus sur la branche master. silkaj essaie de parser la public key… Voilà ce que j’obtiens (en loggant la public key que silkaj échoue à parser) :

$ ./silkaj tx --auth-file --file authfile.key --amount 200 --output `cat destinataires.txt | tr '\n' ':' | sed -e 's/:*$//'`
Requested default node: <g1.duniter.org:443>
Error: the format of the public key is invalid : 2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ:FEkbc4BfJukSWnCU6Hed6dgwwTuPFTVdgz5LpL4iHr9J:D9D2zaJoWYWveii1JRYLVK3J4Z7ZH3QczoKrnQeiM6mx:38MEAZN68Pz1DTvT3tqgxx4yQP6snJCQhPqEFxbDk4aE:5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv:GfKERHnJTYzKhKUma5h1uWhetbA8yHKymhVH2raf2aCP:7F6oyFQywURCACWZZGtG97Girh9EL1kg2WBwftEZxDoJ:HQKzoCALqqkAZhZHXGMvDjvGuceKdGjtb8MpMYJnoxvJ:CRBxCJrTA6tmHsgt9cQh9SHcCc8w8q95YTp38CPHx2Uk:2sZF6j2PkxBDNAqUde7Dgo5x3crkerZpQ4rBqqJGn8QT:4FgeWzpWDQ2Vp38wJa2PfShLLKXyFGRLwAHA44koEhQj:55oM6F9ZE2MGi642GGjhCzHhdDdWwU6KchTjPzW7g3bp:BH8ZqCsp4sbHeDPPHpto53ukLLA4oMy4fXC5JpLZtB2f

Du coup pour le virement de septembre, obligé de faire comme ça… Mais c’est quand même beaucoup moins élégant !

while read p; do
  ./silkaj tx --auth-file --file authfile.key --amount 200 --yes --output $p --comment "DEV-DUNITER-09-2018" || true
done <destinataires.txt
1 Like

Tu dois utiliser la branche dev qui est la seule branche qui inclus la fonctionnalité de transaction multi-destinataire. Sinon, une version de dév a été publiée sur pip pour installer plus facilement silkaj.
De plus, tu fais fasse à un bug corrigé sur la future 0.6.0.

1 Like

Salut,

cron doit encore être utilisé, pour automatiser des tâches sur l’ordi, mais systemd a commencé à le faire, et en plus a bien évolué (je savais pas qu’il y avait un moyen d’avoir des timers système, et des timers utilisateurs, je n’étais pas à jour!).
C’est étonnant, du coup pratique aussi car il demande aucun mot de passe pour les timers!

Je vais donc donner ici ce que j’ai fait.

pipx install silkaj

systemctl list-timers --all
Pour voir où j’en suis! Les timers système.

systemctl --user list-timers --all
Les timers côté utilisateur

cd ~
silkaj authentication --file authfile.txt

Pour créer le fichier dans le dossier utilisateur principal. On peut le mettre ailleurs, si on précise le chemin.

nano ~/destinataires.txt
(ou d’autres programmes que nano, j’utilise plutôt vim même si je connais par coeur que les trucs que j’utilise tout le temps, donc peu)

Du coup on y écrit:

ABSOLUTE

# Megadon
10 HjWkHYDod49Cc9q6DB9BtUbiY2XgJ2tmQfKgyYKo5TQQ

# Remuniter

10 TENGx7WtzFsTXwnbrPEvb6odX2WnqYcnnrjiiLvp1mS

Le 10 avant la clé publique est la somme qu’on veut verser.
C’est pratique, si on veut automatiser des modifs!

systemctl edit --force --full --user backup-work.timer
Ça ressemble un peu à certaines commandes, qui contrôlent ce qu’on écrit (visudo par exemple), donc vaut mieux pas écrire ce fichier autrement.

Il est situé dans ~/.config/systemd/user

On y écrit:


[Unit]
Description=virements silkaj auto
RefuseManualStart=no
RefuseManualStop=no

[Timer]
Persistent=true
OnCalendar=weekly
Unit=silkaj.service

[Install]
WantedBy=default.targe

Ce fichier sert à donner la périodicité avec laquelle silkaj va faire le virement automatique.
Là il y a plein d’exemples ( systemd/Timers - ArchWiki ) et ailleurs aussi (chez gentoo c’est top, ça m’a bien aidé d’ailleurs…! systemd - Gentoo Wiki )

Persistent ça veut dire que si l’ordi n’est pas allumé à la date donnée, il fera le virement à l’allumage suivant.

mkdir ~/.local/bin
cd ~/.local/bin

Au cas où ils n’existent pas.
Il y a tout un truc avec PATH, pour que les programmes puissent être invoqués sans avoir à taper tout le chemin du programme pour l’executer (ce que j’ai dû faire quand même).

nano silkaj-virements.sh
Et on écrit dedans:


#!/bin/bash

exec /home/user/.local/bin/silkaj --auth-file --file ~/authfile.txt money transfer --file ~/destinataires.txt --yes

Où user est remplacé par notre id de l’ordi,

chmod +x silkaj-virements.sh

Pour rendre exécutable le programme qu’on a créé.

ls -actrl

Pour vérifier que c’est bon, s’il y a les x dans les autorisations c’est bon:


-rwxr-xr-x 1 daniel daniel  131 21 févr. 22:23 silkaj-virements.sh

systemctl edit --force --full --user silkaj.service
On écrit:


[Unit]
Description=virements auto silkaj
RefuseManualStart=no
RefuseManualStop=yes

[Service]
Type=oneshot
ExecStart=/home/daniel/.local/bin/silkaj-virements.sh

Puis j’ai fait:


systemctl --user daemon-reload
systemctl --user start silkaj.timer
systemctl --user enable silkaj.timer
systemctl --user enable silkaj.service

On peut contrôler si tout va bien avec:

systemctl --user list-timers --all
systemctl --user status silkaj.timer
systemctl --user status silkaj.service

Il doit mettre que c’est actif et tout.

J’ai fait pas mal de dons du coup, pour faire mes tests! :joy:

Un truc qui est marrant, c’est que cesium met une seule ligne pour les deux virements auto faits en même temps.

5 Likes

Super tutoriel ! Merci de le partager :wink:

Les tests peuvent être faits sur la ĞTest, elle est là pour ce cas d’usages.
silkaj --gtest $command

Surement qu’un seul a été validé, car consommant les mêmes sources.

2 Likes