DesignSpark Electrical Logolinkedin
Ask a Question

6 May 2019, 12:04

Blockchain Primer – Part 2

Dans la Partie 1, nous avons examiné la construction des blocs de base et la relation entre eux pour former un grand registre immuable. Dans cette partie, nous allons examiner le fonctionnement naturel de la blockchain ou chaîne de blocs, dans le cadre d'un réseau coopératif.

Nœuds

L'une des principales propriétés inhérentes à la technologie Blockchain est sa décentralisation. Aucune autorité centrale n'utilise des serveurs dédiés pour héberger la blockchain; elle repose plutôt sur un consensus entre les utilisateurs sur un réseau pair à pair (P2P - peer-to-peer) distribué.

En général, chaque participant de ce réseau est un nœud, mais tous les nœuds ne sont pas égaux. Selon la mise en œuvre, il peut exister de nombreux types de nœuds. Toutefois, la plupart des mises en œuvre présentent deux types sous une forme ou une autre :

Nœuds complets : ces nœuds agissent comme des serveurs dans le réseau Blockchain et hébergent une copie de la blockchain complète dans une base de données locale, ce qui les amène parfois à être désignés sous le nom de nœuds de validation complets. Les principales tâches de ces nœuds incluent le maintien du consensus entre les autres nœuds et la vérification des transactions. Ils peuvent généralement ajouter des blocs au réseau, en fonction du protocole de consensus utilisé.

Nœuds légers (ou mineurs) : il peut s'agir d'un nœud complet élagué, qui stocke les blocs depuis le début et les ajoute comme d'habitude, mais qui, une fois que la chaîne atteint une taille prédéfinie, supprime les blocs les plus anciens, ne conservant que leurs en-têtes et leur positionnement dans la chaîne. Les nœuds élagués étant toujours considérés comme des nœuds complets, ils peuvent généralement vérifier les transactions et être impliqués dans le consensus.

Un véritable nœud léger peut également interagir avec la blockchain en s'appuyant sur des nœuds complets pour lui fournir les informations nécessaires. Étant donné qu'il ne stocke pas de copie de la chaîne, il doit interroger l'état actuel du dernier bloc et des transactions diffusées pour le traitement. Ces deux méthodes permettent aux nœuds disposant de ressources limitées de faire partie d'un écosystème de blockchain.

Il existe d'autres types de nœuds, notamment les nœuds maîtres et les nœuds d'autorité.

Le seul but des nœuds maîtres est de valider et d'enregistrer les blocs. Ils ne peuvent pas ajouter de blocs et n'existent que pour sécuriser le réseau.

Si un réseau utilise des nœuds d'autorité, un nombre limité d'entre eux (défini par le développeur du réseau) agit comme des nœuds complets. Tous les autres nœuds sont des nœuds légers. Cette centralisation partielle peut accélérer le système en réduisant le temps nécessaire pour parvenir à un consensus.

Protocoles de consensus

L'un des problèmes qu'un système distribué de pairs doit résoudre consiste à déterminer qui peut écrire des données ou, plus important encore, qui ne peut pas écrire de données. Les règles suivant lesquelles un réseau blockchain fonctionne et confirme la validité des informations écrites dans les blocs sont appelées le consensus. Dans les réseaux blockchain, il est nécessaire d'être en mesure de valider un bloc ou une chaîne de blocs pour l'intégrité des données à tout moment, mais surtout lorsque de nouveaux blocs arrivent depuis d'autres nœuds, et qu'il faut décider s'ils peuvent être acceptés. Il est essentiel de parvenir à un consensus sur l'ensemble du réseau afin de maintenir l'intégrité des données et d'atténuer le risque potentiel d'attaques visant à bloquer le réseau avec des blocs indésirables.

Les deux approches les plus mûres pour résoudre ce problème sont connues sous le nom de preuve de travail (PoW - Proof-of-Work) et preuve d'enjeu (PoS - Proof-of-Stake). Les deux modèles présentent des avantages, mais également des inconvénients.

Preuve de travail

Le système PoW (appelé fonction de coût pour processeur) a été conçu par Cynthia Dwork et Moni Naor en 1993. Il s'agit simplement de définir un puzzle, et le premier nœud à le résoudre ajoute le bloc suivant. L'une des caractéristiques essentielles du puzzle est qu'il doit être relativement difficile à résoudre, mais facilement vérifiable.

Suite aux explications fournies dans la Partie 1 de ce document, il n'est pas surprenant de découvrir que les puzzles sont souvent basés sur la résolution de problèmes liés à la fonction de hachage qui ne peuvent être résolus qu'à l'aide de méthodes force brute, mais qui sont ensuite faciles à vérifier. L'opération qui consiste à résoudre les puzzles est communément appelée le minage.

Pour illustrer le type de bloc qui peut être défini, considérons un bloc similaire à l'exemple suivant :

La plus grande partie du contenu du bloc est fixe : l'index, les données et le hachage du bloc précédent sont des valeurs qui doivent rester inchangées, et c'est pourquoi elles valeurs sont ajoutées à une blockchain. Si ces valeurs sont soumises à un algorithme de hachage, elles produisent toujours la même valeur de hachage.

La seule façon de manipuler la valeur de hachage du bloc consiste à inclure une entité modifiable. Dans ce cas, il s'agit du nonce ou nombre utilisé une seule fois. Toute modification de ce nombre donne une valeur de hachage complètement différente, qu'il est impossible de prédire.

Le puzzle que le mineur doit résoudre consiste à trouver un nonce qui va créer une valeur de hachage inférieure à une valeur cible arbitraire. Par exemple, il devra trouver une valeur de hachage hexadécimale commençant par quatre zéros, c'est-à-dire que les 16 bits de début sont tous des zéros.

Ce puzzle ne peut être résolu qu'en utilisant la force brute, c'est-à-dire en essayant toutes les combinaisons de nonce à partir de zéro, jusqu'à obtention d'un hachage répondant aux exigences. Plus le nombre de zéros en en-tête requis est élevé, plus le puzzle est difficile à résoudre. Chaque bit ajouté double la durée moyenne de résolution du puzzle. Cependant, une fois le nonce créé, le système peut très facilement le vérifier.

Le premier mineur à créer un nonce vérifié par le système peut écrire le bloc sur la chaîne.

Cet exemple de mécanisme est similaire au système PoW Hashcash d'origine proposé comme une contre-mesure au déni de service ; il est également utilisé par certaines crypto-monnaies, y compris le Bitcoin, dans le cadre de leur algorithme de minage.

L'inconvénient majeur de cette forme de protocole de consensus est la quantité croissante de puissance de calcul (et par conséquent d'énergie) nécessaire pour exécuter une blockchain de cette manière. Par exemple, le protocole Bitcoin est conçu pour que sa résolution prenne 10 minutes en moyenne. À mesure que d'autres nœuds de minage rejoignent le réseau, la difficulté du puzzle change pour maintenir la même durée de résolution.

À compter de 2018, les ordinateurs du réseau Bitcoin calculaient 343 Petahash (3,43 x 1017) par seconde, ce qui (selon un témoignage écrit soumis au Sénat américain), équivaut à près de 1 % de la production mondiale d'électricité ! La consommation d'énergie de Bitcoin peut être consultée ici.

Preuve d'enjeu

Une autre approche du consensus est la preuve d'enjeu. Dans ce schéma, le nœud suivant qui peut créer un bloc est choisi par le biais d'une combinaison prédéfinie de sélection aléatoire, de taille de portefeuille d'unités de compte (par exemple, montant de crypto-monnaie ou enjeu) et de durée de détention de l'enjeu.

Si la sélection s'appuyait uniquement sur le montant de l'enjeu, le même utilisateur serait toujours choisi pour créer une centralisation de facto, puisque l'utilisateur détenant la participation majeure aurait un avantage permanent ; il créerait toujours le bloc suivant.

C'est là qu'intervient la randomisation. En règle générale, il est souhaitable que la probabilité d'être le créateur du bloc suivant (appelé forgeur ou forgeron plutôt que mineur) soit proportionnelle au montant relatif de l'enjeu.

À titre d'exemple, considérons une crypto-monnaie que nous appellerons Redstones. Dans le bassin de forgeurs potentiels, on compte Xanthe qui détient 800 Redstones, Bert qui possède 600 Redstones, Carmine qui possède 400 Redstones et Ophélia qui possède 200 Redstones. Pour chaque bloc à écrire, Xanthe a 40 % de chances d'être choisi, Bert a 30 % de chances, Carmine a 20 % de chances et Ophélia a 10 % de chances.

Cette solution supprime le problème de l'importante consommation d'énergie des protocoles de consensus de PoW, mais présente un autre ensemble de problèmes qui doivent être atténués par des mécanismes de validation supplémentaires.

Le premier problème est lié à une intention malveillante potentielle de la part de l'une ou de plusieurs principales parties prenantes, capables de semer le chaos en disposant d'un plus grand nombre d'opportunités d'écrire et de valider des blocs. Cela ouvre la porte à de nombreuses méthodes d'attaque, y compris les attaques Bribe.

Se pose également le problème que les fondateurs de la mise en œuvre de la blockchain possèdent des enjeux si importants au départ qu'ils disposent du droit de veto sur le reste du réseau. Il ne faut pas non plus oublier le problème associé de rétention d'enjeu, ce qui rend impossible à d'autres d'acquérir des participations, et pourrait vouloir dire dans le cadre d'une monnaie qu'il n'y pas assez de monnaie disponible pour tous.  

L'une des solutions à ces problèmes consiste à combiner la randomisation avec l'âge de la crypto-monnaie, qui correspond au solde multiplié par le nombre de jours pendant lesquels les crypto-monnaies n'ont pas été déplacées. Pour pouvoir écrire un bloc, les pièces d'un nœud doivent avoir été conservées pendant 30 jours. Les ensembles d'unités plus grands et plus anciens auront une probabilité plus élevée de signer un bloc, jusqu'à un plafond de 90 jours, mais passé ce délai, la probabilité maximale est atteinte et ne peut pas aller plus loin. Toutefois, si un détenteur d'unités est sélectionné pour écrire un bloc, l'enjeu revient à un âge de zéro jour et le détenteur doit attendre 30 jours avant de devenir de nouveau candidat pour la réécriture. Il s'agit du système de base utilisé par Crypto-monnaie pair à pair.

Une autre solution qui gagne du terrain :

Preuve d'enjeu déléguée

Il s'agit d'un système qui utilise des nœuds d'autorité, souvent désignés comme étant délégués. Ces systèmes utilisent un système de vote en temps réel qui dépend de la réputation des délégués pour déterminer le nombre fixe de délégués à tout moment.

Les délégués actifs doivent être votés par les détenteurs d'unités dont le poids de vote est déterminé par le nombre d'unités de base qu'ils détiennent. Dans certaines mises en œuvre, les délégués doivent déposer des fonds sur un compte immobilisé pendant un temps et qui peut être confisqué en cas de malfaisance.

Si la réputation d'un délégué tombe en dessous d'un certain niveau, il est remplacé par un délégué substitut qui prendra la place du délégué écarté pour proposer et valider des blocs.   

Résumé

Dans cette partie, nous avons examiné les différents types de nœuds blockchain que vous pouvez rencontrer et différents protocoles qui permettent d'obtenir un consensus sur les nœuds d'un réseau pair à pair. J'ai délibérément omis de parler de la plupart des arguments pour et contre chaque type de protocole de consensus, car beaucoup sont plutôt ésotériques et ne mènent nulle part. Les discussions continuent et engendrent des débats parfois assez vifs entre les différents camps, mais n'éclairent pas pour autant ceux qui cherchent à déterminer si la blockchain convient à leur application.

Dans la dernière partie de cette série, nous examinerons le paradoxe des généraux byzantins et la façon dont les systèmes gèrent les erreurs à grande échelle.

Mark completed his Electronic Engineering degree in 1991 and went on to work in real-time digital signal processing applications engineering, later moving into technical marketing.

6 May 2019, 12:04

Commentaires