Midnight erläutert Sicherheitskorrekturen in Ledger 9.1.0.1

Die auf dem Mainnet aktivierte Version behebt Probleme bei Transaktionsgebühren, Blockgrenzen und Wallet Salden. Sie führt außerdem strengere Validierungen für Entwickler ein, die auf Midnight aufbauen.

By SongMarketCap

Updated:

Midnight News - Midnight erläutert Sicherheitskorrekturen in Ledger 9.1.0.1

Midnight hat den Quellcode und die Release Notes für Ledger 9.1.0.1 veröffentlicht, die Version, die beim Netzwerk Upgrade am 6. November auf dem Mainnet aktiviert wurde. Die Veröffentlichung listet 13 Korrekturen auf, darunter Änderungen an der Berechnung von Transaktionsgebühren, Blockgrenzen und der Art, wie Wallets Coins anzeigen.

Den Release Notes zufolge erhielten Node Betreiber die Software am 3. November. Der Quellcode und die Beschreibungen der Korrekturen wurden am 7. November veröffentlicht. Das Update weist außerdem einige Transaktionen zurück, die frühere Ledger 9 Builds akzeptierten.

Änderungen bei Transaktionsgebühren und Blockgrenzen

Das Ledger ist der Teil der Midnight Software, der bestimmt, ob Transaktionen gültig sind und wie viel sie kosten. Midnight wechselte auf Ledger 9 ohne die übliche Vorlaufphase auf dem Preprod Testnetz. Das Projekt erklärte, dass es einen stärker kontrollierten Release Prozess nutzt, wenn Sicherheitskorrekturen dies erfordern.

Ein Problem betraf die Art, wie Nodes wiederholte Einträge in gemeinsamen Datenstrukturen verarbeiteten. Den Release Notes zufolge konnte eine kleine Transaktion einen Node dazu zwingen, eine exponentiell steigende Arbeitsmenge zu leisten, bevor ihre Gebühr geprüft wurde. Das aktualisierte Ledger weist wiederholte Einträge nun vor der Gebührenberechnung zurück und verarbeitet die Daten in Zeit proportional zu ihrer Größe.

Zwei weitere Korrekturen betreffen Blockgrenzen. Eine Transaktion konnte zuvor Löschungen deklarieren, die sie nie ausführte, wodurch Gebühren für andere Teile der Transaktion sanken und die Grenze für netto geschriebene Bytes umgangen wurde. Ein separates Berechnungsproblem erlaubte, deklarierte Rechenzeit von mindestens 2⁶³ Pikosekunden mit null zu berechnen. Beide Transaktionstypen werden nun als ungültig zurückgewiesen.

DUST, Wallets und die Cardano Bridge

Transaktionsgebühren in Midnight werden mit DUST bezahlt, einer Ressource, die aus NIGHT Beständen generiert wird. Die Release Notes beschreiben ein Problem, bei dem ein Smart Contract überschüssige Gebührenressourcen einfangen konnte, die während der Registrierung gutgeschrieben wurden, während der Registrierende weiterhin den vollen Betrag erhielt. Vertragsaufrufe, die die Gebührenressource als öffentlichen Input oder Output übertragen, werden nun zurückgewiesen.

Eine weitere Korrektur betrifft die Art, wie Wallets Ereignisse aus der Chain nachspielen. Ein gültiger Output konnte einen verschlüsselten Datensatz enthalten, der nicht zu seinem kryptografischen Commitment passte. Das konnte dazu führen, dass ein Wallet Coins anzeigte, die es nicht ausgeben konnte, oder die Position einer bereits gehaltenen Coin überschrieben wurde. Den Release Notes zufolge war der On Chain Zustand nicht betroffen.

Das Update löscht außerdem sensible Daten, die aus Wallet Seeds abgeleitet sind, gründlicher aus dem Speicher. Einige der aufgeführten Korrekturen beziehen sich auf Audit Feststellungen, und die Release Notes verweisen auf neun GitHub Security Advisories, deren Seiten am Morgen des 8. November noch nicht öffentlich verfügbar waren.

Eine separate Korrektur betrifft die Protokoll Bridge, die dazu gedacht ist, Token von Cardano zu Midnight zu übertragen. Ansprüche mit Wert Null konnten zuvor die Validierung bestehen, ohne eine Gebühr zu zahlen. Ansprüche müssen nun das erforderliche Minimum erfüllen oder den gesamten verbleibenden Saldo abdecken. Die Bridge ist im Ledger 9 Code vorhanden, bleibt aber auf dem Mainnet deaktiviert, bis eine separate Governance Aktion sie aktiviert.

[NEWSBREAK]

Entwicklerpakete und verbleibende Probleme

Die Veröffentlichung enthält @midnight-ntwrk/ledger-v9 1.0.1, onchain-runtime-v4 4.0.1 und Proof Server 9.0.1. Ein Proof Server erzeugt die in Transaktionen verwendeten Zero Knowledge Beweise. Midnights Dokumentation zum Mainnet Upgrade listet separat Proof Server 9.0.0 unter den kompatiblen Komponenten.

Ledger 9.1.0.1 weist Transaktionen mit doppelten Committee Signaturen oder doppelten Gebührenregistrierungen zurück. Ein Contract darf nicht mehr als 256 Operationen enthalten, jede Bereitstellung wird für ihren vollen Zustand berechnet, und deklariertes Gas muss innerhalb der Blockgrenze bleiben.

Mehrere Rust Funktionen zur Kostenberechnung geben nun einen Fehler statt eines Werts zurück. Entwickler, die Gebühren direkt berechnen, müssen diese Änderung in ihren Integrationen berücksichtigen.

Zwei bekannte Probleme aus Version 9.1.0.0 sind weiterhin offen. Eines kann dazu führen, dass ein Vertragsaufruf abgelehnt wird, wenn seine Gebühr mit genau einer DUST Ausgabe bezahlt wird. Midnights Dokumentation nennt die Verwendung von zwei oder mehr DUST Ausgaben als Workaround, während eine Korrektur für eine spätere Veröffentlichung geplant ist.