Une introduction approfondie aux systèmes distribués – Meilleure programmation
Un grand livre distribué peut être considéré comme une base de données immuable et uniquement à ajouter qui est répliquée, synchronisée et partagée sur tous les nœuds du réseau distribué.
Échelle connue – Le réseau Ethereum a enregistré un pic de 1,3 million de transactions par jour le 4 janvier 2018.
Ils tirent parti de la Sourcing événementiel modèle, vous permettant de reconstruire l’état du registre à tout moment de son histoire.
Blockchain
La blockchain est la technologie sous-jacente actuelle utilisée pour les registres distribués et, en fait, a marqué leur début. Cette dernière et plus grande innovation dans l’espace distribué a permis la création du tout premier protocole de paiement véritablement distribué – Bitcoin.
Blockchain est un grand livre distribué contenant une liste ordonnée de toutes les transactions qui se sont jamais produites sur son réseau. Les transactions sont regroupées et stockées dans des blocs. L’ensemble de la blockchain est essentiellement un liste liée de blocs (d’où le nom). Lesdits blocs sont coûteux en calculs à créer et sont étroitement liés les uns aux autres grâce à la cryptographie.
En termes simples, chaque bloc contient un hachage spécial (qui commence par X quantité de zéros) du contenu du bloc actuel (sous la forme d’un arbre de Merkle) plus le hachage du bloc précédent. Ce hachage nécessite beaucoup de puissance CPU pour être produit car la seule façon de le faire est par la force brute.
Mineurs sont les nœuds qui essaient de calculer le hachage (via la force brute). Les mineurs sont tous en concurrence les uns avec les autres pour trouver une chaîne aléatoire (appelée nonce) qui, combiné au contenu, produit le hachage susmentionné. Une fois que quelqu’un trouve le nonce correct, il le diffuse à l’ensemble du réseau. La chaîne est ensuite vérifiée par chaque nœud et acceptée dans sa chaîne.
Cela se traduit par un système où il est absurdement coûteux de modifier la blockchain et absurdement facile de vérifier qu’elle n’est pas falsifiée.
Il est coûteux de modifier le contenu d’un bloc car cela produirait un hachage différent. N’oubliez pas que le hachage de chaque bloc suivant en dépend. Si vous deviez changer une transaction dans le premier bloc de l’image ci-dessus, vous changeriez la racine de Merkle. Cela, à son tour, changerait le hachage du bloc (très probablement sans les zéros non nécessaires) – cela changerait le hachage du bloc # 2, et ainsi de suite. Cela signifie que vous devez forcer par force un nouveau nonce pour chaque bloc après celui que vous venez de modifier.
Le réseau fait toujours confiance et réplique la chaîne valide la plus longue. Afin de tromper le système et finalement produire une chaîne plus longue, vous auriez besoin de plus de 50% de la puissance totale du processeur utilisée par tous les nœuds.
La blockchain peut être considérée comme un mécanisme distribué pour consensus émergent. Il n’y a pas de consensus explicite – il n’y a pas d’élection ni de moment fixe où le consensus se produit. Au contraire, un consensus est un émergent produit de l’interaction asynchrone de milliers de nœuds indépendants, tous suivant les règles de protocole.
Cette innovation sans précédent est récemment devenue un boom dans l’espace technologique, les gens prédisant qu’elle marquera la création du Web 3.0. C’est certainement l’espace le plus excitant du monde du génie logiciel en ce moment, rempli de problèmes extrêmement difficiles et intéressants qui attendent d’être résolus.
Bitcoin
Ce qui manquait aux protocoles de paiement distribués précédents était un moyen d’empêcher pratiquement problème de double dépense en temps réel, de manière répartie. La recherche a produit des propositions intéressantes[1], mais Bitcoin a été le premier à mettre en œuvre une solution pratique avec des avantages évidents par rapport aux autres.
Le problème de la double dépense indique qu’un acteur (par exemple Bob) ne peut pas dépenser sa seule ressource à deux endroits. Si Bob a 1 $, il ne devrait pas pouvoir le donner à la fois à Alice et à Zack – ce n’est qu’un seul atout et il ne peut pas être dupliqué. Il s’avère qu’il est vraiment difficile de vraiment atteindre cette garantie dans un système distribué. Il y a quelques approches d’atténuation intéressantes antérieurs à la blockchain, mais ils ne résolvent pas complètement le problème de manière pratique.
Les doubles dépenses sont résolues facilement par Bitcoin, car un seul bloc est ajouté à la chaîne à la fois. La double dépense est impossible dans un même bloc; par conséquent, même si deux blocs sont créés en même temps, un seul viendra sur la chaîne la plus longue éventuelle.
Bitcoin repose sur la difficulté d’accumuler de la puissance CPU.
Alors que dans un système de vote, un attaquant n’a besoin que d’ajouter des nœuds au réseau (ce qui est facile, car l’accès gratuit au réseau est une cible de conception), dans un schéma basé sur la puissance du processeur, un attaquant est confronté à une limitation physique: accéder à plus et un matériel plus puissant.
C’est également la raison pour laquelle des groupes de nœuds malveillants doivent contrôler plus de 50% de la puissance de calcul du réseau pour mener à bien toute attaque réussie. Moins que cela et le reste du réseau créera une chaîne de blocs plus longue plus rapidement.
Ethereum
Ethereum peut être considéré comme une plate-forme logicielle programmable basée sur la blockchain. Il possède sa propre crypto-monnaie (Ether) qui alimente le déploiement de contrats intelligents sur sa blockchain.
Les contrats intelligents sont un morceau de code stocké en une seule transaction dans la blockchain Ethereum. Pour exécuter le code, il vous suffit d’émettre une transaction avec un contrat intelligent comme destination. Cela, à son tour, oblige les nœuds mineurs à exécuter le code et les modifications qu’il entraîne. Le code est exécuté à l’intérieur de la machine virtuelle Ethereum.
Solidité, Le langage de programmation natif d’Ethereum, est utilisé pour écrire des contrats intelligents. Il s’agit d’un langage de programmation complet qui s’interface directement avec la chaîne de blocs Ethereum, vous permettant d’interroger des états tels que des soldes ou d’autres résultats de contrats intelligents. Pour éviter les boucles infinies, l’exécution du code nécessite une certaine quantité d’Ether.
Comme la blockchain peut être interprétée comme une série de changements d’état, de nombreuses applications distribuées (DApp) ont été construites au-dessus d’Ethereum et de plates-formes similaires.
Autres utilisations des registres distribués
Preuve d’existence: Un service pour stocker de manière anonyme et sécurisée la preuve qu’un certain document numérique existait à un moment donné. Utile pour garantir l’intégrité, la propriété et l’horodatage des documents.
Organisations autonomes décentralisées (DAO): Les organisations qui utilisent la blockchain comme moyen de parvenir à un consensus sur les propositions d’amélioration de l’organisation. Des exemples sont Système de gouvernance de Dash et le projet SmartCash.
Authentification décentralisée: Stockez votre identité sur la blockchain, vous permettant d’utiliser authentification unique (SSO) partout. Exemples: Sovrin, Civique.
Et bien d’autres encore. La technologie des registres distribués a vraiment ouvert des possibilités infinies. Certains sont probablement en train d’être inventés en ce moment même!