Cover_Blockchain

Qu’est-ce que la Blockchain ?

Initialement conçue par Satoshi Nakamoto pour la crypto-monnaie Bitcoin, la technologie Blockchain permet de stocker puis de transmettre de l’information de façon sécurisée. Que cette information concerne des biens matériels (terrains, voitures) ou immatériels (brevets, contrats), celle-ci est stockée dans des conteneurs numériques appelés Blocs. Littéralement « chaîne de blocs », une blockchain est donc une suite de blocs d’information reliés par un procédé cryptographique innovant.

Grâce à ce procédé cryptographique, il est impossible de modifier une information stockée dans une blockchain, et cette irrévocabilité représente une petite révolution. En effet, si les tiers de confiance (États, Banques) étaient jusqu’ici nécessaires pour garantir la validité de certaines informations (titres de propriété, transactions bancaires), il est désormais possible de s’en passer. Bien que cette technologie soit encore très jeune, certains n’hésitent donc pas à lui prédire une réussite toute aussi fulgurante que celle d’Internet.

 


L’histoire de la Blockchain

Nous sommes en plein cœur de la crise financière mondiale de 2008 lorsque le socle technologique amené à donner naissance à la blockchain apparaît pour la première fois sous les traits de la monnaie électronique Bitcoin. La défiance envers le système financier est alors à son paroxysme et la perspective de court-circuiter les intermédiaires bancaires suscite l’enthousiasme.

Quelques mois plus tard, popularisée par le succès retentissant du Bitcoin, la Blockchain prend son indépendance et attire un nombre croissant de développeurs pour qui les applications de la technologie s’étendent bien au-delà du monde monétaire.

Le 30 juillet 2015, les smart contracts associés à la blockchain Ethereum offrent la possibilité d’intégrer des programmes, et donc de travailler des instruments financiers plus complexes.

A la preuve de travail (proof of work) vient s’ajouter un autre mode de validation des blocs : la preuve d’enjeu ou preuve de participation (proof of stake). La probabilité pour un utilisateur de réussir à valider un bloc n’est alors plus liée uniquement à sa puissance de calcul mais à son implication dans le réseau.

De nombreuses recherches continuent de voir le jour pour améliorer la robustesse du consensus de validation, la sûreté de stockage, et la vitesse de transmission des informations.

 


L’exemple de la Blockchain Bitcoin

Le terme « blockchain »  est un terme qui alimente une multitude d’abus de langages. Nous utilisons le terme « blockchain » dans son sens premier : une chaine de bloc liés cryptographiquement les uns aux autres, afin d’enregistrer des informations dans le temps de manière décentralisée.

Dans un système monétaire centralisé, l’autorité centrale garantit l’enregistrement des transactions monétaires et leur authenticité. Ainsi, personne ne peut maintenir qu’il n’a pas été payé, alors qu’il l’a été.

Mais dans un système monétaire distribué Peer-to-Peer comme Bitcoin, cette mission ne peut pas être assurée par une autorité centrale, car il n’existe pas de registre centralisé auquel les utilisateurs accordent leur confiance. Cette mission est donc assurée par la Blockchain, et pour comprendre l’utilité de cette chaîne de blocs, il est primordial de s’intéresser à deux concepts : les Hashs et les Blocs.

Un hash est l’emprunte cryptographique d’une information, c’est-à-dire une chaine de caractère de longueur fixe correspondant à une information unique. Toute information quelle que soit sa nature, peut être hachée par une fonction de hachage. La fonction de hachage principalement utilisée dans Bitcoin se nomme SHA256. Il est impossible (au sens probabiliste) d’obtenir le même hash en hachant deux informations différentes.

exemple-hash-blockchain

Passez la Joconde dans une fonction de hachage une première fois. Puis répétez l’opération en ne changeant ne serait-ce qu’un pixel du tableau, et vous obtiendrez deux hashs de taille identique, mais bien distincts !

Les transactions Bitcoin validées par les mineurs sont rassemblées environ toutes les 10 minutes dans des fichiers appelés blocs. En plus des transactions, chaque bloc contient une étiquette résumant son contenu : le block keader, et tout bloc est identifié par un hash unique résultant du hachage de son bloc header : le block hash.

Le bloc header contient trois informations : le block hash du bloc précédent qui permet de lier chaque bloc au bloc qui le précède, une racine de Merkle qui résume toutes les transactions contenues dans le bloc, et un Nonce, une valeur utilisée lors du minage pour contrôler la fréquence de génération des blocs.

Schéma simplifié de la blockchain Bitcoin :

schema-blockchain-bitcoin

La blockchain est une chaine reliant chaque block hash aux block hashs des blocs précédents, et ce depuis le premier bloc historique : le genesis block. Chaque bloc ajouté à cette chaine vient renforcer l’intégralité de la blockchain, car il contient le hash du bloc précédent, contenant lui-même les hash de tous les blocs, intriqués depuis le genesis block.

Grâce aux propriétés cryptographiques des hashs, si le contenu d’un bloc de la blockchain est modifié, son block hash l’est à son tour, et par conséquent tous les block hashs des blocs postérieurs le seraient également. Toute modification d’une transaction passée est donc immédiatement détectable.

La distance (en nombre de blocs) qui sépare un bloc du genesis block est appelée hauteur de ce bloc. Plus un bloc est haut, plus il est récent. La distance entre un bloc et le bloc en cours de minage désigne quant à elle la profondeur du bloc. Plus un bloc est profond, plus le modifier entraînera la modification d’un nombre élevé de blocs.

Cette chaine cryptographique est un historique, un registre des transactions passées. Lorsqu’un mineur utilise la base de données des Outputs non-dépensés pour vérifier l’intégrité des transactions en cours de validation, il la recrée à partir de la plus longue blockchain téléchargée sur le réseau Bitcoin. Le mineur fait confiance aux transactions passées contenues dans la blockchain. Si ce mineur reçoit un bloc N concurrent avant de pouvoir générer le sien, alors il n’acceptera de rediriger son travail vers la construction du bloc N+1 que si le bloc N reçu est intègre d’après la blockchain.

Chaque nouveau bloc d’informations est validé par un consensus d’utilisateurs puis ajouté à la chaîne de bloc et encodé de telle sorte qu’il soit impossible de modifier les informations des blocs antérieurs sans briser la chaîne