Possibilité de faire des paiements par SMS

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.

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 : GitHub - duniter/remuniter: Donation service to block issuers

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 : duniter/doc/Protocol.md at master · duniter/duniter · GitHub

4 Likes

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 Likes

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:

5 Likes

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

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

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

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 ;(

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:

1 Like

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.

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.

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

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, @vit, @Inso, @jytou, @nanocryk je vous invite à essayer…
Pourriez-vous certifier MadeInZion (ce compte offre 0.1 GT aux nouveaux inscrits) PubKey = A1nxLW1aGzhHR3Azd4bZkToKUPnbZTKhcbFbFWXnac1o

4 Likes

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.

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

1 Like

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 !

1 Like

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…

5 Likes

Oui c’est exactement l’idée que j’avais quand j’en parlais à l’époque avec @NicoLiuresa, qui voulait développer la même chose que toi mais je n’ai plus de nouvelles de sa part.

Aussi pour éviter les perte de monnaie liés aux erreurs de saisie du numéro, on avait imaginer le mécanisme suivant :

  • le destinataire de la monnaie reçoit un code
  • l’émetteur doit envoyer ce code au serveur sms pour finaliser la transaction.

Pour l’envoi vers des portefeuilles duniter classiques ce n’est évidemment pas possible de se prémunir des erreurs de saisie, faudra attendre qu’on intègre un mécanisme de checksum (protocokle v11).

Alors no, en réalité seules certains types précis de calculs se feront plus vite de manière quantique, d’autres types de calculs sont au contraire plus lent en quantique qu’en binaire, c’est pour cela qu’il est possible de concevoir des algos quantico-résistants :slight_smile:

Oui de toute façon le sms c’est unsafe de base, je pense que ça pourrait etre a l’instar de “paiement sans contact des CB” limité a de faibles montants.

3 Likes

Testé avec succès ! Bravo ! :tada:

Petites typos sur le site web :

la nouvelle crypto monnaie Ḡ1 comporte une innovation majeure !

Elle est co-produite par ses membres afin que tous partagent à parts égales la valeur ajoutée que la société produit.

1 Like

Si tu as des demandes sur Silkaj, il faut voir avec son génial créateur @Moul !

Tu vois @Moul, Silkaj est devenu incontournable maintenant, et ce n’est que le début ! :wink:

4 Likes