Livraison contre paiement sur une blockchain PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Livraison contre paiement sur une blockchain

Comment les blockchains peuvent résoudre le problème le plus ancien du livre

Le commerce entre les personnes est aussi vieux que l’humanité elle-même. Tout a commencé au moment où l’homme des cavernes Ogg a dit à l’homme des cavernes Ugg : « je te donne de la pierre, tu me donnes des baies ». Mais le trading pose un problème fondamental : il nécessite confiance . Qu'est-ce qui empêche Ogg d'utiliser la pierre pour frapper Ugg, puis de saisir les deux pierres ainsi que des baies avant de s'enfuir ? Comment traduire un accord d’échange verbal en un mécanisme d’application garantissant que les deux parties tiennent parole ?

Pour prendre un exemple moderne, il y a quelques années, j'ai vendu une voiture sur le marché de l'occasion. J'ai trouvé un acheteur sur Internet, nous nous sommes rencontrés personnellement, il a fait tester la voiture et nous nous sommes mis d'accord sur un prix. Il s'est donc rendu à sa banque pour obtenir un chèque de banque, qui est en réalité de l'argent liquide sous une forme plus compacte. Nous avons marché ensemble jusqu'à un bureau de poste, où je peux signer et soumettre un formulaire gouvernemental officiel transférant la propriété légale de la voiture.

Nous voilà donc devant la fenêtre du bureau de poste et nous arrivons à une impasse délicate. Le chèque est toujours dans sa poche et je tiens le formulaire signé. Nous nous sommes rencontrés il y a quelques heures et n'avons aucune raison de nous faire confiance. Dois-je d'abord remettre le formulaire, puis espérer qu'il me remettra le chèque, plutôt que de m'enfuir ? Ou est-ce qu'il me remet le chèque et espère que je le remets sous la forme ? Quoi qu’il en soit, quelqu’un s’expose au risque de trahison.

Et puis je me suis rendu compte que je devais arrêter de m’inquiéter et simplement remettre le formulaire. Pourquoi? Parce que deux choses pourraient se produire ensuite. Soit l'acheteur me remet le chèque, auquel cas tout le monde est content et l'échange est terminé. Et s'il s'enfuyait à la place ? Dans ce cas, le commis de la Poste verra et déchirera le formulaire que je viens de lui remettre. Bingo, nous avons nous-mêmes un échange sûr.

Avez-vous vu ce qui s'est passé là-bas ? Notre dilemme a été résolu grâce au recours à un intermédiaire, en l’occurrence le commis de la poste. Le greffier s'assure qu'une transaction équitable a lieu ou qu'il n'y a aucune transaction du tout. Et n’importe quel intermédiaire ne peut pas fournir ce service. Il doit s'agir d'une personne de confiance des deux parties. Dans le cas d’un employé d’un service postal public, cela découle de notre confiance dans le gouvernement lui-même. Si les employés des bureaux de poste pouvaient être soudoyés, moi ou l'acheteur pourrions créer une situation dans laquelle nous nous retrouverions avec de l'argent liquide et une voiture. En effet, dans de nombreux pays, une telle corruption peut peser lourdement sur la prospérité.

Les hommes des cavernes et les voitures sont une chose, mais concentrons-nous sur le monde financier, dans lequel le trading joue un rôle important. Role central. Bien entendu, les banques ne paient pas leurs employés pour qu’ils s’enfuient avec les actions de quelqu’un d’autre. Mais l’échange sécurisé d’actifs financiers reste un problème important, car il existe des moyens moins caricaturaux par lesquels les participants à une transaction peuvent ne pas tenir leur promesse. Par exemple, une partie pourrait devenir insolvable, ou un changement soudain des conditions du marché pourrait l’empêcher de sécuriser un actif. Ils peuvent souffrir d'erreurs matérielles ou des répercussions d'une fraude comptable chez une autre contrepartie.

À la suite de ces «risques de règlement», la plupart des transactions financières sont réglées en utilisant livraison contre paiement (DvP). Il s’agit simplement d’un terme sophistiqué désignant le processus postal décrit ci-dessus. DvP garantit que, si une partie à une transaction ne livre pas ce qui a été promis, l'autre partie peut conserver l'actif qu'elle a proposé en échange.

Et comment la livraison contre le paiement est-elle mise en œuvre dans le monde de la finance ? Vous l’aurez deviné, via des intermédiaires de confiance. Il peut s'agir d'autres banques, de chambres de compensation ou dépositaires centraux de titres. Étant donné que la plupart des transactions actuelles se déroulent sous forme numérique, il ne s’agit pas de gérer le transfert de certificats physiques ou d’espèces. Au lieu de cela, le DvP est réalisé par l'intermédiaire mettant simultanément à jour un certain nombre d'enregistrements dans sa base de données et/ou transmettant des instructions à d'autres institutions.

Livraison contre paiement par blockchain

Parler de bases de données nous amène clairement au sujet des blockchains. Une blockchain permet de partager et de synchroniser un registre ou une base de données entre plusieurs parties. Cependant, contrairement aux bases de données classiques, les bases de données blockchain peuvent être modifiées directement et en toute sécurité par plusieurs utilisateurs, même s’ils sont en concurrence féroce les uns avec les autres. Si vous travaillez dans l’informatique d’entreprise, vous voudrez peut-être réfléchir aux implications de cette phrase.

Pour comprendre comment fonctionne la livraison par rapport au paiement sur une blockchain, nous devons commencer par comprendre le modèle transactionnel de Bitcoin. Il convient de noter ici que d’autres conceptions de blockchain utilisent un modèle différent pour les transactions, et nous parlerons davantage de ces différences plus tard.

Une transaction Bitcoin comporte un ensemble d’entrées et de sorties. Chaque entrée est connectée à une sortie d'une transaction précédente, avec tous les bitcoins de la sortie précédente entrant. Les bitcoins contenus dans les entrées d'une transaction sont ensuite redistribués entre ses sorties en fonction des quantités écrites à l'intérieur. De plus, chaque sortie de transaction contient l'identifiant public de son nouveau propriétaire, pour lequel le propriétaire détient une clé privée correspondante. Une transaction Bitcoin n'est valide que si :

  • La quantité totale de Bitcoin dans les entrées de la transaction est supérieure ou égale à la quantité écrite dans ses sorties. Toute différence est perçue sous forme de frais par le « mineur » qui confirme la transaction dans un bloc, créant ainsi un mécanisme de marché par lequel les transactions peuvent soumissionner pour confirmation.
  • La transaction est approuvée par les propriétaires de chaque production antérieure que cette transaction « dépense ». Cette approbation s'exprime via une signature cryptographique du contenu de la nouvelle transaction. La signature d'une sortie antérieure ne peut être créée qu'à l'aide de la clé privée qui correspond à son identifiant public.

Ces deux règles sont cruciales dans un grand livre financier partagé entre des parties non confiantes. Sans le premier, n’importe qui pourrait créer des bitcoins à partir de rien. Et sans le second, tout le monde pourrait dépenser les bitcoins des autres. Mais nous avons également besoin d’une troisième règle, qui s’applique à l’échelle mondiale plutôt qu’au sein de transactions individuelles :

  • Chaque résultat de transaction ne peut être utilisé que par une transaction ultérieure. Cela empêche une attaque connue sous le nom de double dépense dans lequel les mêmes bitcoins sont envoyés à plusieurs destinataires.

Pour appliquer cette règle, la blockchain contient un journal chronologique des transactions valides qui n'entrent pas en conflit les unes avec les autres, et ce journal est vérifié indépendamment par chaque nœud du réseau.

Le modèle transactionnel Bitcoin peut être facilement étendu pour représenter n’importe quel actif financier. Au lieu d'un résultat de transaction contenant des bitcoins, il peut contenir un identifiant et une quantité d'actif. Toutes les règles régissant les transactions Bitcoin s'appliquent toujours, empêchant les participants de (a) créer des actifs à partir de rien, (b) dépenser les actifs d'autrui et (c) dépenser le même actif deux fois. Pour les actifs autres que les cryptomonnaies, nous avons tendance à insister pour que les quantités d’entrée et de sortie s’équilibrent exactement, plutôt que de permettre aux mineurs de percevoir la différence.

Alors, comment pouvons-nous créer une transaction de livraison contre paiement sécurisée en utilisant ce modèle ? Disons qu'Alice et Bob ont convenu d'échanger les 10 £ d'Alice contre les 15 $ de Bob. Par souci de commodité, nous supposerons qu'Alice dispose déjà exactement de 10 £ en une seule transaction, et que Bob dispose également de 15 $. (Si ce n’est pas le cas, ils peuvent facilement déplacer leurs fonds pour y parvenir.)

Pour commencer, chaque partie construit une transaction avec deux entrées et deux sorties. Les deux entrées dépensent les sorties précédentes contenant respectivement les 10 £ d'Alice et les 15 $ de Bob. Quant aux sorties, la première contient l'identifiant d'Alice et 15 $, et la seconde va à Bob contenant 10 £. Étant donné que les quantités d’entrée et de sortie dans les deux devises s’équilibrent, notre transaction remplit la première condition ci-dessus. Pour réaliser la seconde, Alice et Bob doivent maintenant signer la transaction, car celle-ci dépense les sorties antérieures appartenant à chacun d'eux.

La transaction peut désormais être finalisée en l’incluant dans la blockchain, mais il reste encore à considérer le problème des doubles dépenses. Et si Alice avait créé une transaction conflictuelle en échangeant les mêmes 10 £ avec une autre contrepartie qui lui proposait une meilleure offre ? Ici, la troisième règle entre en jeu, dans laquelle la blockchain garantit que chaque produit ne peut être dépensé qu'une seule fois. Si la transaction concurrente est transmise après que l'échange d'Alice avec Bob soit sur la blockchain, elle ne sera tout simplement pas confirmée. Et si la transaction concurrente était confirmée en premier, l'échange d'Alice avec Bob échouerait. Quoi qu'il en soit, la blockchain garantit la livraison contre paiement pour l'échange d'Alice et Bob, ainsi que pour tout autre. Si Bob ne reçoit pas les 10 £ d'Alice, alors Alice ne reçoit pas ses 15 $.

Le pouvoir des transactions partielles

Les blockchains nous permettent donc de réunir deux parties, de construire et de signer une transaction d'échange et de garantir sa réussite ou son échec dans son ensemble. Cela permet une livraison contre paiement sur un registre partagé, sans avoir besoin d'un intermédiaire de confiance pour gérer le processus. Les mineurs qui confirment les transactions en blocs ont encore un certain pouvoir, mais c'est bien moindre qu'un intermédiaire traditionnel. Le pire qu'ils puissent faire est de refuser de confirmer une transaction particulière dans son intégralité, et cela ne viole pas le DvP. De plus, si le minage est partagé entre les parties qui créent réellement les transactions, ce risque disparaît complètement, puisque chacun aura la possibilité de confirmer le sien.

Jusqu'ici, tout va bien. Mais les blockchains de type Bitcoin ont encore plus d’atouts dans leur sac. Rappelons qu'une transaction doit être signée par le propriétaire de chaque sortie antérieure dépensée par cette transaction. Par défaut, cette signature verrouille la liste complète des entrées et sorties au sein de la transaction. La cryptographie garantit que la moindre modification d'une entrée ou d'une sortie rendrait la signature invalide. Pour suivre l’exemple ci-dessus, si Bob remplaçait Carol après qu’Alice ait signé la transaction, alors la transaction échouerait complètement.

Mais que se passe-t-il si Alice ne se soucie pas de savoir avec qui elle effectue l'échange ? Dans la plupart des cas, pourquoi devrait-elle s'en soucier ? À moins qu’Alice ne soit déterminée à travailler spécifiquement avec Bob, seules deux parties de la transaction la concernent réellement. Premièrement, le fait que sa production de 10 £ sera dépensée, plutôt qu’une quantité ou un actif différent. Deuxièmement, elle reçoit en échange 15 $ en nouvelle production. Tant que tout l'argent dans le système est propre, Alice ne se soucie pas vraiment d'où viennent ces 15 $, ni de ce qui pourrait arriver pour faciliter son échange.

Peut-être qu'un seul groupe viendra avec 15 $ et effectuera un échange direct contre les 10 £ d'Alice. Mais peut-être que Bob et Carol veulent seulement échanger 7.50 $ chacun. Dans ce cas, ils ajouteraient deux entrées à la transaction, ainsi que deux sorties collectant 5 £ chacune. Ou peut-être que Carol veut réellement échanger 15 $ contre 950 roubles, tandis que Sasha à Moscou a 950 roubles et cherche 10 £. Dans ce cas, un échange à trois peut avoir lieu, dans lequel chaque partie ne se soucie que de sa propre pièce du puzzle. La transaction initiée par Alice peut être réalisée d’une infinité de manières différentes. Mais du point de vue d'Alice, tout cela atteint le même objectif : lui donner 3 $ en échange de 15 £, et ils la rendent tous également heureux.

Scénarios d'échange

Comment une blockchain facilite-t-elle cela ? Par des transactions partielles et des signatures partielles. Alice démarre une transaction avec une seule entrée (ses 10 £) et une seule sortie (15 $ pour elle). Elle verrouille ces parties de la transaction avec une signature numérique qui indique qu'un nombre illimité d'autres entrées ou sorties peuvent être ajoutées. Elle remet cette transaction partielle à Bob et dit « voyez ce que vous pouvez faire ». Peut-être qu'elle le remet également à Carol, ainsi qu'à un certain nombre d'autres contreparties potentielles ou constructeurs de syndicats. Chacun d'entre eux peut ajouter ses propres paires d'entrées et de sorties, soit pour équilibrer l'échange, soit pour créer une transaction partielle plus importante qui peut être transmise à nouveau. Quoi que fasse quelqu’un, la transaction ne peut être exécutée (c’est-à-dire réglée par confirmation sur la blockchain) qu’une fois que les actifs d’entrée et de sortie sont équilibrés.

Une transaction blockchain n'est qu'un morceau de données numériques, ces transactions partielles peuvent donc être envoyées par courrier électronique ou par tout autre moyen de communication. Ils peuvent même être publiés publiquement, car les participants à la transaction potentielle savent que la blockchain s'en chargera. La signature d'Alice garantit qu'elle ne dépensera que 10 £ si quelqu'un lui donne 15 $ en échange.

Enfin, si Alice choisit de désactiver l'offre, il lui suffit de dépenser ces mêmes 10 £ dans une autre transaction, le plus simplement en se les renvoyant. Étant donné que la blockchain ne permet pas de dépenser deux fois le même résultat, cela rend sa transaction partielle existante sans valeur. Tous les autres participants de la blockchain le verront et cesseront de perdre leur temps à essayer de terminer l'échange.

Du DvP aux contrats intelligents

Comme j'ai argumenté précédemment, une blockchain de type Bitcoin peut être considérée comme un moyen de gérer la synchronisation et la sécurité dans une base de données relationnelle partagée. Les transactions Bitcoin et celles des bases de données sont traitées de manière atomique, ce qui signifie qu’elles réussissent ou échouent dans leur ensemble. La clé de l’analogie réside dans l’équivalence entre le résultat d’une transaction dans une blockchain et une ligne dans la base de données. Une transaction blockchain qui dépense certaines sorties et en crée d'autres est identique à une transaction de base de données qui supprime certaines lignes et en crée d'autres à la place. (Une opération de base de données qui modifie une ligne existante équivaut à supprimer cette ligne et à en créer une nouvelle mise à jour à la place. Cette équivalence est à la base de la populaire MVCC méthode de contrôle de concurrence dans les bases de données, dont les blockchains de type Bitcoin peuvent être considérées comme une forme distribuée.)

Imaginons donc que nos données financières soient conservées dans une base de données, dans laquelle chaque ligne contient trois informations : l'identifiant de son propriétaire, un identifiant d'actif et une quantité d'actif. Une blockchain permet de partager ce registre en toute sécurité entre ses participants, même s'ils ne se font pas du tout confiance. Dans le langage des bases de données, il garantit que :

  • Les quantités d'actifs dans les lignes supprimées par une transaction correspondent à celles des lignes qu'elle crée.
  • Pour chaque ligne supprimée (ou modifiée) par une transaction, la transaction doit être signée par le propriétaire de cette ligne.
  • Si une ligne de base de données a été supprimée par une transaction, cela empêche une autre transaction de la supprimer à nouveau.

Regardons la première de ces règles, à savoir que les transactions doivent préserver les quantités d'actifs. Nous pouvons élargir cela à la notion générale de « contrainte de transaction ». Une contrainte de transaction prend la forme d'une boîte noire qui voit deux ensembles de lignes pour chaque transaction : (a) les lignes supprimées par la transaction, (b) les lignes qu'elle crée. Le travail de la boîte noire consiste à examiner ces deux ensembles et à répondre « oui » ou « non » quant à la validité de la transaction. Dans notre cas spécifique, il ne répondra oui que si les quantités totales d'actifs dans les deux ensembles correspondent exactement.

Une fois que nous avons la possibilité d'appliquer des contraintes de transaction, elles peuvent être étendues pour contenir n'importe quel ensemble de règles. Quelques exemples pourraient être « une unité de cet actif ne peut être créée que si ces trois autres actifs sont simultanément bloqués dans un compte bloqué » ou « cet actif ne peut être transféré que s'il existe une ligne correspondante signalant une pluie insuffisante ». Du point de vue de l'architecture distribuée d'une blockchain, la logique à l'intérieur de la boîte ne fait aucune différence, tant qu'elle peut nous donner une évaluation précise et cohérente de chaque transaction qu'elle voit.

En conséquence, les contraintes de transaction peuvent servir de méthode générale pour restreindre les transformations de données que les participants à la blockchain peuvent effectuer. Cette approche des « contrats intelligents » offre une alternative aux procédures stockées utilisé dans Ethereum et le Eris dérivé. Dans un prochain article, nous approfondirons les avantages et les inconvénients de ces deux paradigmes, en termes de simplicité, d'évolutivité et de concurrence.

Vous pouvez Suivez-moi sur twitter ici. Voir également: Mettre fin au débat Bitcoin vs Blockchain.

Addendum technique

Pour créer des transactions DvP partielles, utilisez un type de signature of SINGLE|ANYONECANPAY. Si vous utilisez MultiChain, preparelockunspent, createrawexchange ainsi que appendrawexchange Appels API prenez soin des détails pour vous. Voir le Pour commencer page pour un exemple simple de la façon dont ils peuvent être utilisés.

Veuillez poster vos commentaires sur LinkedIn.

Source : https://www.multichain.com/blog/2015/09/delivery-versus-payment-blockchain/

Horodatage:

Plus de Multichain