Ğ1Dons : paper wallets de propagande

J’ai bien envie d’essayer ce truc !
Une question me turlupine avant de commencer le téléchargement : Faut-il avoir nœud duniter pour installer ce logiciel?
Sinon comment on sélectionne un nœud existant?

Et comment on rentre la clé du compte à débiter ?

1 Like

Non.

gdon noeud <noeud> <port> pour configurer un noeud.
gdon config pour vérifier la config

Les identifiants sont demandés en ligne de commande (pas d’authentification par authfile).

Je copie la liste de commandes ici.
Utiliser Ğ1Dons
===============

Ğ1Dons permet de créer des portefeuilles papiers en Ğ1 destinés à des dons (pas des billets).
Les portefeuilles sont créés avec une date de péremption.
Vous pourrez récupérer la monnaie qui n'aurait pas été utilisée après la péremption.

CONFIGURATION
-------------

Configurer le noeud Duniter : "gdon noeud <noeud> <port>"
Configurer le dossier d'enregistrement : "gdon dossier <chemin_vers_dossier>"
Connaître la configuration : "gdon config"

CREATION
--------

Générer des dons : "gdon generer <montant> <nombre_pages> <peremption_date_JJ/MM/AAAA>"
Ğ1Dons génère 6 pourboires par page.
ATTENTION : pour récupérer les Ğ1dons, vous aurez besoin des identifiants du compte qui les a créé. Sauvegardes-les précieusement.
Ğ1Dons suppose que vous utilisez un trousseau généré par ID + MDP secrets avec les paramètres de Scrypt par défaut (4096,16,1).
Les Ğ1Dons sont enregistrés par défaut dans ~/Documents/G1dons/.

RECUPERATION
------------

Récupérer des dons : "gdon recuperer"
...depuis un dossier : "gdon recuperer <dossier>"
...depuis un fichier : "gdon recuperer fichier <fichier>"
En cas de mauvaise récupération, tenter une récupération des backups : "gdon recuperer backup <année>"
La récupération des backups est possible à plusieurs reprises.
Les fichiers de récupération sont enregistrés par défaut dans ~/Documents/G1dons/Recuperation_ne_pas_supprimer/.
Lors d'une récupération, les fichiers récupérés sont enregistrés par défaut dans ~/Documents/G1dons/.backup/<année> en cas de transaction mal effectuée.
Les fichiers de récupération portent l'extension json.signed, mais tout fichier texte correctement formaté sera accepté quelle que soit son extension.

Conseil : pour tester, crée des Ğdons de 1Ğ1, avec une date de péremption dans le passé. Le logiciel refuse la récupération avant la date de péremption (la monnaie n’est pas bloquée, c’est techniquement possible de la récupérer, mais c’est chiant, il faut le coder. C’est voulu.)

J’ai tenté une installation : J’ai copié collé les instructions suivantes

J’ai fermer mon terminal et l’ai relancer :
Je suis sur Ubuntu 20.04.1 LTS

Je lance la commande gdon pour voir la liste des commandes et j’obtiens ça :

 $ gdon
Traceback (most recent call last):
  File "/home/martial/.local/bin/gdon", line 4, in <module>
    from gdon.common import Creating  # Generator
  File "/home/martial/.local/lib/python3.8/site-packages/gdon/common.py", line 7, in <module>
    from gdon.generator import Generator
  File "/home/martial/.local/lib/python3.8/site-packages/gdon/generator.py", line 4, in <module>
    from duniterpy.key import SigningKey, ascii_armor
  File "/home/martial/.local/lib/python3.8/site-packages/duniterpy/__init__.py", line 24, in <module>
    from . import api, documents, key
  File "/home/martial/.local/lib/python3.8/site-packages/duniterpy/key/__init__.py", line 4, in <module>
    from .ascii_armor import AsciiArmor
  File "/home/martial/.local/lib/python3.8/site-packages/duniterpy/key/ascii_armor.py", line 17, in <module>
    VERSION_FIELD_VALUE = "Python Libnacl " + libnacl.__version__
AttributeError: module 'libnacl' has no attribute '__version__'

Je comprends pas ce qu’il me dit mais j’ai l’impression que ce n’est pas le résultat attendu.


D’autre part à propos de cette remarque

Est-ce que cela veux dire qu’il vaut mieux que je crée un compte autre que mon compte membre pour faire les tests ?

J’ai eu le même problème avec duniterpy. Tu peux essayer cette commande :

echo '__version__ = "1.7.2"' >> /usr/lib/python3.8/site-packages/libnacl/__init__.py || echo '__version__ = "1.7.2"' >> /home/martial/.local/lib/python3.8/site-packages/libnacl/__init__.py
2 Likes

YES !!!
Ça fonctionne!
Mais je ne sais pas ce que fait cette commande … :roll_eyes:

1 Like
AttributeError: module 'libnacl' has no attribute '__version__'

L’erreur dit que duniterpy utilise la variable libnacl.__version__ (qui est censée contenir la version de libnacl, la bibliothèque utilisée pour la cryptographie), mais que cette variable n’est pas définie.

Ma commande ajoute juste cette variable dans le fichier source de libnacl, en essayant aux deux endroits où ce fichier peut se trouver.

Si jamais la même erreur se reproduit après une mise à jour, il faudra relancer cette commande.

Merci pour cette explication, qui m’entraine vers un peu plus de compréhension.

Et je comprend maintenant l’intérêt d’avoir un compte portefeuille à part, (à partir duquel générer les dons,) parce que taper sa clé et identifiant secret à l’aveugle, c’est pas si simple :sunglasses:

1 Like

@matograine, @tuxmain : le bug est corrigé avec DuniterPy 0.58.1 et DuniterPy 0.60.1 !

Attention, la version 0.60.1 nécessite python 3.6 minimum.

5 Likes

J’ai imprimé une première page de G1dons…
C’est super !

Je pense qu’en changeant le fond on peut en faire des billets pour un Gmarché, par exemple.

Par contre je n’arrive pas à utiliser le qrcode de la clé publique pour vérifier le montant du billet.
J’ai l’impression que mon appli césium cale sur la capture du QRcode et ne sais pas quoi en faire. :roll_eyes:

Reste à voir si y a moyen de mettre les montant en DU, ou avec des virgules… :upside_down_face:

1 Like

Si le montant est garanti par qqun, avec des mesures de sécurité adaptées. Les Gdons ne sont pas du tout assez sécurisées pour en faire des billets.

Ce serait plus facile et sécurisé d’avoir une monnaie ultra-locale pour le temps du marché, et un comptoir de change.

Oui. Parce que c’est destiné à des gens qui n’ont pas encore Césium. Essaie avec un lecteur de QRcode normal, tu iras sur une page de demo cesium.

Ce n’est pas un billet, ni un chèque au porteur. C’est un “bon pour” des G1, qui n’est pas destiné à circuler ni à servir de paiement.

Il suffit :wink: de modifier le code pour qu’il place la péremption au prochain équinoxe. Je ne compte pas le faire.

Ah zut, c’est pas possible ?:sweat_smile:

Merci de l’info @vit !

L’idée est bien d’en faire un usage juste le temps du marché, en évitant d’avoir un comptoir de change saturé en fin de marché.
Serait imprimer sur un papier de couleur, avec une date de validité au lendemain du marché et en ajoutant un tampon ou signature.
Ne pas encaisser ces coupons revient à faire un don à l’organisateur :wink:

Je crois que çà peu le faire ! Je suis le genre de gars à enfoncer des clous avec une pince monseigneur… :crazy_face:

Bon il faut maintenant que je trouve un lecteur de qrcode simple et pratique.

Ça ressemble quand même à un bon au porteur.
Et çà me parait plus simple d’utilisation et de compréhension que les G1billets…

Alors faudrait pas que sur le coupon on voit un montant de 1.0 G1 :stuck_out_tongue:

J’ai trouvé comment enlever la virgule !
dans generator.py
txt = "\n".join([str(int(self.amount)) + " " + G1_SYMBOL])
J’ai codé en python pour la première fois de ma vie :sunglasses:
J’en ai même profité pour ajouter le qr-code de la clé publique que je peut scanner avec césium :stuck_out_tongue:
Je vais continuer à faire mumuse avec ce truc … :wink:

6 Likes

Mais si c’est possible, en fait! du coup :

            if self.amount == int(self.amount) :
                txt = "\n".join([str(int(self.amount)) + " " + G1_SYMBOL])
            else:
                txt = "\n".join([str(self.amount) + " " + G1_SYMBOL])

OK, version 0.1.0 publiée.

  • utilise duniterpy 0.58.1 pour éviter le souci remonté par @gerard94
  • inclut les propositions de @Maaltir
1 Like

Hello,
Je découvre G1Dons, et je trouve l’idée géniale !
En complément du travail en Python, n’est-il pas possible de faire une interface web en PHP notamment ?
De ce que j’ai cru comprendre G1Dons utilise duniterpy pour faire le lien entre les « pourboires » et le portefeuille g1.
Du coup, est-il possible de créer une interface web en PHP qui fait de simple appels exec au script gdon ?
Si tel est le cas je pense, pouvoir faire quelque chose :stuck_out_tongue:

Merci pour vos retours !

1 Like

Un site en PHP qui appelle gdon en ligne de commande pourrait fonctionner, mais ce ne serait pas très propre. Si tu connais un peu le python, ce serait plus facile d’utiliser un framework web comme Flask par exemple

3 Likes

J’imagine que c’est faisable. @ofontes avait créé une page web en PHP qui utilisait Silkaj pour créer les transactions. Un service entièrement en Python serait sans doute plus propre, mais c’est aussi la joie du libre : prendre les briques logicielles qui nous sont utiles, même si le résultat est un peu bancal.

Attention si vous faites ça, à prévoir comment les usager.e.s vont récupérer les Ğ1dons qu’iels ont émis.

Quant à moi, je n’ai aucune compétence en PHP, je ne vais pas relire ni intégrer vos contributions à Ğ1Dons. Mais je serais heureux, si vous montez votre propre service, d’apporter toute l’aide qui m’est possible.

Le but est-il de faire le travail de G1Don côté serveur avec une interface web ? Ça nécessiterait de faire confiance à l’admin du serveur, qui pourrait récupérer les identifiants du compte source et du compte don.

J’y ai déjà réfléchi, alors je donne le truc :

  1. la personne indique combien de dons elle compte créer.
  2. le serveur génère les dons et le doc de récupération, et un compte intermédiaire.
  3. La personne verse la somme nécessaire sur le compte intermédiaire, qui répartit aux comptes de don
  4. le serveur envoie les feuilles de GDon et les docs de récupération à la persone.

Ainsi, l’admin n’a “que” les clefs privées des comptes de don et du compte intermédiaire. Pas de risque de fuite d’identifiants membres.

En effet c’est moins risqué, mais l’admin malveillant peut quand récupéré les dons a son compte!
G1dons m’a permis de faire quelques cadeaux de noël, j’attends de voir s’ils seront appréciés à leur juste valeur. :wink: