Blockchain protégeant l'acheteur et le vendeur sans tiers de confiance

Dans le cas du Bitcoin, rien ne protège l'acheteur si le vendeur n'envoie pas la marchandise.

Proposition

Créer une blockchain comportant un contrat dans lequel les deux parties ont à perdre en cas de non respect.

Mise en application

Alice souhaite acheter un livre d'une valeur de 10 euros à Bob.

Alice émet une proposition d'achat sur la blockchain qui l'engage à bloquer 10 euros avec une caution de 20 euros pour une durée de 30 jours et le transmet à Bob. Quelques centimes de frais sont appliqués pour rémunérer les mineurs pour intégrer cette proposition à la blockchain. Cette proposition d'achat génère une clé privé qu'Alice garde précieusement pour récupérer sa caution.

Si rien ne se passe après 30 jours, Alice récupère ses 30 euros et les frais sont perdu. En revanche, Bob peut répondre à la proposition d'achat avant les 30 jours en émettant sur la blockchain une caution de 20 euros, ce qui a pour effet de repousser de 30 jours la fin du contrat. Cette réponse verrouille le contrat et fournie à Alice une clé publique lui permettant à la fois de débloquer les cautions et d'effectuer de paiement à l'aide de sa clé privée.

A ce stade, Alice a engagé 30 euros pour un livre qui en vaut 10 et n'a rien reçu de Bob. De son côté Bob a engagé 20 euros et n'a rien reçu d'Alice.

Chacune des parties souhaite récupérer sa caution et souhaitent donc qu'Alice utilise sa clé privé pour finaliser le contrat. Il est donc dans l'intérêt de Bob d'envoyer la marchandise s'il souhaite récupérer sa caution et les 10 euros du livre.

Lorsqu'Alice reçoit le livre, elle finalise la transaction à l'aide de sa clé privée pour récupérer sa caution. Il en va de son intérêt de ne pas finaliser la transaction avant la réception du livre pour forcer Bob à l'envoyer. Cette finalisation à pour effet de libérer chacune des cautions et d'effectuer le virement des 10 euros bloqués vers le porte-feuille de Bob.

Si Bob n'envoi pas le livre, Alice peut faire en sorte de lui faire perdre ses 20 euros de caution en engagera également sa propre caution. Si Bob envoi le livre et qu'Alice ne finalise pas la transaction, elle perd sa caution, faisant perdre à Bob 30 euros et un livre.

Si, 30 jours après le verrouillage du contrat par Bob, Alice n'a pas finalisé la transaction, les sommes en jeu sont redistribués aux mineurs.

Il est dans l'intérêt individuel de chacun des mineurs d'essayer de récolter les frais plutôt que d'attendre l'expiration du contrat en vu de récupérer les cautions car remettre à plus tard l'intégration de la transaction sur la blockchain fait courir le risque à chacun des mineurs que la transaction soit ajoutée par un autre mineur.

Il est dans l'intérêt de tous que le contrat soit respecté.

Améliorations

  • Le contrat pourrait être signé par Alice et communiqué à Bob sans passer par la blockchain. Ce contrat serait ajouté à la blockchain par Bob après qu'il l'ai complété et qu'il ait été validé par les mineurs.
  • Le contrat peut être ajouté sur la blockchain par Alice afin de prévoir un mécanisme d'avortement prématuré du contrat dans le cas où Bob n'aurait pas encore verrouillé le contrat.

Mise en application

Cela parait compliqué à mettre en oeuvre. En réalité, cela peut être automatisé par un site qui génère ce type de contrat. Sur ce site, le vendeur exposerait les conditions de vente :

  • valeur de la marchandise
  • prix des cautions
  • durée de validité du contrat

L'acheteur qui accepte les conditions génère le contrat depuis son application et effectue son paiement (+ caution) en scannant un QR Code issu du site de vente en ligne. Cette application retient la clé publique de l'acheteur et lui propose de l'imprimer avec un récapitulatif du contrat.

De sont côté, le vendeur peut joindre à la marchandise un document fourni par son application sur lequel il y a un QR Code à faire scanner par l'acheteur sur lequel il lui est rappelé de le scanner en vu de récupérer sa caution.