Petit précis pour réaliser des virements automatiques à l’aide de Silkaj.
Objectif
Réaliser un virement automatique à une liste de bénéficiaires dont on connaît les clés publiques.
Exemple : réaliser le virement mensuel aux contributeurs de Duniter, soit 13 clés publiques, 200 Ğ1 chacun.
Prérequis
Attention ! Ce tutoriel utilise une fonction de Silkaj en cours d’approbation : l’envoi de monnaie à de multiples destinataires. Une Merge Request a été soumise afin d’intégrer ce développement dans la release officielle.
- Compiler Silkaj ;
- Posséder une machine avec un Linux récent (Ubuntu 18.04 ou Fedora 28) ;
- Disposer d’un compte alimenté en Ğ1
Compiler Silkaj
Je vais vous copier ici les commandes que j’ai dû lancer sur une Ubuntu 18.04 fraîchement installée :
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
Ajouter à la fin de votre ~/.bashrc
les lignes suivantes :
# Load pyenv automatically by adding
# the following to ~/.bash_profile:
export PATH="/home/cgeek/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Puis rouvrez un nouveau terminal :
pyenv install 3.6.0
pyenv shell 3.6.0
pyenv virtualenv silkaj-env
Ouvrez encore un nouveau terminal :
git clone https://github.com/duniter/silkaj.git
cd silkaj
pip install -r requirements.txt --upgrade
pyenv rehash
pyenv activate silkaj-env
Vérifiez que Silkaj fonctionne :
./silkaj -h
Cette commande devrait vous afficher l’aide de Silkaj.
Créer un fichier des destinataires
Vous devez préalablement aller récupérer la liste des clés publiques des personnes à qui vous souhaitez faire le virement.
Exemple : ici, je souhaite faire un virement aux clés publiques des personnes considérées « contributeurs » au logiciel Duniter et à ses outils.
Créer un fichier destinataires.txt
contenant la liste des clés destinataires. Vous pouvez récupérer celles-ci par le moyen qui vous conviendra, personnellement je suis passé par Cesium en tapant les pseudos des individus à qui je souhaitais réaliser le virement.
Exemple :
2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ FEkbc4BfJukSWnCU6Hed6dgwwTuPFTVdgz5LpL4iHr9J D9D2zaJoWYWveii1JRYLVK3J4Z7ZH3QczoKrnQeiM6mx HbTqJ1Ts3RhJ8Rx4XkNyh1oSKmoZL1kY5U7t9mKTSjAB 38MEAZN68Pz1DTvT3tqgxx4yQP6snJCQhPqEFxbDk4aE 5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv GfKERHnJTYzKhKUma5h1uWhetbA8yHKymhVH2raf2aCP 7F6oyFQywURCACWZZGtG97Girh9EL1kg2WBwftEZxDoJ CRBxCJrTA6tmHsgt9cQh9SHcCc8w8q95YTp38CPHx2Uk 2sZF6j2PkxBDNAqUde7Dgo5x3crkerZpQ4rBqqJGn8QT 4FgeWzpWDQ2Vp38wJa2PfShLLKXyFGRLwAHA44koEhQj 55oM6F9ZE2MGi642GGjhCzHhdDdWwU6KchTjPzW7g3bp BH8ZqCsp4sbHeDPPHpto53ukLLA4oMy4fXC5JpLZtB2f
Créer un fichier d’authentification
Afin de réaliser un paiement automatique qui ne nécessiterait pas de saisie de notre part, Silkaj doit avoir accès à un fichier d’authentification permettant de dépenser des Ğ1.
Pour créer ce fichier, munissez-vous des identifiants secrets d’un compte portefeuille puis exécutez la commande suivante :
$ silkaj generate_auth_file --auth-scrypt
Requested default node: <g1.duniter.org:443>
Please enter your Scrypt Salt (Secret identifier):
Please enter your Scrypt password (masked):
Using default values. Scrypt parameters not specified or wrong format
Scrypt parameters used: N: 4096, r: 16, p: 1
Authfile generated for the public key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Vous obtiendrez alors un fichier authfile
dans le répertoire courant.
Exécuter le virement
Finalement, il ne vous reste plus qu’à exécuter la commande suivante :
silkaj tx --auth-file --file authfile --amount 200 --output `cat destinataires.txt | tr '\n' ':' | sed -e 's/:*$//'`
Pour un virement permanent
Si vous souhaitez réaliser ce virement le 1er de chaque mois, vous pouvez ajouter un crontab sur votre machine (un serveur allumé 24h/24h de préférence) :
0 0 1 * * silkaj tx --auth-file --file authfile --yes --amount 200 --output `cat destinataires.txt | tr '\n' ':' | sed -e 's/:*$//'`