Heimdall

Le protecteur auditif tout-voyant & tout-de-Matic

Crédits: Pepakura Helmet Heimdall de GimpeeIndustries

Matic Network a une architecture de sécurité à trois couches dans laquelle sont impliquées les entités suivantes:

1) Producteurs de blocs - Chaîne BOR d’aka: Ils interviennent dans le traitement par lots des transactions par blocs pour garantir des délais de confirmation plus rapides.

2) Validator Layer - alias Heimdall: ce sont des noeuds de validation qui regroupent les blocs produits par les producteurs de blocs et les transmettent à l’Ethereum.

3) Observateurs de réseau - Acteurs de l’Ethereum, ils utilisent des preuves de fraude pour contester toute transaction qu’ils jugent frauduleuse sur les chaînes latérales.

Réseau Matic - Schéma d'architecture simplifiée

Pour un meilleur contexte sur l’architecture de Matic, veuillez vous reporter à l’article suivant:

Préparez-vous à plonger profondément dans Heimdall!

Heimdall est un grand groupe de noeuds de validation servant de pont pour connecter la chaîne Ethereum à Bor. Tout le monde peut devenir un validateur et exécuter un nœud de validateur sur la chaîne Matic en se fixant sur la chaîne Ethereum.

Les validateurs sous Heimdall sont notamment responsables des tâches suivantes:

  1. Vérification des transactions dans les blocs produits par les nœuds producteurs de blocs
  2. Création de la racine Merkle de 256 blocs ou plus
  3. Atteindre un consensus parmi les validateurs et pousser la racine de Merkle vers l’Ethereum
  4. Communiquer avec d'autres noeuds du validateur et parvenir à un consensus sur l'ensemble des blocs à inclure dans un point de contrôle
  5. Tous les validateurs qui reçoivent un point de contrôle, vérifiez qu'ils interrogent leurs noeuds producteurs de blocs si la racine Merkle d'un point de contrôle correspond à la racine Merkle qu'ils ont produite pour le même ensemble de blocs.
  6. Pousser un point de contrôle dans la chaîne principale après l'avoir validé à la majorité des deux tiers des validateurs sur Heimdall
Voici à quoi ressemble un point de contrôle

La chaîne Heimdall veille à ce que les nœuds producteurs de blocs ne commettent pas de fraude, par conséquent, ils ne font confiance aux informations qu’ils reçoivent de Bor. Heimdall s'appuie uniquement sur Ethereum en tant que source de vérité. Tout, depuis les nouveaux validateurs entrants jusqu'aux validateurs existants, en passant par la distribution aux validateurs, etc., se produit sur la chaîne Ethereum. Une fois qu'une action liée au validateur est effectuée sur smart-contract, le validateur peut soumettre une transaction validatorJoin ou validatorExit ou validatorUpdate sur Heimdall. Tous les validateurs interrogent le contrat intelligent qui gère les validateurs et valide les transactions sur Heimdall.

Voici certains des problèmes rencontrés lors de la conception du nœud du validateur:

  1. Ethereum et Heimdall sont certes des amis, mais ils ne partagent pas des «États», ce qui rend difficile le partage d’informations entre ces deux chaînes disjointes.
  2. Ethereum stocke toutes les informations sur les personnes que Heimdall a nommées en tant que validateurs, mais ne sait pas quel validateur décidera du proposant pour le prochain point de contrôle.
  3. Les validateurs sur Heimdall doivent prouver qu'ils ont convenu d'un point de contrôle en le signant. Les signatures seraient vérifiées sur la chaîne, Tendermint aurait utilisé une courbe comme le bitcoin, alors qu'Ethereum aurait utilisé secp256k1 et qu'un changement de schéma de signature sur la chaîne Tendermint aurait dû être effectué pour le rendre compatible avec Ethereum.
  4. Les données sur les contrats intelligents changent lorsque les validateurs entrent, sortent et que de nouveaux changements d'état se produisent. Comment un nœud nouvellement synchronisé est-il censé valider les transactions impliquant une interaction avec une autre chaîne dans de tels cas?

Maintenir la synchronisation entre Ethereum et Heimdall est difficile, mais pas impossible. Au cours du développement, nous avons proposé plusieurs approches pour résoudre ces problèmes. Il nous a fallu de nombreuses itérations sur la planche à dessin pour que ce travail fonctionne avec élégance.

Voici comment l'envoi d'un point de contrôle via Heimdall fonctionne maintenant:

  1. Le proposant sélectionné dans le pool de validateurs crée un point de contrôle en calculant la racine Merkle de 256 blocs ou plus tout en vérifiant les transactions à l'intérieur des blocs.
  2. Un proposant propose un point de contrôle à tous les validateurs. Le point de contrôle contient des méta-informations à ce sujet afin que tous les autres validateurs puissent le valider.
  3. Tous les validateurs qui reçoivent un point de contrôle vérifient si la racine Merkle des blocs donnés correspond à ce qu’ils ont.
  4. Si le point de contrôle est correct, les validateurs qui utilisent les potins du moteur de consensus Tendermint votent entre eux.
  5. Une fois que le point de contrôle reçoit les votes de 2/3 + de tous les validateurs, le point de contrôle est mis en file d'attente sur Heimdall pour être envoyé à l'Ethereum.
  6. C'est à ce moment-là que le proposant prend les votes et les soumet sur l'Ethereum, prouvant ainsi au contrat intelligent que le point de contrôle est parvenu à un consensus sur Heimdall.
  7. Le contrat intelligent sur la chaîne Ethereum conserve un enregistrement du nombre de points de contrôle reçus et par qui ont été soumis, ainsi que d'autres données essentielles.
  8. Une fois que la transaction sur Ethereum est réussie, le proposant envoie sur Heimdall une autre transaction appelée ACK. qui contient le numéro de point de contrôle attribué au point de contrôle par le contrat intelligent à tous les validateurs indiquant que la transaction de point de contrôle a été acceptée par Ethereum.
  9. Tout le monde est tellement sceptique sur Heimdall qu’ils vérifient eux-mêmes avec Ethereum si le point de contrôle est exact ou non et traitent ensuite seulement la transaction. Il s’ensuit l’adage suivant: «Ne faites pas confiance. Vérifier ”au démarrage.
  10. Et finalement, un checkpoint est confirmé sur Heimdall

Mais mais… mais que se passe-t-il si un proposant ne soumet pas de point de contrôle?

11. Après un certain intervalle, les prochains validateurs en ligne envoient une transaction NoAck à tous les validateurs, indiquant qu'un point de contrôle n'a pas été soumis au contrat intelligent depuis longtemps et qu'ils souhaitent envoyer un point de contrôle.

12. Heimdall vérifie si cela est vrai et permet au prochain proposant en ligne de redémarrer le processus

Ce point de contrôle en deux phases nous permet de garder facilement les deux chaînes synchronisées et nous aide à punir les proposeurs qui n'ont pas soumis de point de contrôle et à récompenser les bons validateurs.

Nous espérons que cet article vous a donné un aperçu de la manière dont la couche Validator interagit avec Ethereum. Nous continuerons cette série pour vous donner un aperçu plus approfondi de Heimdall.

Que Heimdall règne longtemps!

Connecte-toi avec nous

Site web | GitHub | Twitter | Télégramme | Reddit | Youtube

Publications précédentes