Quels sont les protocoles et les algorithmes nécessaires pour comprendre le Bitcoin?

17 September 2017

Les avancées du Bitcoin et des technologies liées à la Blockchain ont déclenchées l’apparition de systèmes distribués inédits. Aujourd’hui, ces systèmes entièrement décentralisés fonctionnent à grande échelle et sont valués pour plusieurs milliards de dollars.

Spéculations mise à part, le domaine est en pleine explosion. Chaque semaine apporte de nouvelles discussions, de nouveaux algorithmes et de nouveaux projets.

Mais comment faire pour rentrer dans le domaine de la Blockchain? Par où commencer pour comprendre les technologies actuelles? Et quels sont les algorithmes à comprendre pour créer sa propre blockchain ou explorer les projets actuels?

Comme on l’a vu dans un article précédent:
Le coeur de la “Révolution Blockchain” c’est la possibilité d’avoir un Consensus dans un environnement décentralisé et potentiellement hostile.

J’ai un réseau de machines. Elles communiquent en envoyant et en recevant des messages.
Je veux que ce réseau de machine soit capable de prendre des décisions, comme déplacer de l’argent d’un compte à un autre.
Je veux aussi protéger certaines règles malgré la présence de machines hostiles. Par exemple, un tricheur ne doit pas pouvoir dépenser deux fois la même unité de Bitcoin.

On trouve 3 Composantes Fondamentales dans les systèmes comme l’Ethereum et le Bitcoin:

  • La capacité d’échanger des données de manière efficace dans un réseau organique,
  • Pouvoir assurer l’intégrité des données,
  • Et la capacité de converger vers un nouvel état.

Tous ces mécanismes fonctionnent dans un cadre décentralisé. Par Design, aucun membre du réseau n’a plus de pouvoir que les autres.

1. Échanger des données de manière efficace dans un réseau organique

N’importe qui doit pouvoir se connecter au réseau et d’échanger des données de manière efficace. C’est le protocole Peer-to-Peer (P2P) qui supporte cette fonctionnalité. Le nom Bitcoin viens de sa proximité avec BitTorrent.

Grâce à ce protocole,

  • les participants peuvent rejoindre et quitter le réseau sans conséquences,
  • Les membres hostiles n’entravent pas les échanges dans le réseau,
  • Le réseau s’organise de manière autonome pour optimiser les communications. Il n’y a pas de Chef D’Orchestre qui filtre et organise les participants.

2. Assurer l’intégrité des données

Chaque participant doit pouvoir vérifier la validité de l’état actuel. Et avoir la possibilité de vérifier et d’accepter de nouveaux états rapidement. C’est ici qu’on retrouve les structures de Blockchain.

Grâce à ces structures,

  • Les participants sont d’accord sur un ensemble de règles et peuvent vérifier que ces règles ont été respectées à tout moment.
  • Chaque participant peut accepter et vérifier toutes les données. Il n’y a pas d’autorité centrale responsable de leur validité.
  • Si un noeud hostile essaye d’émettre des données qui ont été manipulées, elles sont détectées et invalidées rapidement.

3. Converger vers un nouvel état

À ce point de l’article, on a la capacité d’échanger des données (P2P) et de les vérifier (Blockchain). On veut maintenant que le système puisse prendre des décisions. Comme traiter des opérations du type: Transférer l'argent du compte A au compte B.

Ou plus générique: Modifier l'emplacement X avec la donnée Y.

Avec un seul utilisateur c’est simple:
L’utilisateur se connecte à une des machines du réseau et enregistre la transaction. La machine vérifie la transaction et la propage dans le réseau. Les autres machines peuvent vérifier, accepter et propager la transaction à leur tour.
C’est une base de données distribuée.

Avec plusieurs millions de machines et de transactions simultanées, la manière de choisir et de diffuser les nouveaux états de la base devient critique.

Certaines méthodes vont limiter la fréquence de proposition de nouveaux états par la force (Proof Of Work). D’autres vont se rapprocher des méthodes “classiques” d’élection de Leader (Proof Of Stake). Certaines plateformes vont même jusqu’à relâcher les contraintes de la Blockchain pour contourner le problème (Tangle).

Grâce à ces algorithmes,

  • Tous les participants peuvent proposer des modifications de l’état du système,
  • Chaque participant peut prendre part au protocole de consensus qui va choisir le prochain état (le Bloc en cours),
  • Le réseau converge rapidement malgré les conflits et les participants hostiles.

Finalement… Ce n’est que le début

Ces trois piliers fondamentaux permettent la conception d’un système décentralisé comme le Bitcoin. Elles permettent de concevoir un système fiable qui n’a pas de centre ni de limites.

Le réseau est organique (P2P), les lois du système sont assurées (Blockchain) et le système peut avancer dans le temps et prendre des décisions (PoW, PoS).

Notez que le domaine est encore loin d’être mature et on peut s’attendre à une explosion cambrienne des solutions et des utilisations du consensus décentralisé. Cependant, pour comprendre les algorithmes de “La Blockchain” on peut commencer par comprendre ces 3 piliers. Et avec, comprendre le “Saut”, technique et intellectuel, qui a déclenché le boom Bitcoin & Compagnie.

Dans de prochains articles, on va détailler chaque système avec des exemples. Si vous voulez recevoir les explications sur ces algorithmes et comment les implémenter: nous venons de lancer une newsletter, inscrivez-vous!


Laurent Senta

I wrote software for large distributed systems, web applications, and even robots. These days I focus on making developers, creators, and humans more productive through IPDX.co.