• Aucun résultat trouvé

A.! Introduction'au'fonctionnement'd'une'blockchain'

Une blockchain est une base de données informatiques capable de stocker tous types d'informations (liste de courses, photos, données bancaires, données patients, dossiers de lot, …). Une des caractéristiques fondamentales est que cette base de données est répliquée chez les utilisateurs de cette blockchain. Ainsi, tous les utilisateurs possèdent une copie de la base de données, et sont reliés les uns aux autres directement ou indirectement par un réseau. Ce mode d'organisation représenté sur la figure 1 est dit décentralisé. Il est important de noter que le fait de posséder une copie de la base de données ne permet pas forcément à ce dernier de pouvoir l'exploiter pleinement. En effet, celle-ci peut être cryptée, par exemple. Cette répartition physique des données s'oppose radicalement au modèle dominant actuel (Fig. 2) qui consiste à stocker les données de manière centralisée avec des utilisateurs qui peuvent y accéder pour lire ou modifier ces données.

Une autre caractéristique est que chaque modification de la base de données est immuable. Pour cela, chacune des modifications sont liées les unes aux autres. Nous pouvons représenter une modification de la base de données d'une blockchain comme un nouveau bloc de données venant s'ajouter à la suite d'autres blocs, représentants eux-mêmes des modifications passées de la base de données. Ces différents blocs sont ordonnés chronologiquement et informatiquement chaînés entres eux de sorte que toute modification

Figure 4 : modification d'une donnée dans une blockchain

L'immuabilité des données n'est pas synonyme d'impossibilité de faire des modifications. Conséquemment, une modification ne se fait pas en remplaçant une inscription passée mais en rajoutant une nouvelle information décrivant ce changement.

Étape 1 Étape 2

Figure 5 : fonctionnement d'un système monétaire centralisé

Étape 3

Un système monétaire centralisé consigne toutes les modifications apportées aux registres des comptes dont il a la charge.

Lui seul décide si une transaction peut avoir lieu ou non en se basant sur ses registres.

Figure 3 : mode de stockage des données dans une blockchain

Le stockage des données se fait sous forme d'une chaîne de blocs. Les informations sont regroupées par paquets qui sont ajoutés à la chaîne, chaque paquet de données est lié au précédent de sorte à ce qu'une modification d'une donnée altère la totalité de la chaîne de données. Ces chaînes de blocs sont par conséquent immuables.

d'un bloc passé brise cette chaîne. Cette cassure expose ainsi, aux yeux de tous, la tentative d'altération de la base de données. C'est de cette propriété que cette technologie tire son nom : blockchain ou chaîne de blocs (Fig. 3)

L'impossibilité de modifier un bloc passé ne signifie pas qu'une donnée ne peut jamais être modifiée. Prenons l'exemple d'une blockchain qui recenserait les professions d'un groupe d'individus. Nous ajoutons la donnée suivante au bloc n : "Clément, Médecin". Une année s'écoule, pendant laquelle d'autres données sont ajoutées à la blockchain, puis Clément change de profession et devient restaurateur. Il est tout à fait possible d'inscrire dans la blockchain le changement de profession de Clément. Cependant, cela ne se fera pas en modifiant le bloc n de données ajouté l'année précédente, mais en ajoutant un nouveau bloc précisant le changement comme nous pouvons le voir sur la figure 4.

Mais alors quel est l'intérêt principal d'un tel système ? Il devient facile pour plusieurs acteurs n'ayant aucun intérêt ou objectif en commun, si ce n'est le bon fonctionnent du système, de se mettre d'accord sur la validité d'un ensemble de données en l'absence d'un tiers de confiance. En effet, aujourd'hui, le maniement des données sensibles, comme par exemple la somme d'argent que nous possédons, est une activité que nous confions à une entité externe, la banque. La blockchain permet à plusieurs personnes de se mettre d'accord sur la somme que chacun détient, sans que ces personnes ne se fassent confiance car la qualité des données est garantie par le système lui-même. De manière plus triviale, nous pouvons dire que grâce à la blockchain, un groupe de personnes peut échanger de la valeur, non pas parce qu'elles savent qu'aucune d'entre elles n'a le désir de tricher, mais parce que le système dans lequel elles évoluent garantit, par son fonctionnement, qu'aucun acteur ne pourra tricher et tirer avantage du système.

Prenons un exemple classique pour illustrer le fonctionnement d'une blockchain : le système bancaire. Dans un système centralisé, un tiers de confiance (la banque) détient un registre avec les débits et crédits des comptes de chacun des utilisateurs. Ainsi, quand dans l'exemple ci-contre (Fig. 5), Alice réclame X euros à Bob et que Bob effectue le paiement, la banque vérifie que Bob a bien les fonds nécessaires (ou l'autorisation de découvert le cas échéant) pour les transmettre à Alice. Il en est de même pour le transfert d'argent entre Sara et Samuel. La banque peut autoriser ou refuser chacune de ces deux transactions. Dans notre exemple, la banque autorise la transaction de Bob à Alice mais refuse celle de Sara vers Samuel. Ici, tous les utilisateurs font confiance à la banque qui joue le rôle de tiers de confiance entre eux. Au fur et à mesure des échanges, la banque met à jour son registre de

Etape 1 Étape 2

Étape 3

Figure 6 : fonctionnement d'un système monétaire décentralisé

Étape 4

Dans un système décentralisé, les registres sont détenus par tout le monde, la décision d'autoriser ou non une transaction est elle aussi partagée. Ici un vote des membres du réseau permet de savoir si une transaction doit avoir lieu ou pas.

Figure 7 : passage d'un bloc n à un bloc n+1

L'ajout d'un bloc de données se fait via un consensus entre les membres du réseau. Une fois ce bloc validé il est ajouté et chaîné au précédent.

comptes. Dans le cas présent, Bob sera débité de X€ et Sara 0€ alors que Alice sera créditée de X€ et Samuel de 0€.

Maintenant,commentcelase passe-t-il dans un système décentralisé de type blockchain ? (Fig. 6). Tous les utilisateurs font partie d'un réseau commun, et chacun d'entre eux dispose du registre complet avec la somme détenue par chacun. Bob et Sara vont, comme auparavant, proposer leurs transactions. C'est à cette étape que le fonctionnement est radicalement différent. Au lieu de faire confiance à un organisme tiers, dont le rôle est de vérifier la validité des transactions, chaque membre voulant effectuer une transaction va la diffuser au sein du réseau. Une fois réceptionnée par tout le monde, chaque nœud du réseau (ici les participants) va valider ou non la transaction. Chaque nœud du réseau va émettre un avis quant à la validité de la transaction, ce qui nous amène à la notion de consensus que nous verrons plus tard en détail dans le chapitre "Le consensus, l'indispensable d'un réseau décentralisé" page 44. À des fins de simplification, nous allons simplement soumettre la validation de la transaction à un vote des membres du réseau. Partons du principe que chaque membre du réseau est honnête, y compris Sara qui n'avait juste pas réalisé qu'elle n'avait pas les fonds suffisants au moment où elle a proposé sa transaction. Ainsi, 4 membres sur 4 vont valider la transaction de Bob et 4 membres sur 4 refuser celle de Sara. Chaque membre du réseau va partager le résultat de sa décision à tous les autres membres. La transaction de Sara ne sera pas ajoutée au registre. Tous les membres voyant que la transaction de Bob a été acceptée à l'unanimité, chacun va l'ajouter à son registre. Ici nous pouvons considérer que nous sommes partis d'un état de la base de données représenté par un bloc, puis qu'un nouvel état du registre a été enregistré dans un bloc suivant chaîné informatiquement au précédent (Fig. 7).

Bien que simplifié à l'extrême, ce modèle permet de dégager, dans les grandes lignes, les forces et les faiblesses des registres décentralisés basés sur la technologie blockchain.

En termes de sécurité informatique, le premier modèle centralisé présente une faiblesse structurelle, dans la mesure où un pirate informatique n'a besoin de pirater qu’une seule structure afin d'en modifier les registres. Dans le second modèle, il lui faut pirater les registres de plusieurs membres du réseau afin d'y introduire malicieusement une fausse information. De plus, le modèle centralisé présente, par définition, le souci suivant : un seul organisme est au pouvoir et contrôle tout. Ainsi, chaque utilisateur est à la merci de cet acteur central qui peut avoir des intérêts divergents de ceux des utilisateurs, ou bien peut subir des pressions extérieures contraires au bon fonctionnement du système. Dans le système

Figure 8 : schéma d'un réseau centralisé

Figure 9 : schéma d'un réseau distribué

Figure 10 : schéma d'un réseau décentralisé

Dans un réseau centralisé une entité dispose des données et prend seule les décisions de modification.

Dans un réseau distribué, les données sont partagées, mais un organisme central prend les décisions.

Dans un réseau décentralisé la prise de décision est une résultante du comportement de chacun des nœuds du réseau.

décentralisé, seul le mode de consensus peut être remis en question. Cependant, étant connu dès le départ, c'est à chaque utilisateur d'accepter ou non les règles du jeu avant d'entrer dans le système.

Bien qu’il soit attirant, nous sentons que le système décentralisé est, lui aussi, en prise à de nombreuses problématiques. Notamment sur la manière de bâtir le consensus. Que se passe-t-il si un membre du réseau ne respecte pas les règles du jeu et valide des transactions qu'il aurait dû sciemment refuser pour servir ses propres intérêts ? Pire encore, que se passe-t- il si plusieurs membres du réseau se mettent d'accord pour valider une transaction qui n'aurait pas dû l'être ? Autant de questions que se sont certainement posées de nombreux développeurs, chercheurs, Cypherpunks dans leurs tentatives de créer des systèmes décentralisés. S'il est impossible de garantir l'honnêteté des membres du réseau, il faut que le réseau, par son fonctionnement, soit garant de l'honnêteté des transactions et des données. Nous allons voir plus en détail les aspects techniques qui permettent d'apporter de la confiance entre des gens ne se connaissant pas, et potentiellement malhonnêtes.