(1) Comprendre le modèle UTXO étendu
Cardano (comme Bitcoin) est une blockchain basée sur la sortie de transaction non dépensée (UTXO), qui utilise un modèle comptable différent pour son grand livre des autres blockchains basées sur des comptes comme Ethereum. Cardano implémente un modèle innovant EUTXO (Extended Unspent Transaction Output), qui est introduit par la mise à niveau Alonzo pour prendre en charge les multi-actifs et les contrats intelligents.
Présentation du modèle UTXO
Dans le modèle UTXO, une transaction a des entrées et des sorties, où les entrées sont les sorties non dépensées des transactions précédentes. Les actifs sont stockés dans le grand livre dans les sorties non dépensées, plutôt que dans les comptes.
Dès qu’une sortie est utilisée comme entrée dans une transaction, elle est dépensée et ne peut plus jamais être utilisée. La sortie est spécifiée par une adresse (une clé publique ou un hachage de clé publique) et une valeur (composée d’un montant ada et de tout montant de jeton natif supplémentaire facultatif). L’adresse d’une sortie détermine quelles transactions sont autorisées à « déverrouiller » la sortie et à l’utiliser comme entrée. Une transaction doit être signée par le propriétaire de la clé privée correspondant à l’adresse. Considérez une adresse comme un « cadenas » qui ne peut être « déverrouillé » que par la bonne « clé » - la signature correcte.
Chacune de ces sorties spécifie les quantités d’actifs qui y sont stockées, ainsi que son adresse. Les sorties non dépensées sont immuables, de sorte qu’une transaction peut consommer la totalité de la sortie, mais elle ne peut pas la modifier.
Chacune de ces sorties précise les quantités d’actifs qui y sont étendues, ainsi que son adresse. Les sorties non dépensées sont immuables, de sorte qu’une transaction peut consommer la totalité de la sortie, mais elle ne peut pas modifier.
Les portefeuilles des utilisateurs gèrent ces UTXO et initient des transactions impliquant les UTXO appartenant à l’utilisateur. Chaque nœud de blockchain conserve un enregistrement du sous-ensemble de tous les UTXO à tout moment. C’est ce qu’on appelle l’ensemble UTXO. En termes techniques, il s’agit de l’état de la chaîne, qui est stocké dans le répertoire de données de chaque nœud. Lorsqu’un nouveau bloc est ajouté à la chaîne, l’état de la chaîne est mis à jour en conséquence. Ce nouveau bloc contient la liste des dernières transactions (y compris, bien sûr, un enregistrement des UTXO dépensés et des nouveaux créés depuis la dernière mise à jour de l’état de la chaîne). Chaque nœud conserve une copie exacte de l’état de la chaîne.
Modèle UTXO étendu de Cardano
Le modèle EUTXO étend le modèle UTXO de deux manières :
- Il généralise le concept d '«adresse» en utilisant l’analogie de la serrure et de la clé. Au lieu de restreindre les verrous aux clés publiques et les clés aux signatures, les adresses du modèle EUTXO peuvent contenir une logique arbitraire sous la forme de scripts. Par exemple, lorsqu’un nœud valide une transaction, le nœud détermine si la transaction est autorisée ou non à utiliser une certaine sortie comme entrée. La transaction recherchera le script fourni par l’adresse de la sortie et exécutera le script si la transaction peut utiliser la sortie comme entrée.
- La deuxième différence entre UTXO et EUTXO est que les sorties peuvent transporter des données (presque) arbitraires en plus d’une adresse et d’une valeur. Cela rend les scripts beaucoup plus puissants en leur permettant de transporter des informations d’état.
De plus, EUTXO étend le modèle UTXO en permettant aux adresses de sortie de contenir une logique complexe pour décider quelles transactions peuvent les déverrouiller, et en ajoutant des données personnalisées à toutes les sorties. Lors de la validation d’une adresse, le script accédera aux données transportées par la sortie, la transaction en cours de validation, et à certaines données supplémentaires appelées rédempteurs, que la transaction fournit pour chaque entrée. En recherchant toutes ces informations, le script dispose de suffisamment de contexte pour donner une réponse « oui » ou « non » dans ce qui peut être des situations et des cas d’utilisation très complexes.
EUTXO permet une logique arbitraire sous forme de scripts. Cette logique arbitraire inspecte la transaction et les données pour décider si la transaction est autorisée à utiliser une entrée ou non
Le modèle UTXO avec sa structure graphique est fondamentalement différent du modèle basé sur les comptes utilisé par certaines blockchains existantes compatibles avec les contrats intelligents. Par conséquent, les modèles de conception qui fonctionnent pour les DApps sur les chaînes de blocs basées sur les comptes ne se traduisent pas directement par Cardano. De nouveaux modèles de conception sont nécessaires car la représentation sous-jacente des données est différente.
EUTXO hérite de la conception par branches du modèle UTXO (Bitcoin), où une branche est par définition une séquence de transactions qui nécessite une séquence de validations. Pour diviser la logique entre différentes branches et renforcer le parallélisme, il est essentiel de créer des DApp et d’autres solutions utilisant plusieurs UTXO. Cela offre des avantages en termes de mise à l’échelle, tout comme le développement des prérequis des services Bitcoin en divisant un portefeuille en sous-portefeuilles.
Avantages d’EUTXO
Le modèle EUTXO de Cardano fournit un environnement sécurisé et polyvalent pour traiter plusieurs opérations sans défaillance du système. Ce modèle offre une meilleure évolutivité et confidentialité, ainsi qu’une logique de transaction plus simplifiée, car chaque UTXO ne peut être consommé qu’une seule fois et dans son ensemble, ce qui rend la vérification des transactions beaucoup plus simple.
Le modèle EUTXO offre des avantages uniques par rapport aux autres modèles comptables. Le succès ou l’échec de la validation de la transaction dépend uniquement de la transaction elle-même et de ses entrées, et de rien d’autre sur la blockchain. Par conséquent, la validité d’une transaction peut être vérifiée hors chaîne, avant que la transaction ne soit envoyée à la blockchain. Une transaction peut toujours échouer si une autre transaction consomme simultanément une entrée attendue par la transaction, mais si toutes les entrées sont toujours présentes, la réussite de la transaction est garantie.
Cela contraste avec un modèle basé sur un compte (tel qu’utilisé par Ethereum), où une transaction peut échouer lors de l’exécution d’un script en cours. Cela ne peut jamais arriver dans EUTXO.
En raison de la nature « locale » de la validation des transactions, un degré élevé de parallélisme est possible. Un nœud pourrait, en principe, valider des transactions en parallèle, si ces transactions n’essaient pas de consommer la même entrée. C’est excellent à la fois pour l’efficacité et pour le raisonnement, en simplifiant l’analyse des résultats possibles et en prouvant que “rien de mal” ne peut arriver. Vous pouvez approfondir le billet de blog du modèle EUTXO.
Une caractéristique puissante du modèle EUTXO est que les frais requis pour une transaction valide peuvent être prédits avec précision avant de l’afficher. Il s’agit d’une fonctionnalité unique que l’on ne trouve pas dans les modèles basés sur des comptes. Les blockchains basées sur des comptes, comme Ethereum, sont indéterministes, ce qui signifie qu’elles ne peuvent pas garantir l’effet de la transaction sur la chaîne. Cette incertitude présente des risques de perte monétaire, des frais étonnamment élevés et des opportunités supplémentaires de comportement contradictoire.
En résumé, EUTXO offre une plus grande sécurité, une prévisibilité intelligente des coûts d’exécution des contrats (sans mauvaises surprises) et une parallélisation plus puissante.
(2) Comprendre la simultanéité
La simultanéité peut ou non améliorer les performances, le débit ou la réactivité d’un système. La quantité de simultanéité limite le nombre maximal d’opérations simultanées pouvant être effectuées.
Pour obtenir des améliorations de performances réelles dans une blockchain basée sur UTXO, les processeurs ou d’autres acteurs doivent être en mesure d’effectuer plusieurs actions simultanément. Plus le niveau de concurrence est élevé, plus le parallélisme maximal possible est élevé. Une telle approche se traduit ensuite par des améliorations des performances et du débit. Il offre également des avantages significatifs par rapport aux systèmes basés sur des comptes (comme Ethereum).
Le déploiement de DApps sur les registres UTXO est différent
L’approche de Cardano en matière de déploiement de DApp est différente et nécessite donc une courbe d’apprentissage et une approche différente. C’est comme travailler avec différents langages de programmation : il y a un objectif : déployer une solution, mais autant de langages de programmation à utiliser à cette fin.
Maximiser la simultanéité est une compétence qui doit être apprise : les développeurs doivent écrire du code de manière à limiter considérablement les possibilités de conflit (par exemple, en évitant les états partagés et les dépendances accidentelles). Le système doit alors traduire cette concurrence en parallélisme. Un certain nombre de développeurs ont déjà identifié des moyens d’aborder cela, tandis que d’autres développent encore des solutions. Le simple fait de transplanter les leçons apprises sur une blockchain ne fonctionnera pas ; bien que la courbe d’apprentissage soit un peu plus raide, les résultats en valent la peine.
Quoi qu’il en soit, il est important de comprendre que pour déployer une DApp évolutive sur Cardano, un développeur ne peut pas simplement utiliser un contrat Ethereum adapté. Cardano est basé sur le modèle UTXO ; il n’est pas basé sur le compte, ce qui signifie qu’un seul état sur la chaîne ne répondra pas à la propriété de concurrence de Cardano. Au lieu de cela, les DApps devraient diviser leur état en chaîne sur de nombreux UTXO. Cela augmentera la simultanéité de leur application, permettant ainsi un débit plus élevé.