[GVA] CU "Emettre une transaction avec ou sans réseau"

Le cas d’utilisation (CU) est le suivant :

CU “émettre une transaction avec ou sans réseau”

Objectif

L’utilisateur veut émettre une TX, par exemple depuis son ordiphone.

  • de manière quasi-instantanée;
  • en évitant tout risque de rejets de la TX (à cause de fork - la double dépense reste un risque de rejet, mais minime dans le cas d’un usage normal);
  • avec du réseau (cas général);
  • ou sans réseau (scénario alternatif);
  • le mode de transmission de la TX varie suivant la connectivité : transmission réseau, QRCode (à scanner par le destinataire), email, sms, etc

Implémentation

Tout se passe donc côté client. De quoi à besoin le client pour généré une TX, avec ou sans réseau ?
A priori seulement :

Une synchronisation silencieuse des sources pourra donc être réalisée, dès que la connectivité réseau le permet, pour constituer un index des sources en local. Il s’agit donc de récupérer non pas toutes les sources, mais uniquement un delta, dans le but d’actualiser - le plus rapidement possible - cet index :

  • Récupération des sources, à partir d’une date de dernière synchro :
  • Nouvelles sources issues de paiements reçues, ou de DU;
  • Sources connus nouvellement consommées, à actualiser comme tel dans le client;
    Elles ont pu être consommées via une TX émises par client (la sources aura déjà un état “consommée en attente de prise en compte”), ou en dehors du client (par exemple depuis la version bureau).
  • Actualisation de l’index local;
  • Calcul ad-hoc : actualisation de la balance du compte, notifications à l’utilisateur, etc ;

Réduire le risque de double dépense

Pour éviter le problème des doubles dépenses, les différentes versions de logiciels (ordiphone, bureau) pourraient avoir un ordre de consommation des sources différent. Par exemple :

  • en priorité les sources terminant par /[0-9A-H]/ pour les version mobiles, soit 18 valeurs possibles;
  • et /[I-Z]/ pour les versions bureau, soit également 18 valeurs possibles;
2 Likes

Transmettre une TX au destinataire n’apporte aucune preuve qu’il pourra récupérer les fonds. Un des inputs de la TX pouvant être bloqué sciemment par ailleurs pour arnaquer le vendeur.

La seule façon de transmettre un document TX au vendeur de manière sécurisée pour le vendeur c’est justement les Lightning Network.
Mais cela nécessite soit :

  • qu’un channel existe déjà entre l’acheteur et le vendeur
  • ou que l’acheteur et le vendeur est chacun un channel avec un tiers commun (à noter qu’il n’y a pas besoin de faire confiance au tiers commun, c’est toute la force des LN),

Et avec les LN pas besoin de récupérer un delta des sources.

Pour les paiements sans LN : une connexion internet ou un tiers de confiance est nécessaire sans quoi le vendeur n’a aucune garantie possible.
Pour les paiements sans connexion internet et sans LN il est nécessaire de passer par un tiers de confiance (par exemple prestataire de paiement par SMS ou autre).

Le cas d’usage que tu décris n’est pas acceptable en termes de sécurité, Dans les cas d’usages acceptables que j’indique, il n’est pas nécessaire d’obtenir un delta des sources. Je ne développerai donc pas cette fonctionnalité, sauf à ce qu’un cas d’usage sécurisé le nécessite.

3 Likes

Je penses que nous nous sommes mal compris. Je n’aurais pas du te parler du mode hors ligne, car cela n’est pas indispensable à mon besoin initial d’avoir les sources.

Tu est d’accord, que, de toute façon :

  • il faut les sources pour générer les TX ?
  • qu’il faut du réseau pour récupérer les sources ?

C’est ce que Cesium fait déjà, sans que la sécurité ne soit un problème.

Je recherche avant tout un moyen optimiser pour récupérer ses sources. SI je les stocke localement, cela permet de ne demander que ce qui a changé. Ce qui a l’avantage de réduire la lecture de la BDD du noeud, tout en allégant la charge réseau. Typiquement, si l’utilisateur n’a utilisé (depuis plusieurs jours) que son ordiphone pour payer, et que toutes ses TX sont passées en BC, alors la requête GVA sur les sources devrait ne rien renvoyer, ou bien juste les sources validées entre temps (acquittement sur des sources déjà connues par l’ordiphone). Par rapport à aujourd’hui, cela me semble un gros progrès en terme de fluidité. Cela supprimerai les temps d’attentes au lancement de l’App.

Laissons de côté l’usage en hors ligne, pour le moment.

2 Likes

Un message a été scindé en un nouveau sujet : [GVA] Sécurité des transactions émises hors ligne?