IOTA décentralisé : détails du Coordicide

iota coordicide

Depuis toujours le Coordinateur est un des principaux points de critique de IOTA. Ce système servant à sécuriser le réseau durant ses premiers pas vit actuellement ses dernières heures. Les développeurs viennent de publier une quantité incroyable de détails concernant l’arrêt du coordinateur et la solution finale qui fera potentiellement de IOTA la première crypto à la fois décentralisée et aux transactions sans frais, rapides et scalables. Accrochez-vous pour une plongée dans les détails de ce nouveau système.

 

Consensus et Coordinateur  

 

« We dit it!  » 

– Dr. Serguei Popov, co-fondateur IOTA –

 

Le coordinateur est un nœud un peu spécial, permettant d’assurer que tout le monde considère les mêmes transactions comme étant valides ou invalides. C’est ce que l’on appelle plus globalement le consensus. Comme nous l’évoquions déjà dans notre article sur CLIRI, un testnet sans coordinateur, ce coordinateur se contente principalement d’émettre des bornes afin de certifier la validité des transactions. Cela veut dire aussi qu’il donne de nombreux pouvoirs aux développeurs qui sont les seuls à le contrôler. Il est donc primordial de s’en débarrasser, tout en assurant que le système demeure sécurisé. 

 

coordinator iota

 

Coordicide 

Le Coordicide est le nom de code qui désigne le retrait pur et simple du Coordinateur. Différentes solutions  avaient déjà été évoquées à ce sujet par la fondation il y a quelques mois. Aujourd’hui nous apprenons via un site web créé pour l’occasion, qu’ils optent finalement pour un mix des approches, avec quelques nouvelles additions.  

 

 

Au cœur de la solution retenue finalement se trouve un mécanisme de vote appelé ShimmerCe système fera en sorte que les nœuds du réseau (= serveurs et autres appareils qui font tourner le code de IOTA) demanderont l’opinion des autres nœuds quant aux transactions à inclure ou non dans le Tangle en cas de doute. 

Par ailleurs, afin de garantir une amélioration continue du système en toute simplicité, le projet du Coordicide est développé en modules indépendants les uns des autres. Ainsi, si des recherches futures permettent l’amélioration d’un module, il ne sera pas nécessaire de complètement refondre tout le système de consensus pour l’améliorerDans cette optiquecinq modules ont été identifiés. Nous en faisons une ici une description simplifiée, un whitepaper est disponible pour les plus matheux d’entre vous. 

 

Module 1 : Identité des nœuds et Mana 

Pour pouvoir utiliser un système de vote, il est important de savoir qui vote et quel est son choix. De même, vu que l’on vote pour savoir si une transaction est valide ou non, il est nécessaire de connaître avec précision quel nœud a envoyé quelle transaction (attention, on ne parle pas d’identifier à qui sont les iotas, juste quel est le serveur qui a posté la transaction sur le Tangle). Pour ce faire, chaque nœud se verra donc attribuer un identifiant unique. 

En parallèle, un système de réputation est mis en place pour séparer les nœuds honnêtes des malhonnêtes. Les nœuds se verront donc attribuer des points de réputation, appelés mana. Comme dans la vraie vie, pour être efficace, la réputation doit être difficile à gagner mais très facile à perdre. Ainsi à chaque fois que des iotas seront échangés (chaque transaction de valeur), le nœud qui postera la transaction recevra des points de mana pour cette transaction. Si à un moment ce nœud se met à agir de manière malhonnête, les agents qui auront effectué les transactions pourront décider de réattribuer son mana à un autre nœud, lui faisant ainsi perdre une bonne partie de sa réputation. 

 

Module 2 : Auto-peering des nœuds 

IOTA est un système distribué, ce qui veut dire que le réseau est constitué de nœuds directement connectés entre eux de pair-en-pair (peer-to-peer en anglais). Dans un tel système, le seul moyen qu’a un nœud pour accéder à de l’information est par l’intermédiaire de ses voisins (les nœuds qui y sont directement connectés). Jusqu’à présent, les personnes qui opèrent ces nœuds se connectent les uns aux autres « manuellement », en s’échangeant leurs adresses IP respectives. Cet échange d’adresse est long, inefficace et peu optimisé dans un monde mobile où les nœuds se connectent/déconnectent sans cesse. Les développeurs travaillent donc d’arrache-pied sur un système de liaison automatique (auto-peering) robuste et sécurisé. Un tel système permettra aux nœuds de trouver leurs voisins en toute indépendance.  

 

iota auto-peering

Toutefois, cela s’accompagne aussi de dangers potentiels. Un adversaire pourrait tenter de tirer profit de ce mécanisme automatique pour essayer de déconnecter une partie du réseau par exemple. Pour mitiger ce risque, les règles de choix de voisins seront modifiables facilement par l’opérateur du nœud. Il sera donc impossible qu’un attaquant puisse prédire avec qui un nœud X cherchera à s’associer. 

Ce mécanisme d’auto-peering permettra d’optimiser la topologie du réseau (= la façon dont les nœuds sont connectés entre eux). Le réseau optimal permettra alors de raccourcir le trajet à parcourir entre deux nœuds donnés, ce qui améliorera le temps de propagation de l’information. 

 

Module 3 : Protection contre le spam 

Les systèmes distribués reposent très fortement sur les capacités des appareils qui composent le réseau (serveurs, ordinateurs, objets connectés, etc.). Or ceux-ci ont des capacités bien souvent limitées, que ce soit en terme de bande-passante, ou de puissance de calcul. Il est donc primordial de restreindre le flux d’information qu’on leur demande de traiter chaque seconde si on ne veut pas qu’ils soient débordés. Dans le cas des registres distribués, il faut donc limiter le nombre de transactions qu’un seul nœud peut émettre en un court laps de temps pour éviter qu’il ne ralentisse tout. Un peu comme si on limitait l’arrivée de nouvelles voitures sur une autoroute pour éviter d’avoir un embouteillage généralisé.  

Pour l’instant ce contrôle s’effectue via une preuve de travail à réaliser à chaque nouvelle transaction. Cette preuve de travaille force le nœud à utiliser une partie de ses ressources pour « ralentir le rythme » et éviter qu’il n’ait un débit trop élevé. Mais si un tel système protège le réseau, il s’accompagne aussi de certaines limites. Il donne souvent lieu à une course au minage avec l’utilisation d’ASICS (par exemple) qui se spécialisent dans la résolution des preuves de travail au détriment des plus petits appareils. Ceci pourrait donc s’avérer très néfaste pour un système spécifiquement conçu pour l’internet des objets. 

Afin de résoudre ce problème, les développeurs proposent donc un système de contrôle de flux adaptatif. Avec cette méthode, la difficulté de la preuve de travail évoluera intelligemment de manière indépendante pour chaque nœud sur base de différents facteurs (le nombre de transactions récentes, le mana, etc.). 

 

Module 4 : La sélection des extrémités à valider 

Chaque transaction IOTA doit obligatoirement valider deux transactions précédentes (appelées extrémités) pour être elle-même validable. Le choix de ces extrémités, appelé tipsel (pour tip selection) est donc crucial pour qu’une transaction soit validée à son tour. Actuellement, le système fonctionne de manière robuste et fiable au détriment d’une certaine rapidité et efficacité. Grâce au système de vote entre les nœuds introduit avec le module 5, il sera possible de déterminer de manière rapide les bonnes et mauvaises extrémités. Ceci garantira alors un taux de confirmation bien plus élevé et un temps de validation plus rapide pour les transactions honnêtes. Le mécanisme de vote permettra aussi de changer certaines règles du tipsel afin de rendre cet algorithme lui-même plus efficace. 

 

 

Module 5 : Résolution active des conflits avec Shimmer 

C’est la dernière couche et sans doute la plus importante pour le Coordicide. C’est ce module qui implémente le mécanisme de vote entre les nœuds en tant que tel. Ce système apporte de nombreux bénéfices à IOTA : 

  • Pour l’instant si deux transactions sont en conflit (double dépense), le système va continuer à ajouter des transactions qui valident l’une et l’autre jusqu’à ce que finalement une des deux « sous chaines », incompatibles entre elles, devienne plus lourde. Plus la chaine est lourde et plus les nouvelles transactions s’y attacheront, renforçant ainsi le consensus. Ce système est donc lent et de nombreuses transactions s’étant attachées sur la mauvaise chaîne au début ne seront donc pas confirmées (elles nécessiteront un rattachement). Grâce au système de vote, ce genre de conflit entre deux transactions pourra être résolu dès le début de manière proactive avec un vote des nœuds. 
  • Les votes sont proportionnels à la quantité de mana détenue par le nœud. Un nœud avec une bonne réputation jouira donc d’une plus grande influence. 
  • Les nœuds honnêtes participent à la sécurisation du réseau grâce à leur vote, même s’ils ne sont pas en train de poster des transactions. Combiné avec le système de mana, ce mécanisme de vote remplace la sécurisation via la puissance de hashage honnête des blockchains, sans pour autant nécessiter de preuve de travail. 
  • Le consensus est complètement découplé des autres aspects tels que le tipsel ou la structure du Tangle. Ceci rend donc le registre modulaire et facilite son adaptation à l’avenir. Cela permet également de se prémunir de toute une série d’attaques qui visent la structure du Tangle pour manipuler le consensus (chaines parasites) 

Le problème d’un tel système de vote est qu’il requiert normalement de connaître tous les votants potentiels (tous les nœuds du système) et qu’il s’accompagne d’énormément d’informations supplémentaires à échanger. Sous cette forme, c’est donc loin d’être optimal pour les besoins de l’internet des objets. C’est pour ça que les développeurs ont mis sur pied Shimmer

 

iota shimmer

 

Mais comme cet article est un déjà bien assez long, Shimmer sera le sujet d’un deuxième article détaillé à paraître d’ici un jour ou deux.   

 

EDIT : Découvrez l’article sur Shimmer publié ici

Cet article a 7 commentaires

  1. Alexis Gaucher le 29/05/2019 à 19:24 Répondre

    Super article, bravo.
    J’ai hâte de lire la suite !

    • Thomas Lambert le 29/05/2019 à 21:14 Répondre

      Merci beaucoup ! Content de voir que t’es toujours dans le coin 😀
      Alors, t’en penses quoi de ces prémices de décentralisation ?

  2. Alexis Gaucher le 29/05/2019 à 23:26 Répondre

    C’est pas mal, je ne m’attendais pas à ça.
    Je suis incapable de juger le côté technique ou fonctionnel ici, mais c’est intéressant comme approche, c’est disruptif 🙂 j’attends la suite avec impatience.
    Et oui, je suis toujours dans le coin ! Je suis plus discret, mais je continue à suivre l’actualité. Les problématiques actuelles sont intéressantes et seront décisives pour la suite (Iota et le coordinateur, Ethereum et la proof of stake…).
    Et bravo pour tes articles, c’est super d’avoir de la littérature en français sur Iota !

  3. PETIT le 30/05/2019 à 21:12 Répondre

    Incroyable, quel travail pour ce site de manière globale. Félicitations, vraiment !

  4. Thomas Lambert le 31/05/2019 à 11:24 Répondre

    Merci beaucoup !

  5. Alakazam le 07/06/2019 à 19:45 Répondre

    Bravo pour cette vulgarisation d’un sujet bien complexe

    • Lambtho le 11/06/2019 à 11:35 Répondre

      Merci !

Laisser un commentaire