Ich habe eine technische Änderung entdeckt, die in den PLONK-Hauptzweig von Dusk gemerged wurde. Betroffen ist der Deserialisierungsablauf für komprimierte Schaltungsdateien: Nachdem der Fließtext (Body) geparst wurde, gilt: Wenn noch zusätzliche Bytes vorhanden sind, gibt compile_with_compressed InvalidCompressedCircuit zurück. Der offizielle Regressionstest hat gezielt einen gültigen MessagePack-Trailer hinzugefügt, um zu bestätigen, dass es vor der Reparatur akzeptiert wurde und nach der Reparatur abgelehnt wird.

Für genau dieselbe komprimierte Schaltung ist der Fließtext identisch; am Ende wird lediglich noch ein einziges, irrelevantes Byte dazugeschoben. Jedes Risiko-/Cache-System, das den Hash anhand der ursprünglichen Bytes bildet, erkennt das als eine andere Datei; ältere PLONK-Versionen könnten jedoch weiterhin ganz normal hineinlesen.

Wenn ich das sehe, mache ich mir tatsächlich ein wenig Sorgen. Die Datei hat sich offenbar geändert, aber das Tool behauptet, „sie sei nicht geändert“. Für Finanzsysteme ist das lästiger als ein direkter Fehler: Eine Sache, aber zwei Ausweise.

Ich schlage zunächst auf das Ziel ein. Diese Änderung betrifft die komprimierte Schaltungsdatei, die zur Generierung von Beweisen verwendet wird; die bereits auf der Kette erzeugten Beweise fallen nicht in diesen Umfang. Dusk, der neueste Merge, ist dabei sehr konsequent: Nachdem der Circuit-Text gelesen ist, wird die gesamte Datei als ungültig eingestuft, sobald danach noch überflüssige Bytes vorhanden sind.

Ganz ehrlich: Am Anfang fand ich es ein bisschen pingelig. Wenn alte Tools laufen können, warum dann Kompatibilität wegen ein paar Endbytes abschneiden? Aber wenn man es in ein Transaktionssystem einbettet, ändert sich die Sicht. Wenn das Original nach Bytes von Audits, Caches oder Versionsbibliotheken identifiziert wird, der Compiler jedoch zwei unterschiedliche Dateien als dasselbe Regelwerk behandelt, wird es schwierig zu erklären, welche Version tatsächlich verwendet wurde, wenn etwas schiefgeht.

Das führt zu einer sehr praktischen Faustregel: Wenn nach einem Upgrade bestimmte ZK-Anwendungen plötzlich scheitern, prüfe zuerst InvalidCompressedCircuit, die Tool-Version und ob eine erneute Exporte wieder hilft. Scheitert die alte Datei, funktioniert die neue hingegen normal, dann ähnelt das eher einer Formatmigration. Wenn die standardkonforme Datei hingegen in großem Umfang fehlschlägt, braucht es eher eine tiefere Untersuchung der Beweislogik oder von Netzwerkproblemen. Vermische nicht beide Risiken auf einer einzigen K-Leitung.

Für $DUSK kann diese Verschärfung kurzfristig zwar die Zahl erfolgreicher Aufrufe senken, sogar dazu führen, dass alte Tools eine Zeit lang stoppen; der langfristige Nutzen hängt jedoch davon ab, ob nach der Migration bei Beweisfehlern, Streit über Versionen und den Kosten für institutionelle Nachprüfungen etwas sinkt. Der Parser wird nicht direkt „Kaufaufträge“ erzeugen. Was er tun kann, ist, dass jede Schaltungsdatei nur einen einzigen „Ausweis“ akzeptiert.

Im Handel werde ich „so gut wie möglich lesbar“ nicht als freundlich ansehen. Ich glaube, ein Finanzbuch braucht rechtliche Eindeutigkeit. DYOR!
#dusk $DUSK @Dusk