Facebook EmaiInACirclel
Développement front-end, back-end

On va faire court 4, les transactions

PentaGuy
PentaGuy
Blogger

Après plusieurs interventions en public pour expliquer en quoi consiste la blockchain, je me suis aperçu que le concept de transaction qui justifie à lui seul qu’on développe une telle technologie était assez mal compris. Cela m’a évidemment semblé être un bon sujet pour un « On va faire court ».

Imaginons que vous alliez à la boulangerie acheter une galette des Rois (c’est l’époque, profitons-en !). Vous demandez au commerçant une galette et vous êtes prêt à la payer. A partir de là plusieurs situations différentes peuvent survenir : le commerçant n’a plus de galette ou vous n’avez pas assez d’argent. Dans ces deux cas, vous ne pouvez pas acheter votre galette. Sans le savoir (ou en le sachant, en ce cas, cet article n’est pas pour vous), vous venez d’initier une transaction (argent contre galette) qui se voit annulée avant d’atteindre son terme.

Transactions Blockchain

Pourquoi s’agit-il d’une transaction ? Une transaction est un échange (galette contre argent) entre deux parties librement consentantes à l’échange, ce qui est le cas de vous et du boulanger, l’un désire acheter une galette et l’autre la vendre. Une transaction est non seulement un échange mais aussi un échange qui obéit à des règles, commerciales en ce cas. Et le non respect de ces règles par la transaction aboutit au fait qu’elle ne peut pas avoir lieu. Ces règles sont celles qui garantissent la cohérence de la transaction. Dans notre cas, les règles sont au nombre de deux : le boulanger doit avoir une galette à vendre et vous devez avoir assez d’argent pour la payer. De façon plus abstraite, ces règles correspondent à un état du système (boulanger+client) qui autorise la transaction : cet état est représenté par deux variables, un stock positif de galettes et un solde positif d’argent ainsi que par un paramètre, le prix d’une galette.

La transaction peut alors être vue comme une opération qui fait passer le système (boulanger+client) d’un état vers un autre et la cohérence de cette transaction peut être définie par le fait que l’état de départ et l’état d’arrivée doivent tous les deux obéir aux règles que l’on s’est fixées, à savoir, conserver un stock de galettes positif ou nul et un solde d’argent positif ou nul.

Imaginons la suite de notre transaction, vous payez sans pouvoir faire l’appoint. Le boulanger accepte votre argent et vous donne une galette et votre monnaie. Cependant, si son fonds de caisse est insuffisant, il ne pourra pas vous rendre la monnaie. On peut alors imaginer que cette transaction comporte deux étapes. La première est un transfert d’argent de votre part vers le boulanger et la seconde, un autre transfert de la part du boulanger vers vous. Eh bien, si une de ces étapes conduit au non-respect des règles de cohérence, l’ensemble de la transaction doit être annulée. Ce principe du « tout ou rien » représente la propriété d’atomicité de la transaction. Il s’agit ni plus ni moins de dire qu’une transaction, quel que soit le nombre d’étapes qui la composent, survient intégralement (toutes les étapes sont effectuées) ou ne survient pas du tout (aucune étape n’est effectuée).

Pour illustrer la dernière propriété que possèdent les transactions, imaginons que vous finissiez par acheter votre galette en ayant payé son prix et reçu votre monnaie. La transaction est terminée car le système (boulanger+client) a atteint l’état voulu tout en respectant la cohérence et l’atomicité. On constate alors que la transaction est durable : elle ne peut plus être annulée et l’état antérieur ne plus être atteint sauf à effectuer une transaction différente obéissant à d’autres termes (que le boulanger accepte de vous racheter la galette et de vous rendre votre argent) qu’aucune des parties n’a lieu d’accepter. Cependant, des erreurs sont toujours possibles et imaginons que le boulanger ait oublié de mettre une fève dans sa galette. Vous rendant compte de ce fait et fort marri, vous retournez voir ce boulanger indélicat et lui faites savoir que vous exigez une réparation pour cette erreur. Cette réparation peut prendre toutes les formes possibles du « geste commercial » (on peut imaginer aussi une foire d’empoigne pas commerciale du tout) mais ce qui se passera à coup sûr c’est qu’une autre transaction aura lieu qui « corrigera » la première. Pourquoi ? Pour respecter l’exigence de durabilité de la transaction initiale. Dans le monde physique, c’est simple, la galette achetée a été mangée et ne plus être rendue au boulanger (pas sous sa forme initiale en tout cas). Il est alors nécessaire de définir un autre échange au sein du système (boulanger+client).

Pour résumer ce sketch de l’Epiphanie, une transaction est un échange entre deux parties qui s’effectue dans un cadre réglementaire et qui obéit aux propriétés de cohérence, d’atomicité et de durabilité.

Il y a évidemment énormément de choses que je pourrais dire sur les transactions et il existe une abondante littérature sur le sujet. Mais comme on fait court, je vais simplement mettre en évidence deux aspects qui découlent de cette définition.

Le cadre réglementaire d’une transaction est-il nécessaire ? Oui et non. D’un côté il oblige les parties prenantes à respecter leurs engagements et de l’autre, les parties peuvent voir qu’il est de leur intérêt à aboutir à une conclusion satisfaisante de la transaction. Dans le premier cas, le cadre réglementaire agit comme un tiers de confiance. C’est aussi le cas des transactions immobilières où le tiers de confiance prend la forme d’un notaire (en France tout du moins). C’est le notaire qui va s’assurer que la transaction est cohérente (du point de vue du droit, des règlements et, surtout, de la solvabilité de l’acquéreur), atomique (si une des clauses suspensives est activée, pas de transaction) et durable (la mutation du bien est enregistrée au rang des minutes de l’étude et au bureau des hypothèques).

Le second cas est celui qui intervient lorsque deux composants informatiques échangent des informations de manière transactionnelle (une application et une base de données par exemple). Dans ce cas, à moins d’avoir été développées par des informaticiens paranoïaques et farceurs, les applications (enfin, leur concepteur ou plutôt leurs utilisateurs ) considèrent qu’il est de leur intérêt d’aboutir à des transactions complètes, cohérentes et durables. Dans ce cas, en l’absence de tiers de confiance, on dit qu’il existe un état de confiance mutuelle implicite.

Il existe néanmoins des cas où la volonté de se passer d’un tiers de confiance et l’impossibilité d’établir un état de confiance mutuelle implicite posent un problème et c’est justement ces cas auxquels la blockchain tente d’apporter une solution.


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *