Midnight détaille des correctifs de sécurité dans Ledger 9.1.0.1
La version activée sur le mainnet corrige des problèmes liés aux frais de transaction, aux limites de bloc et aux soldes des portefeuilles. Elle introduit aussi une validation plus stricte pour les développeurs qui développent sur Midnight.
By SongMarketCap
Updated:
Midnight a publié le code source et les notes de version de Ledger 9.1.0.1, la version activée sur le mainnet lors de la mise à niveau du réseau du 6 novembre. La version recense 13 correctifs, dont des changements dans le calcul des frais de transaction, les limites de bloc et la manière dont les portefeuilles affichent les pièces.
Selon les notes de version, les opérateurs de nœuds ont reçu le logiciel le 3 novembre. Le code source et les descriptions des correctifs ont été publiés le 7 novembre. La mise à jour rejette aussi certaines transactions que des versions antérieures de Ledger 9 acceptaient.
Modifications des frais de transaction et des limites de bloc
Le ledger est la partie du logiciel de Midnight qui détermine si les transactions sont valides et combien elles coûtent. Midnight est passé à Ledger 9 sans la période d’anticipation habituelle sur le réseau de test Preprod. Le projet a expliqué qu’il utilise un processus de publication plus contrôlé lorsque des correctifs de sécurité l’exigent.
Un problème affectait la façon dont les nœuds traitaient des entrées répétées dans des structures de données partagées. Selon les notes de version, une petite transaction pouvait obliger un nœud à exécuter une quantité de travail qui augmentait de façon exponentielle avant de vérifier ses frais. Le ledger mis à jour rejette les entrées répétées avant de calculer les frais et traite les données en un temps proportionnel à leur taille.
Deux autres correctifs concernent les limites de bloc. Une transaction pouvait auparavant déclarer des suppressions qu’elle n’effectuait pas, ce qui réduisait les frais pour d’autres parties de la transaction et contournait la limite sur les octets nets écrits. Un autre problème de calcul permettait qu’un temps de calcul déclaré d’au moins 2⁶³ picosecondes soit facturé comme nul. Ces deux types de transaction sont désormais rejetés comme invalides.
DUST, portefeuilles et le pont Cardano
Les frais de transaction sur Midnight sont payés en utilisant DUST, une ressource générée à partir des avoirs en NIGHT. Les notes de version décrivent un problème par lequel un contrat intelligent pouvait capturer une ressource de frais excédentaire créditée au moment de l’enregistrement, tandis que l’inscrit recevait toujours le montant total. Les appels de contrat qui transfèrent la ressource de frais en entrée publique ou en sortie publique sont désormais rejetés.
Un autre correctif concerne la manière dont les portefeuilles rejouent les événements depuis la chaîne. Une sortie valide pouvait contenir un enregistrement chiffré qui ne correspondait pas à son engagement cryptographique. Cela pouvait amener un portefeuille à afficher des pièces qu’il ne pouvait pas dépenser ou à écraser la position d’une pièce qu’il détenait déjà. Les notes de version indiquent que l’état onchain n’était pas affecté.
La mise à jour efface aussi plus complètement de la mémoire les données sensibles dérivées des graines de portefeuille. Certains des correctifs listés se réfèrent à des constatations d’audit, et les notes de version renvoient à neuf avis de sécurité GitHub dont les pages n’étaient pas publiquement disponibles dans la matinée du 8 novembre.
Un correctif distinct s’applique au pont de protocole destiné à transférer des tokens de Cardano vers Midnight. Des réclamations de valeur nulle pouvaient auparavant passer la validation sans payer de frais. Les réclamations doivent désormais respecter le minimum requis ou couvrir la totalité du solde restant. Le pont est présent dans le code de Ledger 9 mais reste désactivé sur le mainnet jusqu’à ce qu’une action de gouvernance distincte l’active.
[NEWSBREAK]
Paquets pour développeurs et problèmes restants
La version inclut @midnight-ntwrk/ledger-v9 1.0.1, onchain-runtime-v4 4.0.1 et Proof Server 9.0.1. Un serveur de preuves génère les preuves à connaissance nulle utilisées dans les transactions. La documentation de la mise à niveau du mainnet de Midnight liste séparément Proof Server 9.0.0 parmi ses composants compatibles.
Ledger 9.1.0.1 rejette les transactions avec des signatures de comité en double ou des enregistrements de frais en double. Un contrat peut contenir au maximum 256 opérations, chaque déploiement est facturé pour son état complet, et le gaz déclaré doit rester dans la limite de bloc.
Plusieurs fonctions de calcul de coût en Rust renvoient désormais une erreur au lieu d’une valeur. Les développeurs qui calculent les frais directement doivent prendre en compte ce changement dans leurs intégrations.
Deux problèmes connus de la version 9.1.0.0 restent ouverts. L’un peut provoquer le rejet d’un appel de contrat lorsque ses frais sont payés avec exactement une dépense DUST. La documentation de Midnight indique qu’utiliser deux dépenses DUST ou plus constitue une solution de contournement en attendant un correctif prévu pour une version ultérieure.