mardi 21 avril 2015

Clearstream et les affaires, il existe une alternative !

Avant propos

L'idée d'écrire cet article, m'est venue alors que j'écoutais un épisode de l'excellente émission "Affaires Sensibles" animée par Fabrice Drouelle sur France Inter. L'émission du mercredi 25 février, très justement intitulée "Affaire Clearstream : règlement de comptes au sommet de l'Etat", nous gratifie d'une explication de texte concernant les mécanismes utilisés par Clearstream pour remplir le rôle qui lui a été confié et les répercussions pour le moins néfastes des moyens utilisés pour sa mise en oeuvre.
Clearstream, c'est un organisme interbancaire qui conserve la trace de toutes les transactions effectuées par les banques entre elles dans le monde entier. En d'autres termes, c'est un peu la banque des banques, elle a le statut très particulier d'être une chambre de compensation, son rôle est de fluidifier les échanges et d'enregistrer, tel un notaire, toutes les transactions financières qui se déroulent à travers le monde, on pourrait dire qu'elle est un peu la mémoire de l'argent, une mémoire des mouvements financiers qu'elle conserve et entretient dans d'immenses registres informatiques. Basée au Luxembourg, Clearstream bénéficie de la protection du secret bancaire du duché, ce qui rend donc toutes ces pratiques très opaques...
Affaire Clearstream : règlement de comptes au sommet de l'état - 8:00 mn

Aujourd'hui, il existe les moyens techniques pour mettre en oeuvre une solution plus juste qui pourrait être décrite de cette façon :
X, c'est un protocole interbancaire qui permet de conserver la trace de toutes les transactions effectuées par les banques entre elles dans le monde entier. En d'autres termes, c'est un peu la banque des banques, elle a la fonctionnalité très particulière d'agir comme une chambre de compensation, son rôle est de fluidifier les échanges et d'enregistrer, tel un notaire, toutes les transactions financières qui se déroulent à travers le monde, on pourrait dire qu'elle est un peu la mémoire de l'argent, une mémoire des mouvements financiers qu'elle conserve et entretient dans d'immenses registres informatiques publics. Basé sur une base de données ouverte et distribuée, le protocole mise sur une transparence totale. Grâce au mécanisme de consensus et à la cryptographie, l'intégrité des données est mathématiquement garantie, c'est à dire qu'une organisation ou un individu seul ne peut pas modifier l'historique des transactions et que chaque transaction est connue et vérifiée par toutes les banques.

Clearstream, parangon de la finance traditionnelle

Initialement, Clearstream a été créé par un consortium de banques pour contrebalancer le monopole d'Euroclear, qui était alors détenu par l'américain JP Morgan. Ironiquement, aujourd'hui c'est Clearstream qui est accusé par la Commission Européenne d'abus de position dominante pour déni de service au détriment d'Euroclear.
Clearstream est une chambre de compensation, c'est à dire qu'elle enregistre toutes les transactions de ses clients (banques/institutions financières) entre eux et tient à jour le solde de leur compte. Quand un client a une balance déficitaire et que le solde de son compte est nul, il doit le renflouer avec de nouveaux capitaux.
Les clients de Clearstream peuvent choisir d'ouvrir un compte publique où les transactions seront visibles, ou un compte privé dont les détails sont laissés à la discrétion de Clearstream et de son client. La plupart des clients de Clearstream détiendraient un ou plusieurs comptes privés en plus de leurs comptes publiques, afin de pouvoir mener à bien des transactions qui nécessiteraient une certaine discrétion. Bien sûr, toutes ces données sont placées sous la protection de la loi du secret bancaire du Duché du Luxembourg, et l'on peut imaginer que les transactions de ces comptes sensibles soit anonymisées de telle manière qu'il serait impossible de reconstruire les détails de l'historique des transactions de ces comptes même si l'on pouvait accéder aux données gardées par Clearstream.
Clearstream a été l'objet d'un audit fait par un cabinet privé, KPMG, qui en a conclu qu'il n'y avait aucune irrégularité dans la gestion des comptes faite par Clearstream. Toutefois, seul la conclusion du rapport a été rendue publique, le contenu du rapport en lui-même n'a pas été dévoilé.

La Blockchain, transparente par design

Dans son papier paru en 2008, Bitcoin: A Peer-to-Peer Electronic Cash System, le dénommé Satoshi Nakamoto introduit le nouveau concept de blockchain, une base de donnée distribuée contenant l'historique de toutes les transactions effectuées. La blockchain  fait office de registre publique, tout un chacun peut en vérifier l'intégrité à tout moment. La solution technique apportée par le concept de blockchain est d'une élégante simplicité doublée d'une efficacité redoutable :

  • les nouvelles transactions sont incluses dans un nouveau bloc
  • chaque bloc contient une référence au bloc précédent
  • valider un bloc revient donc à valider tous les blocs précédents
Chaque transaction incluse dans la blockchain voit donc sa validité augmenter à chaque bloc qui est rajouté. Grâce à l'utilisation de techniques cryptographiques avancées, on est en mesure de prouver à tout moment que l'historique des transactions n'a pas été modifié.

Aujourd'hui, les transactions effectuées au sein de Clearstream sont validées unilatéralement par ce dernier. On a longtemps cherché comment résoudre ce problème d'unique point de contention (Single Point of Failure) qui permet à un acteur unique d'agir contre les intérêts des autres acteurs présents. Depuis que Bitcoin a ouvert la voix en dévoilant sa propre solution au problème, beaucoup d'autres solutions ont été trouvées, chacune avec des propriétés uniques adaptées à un cas particulier.

La solution désirée devrait permettre aux autres acteurs ayant des intérêts pour le bon fonctionnement de Clearstream de prendre part au processus de validation des transactions. Ces différents acteurs peuvent être Clearstream, leurs clients directs ou même des autorités publiques comme la Commission Européenne. Contrairement à Bitcoin, les différents acteurs prenant part au processus de validation peuvent être connus et pourront rendre des comptes en cas de mauvais comportement.

Il est donc possible de mettre en place un mécanisme de validation des transactions s'appuyant sur une liste blanche d'acteurs connus qui devront arriver à un consensus à hauteur de 90%. Si vous avez lu mon article sur le protocole Ripple, vous reconnaîtrez que la solution que je propose est celle utilisé par le protocole Ripple. Concrètement cela revient à décentraliser le pouvoir de validation jusque là détenu par Clearstream et obliger les différents acteurs à coopérer s'ils veulent que le système continue à fonctionner correctement, toute tentative d'agir contre les intérêts des autres acteurs sera instantanément identifiée et contrée.

Jusque là, on pourrait croire que la solution proposée est de se débarrasser de Clearstream. Au contraire, dans la solution proposée, Clearstream joue un rôle central, celui qui est son rôle premier, celui de chambre de compensation. Plus que d'affaiblir ses activités, il s'agit de les recentrer, de lui donner les moyens de remplir son rôle sans se soucier des considérations techniques.

Le rôle de Clearstream est de garder des fonds au nom de ses clients et de leur permettre d'effectuer des transactions financières avec leurs autres clients sans que les fonds ne changent physiquement de place. Clearstream devrait donc collecter, protéger et garantir les fonds physiques de ses clients, mais aussi gérer la création des fonds virtuels sur la blockchain sous jacente.

Quand un client effectue un dépôt de fonds physique chez Clearstream, Clearstream peut alors créer un équivalent virtuel sur la blockchain et les envoyer au client qui pourra en disposer à sa convenance. Afin que la transaction de création des fonds soit validée par les autres acteurs du réseau, Clearstream devra leur fournir les documents afin de prouver que le dépôt est réel. De la même façon, si un acteur veut retirer des fonds qu'il détient virtuellement, Clearstream devra prouver que le transfert des fonds physiques à bien eu lieu pour que leur équivalent virtuel soit détruit.

A tout moment, l’ensemble des fonds virtuels doit être égal à l'ensemble des fonds physiques détenus par Clearstream au nom de ses clients.

Il est temps que chacun  prenne ses responsabilités

La solution qui est proposée nous offre un degré de sécurité des plus élevés actuellement, et il existe des scénarios d'attaques malveillantes, qui, bien qu'improbables, sont pourtant réels. Une entité malintentionnée doit arriver à prendre le contrôle de plus de 90% des acteurs impliqués dans le processus de validation pour espérer arriver à ses fins. Une attaque par déni de service est bien plus simple et ne nécessite de corrompre que 10% des acteurs. Toute fois, une telle attaque serait vite remarquée, et les acteurs corrompus identifiés, permettant à leur propriétaire d'origine de reprendre la main. Il en serait de même pour une attaque à 90% qui serait immédiatement remarquée si l'attaquant essaye de violer les règles du protocole. Le vecteur le plus probable d'attaque serait donc de type fausses déclarations permettant le retrait de sommes non dues, ou alors un dépôt ne correspondant à la réalité. Mais comme toutes les transactions sont librement accessible grâce à la blockchain, il est possible de remonter jusqu’à la source du problème et de déterminer les responsabilités de chacun, que ce soit intentionné ou simplement par négligence. La vraie force du système n'est pas seulement d’empêcher l'apparition de problèmes à priori, mais aussi de pouvoir les régler à posteriori.

Sources

Affaire Clearstream : règlement de comptes au sommet de l’État
Fabrice Drouelle - Affaires sensibles - Mercredi 25 février 2015

Clearstream - Wikipedia EN

Faciliter les transactions internationales grâce au protocole Ripple
le-bitcoin.blogspot.com/2015/03/faciliter-les-transactions.html


Etre un idéaliste, c'est choisir de vivre dans un monde où tout est possible, plutôt que de subir la réalité d'un monde imparfait.

Guillaume Bonnot - Avril 2015

dimanche 8 mars 2015

Faciliter les transactions internationales grâce au protocole Ripple

Version compacte compliquée


Ripple est un protocole qui permet d'effectuer des transactions financières au niveau international.
Bien que le protocole existe depuis 2004, c'est l'utilisation dans l’implémentation de 2011 d'une base de donnée distribuée couplé avec un mécanisme de consensus pour en garantir l'intégrité, qui a rendu le système fiable et robuste. Le protocole est basé sur l'émission de dettes (IOU) lors de la transaction. Chaque utilisateur peut déclarer quel instrument financier il veut acheter/vendre et à quel prix. Comme le protocole est basé sur la dette, cela requière que chaque partie ait confiance en l'autre. Chaque utilisateur doit déclarer à qui il fait confiance pour quel instrument et pour quel montant. Pour compléter le système, une crypto-monnaie a été intégré dans le protocole, le XRP. Le XRP n'a pas besoin de relation de confiance pour être échangé car il ne repose pas sur le système de dette, les transactions en XRP et le montant de XRP de chaque utilisateur étant intégré dans la blockchain. Grâce à toutes les informations qui ont été enregistrées dans la base de donnée distribuée, le protocole Ripple va automatiquement essayer de matcher les ordres en utilisation un algorithme de pathfinding parcourant le graphe formé par les relations de confiances. Si l’algorithme n'arrive pas à trouver un chemin satisfaisant, il essayera de passer par une gateway qui effectuera une conversion de l'instrument d'entrée en XRP puis il cherchera une autre gateway qui effectuera la conversion des XRP vers l'instrument désiré. L’algorithme a 2 utilités principales : permettre de convertir l'instrument d'entrée en l'instrument de sortie en prenant le minimum de risque de contrepartie via les relations de confiance, mais aussi de trouver le meilleur taux de conversion. L’implémentation de la blockchain faite par Ripple est basée sur une white list de serveurs (Unique Node List) qui vont valider les transactions qui font consensus à 80%, ce qui permet un temps de confirmation de quelques secondes en contrepartie d'une faible décentralisation et donc d'une sécurité relative. Le business plan de Ripple Labs est basé sur la vente des XRP qui ont été pré-minés, ce qui fait qu'il est déconseillé aux particuliers d'investir dans cette crypto-monnaie. Néanmoins, les partenaires commerciaux de Ripple Labs sont incités à en acheter (à prix réduit), ce qui s'apparente à rentrer dans le capital de la société, et aussi à prendre part au système de consensus en ayant leur propre serveur dans la white list.

Le protocole et le réseau


Ripple est un protocole open source de payement en ligne, tout le monde peut l'utiliser librement et gratuitement. Mais Ripple est aussi un réseau qui est l'implémentation officielle du protocole et qui est maintenue par Ripple Labs. Ripple Labs est une entreprise à but lucratif, c'est elle qui est en charge du développement du réseau.

Selon Chris Larsen, le CEO de Ripple Labs, le protocole Ripple est composé de 3 éléments fondamentaux :
  • Un protocole de payement distribué
  • Une crypto-monnaie ("math based currency")
  • Une plateforme d'échange de devises
Le protocole a pour but de faciliter les transactions financières en ligne, tout en utilisant des devises qui sont familières aux utilisateurs.

L'avantage de Ripple par rapport à Bitcoin, est la possibilité pour l'utilisateur d'envoyer des euros à un autre utilisateur qui recevra des dollars, le tout en quelques secondes et sans devoir utiliser une devise intermédiaire.

Les différents acteurs du protocole


La solution proposée par le protocole Ripple identifie 3 rôles non exclusifs pour les acteurs du réseau :
  • Utilisateur- Tous les acteurs sont des Utilisateurs
  • Gateway - Acteur qui permet de faire rentrer ou sortir des devises du réseau
  • Market Maker - Acteur qui permet d'échanger des devises contre d'autres devises

Les Gateways permettent aux Utilisateurs de faire 3 actions :
  • Déposer des fonds réels et en contrepartie de l'émission d'une dette (IOU) équivalente
  • Transférer une dette d'un Utilisateur vers un autre Utilisateur de la Gateway 
  • Retirer des fonds réels en contrepartie d'une dette équivalente émise par cette Gateway

Un Market Maker est un Utilisateur qui détient des fonds sur plusieurs Gateways. Il sert d'intermédiaire lors des transactions entre Utilisateurs de différentes Gateways mais aussi de différentes devises.
Le Market Maker passe des ordres de vente et d'achat d'IOU de différentes devises qu'il détient sur différentes Gateway via le carnet d'ordre intégré dans le réseau.
Les Market Makers apportent de la liquidité aux marché des changes et font de l'arbitrage avec les autres plateformes en contrepartie d'une rémunération sur le spread des taux de change . La concurrence entre les Market Makers doit permettre aux Utilisateurs d'accéder aux meilleurs taux de change.

La dette, une histoire de confiance


Ripple est un protocole neutre qui permet d'acheter n'importe quel bien contre n'importe quel autre.
Les biens vont circuler sur le réseau sous forme de dette (IOU), cette dette représente la promesse de la Gateway qui l'a créé de délivrer physiquement le bien à quiconque la réclame. Toutes les devises qui circulent donc sur le Ripple ne sont donc que des promesses IOU faites par les Gateways qui l'ont créé.
Comme une dette n'engage que ceux qui y croient, il existe un mécanisme de confiance intégré dans le protocole Ripple. Appelé trustline, il s'agit pour chaque Utilisateur de déclarer à quelle Gateway il fait confiance, pour quel instrument et jusqu'à quel montant. Ainsi le montant maximum de dette qu'une Gateway peut créer est la somme des montants des trustlines déclaré par les Utilisateurs.
Au final, une Gateway peut être vue comme une banque, car c'est elle qui va garder les actifs des Utilisateurs sur le réseau. Cela implique aussi que la valeur de 100€ sur une Gateway A ne sera pas forcement la même que 100€ sur une Gateway B.
La force du protocole Ripple est de limiter les risques de défaut des contreparties en permettant aux utilisateurs de définir eux même la limite des risques qu'ils sont prêts à prendre. Les relations de confiances agissent au niveau individuel et non pas global.

La base de données distribuée et les transactions


Le réseau Ripple utilise une base de données distribuée qui contient toutes les informations nécessaires et suffisantes pour décrire l'état actuel du réseau. On y retrouve tous les comptes des Utilisateurs, toutes les trustlines qu'ils ont déclaré avec les Gateway, tous les IOU qu'ils détiennent sur telle Gateway, et enfin les ordres passés par les Market Makers sur le marché des changes.
Lorsqu'un Utilisateur effectue un payement à un autre Utilisateur, le réseau va résoudre automatiquement la transaction en garantissant le meilleur taux de change grâce à l'utilisation d'un algorithme de pathfinding.
Le protocole Ripple permet aux Utilisateurs d'envoyer les fonds qu'ils détiennent dans une devise sur une Gateway à un autre Utilisateur dans une autre devise sur une autre Gateway.
L'algorithme de pathfinding va regarder les ordres publiés par les Market Makers dans le carnet d'ordre pour convertir les fonds au meilleur taux.
Le protocole Ripple n'a pas besoin que 2 Utilisateurs fassent confiance à un même tiers pour qu'ils puissent échanger, ce sont les Markets Makers qui prennent les risques de contrepartie.

Le mécanisme de consensus


Le mécanisme de consensus créé et utilisé par Ripple se démarque de l'algorithme proof-of-work utilisé par Bitcoin car il a été pensé pour avoir un temps de confirmation des transactions plus rapide et utiliser moins d’électricité.
Les serveurs participant au consensus font partie d'une liste blanche appelée UNL ( Unique Node List ) qui est distribué avec l’implémentation  de référence fourni par Ripple Labs.
Chaque serveur connait donc tous les autres serveurs qui participent à la phase de consensus. Chaque nouvelle transaction est envoyé en pair à pair à chaque serveur qui va la mettre dans sa file de transaction en attente.
Le mécanisme de consensus se fait en plusieurs étapes consécutives :
  • Chaque serveur prend les transactions qu'il a dans sa file d'attente, et les évalue (valide/non valide)
  • Chaque serveur envoie aux autres serveurs le résultats de ses évaluations
  • Chaque serveur envoie aux autres serveurs le résultats de ses évaluations dont au moins 50% des autres serveurs sont arrivés au même résultat
  • Chaque serveur envoie aux autres serveurs le résultats de ses évaluations dont au moins 60% des autres serveurs sont arrivés au même résultat
  • Chaque serveur envoie aux autres serveurs le résultats de ses évaluations dont au moins 70% des autres serveurs sont arrivés au même résultat
  • Les transactions pour lesquels un consensus d'au moins 80% a été atteint, sont soit officiellement validées ou bien rejetées. Les autres transactions qui n'ont pas atteint les 80% reviennent dans la file d'attente et participeront à la prochaine phase de consensus.
A la fin de chaque phase de consensus, la base de donnée distribuée est mise à jour à partir des transactions qui ont été validées. La dernière version de cette base de données est appelée LCL ( Last Closed Ledger ). Cette méthode permet à tous les serveurs d'avoir la même version du LCL et donc d'éviter les forks. Le LCL ne peut pas être contrefait car il est signé cryptographiquement par les serveurs de la UNL.

Une crypto-monnaie intégrée


Ripple est aussi le nom donné à la crypto-monnaie intégré nativement dans le réseau, pour éviter les confusions, on utilise son trigramme international XRP ( X = international, RP = Ripple ).
La masse monétaire est fixée à 100 milliards de XRP, dont la totalité a été pré-miné et distribué partiellement par Ripple Labs. Comme certaines opérations requièrent de détruire (brûler) des XRP, la masse monétaire diminue au fil du temps et comme la valeur des XRP est définie par la loi de l'offre et la demande, leur valeur est sensée augmenter aussi. C'est sur ce mécanisme qu'est basé le business model de Ripple Labs. Seulement, comme actuellement la majorité des XRP sont gardés hors du marché en attendant que le prix monte, dès que Ripple Labs où un de leur partenaire commercial commenceront à vendre, le marché s’effondrera devant la masse de liquidités entrant dans le marché.
Les XRP permettent de lutter contre le spam car chaque action sur le réseau coûte un petit nombre de XRP qui est négligeable au niveau individuel, mais devient vite rédhibitoire en cas d'attaque du réseau.
Le fait qu'il faille avoir des XRP pour faire n'importe quelle action sur le réseau peut être un frein à l'adoption, vu qu'il faut qu'un autre compte vous envoie des XRP pour pouvoir créer votre propre compte sur le réseau.
Tous les XRP qui sont perçus comme frais de transactions par le réseau sont détruit, contractant ainsi la masse monétaire et faisant augmenter la valeur relative des autres XRP.
Les XRP permettent de fluidifier le marché des changes et de réduire les taux de changes en réduisant le nombre d'intermédiaires.
Comme XRP est la devise de référence, il existera toujours un Market Maker qui échangera la devise d'entrée contre des XRP et un autre Market Maker qui échangera des XRP contre la devise de sortie.
En théorie, si il n'existe par un Market Maker qui échange la devise d'entrée contre la devise de sortie, alors il existe un chemin passant par XRP qui permet de changer la devise en passant par 2 Market Maker.
Pour échanger une devise, il faut donc passer par 1 ou 2 Market Maker maximum.
Comme le marché des changes est un marché ouvert et ultra compétitif, le chemin le plus court est théoriquement celui avec le meilleur taux.

Sources


Ripple Knowledge Center

Ripple Wiki

Chris Larsen discusses Ripplehttps://www.youtube.com/watch?v=_SpdX36p6ao

How Ripple Works - The Consensus Process (ADVANCED)
https://www.youtube.com/watch?v=pj1QVb1vlC0

jeudi 15 janvier 2015

Les avantages du protocole Pay-to-Contract

Version compacte compliquée


L’idée c’est qu’à partir de la clé publique du marchand, le client peut envoyer le paiement à une adresse qu’il sait que seul le marchand pourra dépenser.
A partir de la clé publique du marchand, le client calcule une nouvelle clé publique via un seed aléatoire et y transfère les fonds. Le marchand dérive la clé privée associé au seed grâce à sa propre clé privée grâce aux propriétés homomorphes de ECDSA.

L’avantage est que la clé privée du marchand peut être gardée offline et que seuls le marchand et le client savent que l’adresse utilisée correspond au marchand. On ne peut pas voir toutes les transactions du marchand.

Mise en situation


Le marchand M vend des produits sur son site web.
Le client C achète des produits au marchand.
Le système de paiement P certifie le transfert de fonds entre M et C.
Le système de livraison L certifie la livraison des produits  de M vers C.

Solution technique classique


Le Marchand met à disposition du Client des Offres qui contiennent les informations suivantes :
  • description produit
  • prix
Le Client envoie un Ordre au Marchand avec les informations suivantes :
  • offre
  • quantité
  • adresse livraison
Le Marchand génère un couple clé privée/clé publique temporaire qui ne servira que pour cette transaction.

Le Marchand envoie au Client la Facture avec les informations suivantes :
  • ordre
  • prix total
  • adresse paiement
La Facture est signée par le Marchand.

Solution Pay-to-Contract


Le Marchand met à disposition du Client des bons de commandes (Offre) qui contiennent les informations suivantes :
  • description produit
  • prix
  • base d'adresse de paiement (PubM)
L'Offre est signé par le Marchand avec la clé privée PrivM correspondant à la clé publique PubM.

Le Client envoie au Marchand le bon de commande rempli (Facture) avec les informations suivantes :
  • quantité
  • adresse livraison
Le Client calcule l'adresse de paiement en hashant la Facture et PubM qui vont donner un couple clé privée/clé publique intermédiaire. On dérive PubM avec la clé publique intermédiaire, ce qui permet d'obtenir une nouvelle clé publique PubD dont la clé privée PrivD ne peut être calculé qu'en dérivant PrivM avec le hash de la Facture et de PubM.

Le Client envoie le paiement à l'adresse associée à PubD.
C'est cette transaction qui est le Contrat.

Avantages


Dans la solution classique, le Marchand doit garder sa clé privée online car il en aura besoin pour signer la Facture. Pour récupérer le paiement, le Marchand doit utiliser la clé privée temporaire qu'il a généré lors de l'émission de la facture et qui est gardée online donc vulnérable.

Le protocole Pay-To-Contract permet de garder la clé privée offline car le Marchand peut signer les Offres offline, et c'est le Client qui va signer le Contrat avec sa clé publique lors du paiement. Pour récupérer le paiement, le Marchand dérive la clé privée en offline, elle n'est donc pas vulnérable.

L'attaque qui consiste à remplacer l'adresse de paiement temporaire dans la facture émise par le Marchand pour que le Client envoie les fonds à une adresse malicieuse est de fait inapplicable.


Homomorphisme


Définition du couple clé privée/clé publique (s,P)
  • N est un nombre premier fixe 
  • La clé privée s est un entier compris entre 0 et N-1
  • La clé publique P=P(s) est fonction de s
Propriété homomorphe des clés ECDSA
  • Soit les couples clé privée/clé publique (s,P) et (t,Q)
  • Alors le couple clé privée/clé publique (s+t mod N,P+Q) est un couple valide
Implications
  • Si la clé privée t est publiquement connu alors les clés publiques P et P+Q peuvent être signés par la clé privée s

Réflexions



Le protocole Pay-to-Contract impose un changement fonctionnel conséquent dans le workflow du site Marchand.
En effet, c'est le Client qui est à l'initiative du contrat de vente qui va être signé avec le Marchand.
Ce qui peut être un challenge au niveau légal, car le Marchand n'a pas implicitement/activement accepté le Contrat.
Mon opinion personnelle est que le Contrat n'est signé par le Marchand que lorsque la transaction à été dépensée.
Une amélioration envisageable serait de rajouter un Smart Contract dans la transaction qui dit que la somme peut être dépensée seulement par le Marchand pendant N jours et que passé ce délai, seul le Client peut la dépenser.
Cela permettrait au Marchand d'accepter explicitement le Contrat ou de le refuser, et ce sans avoir à faire de remboursement au Client.

Sources


Article de référence (compliqué) : http://arxiv.org/pdf/1212.3257v1.pdf
Vidéo explicative (simple) :  https://www.youtube.com/watch?v=qwyALGlG33Q