Possibilité de faire des paiements par SMS


#1

Bonjour,
Je suis nouveau mon pseudo sur G1 est Nico et le début de ma clé public est qzCUKaC…
J’ai une association en création qui s’appel Liuresa son site est liuresa.fr qui a de multiples activités.
J’ai eut des contacts avec Eloïs pour des explications sur le fonctionnement de duniter.
Je suis informaticien plus orienté C/C++, Delphi, Linux, etc…

Je suis dans une région où la 4G, 3G ou même H ne passe pas bien et de plus je voudrais laisser la possibilité au plus grand nombre de personnes de payer en monnaie libre G1.

Imaginons que les numéros de téléphone mobile des utilisateurs de la monnaie soient connu par duniter.

Imaginons un utilisateur Nico qui possède 150G1 et qui veut payer 100G1 à un autre utilisateur Emanee qui possède 0G1, il passe par un serveur spécial dont il connais le numéro de téléphone (SMSG1).

On pourrait imaginer:

Nico envoi au serveur SMSG1 le message:
Emanee 100

Nico reçoit le code en provenance du serveur SMSG1:
Xy3FG

Il donne ce code ainsi que le numéro de téléphone de SMSG1 à Emanee.
Emanee envoie donc à SMSG1:
Xy3FG

Pour valider la transaction le serveur SMSG1 envoi à Nico:
Solde 50G1

Le serveur SMSG1 envoi à Emanee:
Solde 100G1

Voici la fin de mon exemple, j’attends vos réactions pour connaitre la faisabilité de ce procédé de paiement.


Discussions autour de Silkaj
#2

C’est beaucoup trop tôt. Ce genre de facilités interviendra au mieux d’ici 5 ou 6 ans, pour l’instant Ğ1 n’est adopté que par 100 membres : on est très loin du “plus grand nombre” à utiliser Ğ1.

Pour l’instant le cœur doit encore faire ses preuves !


#3

Oui c’est tout a fais faisable, et ce serait effectivement très utile, tu veut développer ça ?

Après je vois plus ça comme un service tiers, comme Cesium+ par exemple, afin que seul les utilisateurs souhaitant bénéficier de ce services renseignent un numéro de téléphone.

Techniquement la seule difficulté c’est de récupérer la signature numérique de l’émetteur de la transaction par sms, on peut envisager une appli tel qui fonctionne sans internet ainsi :
A veut envoyer 100 Ğ1 à B
A envoi par sms : B 100
le serveur sms génère le document de la tx en renvois par sms le hash de la tx
A signe le hash avec une appli hors-ligne.
A renvoie la signature au serveur sms, qui vérifie si la signature est valide, et qui propage le document au réseau
Ça peut marcher aussi avec des QRcodes qui serait transmit via MMS.

Je comprend la frustration de ceux qui veulent vivre dans une économie libre mais dont l’accès a internet est difficile, nous faisons notre maximum pour développer la monnaie libre mais nous sommes encore trop peu nombreux à contribuer activement, donc oui pour le moment Ğ1 n’est utilisable que dans les zones avec internet.
Après si tu veut nous aider, ça ira toujours plus vite que si tu nous regarde faire :slight_smile:


#4

Merci Éloïs de donner des espoirs pour la mise en place de nouveaux outils.

En effet je vois cette possibilité comme un outil qui viendrait en plus de ceux déjà existants.

Peut-être que je pourrais développer cet outil en créant moi-même des portes monnaies pour les personnes qui s’enregistrerais sur mon outil, comme ça la personne aurait un porte monnaie spécialement pour ces transactions par SMS et son autre compte qui aurait son dividende.

Par contre je pense que pour des raisons de sécurités le serveur est obligé de renvoyer un code par SMS comme je l’ai mis dans l’exemple, car il est possible à l’heure actuelle d’envoyer un SMS au nom d’une personne, mais il n’est pas possible d’en recevoir un au nom de celle-ci.


#5

Oui c’est ce que j’entendais par service tier, concrètement il suffit que ton programme est son propre portefeuille Ğ1 non-membre et que tes utilisateurs versent une partie de leur DU sur la clé publique de ton programme.

Ton programme, en accédant à la blockchain Ğ1 saura de quel membre proviennnent les sous, et tu pourra gérer leurs sous via ton propre système de gestion de compte avec tes codes.
Note bien que celui qui reçoit une transaction par SMS n’a pas besoin d’utiliser ton service, ton programme possédant un portefeuille Ğ1, il peut lui même verser la monnaie au destinataire de la transaction.
Seul l’émetteur d’une transaction par SMS aurais besoin de s’inscrire sur ton service, tu saisie ?
Par exemple c’est ce que fait remuniter : https://github.com/duniter/remuniter

Il reste une difficulté : pour transférer une part (ou la totalité selon leurs choix) de leur DU sur ton service, les utilisateurs ont besoin d’internet, mais ça ils peuvent le faire de manière ponctuelle dans un lieu public ou au bureau d’une asso, tout comme en monnaie-dette les retrait en DAB sont très ponctuels quand on vit en zone isolée.

Je t’invite pour commencer, a étudier le format des transactions décrit ici : https://github.com/duniter/duniter/blob/master/doc/Protocol.md#transaction


#6

Je voudrais bien remettre ce projet en route.
A la manière du service “Pay by TXT”, https://bristolpound.org/howtxt2pay

Je peux mettre en pratique mes compétences PHP, MySQL et Shell (bash, reggexp, perl ) et utiliser Twilio (asterisk ou autre ensuite) pour réaliser un service similaire…
Je voulais utiliser Silkaj en ligne de commande (https://silkaj.duniter.org/) pour déclencher sur réception de SMS les transactions à partir d’un portefeuille géré par un site web où les utilisateurs ouvrent un compte et y déposent Nom, Monnaie(G1), RIB (clef publique), N° portable et définissent leur PIN.

J’ai toutefois qq questions:

Cette approche vous parait-elle réaliste et réalisable? Pour faciliter l’enregistrement des utilisateurs au service (copie clef publique), il serait possible d’envoyer la photo de son flash code au serveur du service PaybyTXT. Ou de s’interfacer à Cesium directement?
Quelles autres API et langages autre que Silkaj sont disponibles pour lancer des transactions?

Je vais installer un noeud Duniter G1-Test pour bricoler avec tout ça :wink:


#7

oui :slight_smile:

oui et oui

Aujourd’hui seule l’API BMA permet d’envoyer des transactions à Duniter, il existe 3 logiciels client dont le code permet d’envoyer une transaction : Silkaj et Sakia tout deux en python, Cesium en javascript.

:smiley:

Pour obtenir de l’aide rapide n’hésite pas a nous rejoindre sur le salon xmpp duniter @ muc.duniter.org, ya du monde aux horaires de bureau :wink:


#8

5 messages ont été déplacés vers un nouveau sujet : Création de compte membre avec Silkaj et API python


#13

10 messages ont été intégrés dans un sujet existant : Création de compte membre avec Silkaj et API python


#14

J’ai bien avancé [ https://bank.madeinzion.org ], et j’ai un truc fonctionnel qui permet de créer des portefeuilles et d’envoyer des payements par SMS en utilisant silkaj et Twilio :wink:

Il me manque la création d’une Identité Portefeuille simple qui puisse être utilisable dans cesium…
J’utilise les exemples de duniterpy en ligne de commande directement avec un patch crado

import sys
salt = sys.argv[1]
password = sys.argv[2]
UID = sys.argv[3]

python3.5 ./create_and_publish_identity.py Salt Password MyUID
Creating a client session outside of coroutine
client_session: <aiohttp.client.ClientSession object at 0x7fbfb26ac7f0>
{
“pubkey”: “47oSf1bFRpt93BnJahTV2gPGjAknqr2vHBoizADKJ3uV”,
“uids”: ,
“signed”:
}

Ensuite, je me demande s’il est normal que rien n’apparaissent dans “uids”: , ?

J’ai une erreur en essayant de me connecter sur https://g1-test.duniter.fr/#/app/home

En recommençant je bloque sur "Veuillez Patienter"
En rafraîchissant la page, je suis connecté…
Mais je n’apparais pas dans l’Annuaire sous “MyUID”?
Pourtant je suis là: http://g1-test.duniter.org:10900/wot/lookup/MyUID


#15

Pour l’inscription j’ai associé “create_and_publish_identity.py” avec "send_membership.py"
Ca donne:

python3.5 ./sms_user_create.py Pouf Pouf Paf
Creating a client session outside of coroutine
client_session: <aiohttp.client.ClientSession object at 0x7f1b305de940>
{
“pubkey”: “FSDZTqtmHvSSE9ECeetLuChMtbKWrQYshgQxSc1ZcXCN”,
“uids”: ,
“signed”:
}
{
“signature”: “yMHWNCw/tDduCE0zF5m0VhoJI5BQ7Rs+sZHD3c+zE3wi0zUcgX11zN3VWeQBnEk6BXpQvXqp7NiAo7g6fvNQCA==”,
“membership”: {
“version”: “10”,
“currency”: “g1-test”,
“issuer”: “FSDZTqtmHvSSE9ECeetLuChMtbKWrQYshgQxSc1ZcXCN”,
“membership”: “IN”,
“date”: 0,
“sigDate”: 0,
“raw”: “Version: 10\nType: Membership\nCurrency: g1-test\nIssuer: FSDZTqtmHvSSE9ECeetLuChMtbKWrQYshgQxSc1ZcXCN\nBlock: 133840-0000664AB7A6CDC8648020180089FF38F22CC924AB85795FF59C2F2CE583D90A\nMembership: IN\nUserID: Paf\nCertTS: 133840-0000664AB7A6CDC8648020180089FF38F22CC924AB85795FF59C2F2CE583D90A\n”
}
}

Et j’ai le même problème à la connexion à Cesium… I am lost ;(


#16

Alors attention ta screen ce n’est pas une erreur, c’est le message normal qui s’affiche lorsque le portefeuille sur lesquels tu te connecte à un historique vide, verse une GT dessus et tu verra que tu n’aura plus ce message :wink:

Pour le reste, si tu veut créer un dépot sur notre gitlab pour y travailler sur ton programme de traitement par sms n’hésite pas a me solliciter :slight_smile:

En revanche pour tout ce qui concerne l’api python je ne peut pas t’aider :confused:


#17

Je me disais bien qu’il fallait remplir le portefeuille… J’ai 100 GT pour jouer :wink: Je vais en envoyer 1 dans chaque nouveau portefeuille pour voir.


#18

Un portefeuille simple, c’est juste une clef publique, créée à partir de credentials. Tu peux en créer à l’infini avec le script d’exemple :

examples/create_public_key.py

Ce script permet juste de vérifier les credentials d’une clef publique…

Mais pour que la clef publique soit stockée en piscine ou en blockchain, il faut qu’elle soit la source ou destination d’une opération. En l’occurrence une transaction.

Pour créer un portefeuille simple, il faut donc faire une transaction de ou vers cette clef. c’est tout.
Ne pas créer ni publier une identité, ne pas publier un document membership.


#19

OK, c’est une transaction qui va inscrire la présence du portefeuille en blockchain!! Of Course :wink: J’ajoute ça à mon code…


#20

YES!! Payer par SMS ça marche!
Je n’utilise finalement que silkaj pour lequel j’ai modifié les entrées / sorties pour interagir avec shell_exec() en php :wink:
Pour le moment j’utilise Twilio qui facture 16 cts / SMS (https://www.twilio.com/) !!
Il va falloir que j’utilise https://raspisms.raspbian-france.fr/ avec un dongle 3G et une SIM abonnement illimité pour baisser les coûts d’exploitation (mais je ne suis pas sûr que les opérateurs adorent…)

Enfin, on a un bon Proof Of Concept déjà :wink:
Pour essayer, il faut envoyer des SMS au 0644641280 :

  1. Pour créer un portefeuille:
    NOUV

Compte G1-Test
Identifiant: 06XXXXXXXX
Code : 1234
___ Utilisation ___
SOLDE 1234
PAYER 1234 06yyyyyyyy 3.40 Un commentaire
__ Portefeuille __
https://g1-test.duniter.fr/#/app/transfer/A1nxLW1aGzhHR3Azd4bZkToKUPnbZTKhcbFbFWXnac1o
____ LibreBankSMS ____
https://bank.madeinzion.org

  1. Pour lancer une transaction:
    PAYER 1234 06yyyyyyyy 3.40 Un commentaire

Transfert de 3.40 G1-Test réussi!
Solde : 134.30 G1-Test
____ LibreBankSMS ____
https://bank.madeinzion.org

Le destinataire 06yyyyyyyy ne reçoit pas encore de SMS de confirmation (pour raison de coût du SMS expédié)

  1. Pour connaitre le solde du compte
    SOLDE 1234

SOLDE (06XXXXXXXX)
Total : 134.30 G1-Test
___ LibreBank SMS ___
https://bank.madeinzion.org

On peut se connecter à Cesium https://g1-test.duniter.fr/
Salt = 06XXXXXXXX / Password = 1234 [ Numéro de téléphone / Code ]

@mamygeek, @elois, @vtexier, @Inso, @jytou, @nanocryk je vous invite à essayer…
Pourriez-vous certifier MadeInZion (ce compte offre 0.1 GT aux nouveaux inscrits) PubKey = A1nxLW1aGzhHR3Azd4bZkToKUPnbZTKhcbFbFWXnac1o


Gagnez ensuite jusqu'à 300 € + 300 Ḡ1 / mois
#21

Attention, un compte ayant moins de 1 GT voit son solde mis à 0 (c’est un besoin technique). Juste pour être sûr que tu en es conscient.


#22

Ah, non, je ne savais pas. Allez, je monte le premier virement à 1 GT


#23

Si je comprends bien, c’est un compte d’« entreprise » ou d’« association », pas un compte rattaché à une personne physique.
Dans l’idéal, on ne devrait pas le certifier, mais il pourrait se financer soit par des dons, soit en prélevant une partie de la monnaie transférée.

J’aimerais résumer ce que j’ai compris :

  • n’importe qui avec un numéro de téléphone peut se créer un compte, c’est ton système qui alloue un code PIN. J’avoue que j’aurais préféré laisser l’utilisateur choisir en faisant « NOUV 1234 ».
  • un utilisateur avec un compte peut envoyer de la monnaie à un autre utilisateur ayant aussi un compte, juste avec son numéro de tel.
  • ce compte doit être approvisionné séparément, un simple portefeuille contenant des clopinettes pour faire des petits paiements par SMS.

Le PIN pourrait être plus long, s’appeler « password » plutôt que PIN et même contenir de l’alphanumérique, car je crains que les gens confondent avec leur code PIN de SIM, Et on devrait pouvoir en changer plus tard, en cas de compte compromis par exemple.

Petite remarque : le lien en haut à gauche sur ton site renvoie vers Ğ1, pas Ğ-test, attention à ce que les gens n’essaient pas sur Ğ1…
Pour tester, est-ce que tu as un numéro où on peut envoyer de la monnaie ? Edit j’ai envoyé à ton numéro, ça a l’air de marcher. :slight_smile:
Bon par contre le PIN en dur dans le SMS c’est quand même pas très sécurisé, si ? C’est chiffré un SMS quand ça transite sur le réseau ?

PS: je connaissais pas raspisms, ça a l’air intéressant, ça !


#24

Tu as raison, ici il ne devrait pas y avoir de certifications vu que c’est juste un portefeuille qui sert à offrir son premier GT au nouveau portefeuille. Ce serait plutot un truc ala remuniter. Mais vu que c’est pour G1-Test, je pense que la certification sera plus simple…

  • n’importe qui avec un numéro de téléphone peut se créer un compte, c’est ton système qui alloue un code PIN. J’avoue que j’aurais préféré laisser l’utilisateur choisir en faisant « NOUV 1234 ».

oui. Le choix du PIN est fait par le serveur, mais pourquoi pas laisser l’utilisateur le définir.

  • un utilisateur avec un compte peut envoyer de la monnaie à un autre utilisateur ayant aussi un compte, juste avec son numéro de tel.

Exact. On pourrait aussi faire des transactions en utilisant l’UID si le compte est membre.

  • ce compte doit être approvisionné séparément, un simple portefeuille contenant des clopinettes pour faire des petits paiements par SMS.

Oui, c’est un wallet “spécial” pour envoyer/recevoir des transactions par SMS (du cash). Beaucoup moins sécurisé car le serveur mémorise le Salt/Password/Pubkey. Ainsi en forgeant le numéro appelant et en envoyant le bon PIN, on peut hijacker un Compte (mais c’est pas si simple)

Pour éviter une perte trop importante en cas d’action malveillante, le SMS Wallet pourrait se vider automatiquement vers le compte de l’utilisateur certifié au dessus d’un certain montant.

Le PIN pourrait être plus long, s’appeler « password » plutôt que PIN et même contenir de l’alphanumérique, car je crains que les gens confondent avec leur code PIN de SIM, Et on devrait pouvoir en changer plus tard, en cas de compte compromis par exemple.

J’ai conservé un PIN court pour qu’il reste simple à mémoriser. Ce service s’adresse aux gens sans smartphone ni compétences informatique (comme le PAYbyTEXT de la Bristol Pound)…
Cesium / Duniter pour accéder au compte certifié
LibreBankSMS pour avoir un porte monnaie compatible avec tous les gens qui ont un téléphone 2G.
On pourrait même faire un service vocal pour être compatible avec les téléphone filaires à cadran et en bakélite :wink:

Petite remarque : le lien en haut à gauche sur ton site renvoie vers Ğ1, pas Ğ-test, attention à ce que les gens n’essaient pas sur Ğ1…

Yes, je corrige

Pour tester, est-ce que tu as un numéro où on peut envoyer de la monnaie ? Edit j’ai envoyé à ton numéro, ça a l’air de marcher. :slight_smile:

C’est le Wallet du serveur SMS qui offre le premier GT, merci pour le cadeau :wink:

Bon par contre le PIN en dur dans le SMS c’est quand même pas très sécurisé, si ? C’est chiffré un SMS quand ça transite sur le réseau ?

La sécurité est moindre, mais plus importante que dans un porte-monnaie dans la poche arrière du pantalon :wink:

PS: Aucun système n’est sécurisé complêtement… Le jour où l’ordinateur quantique calcule plus vite que la lumière, les blockchain du monde entier se feront hijacker. On peut déjà s’amuser
Avec le réseau téléphonique: https://korben.info/rien-quavec-numero-de-telephone-possible-de-hacker-comptes-web-de-quelquun-twitter-facebook-whatsapp-etc.html
Les ports USB: https://blog.cygilant.com/blog/bid/352848/infected-usb-firmware-is-unstoppable
Les images qui exécutent du JS: http://www.qo-op.com/blog/2015/11/09/infecte-par-une-simple-image/
Et je ne parle pas de la dernière faille trouvée dans les processeurs qui pourrait nous faire naitre un Pearl Harbour numérique très bientot…
Heureusement, ce ne sont pas des pratiques courantes de la plupart des gens…