[Ḡ1sms] Client SMS porte-monnaies libre (Ḡ1, DU, LOVE)

Présenté aux RML12, j’ouvre ce fil pour établir une réflexion technique autour du développement du service Ḡ1sms.

Code

Installé sur RaspberryPi couplé à un dongle 3G et une carte SIM.
Le code est écrit en bash shell, les scripts (./shell/*.sh) correspondent aux commandes reconnues par le serveur sms sont exécutés au travers de “sms_received.sh”. Les interactions avec la blockchain sont réalisés au travers de Silkaj (actuellement un fork 0.5.0 qui simplifie les data échangées)
>>> Code sur git.duniter.org

Evolutions

Quelques TODO sont notés dans le Readme du projet.
Ce nouveau réseau de communication permet d’imaginer de nombreux services,
Par exemple permettre des alertes sms pour gchange, programmer des virements automatiques, imprimer ses Ḡ1billets … et bien plus…

Discutons de la suite des évolutions et des différentes façons de les réaliser techniquement.

7 Likes

il faudra corrigé le numéro de tel sur la vidéo, lorsque j’ai essayé en début de semaine je suis tombé sur quelqu’un un peu surpris.

ton truc marche et c’est génial

1 Like

Quelle vidéo, quel numéro? La SIM redirige les appels vers un serveur vocal de chez linkeo (qui ont donné la puce)

Sinon, c’est le 06 66 80 57 20, pour activer un porte-monnaie, envoyer:

N uid_duniter

Tu trouveras une transaction de ton porte-monnaie vers ton compte membre pour le recharger depuis Cesium (ou autre si tu utilises ton identifiant, mot de passe reçu)
Pour virer des LOVE à ton ami(e), tu envois:

P 06_de_ton_ami(e) NNN

NB: NNN correspond au montant de LOVE que tu veux lui envoyer (1 DU = 100 LOVE)

Si tu veux envoyer des G1, change l’unité de ton porte-monnaie en envoyant

U G1

C (pour le solde du porte-monnaie)
A (pour l’aide)
D (pour recevoir les identifiants)

2 Likes
2 Likes

Effectivement, il faut remplacer 67 par 57:

06 66 80 57 20

1 Like

J’ai reçus raspi et ce qu’il faut pour le faire tourné, j’attends plus que mon dongle SIM et ma carte SIM qui devraient arriver la semaine pro pour lancer mon node g1sms en test :slight_smile:

@Frederic_Renault est-ce que le dépot git est à jour ?
Ya moyen de tester ça sans avoir de dongle branché ? Genre un mode debug ou un dry_run ?

Et est-ce qu’il y a une roadmap quelque part pour g1sms ?

2 Likes

Je suis en train de modifier le code pour ajouter la commande de création de billets :wink:
Donc une nouvelle mise à jour du code git bientot… Appelle moi quand tu veux modifier le code pour qu’on synchronise nos sources

Sans dongle SMS, le code va fonctionner sans envoyer les SMS. Pour tester, utilise sms_test.sh (qui permet de désactiver silkaj en créant un lien symbolique vers fake_silkaj.sh) et dé-commente “function gammu-smsd-inject” dans functions.sh pour voir les sms qui auraient été envoyés dans le log (/tmp/g1sms.log)

Il n’y a pas encore de roadmap, mais des idées dans le README.md

1 Like

Des billets ? De quel genre ?

1 Like

Le prototype ressemble à ça (avec une case à gratter qui cache le une partie du code pour encaissement et destruction du billet)

Celui-ci est un faux :wink:

2 Likes

Je vais coupler une petite imprimante https://www.amazon.fr/gp/product/B07FLPCBQG/ au serveur SMS pour qu’il puisse imprimer des billets :wink:
Par contre, il faudra que je sache récupérer l’adresse du membre qui fait la demande de création de billets pour lui envoyer… Du coté de duniterpy peut-être…

J’avoue ne pas comprendre très bien…
Est-ce que billet possède de la monnaie bloqué sur un compte différent de celui qui le demande ?
Quel moyen a t’on ensuite pour vérifier que le billet est unique ?
Par exemple le hash de la transaction qui a créé le billet.

C’est encore au stade expérimental… mais en pratique, c’est réservé à un portefeuille appartenant à un membre.

  1. depuis son portefeuille G1sms on demande la création de billets (montant + nombre).
    BILL 50 3” : demande de créer 3 billets de 50 UNITES
  2. Si disponible, la somme en G1 correspondante est virée dans des portefeuilles “billets” créés et contrôlés par le serveur G1sms.
    ID = diceware(4) = CODE
    PWD = diceware(3) + diceware(3) = SEC1 + SEC2
  3. Les billets sont imprimés avec CODE en clair et SEC1 sous une zone à gratter (valable pour les 6 prochains mois) par le fournisseur de service G1sms et envoyés ou donnés au membre qui a demandé la création des billets (garantissant qu’un seul exemplaire existe)
  4. Le membre échange ses billets. On peut vérifier le montant du billets par la commande “CHK CODE” qui retourne sa valeur.
  5. Avant la date de péremption, celui qui détient le billet l’encaisse (et le détruit par grattage) avec la commande “CHK CODE SEC1” qui par ajout de SEC2 vire son montant sur le portefeuille qui a envoyé la commande.

PS: un cron détruit automatiquement les billets à leur date d’échéance (perte, oubli) et récupère leurs sommes sur le compte du collectif qui gère le service G1sms.

Je compte en imprimer pour le ḠMarché de Noel à Toulouse et permettre à ceux n’ayant pas de Ḡ1 d’en acquérir… Certains billets auront une somme plus importante que celle indiquée transformant les billets en tickets de Tombola :wink:

On verra suite à l’expérience les avantages et inconvénients que cela apporte.

I :heart: :free: :money_with_wings:

2 Likes

Comme vue au téléphone, je trouve que c’est une super idée de cumuler prestataire SMS et prestataire billet, mais pour moi il faut revoir cette histoire de récupérer la monnaie à l’expiration du billet si il n’a pas été dépensé, jpense que c’est pas la bonne solution.

Ca fonctionnera, mais on perd l’utilité du billet si les gens ne peuvent même plus retirer leurs sous après expiration du billet. On verra

Hâte de voir votre tombola ^^

Il y a un problème lors de transferts pour ouvrir de nouveaux portefeuille, des transactions sont bloquées.
ex: Ftp324s5RVK9jS1ncWJ8UTWUrjC6VZCwNewtMkKNbEi2

On dirait que les commandes de paiement trop rapprochées dans le temps se chevauchent sur la timeline et ne peuvent se dérouler à cause du passage du retrait avant le crédit

Que pouvez-vous me conseiller?
Attendre entre 2 commandes pour être sûr que le crédit passe d’abord?

Je ne comprends pas bien, tu peux expliquer techniquement ce qui bloque ?

En fait, J’envoie une commande Silkaj tx 10G1 pour le remplir et direct ensuite un tx sortant (négatif) de 2 par exemple. Il semble que le -2 s’applique avant le +10 pour certaines séquences de paiement.

A quoi sert le tx sortant ?

Deux cas de figure:

  1. Je m’en sers pour envoyer une transaction (ACK) vers le compte membre lors de la création de son portefeuille G1sms. Pour connaitre sa clef publique dans Cesium et interdire de laisser un portefeuille devenir membre.
  2. Ca sert aussi à créer un lien entre le billet créé et le membre qui l’a commandé au travers de son compte g1sms. Pour créer une traçabilité et faciliter l’identification d’une zone de “monnaie dupliquée”…

Je dois dépasser la précision du timestamp blockchain, ou un truc comme ça?

1 Like

Pour continuer dans ma lancée, je voudrais mettre au point un “distributeur de monnaie libre”

https://gannonce.duniter.org/#/announce/a9fac56b-f6c1-47e1-9ee3-45b925f2a997

1 Like

G1sms annonce sa première version officielle pour le printemps.

Plusieurs nouvelles fonctionnalités ont été ajoutées:

  • “N Pseudo” permet de rattacher un porte-monnaie à un compte membre.
  • Pour répondre au problème de vol, perte d’un porte-monnaie “trop rempli”, envie de fermer son compte, la commande “VIR nnn Pseudo” a été ajouté. On peut ainsi envoyer des Unités directement à un membre qui n’a pas de porte-monnaie G1sms. Vider son porte-monnaie (combien de temps met un compte en dessous de 1Ḡ1 à disparaître?)
  • Couplé à une imprimante, le serveur G1sms imprime des G1billets! Vérifiables et encaissables par la commande CHK.

Ces fonctions sont ouvertes au tests et retour. Le code sera publié dans la semaine prochaine, vous pouvez déjà reporter vos suggestions et remarques

Reste à sécuriser le lien avec le compte membre par double authentification (email / sms), lire et écrire dans Cesium+pod, personnaliser les G1billets, améliorer la facilité d’installation du serveur G1sms, créer un site web pour synchroniser et fédérer le déploiement de plusieurs spot G1sms :wink:

Aurons-nous nos distributeurs de G1billets quand ceux que nous connaissons disparaîtront? Ce serait cool, non…

5 Likes