Apprendre Cardano | Part 2 (Source : https://docs.cardano.org/learn/consensus-explained)

Apprendre Cardano | Partie 2

(1) Le consensus expliqué (Consensus explained)

Le consensus est le processus par lequel toutes les personnes impliquées dans la gestion de la blockchain parviennent à une opinion majoritaire. Il faut s’entendre sur les blocs à produire, sur la chaîne à adopter et déterminer l’état unique du réseau. Le protocole de consensus détermine la manière dont les nœuds individuels évaluent l’état actuel du système de grand livre et parviennent à un consensus.

Le protocole a trois responsabilités principales :

  • Effectuez une vérification du leader et décidez si un bloc doit être produit
  • Sélection de la chaîne de poignée
  • Vérifier les blocs produits

Les chaînes de blocs créent un consensus en permettant aux participants de regrouper les transactions que d’autres ont soumises au système en blocs et de les ajouter à leur chaîne (séquence de blocs). Déterminer qui est autorisé à produire un bloc quand et quoi faire en cas de conflit (par exemple, deux participants ajoutant différents blocs au même point de la chaîne) est l’objectif des différents protocoles de consensus.

Ouroboros, notre protocole de consensus de preuve de participation révolutionnaire, s’est avéré avoir les mêmes garanties de sécurité que la preuve de travail. Ouroboros établit des garanties de sécurité, et le protocole a été livré avec plusieurs articles évalués par des pairs présentés lors de conférences et de publications de premier plan dans le domaine de la cybersécurité et de la cryptographie.

(2) Clés Cardano (Cardano keys)

Les clés sont des paires de clés de chiffrement asymétriques utilisées pour :

  • Signer et valider les paiements et les certificats de jalonnement
  • Identifier et définir les adresses sur la blockchain Cardano

Types of keys :

À Cardano, il existe deux principaux types de clés :

  1. Clés de nœud (Node keys)
  2. Clés d’adresse (Address keys)

Clés de nœud

Les clés de nœud représentent la sécurité de la blockchain et se composent des clés suivantes :

  • Opérateur/clé opérationnelle :

Il s’agit de paires de clés hors ligne d’opérateurs qui incluent un compteur de certificats pour les nouveaux certificats.

Il est de la responsabilité de l’opérateur de gérer à la fois les clés chaudes (en ligne) et froides (hors ligne) pour le pool. Les clés froides doivent être sécurisées et ne doivent pas résider sur un appareil doté d’une connectivité Internet. Il est recommandé de conserver plusieurs sauvegardes de cold keys.

  • Paire de clés KES

Pour créer un certificat opérationnel pour un nœud producteur de blocs, vous avez besoin d’une paire de clés Key Evolving Signature (KES), qui authentifie qui vous êtes.

Une clé KES ne peut évoluer que pendant un certain nombre de périodes et devient inutile par la suite. Ceci est utile, car même si un attaquant compromet la clé et obtient l’accès à la clé de signature, il ne peut désormais l’utiliser que pour signer des blocs, mais pas des blocs datant de périodes antérieures, ce qui rend impossible pour l’attaquant de réécrire l’historique.

Une fois le nombre de périodes défini écoulé, l’opérateur du nœud doit générer une nouvelle paire de clés KES, émettre un nouveau certificat de nœud opérationnel avec cette nouvelle paire de clés et redémarrer le nœud avec le nouveau certificat.

  • Clés VRF

Ouroboros Praos ajoute une couche de sécurité supplémentaire pour bloquer la production via des clés de fonction aléatoire vérifiable (VRF).

Dans d’autres protocoles de blockchain de preuve de participation (Ouroboros Classic ou BFT, par exemple), nous savons qui a le droit de faire le bloc dans chaque créneau, car le calendrier du leader du créneau est public. Dans ce cas, vous n’avez qu’à prouver que vous êtes qui vous prétendez être, et tout le monde peut consulter l’horaire du leader des machines à sous publiques pour le vérifier.

Cependant, l’horaire du leader des machines à sous d’Ouroboros Praos est gardé privé, ce qui signifie que personne ne sait à l’avance qui sera le leader des machines à sous, mais une fois que quelqu’un l’est, il peut prouver à tout le monde qu’il utilise la clé VRF.

La clé VRF est une clé de vérification de signature stockée dans le certificat opérationnel. Cela prouve qu’un nœud a le droit de créer un bloc dans un slot donné.

Clés d’adresse (Address keys)

Les clés d’adresses représentent les fonctions des adresses dérivées des clés d’identification des fonds sur la blockchain constituées des clés suivantes :

  • Clé de paiement : paire de clés d’adresse unique généralement utilisée pour générer des adresses UTXO
  • Clé de jalonnement : paire de clés d’adresse de jalonnement/récompense généralement utilisée pour générer des adresses de compte/récompense.

(3) Cardano addresses (Adresses de Cardano)

Les adresses sont un hachage blake2b-256 des clés de vérification/publiques pertinentes concaténées avec certaines métadonnées qui peuvent être stockées sur la blockchain Cardano.

Shelley introduit quatre types d’adresses différents :

  1. adresses de base
  2. adresses de pointeur
  3. adresses d’entreprise
  4. adresses de compte de récompense

Outre ces nouvelles adresses, Shelley continue de prendre en charge les adresses d’amorçage et les adresses de script de l’ère Byron, mais seules les nouvelles adresses de base et de pointeur portent des droits de participation. Par conséquent, les adresses consistent en certaines données sérialisées spécifiées dans la spécification du grand livre stockée dans les blocs de la blockchain, par exemple, une adresse UTXO (Unspent Transaction Output).

Les données sérialisées (adresse) contiennent deux parties :

  • Métadonnées : utilisées pour l’interprétation.
  • Payload : les données brutes ou encodées.

Adresses de base

Une adresse de base spécifie directement la clé de jalonnement qui doit contrôler la mise pour cette adresse. Les droits de jalonnement associés aux fonds détenus à cette adresse peuvent être exercés par le propriétaire de la clé de jalonnement. Les adresses de base peuvent être utilisées dans les transactions sans enregistrer la clé de jalonnement à l’avance.

Adresses de pointeur

Une adresse de pointeur spécifie indirectement la clé de mise qui doit contrôler la mise pour l’adresse. Il fait référence à une clé d’enjeu par un pointeur de clé d’enjeu, qui est un emplacement sur la blockchain du certificat d’enregistrement de clé d’enjeu pour cette clé. Les adresses de pointeur peuvent être utilisées dans les transactions, même si leur cible n’est pas un enregistrement de clé de participation active. Cela couvre le scénario où la clé n’a pas été enregistrée après (ou même avant) la transaction, et couvre également les pointeurs vers des cibles qui sont manifestement invalides. La raison pour laquelle de telles cibles invalides sont autorisées est que les nœuds n’ont besoin que de suivre les clés de mise actuellement actives.

Le pointeur peut être considérablement plus court que le hachage utilisé dans les adresses de base.

Il y a une subtilité avec les adresses de pointeur. Il peut arriver qu’un certificat d’enregistrement de clé de participation référencé par une adresse de pointeur soit perdu en raison d’une annulation. Pour éviter la perte de fonds dans ce scénario, le système considère que les adresses de pointeur avec un pointeur invalide sont valides dans le but d’utiliser les fonds qui y sont stockés comme entrées pour les transactions (mais les ignore à des fins de preuve de participation). Facultativement, un portefeuille peut refuser de créer des transactions vers des adresses de pointeur avant que le certificat référencé ne soit devenu immuable, pour éviter que des fonds ne soient exclus de la preuve de participation, en cas de retour en arrière.

Adresses d’entreprise

Les adresses d’entreprise ne comportent aucun droit de participation. Par conséquent, l’utilisation de ces adresses signifie que vous refusez de participer au protocole de preuve de participation.

Les bourses ou autres organisations qui contrôlent de grandes quantités d’ada - mais les détiennent au nom d’autres utilisateurs - peuvent souhaiter suivre une politique de non-exercice des droits de participation. En utilisant des adresses d’entreprise, les échanges peuvent démontrer qu’ils suivent cette politique. Étant donné que les adresses d’entreprise ne sont associées à aucune clé de jalonnement, elles sont automatiquement exclues des mécanismes qui influencent le calendrier de leadership des créneaux. Notez que l’utilisation d’adresses sans droits de mise diminue effectivement le montant total de la mise, ce qui fait le jeu d’un adversaire potentiel.

Adresses des comptes de récompense

Une adresse de récompense est un hachage cryptographique de la clé de jalonnement publique de l’adresse. Les adresses de compte de récompense sont utilisées pour distribuer des récompenses pour la participation au protocole de preuve de participation (soit directement, soit par délégation).

Ils ont les propriétés suivantes :

  • La comptabilité de style compte est utilisée, pas de style UTXO.
  • Les fonds ne peuvent pas être reçus via des transactions. Au lieu de cela, leur solde n’est augmenté que lorsque les récompenses sont distribuées.
  • Une correspondance biunivoque existe entre les clés de jalonnement enregistrées et les adresses de compte de récompense.

Cette clé est utilisée chaque fois que des fonds sont retirés de l’adresse. De plus, la participation associée aux fonds dans l’adresse contribue à la participation de cette clé. Tout comme dans le cas des adresses d’entreprise, l’objet de jalonnement d’une adresse de récompense n’a pas besoin de contenir d’informations.

(4) À propos des hard forks

Le terme hard fork décrit un changement radical dans la blockchain : un passage d’un protocole à un autre, par exemple. Dans la plupart des blockchains, un hard fork indique des changements de blocs ou une modification de leur interprétation.

Traditionnellement, lors d’un hard fork, le protocole actuel cessait de fonctionner, de nouvelles règles et modifications étaient mises en œuvre et la chaîne redémarrait. Il est important de noter qu’une chaîne hard-fork sera différente de la version précédente et que l’historique de la blockchain pré-fork ne sera plus disponible.

La blockchain Cardano est passée d’un modèle fédéré Byron à un modèle Shelley décentralisé. Cependant, ce hard fork était unique. Au lieu d’implémenter des changements radicaux, nous avons assuré une transition en douceur vers un nouveau protocole tout en sauvegardant l’historique des blocs précédents. Cela signifie que la chaîne n’a pas radicalement changé, à la place, elle contient des blocs Byron, et après une période de transition, ajoute des blocs Shelley. Il n’y a pas eu de point de redémarrage fondamental qui ait effacé l’historique des activités précédentes.

Qu’est-ce qu’un combinateur hard fork ?

Un combinateur est un terme technique utilisé pour indiquer la combinaison de certains processus ou choses.

Dans le cas de Cardano, un combinateur hard fork combine des protocoles, permettant ainsi la transition de Byron à Shelley sans interruption ni redémarrage du système.

Il garantit que les registres Byron et Shelley apparaissent comme un seul registre. Le passage d’Ouroboros BFT à Ouroboros Praos ne nécessite pas la mise à jour simultanée de tous les nœuds. Au lieu de cela, les nœuds peuvent se mettre à jour progressivement, en fait, certains peuvent exécuter des blocs Byron, tandis que d’autres peuvent exécuter des blocs Shelley.

Le combinateur hard fork est conçu pour permettre la combinaison de plusieurs protocoles, sans avoir à faire des ajustements importants. La chaîne Cardano actuelle combine les blocs Byron et Shelley, et après de futures transitions, elle combinera également les blocs Goguen, Basho et Voltaire - le tout en une seule propriété. Ce combinateur facilite la transition de Shelley à Goguen et au-delà en simplifiant l’évolution précédente de Byron à Shelley.

Passer de Byron Ouroboros Classic à Shelley Ouroboros Praos

Le réseau principal de Cardano Byron fonctionnait sur le protocole de consensus Ouroboros Classic. Le réseau principal de Cardano Shelley, qui est l’ère de développement actuelle, passe à un réseau décentralisé fonctionnant sur le nouveau protocole de consensus Ouroboros Praos, qui permet des capacités plus étendues tout en prenant en charge le processus de jalonnement avec des récompenses monétaires pour les détenteurs d’ada et les propriétaires de pool de participation.

Pour permettre des transitions ordonnées à Cardano sans aucun détournement dans le système, il était nécessaire de mettre à jour le code pour prendre en charge les conditions du nouveau protocole. Le faire dans une seule mise à jour aurait pu entraîner une série de complexités, c’est pourquoi Cardano a décidé d’adopter une approche en deux étapes, en utilisant le protocole Ouroboros Byzantine Fault Tolerance (BFT) comme intermédiaire.

Le passage d’Ouroboros Classic à BFT (qui s’est produit le 20 février 2020) est le seul hard fork traditionnel au sein de la blockchain Cardano. Cet événement de bifurcation a redémarré le réseau principal de Byron pour exécuter le protocole BFT et permettre une transition plus fluide vers Ouroboros Praos sans aucune autre interruption de la chaîne. Le protocole BFT a été soigneusement conçu pour que l’historique de la blockchain reste inchangé et que la blockchain apparaisse comme une entité unique.

Verrouillage des jetons : mise à niveau du protocole Shelley

Le verrouillage des jetons est une nouvelle fonctionnalité ajoutée au protocole Shelley pour permettre divers types de cas d’utilisation de contrats intelligents, y compris la création et la transaction avec des jetons multi-actifs, ainsi que la prise en charge du mécanisme de vote Voltaire.

Le verrouillage des jetons est le processus de «réservation» d’un certain nombre d’actifs et de l’engagement de ne pas en disposer pendant une période de temps spécifiée. Cette fonctionnalité est activée dans la mise à niveau d’Allegra (verrouillage de jeton) et permettra d’enregistrer qu’un jeton spécifique est utilisé à une certaine fin lors de la mise à niveau de Mary (prise en charge multi-actifs). Le jeton peut représenter un élément pris en compte par le registre de la blockchain, y compris ada, mais inclura bientôt d’autres types de jetons personnalisés.