(1) Confirmation en chaîne versus confirmation de transaction
Lors de la discussion sur Cardano, les questions souvent répétées sont quel est le temps de transaction de Cardano ?, et combien de confirmations de réseau Cardano a-t-il besoin avant qu’une transaction ne soit effectuée ? Les réponses à ces questions nécessitent un examen plus approfondi des concepts de confirmation de chaîne et de confirmation de transaction, et de leur lien avec le protocole.
Confirmation de la chaîne
C’est le point au-delà duquel la chaîne est garantie par le protocole de ne plus s’altérer en raison du caractère aléatoire ou d’événements aléatoires.
La confirmation de la chaîne se produit à un moment donné dans le futur, après qu’un certain nombre de futurs k blocs ont été frappés. Le temps entre maintenant et le moment où la confirmation de la chaîne pour une transaction particulière se produit est appelé la fenêtre de stabilité (c’est-à-dire le nombre d’emplacements requis pour qu’un bloc devienne stable, où stable est défini comme un bloc qui ne peut pas être annulé). La formule pour calculer cette fenêtre est 3k/f (où k est le paramètre de sécurité dans la genèse, et f est le paramètre de coefficient de créneau actif dans la genèse qui détermine la probabilité du nombre de blocs créés à une époque.)
Confirmation de transaction
C’est le moment où une transaction est acceptée dans la chaîne et devient immuable. Les concepts de profondeur de bloc et de fenêtre de règlement entrent en jeu ici.
Une transaction peut être considérée comme confirmée si le bloc qui la contient est suffisamment profond dans la chaîne. Assez profond est un concept relatif : la profondeur d’un bloc indique combien de blocs supplémentaires ont été ajoutés à la chaîne depuis que ce bloc particulier lui a été ajouté. Et parce que les blocs ont de la profondeur, il en va de même pour les transactions qu’ils contiennent.
Si la profondeur d’un bloc particulier est supérieure à un seuil prédéfini, la transaction est considérée comme confirmée et les actifs de cette transaction peuvent être utilisés « en toute sécurité » (c’est-à-dire que le protocole garantit que la transaction est devenue immuable, donc les actifs peuvent être négociés, échangés, etc.)
La période de temps qui s’écoule entre le moment où une transaction est confirmée et le moment où les actifs de la transaction peuvent être utilisés pour échanger avec d’autres actifs est appelée la fenêtre de règlement.
- Probabilité d’immuabilité
Une autre façon de déterminer si une transaction est confirmée ou non consiste à considérer la probabilité d’immuabilité de la transaction. La probabilité qu’une transaction soit immuable dépend du nombre de blocs ajoutés à la chaîne depuis que cette transaction a été acceptée dans la chaîne. Plus il y a de blocs ajoutés, plus la probabilité que la transaction devienne immuable est élevée.
Une transaction devient immuable dès que sa profondeur est supérieure à 3k/f slots (soit 129600 slots sur le mainnet actuel, soit 36 heures). Si cette transaction est insérée dans un bloc au slot 10 par exemple, elle ne deviendra véritablement immuable qu’au slot 129600. Ceci est garanti par le protocole Ouroboros Praos.
Cependant, les slots 3k/f dépassent normalement les exigences dans la plupart des situations, donc une approche plus pratique consiste à considérer la probabilité qu’une transaction devienne immuable. Dans ce cas, on considère qu’une transaction est confirmée si la probabilité qu’elle devienne immuable est suffisamment élevée.
(2) Présentation d’Ouroboros
- Ouroboros
Dans la mythologie, Ouroboros (aussi, Uroboros) est généralement représenté comme un serpent (ou parfois un dragon) mangeant sa propre queue dans un cercle fermé. Le mot Ouroboros lui-même dérive du grec ancien, sa signification littérale étant « manger la queue » ou « dévorer la queue ».
En tant que symbole, Ouroboros représente l’infini du temps revenant sur lui-même, dans un cycle sans fin, comme pris dans une boucle éternelle. Ouroboros est apparu pour la première fois en Egypte, au 13ème siècle avant JC. Plus tard, les alchimistes ont adopté Ouroboros dans leur symbolisme mystique.
À travers les âges, Ouroboros a été interprété et utilisé de diverses manières par une pléthore de cultures. L’une des interprétations les plus courantes est que le symbole représente l’interdépendance et l’infinité de l’univers.
En 2017, Charles Hoskinson a adopté Ouroboros pour nommer le protocole de consensus de preuve de participation qui sous-entend Cardano. Dans ce contexte, Ouroboros représente la possibilité d’une croissance et d’une évolutivité infinies et éthiques de la blockchain. Le message central d’Ouroboros est l’offre de plus grandes opportunités pour le monde et sa préservation grâce à une consommation d’énergie très réduite.
- Qu’est-ce qu’Ouroboros
Ouroboros est le protocole de consensus pour Cardano, le premier protocole de preuve de participation dont la sécurité est prouvée et le premier protocole de chaîne de blocs basé sur des recherches évaluées par des pairs.
Combinant une technologie unique et des mécanismes vérifiés mathématiquement (y compris les principes de la psychologie comportementale et de la philosophie économique), Ouroboros garantit et soutient la sécurité et la pérennité de toute blockchain la mettant en œuvre. Le résultat est un protocole avec des garanties de sécurité éprouvées et capable de faciliter la propagation de réseaux mondiaux sans autorisation avec des besoins énergétiques minimaux. Cardano est le premier réseau de ce type.
Ouroboros sélectionne les participants - des pools de participations, dans ce cas - pour créer de nouveaux blocs en fonction de la participation qu’ils contrôlent dans le réseau, et facilite la création de réseaux distribués et sans autorisation capables de soutenir durablement de nouveaux marchés.
- Implémentations Ouroboros
Ouroboros se décline en différentes versions :
- Ouroboros Classic
- Ouroboros BFT
- Ouroboros Praos
- Ouroboros Genesis
- Ouroboros Crypsinous
- Ouroboros Chronos
Ouroboros classique
La première implémentation d’Ouroboros a franchi trois étapes majeures :
- La base d’un protocole économe en énergie pour rivaliser avec la preuve de travail
- L’introduction du cadre mathématique pour analyser la preuve d’enjeu
- La mise en œuvre d’un nouveau mécanisme incitatif pour récompenser les participants dans un contexte de preuve de participation
Mais ce qui distingue vraiment Ouroboros des autres protocoles de blockchain (en particulier les protocoles de preuve de participation), c’est sa capacité à générer un caractère aléatoire impartial dans l’algorithme de sélection du leader du protocole, et les garanties de sécurité qui en découlent. Le caractère aléatoire empêche la formation de modèles, ce qui est essentiel pour maintenir la sécurité du protocole. Ouroboros a été le premier protocole blockchain à être développé avec ce type d’analyse de sécurité rigoureuse.
Ouroboros BFT
Ouroboros Byzantine Fault Tolerance (BFT) était la deuxième implémentation du protocole, utilisée lors de la mise à jour Byron (transition de l’ancienne base de code Cardano à la nouvelle). La deuxième instance du protocole a préparé Cardano à la décentralisation qui accompagnait la sortie de Shelley.
Ouroboros BFT a permis une communication synchrone entre un réseau de serveurs fédérés - la blockchain -, fournissant un consensus de grand livre d’une manière plus simple et plus déterministe.
Ouroboros Praos
Ouroboros Praos a introduit des améliorations substantielles en matière de sécurité et d’évolutivité dans l’implémentation d’Ouroboros Classic. Praos traite les blocs de transaction en divisant les chaînes en créneaux, qui sont agrégés en époques. Mais contrairement à Ouroboros Classic, Praos est analysé dans un cadre semi-synchrone et est sécurisé contre les attaquants adaptatifs, en utilisant la sélection de leader privé et des signatures sécurisées et évolutives pour garantir qu’un adversaire puissant ne peut pas prédire le prochain leader de slot et lancer un attaque ciblée (telle qu’une attaque DDoS).
Ouroboros Genèse
Une fois mise en œuvre, la quatrième itération d’Ouroboros -Genesis- améliorera encore Ouroboros Praos en ajoutant une nouvelle règle de sélection de chaîne qui permet aux parties de démarrer à partir d’un bloc de genèse sans avoir besoin de points de contrôle fiables ou d’hypothèses sur la disponibilité passée. L’article Genesis fournit également la preuve de la composabilité universelle du protocole, qui démontre que le protocole peut être composé avec d’autres protocoles dans des configurations arbitraires dans un environnement réel, sans perdre ses propriétés de sécurité.
Ouroboros Crypsineux
Ouroboros Crypsinous équipe Genesis de propriétés préservant la vie privée. Il s’agit du premier protocole de chaîne de blocs de preuve de participation formellement analysé qui préserve la confidentialité, qui assure la sécurité contre les attaques adaptatives tout en maintenant de solides garanties de confidentialité en introduisant une nouvelle technique d’évolution des pièces reposant sur les SNARK et le cryptage sécurisé à clé privée. Crypsinous n’est pas actuellement prévu pour être implémenté sur Cardano, mais il peut être utilisé par d’autres chaînes pour augmenter les paramètres de préservation de la confidentialité.
Ouroboros Chronos
Chronos atteint deux objectifs : premièrement, il montre comment les protocoles de blockchain peuvent synchroniser les horloges en toute sécurité via un nouveau mécanisme de synchronisation de l’heure et devenir ainsi indépendants des services de temps externes. Deuxièmement, il fournit une source de temps cryptographiquement sécurisée aux autres protocoles. En bref, Chronos rend le registre plus résistant aux attaques qui ciblent les informations temporelles.
D’un point de vue applicatif, Chronos peut considérablement augmenter la résilience des infrastructures critiques de télécommunications, de transport et autres infrastructures informatiques qui nécessitent la synchronisation de l’heure locale avec une horloge réseau unifiée qui n’a pas de point de défaillance unique.
(3) Comprendre les sorties et les entrées
Les transactions blockchain peuvent avoir une ou plusieurs entrées et une ou plusieurs sorties. Les concepts d’entrées et de sorties doivent être compris si l’on veut comprendre le fonctionnement d’une transaction et son lien avec le modèle comptable UTXO (Unspent Transaction Output). En termes abstraits, considérez une transaction comme l’action qui déverrouille les sorties précédentes et en crée de nouvelles.
Sortie des transactions (Output)
Une sortie de transaction comprend une adresse (que vous pouvez considérer comme un verrou) et une valeur. Conformément à cette analogie, la signature qui appartient à l’adresse est la clé pour déverrouiller la sortie. Une fois déverrouillée, une sortie peut être utilisée comme entrée. Les nouvelles transactions dépensent les sorties des transactions précédentes et produisent de nouvelles sorties qui peuvent être consommées par de futures transactions. Chaque UTXO ne peut être consommé qu’une seule fois, et dans son ensemble. Chaque sortie peut être dépensée par exactement une entrée, et une seule entrée.
Saisie des transactions (Input)
Une entrée de transaction est la sortie d’une transaction précédente. Les entrées de transaction incluent un pointeur et une signature cryptographique qui agit comme clé de déverrouillage. Le pointeur pointe vers une sortie de transaction précédente et la clé déverrouille cette sortie. Lorsqu’une sortie est déverrouillée par une entrée, la blockchain marque la sortie déverrouillée comme « dépensée ». Les nouvelles sorties créées par une transaction donnée peuvent alors être pointées par de nouvelles entrées, et ainsi la chaîne continue. Ces nouvelles sorties (qui n’ont pas encore été débloquées, c’est-à-dire dépensées) sont les UTXO. Les extrants non dépensés sont simplement cela, des extrants qui n’ont pas encore été dépensés.
(4) Soumettre plusieurs transactions
Cette section décrit certaines pratiques exemplaires pour soumettre plusieurs transactions. Les utilisateurs qui doivent soumettre de nombreuses transactions les unes après les autres peuvent rencontrer un problème lorsque le mempool est plein. C’est ce qu’on appelle le haut débit. Si l’utilisateur continue à soumettre des transactions après que le mempool soit plein, certaines transactions peuvent ne pas être acceptées.
Le système dans son ensemble n’a jamais garanti la fiabilité de la soumission des transactions. Il est impossible de fournir une telle garantie dans un système distribué comme Cardano. Les agents de soumission sont tenus de gérer la logique de resoumission de manière appropriée.
Le point de terminaison correct à utiliser est cardano-submit-api
. Lorsque le mempool est plein, le thread est bloqué. Par conséquent, l’utilisateur de l’API peut mettre en file d’attente plusieurs transactions qui sont traitées dès que la capacité mempool devient disponible. Cependant, l’application doit tenir compte du fait que le nombre de transactions en cours est limité par le nombre de fichiers ouverts autorisés par le système d’exploitation. Si cette valeur est dépassée, cardano-submit-api
se ferme simplement, de sorte que les autres demandes ne sont pas servies. L’augmentation du nombre de fichiers ouverts autorisés par le système d’exploitation avec ulimit
augmentera le nombre disponible de transactions en cours.
Une alternative plus simple consiste à utiliser cardano-submit-api
en série ou avec une très faible simultanéité pour minimiser le besoin d’une gestion sophistiquée des files d’attente.
C’est une règle générale que la simplicité augmente la robustesse ; si possible, soumettez simplement une transaction et attendez qu’elle soit confirmée avant de soumettre la suivante.
Source : https://docs.cardano.org/learn/chain-confirmation-versus-transaction-confirmation