Cardano Plutus Vorschlag zielt auf geringeren Overhead bei der Skriptausführung
CIP-0194 schlägt eine neue Match Operation für Untyped Plutus Core vor, die den Overhead beim Lesen komplexer Skriptdaten reduzieren könnte. Ein zweiter Vorschlag, CIP-0195, definiert das Data Kodierungsmodell für die kommende Plutus V4 Ledger API.
By SongMarketCap
Die Plutus Entwicklungspipeline von Cardano hat zwei Vorschläge hinzugefügt, die sich darauf konzentrieren, wie Smart Contracts Ledger Daten verarbeiten. CIP-0194 führt integriertes Pattern Matching für UPLC ein, während CIP-0195 festlegt, wie Plutus V4 Typen wie ScriptContext und TxInfo als Data kodiert werden sollen. Beide werden weiterhin geprüft.
CIP-0194 hat bereits einen funktionsfähigen Implementierungsprototyp, wobei frühe lokale Benchmarks eine deutlich geringere CEK Ausführungszeit für mehrere Datenzugriffsmuster zeigen. Die Messungen entsprechen nicht kalibrierten On Chain Ausführungseinheiten, und die Kostenparameter für den produktiven Einsatz sind noch nicht finalisiert.
CIP-0194 fügt Pattern Matching zu Plutus Core hinzu
Cardano Smart Contracts prüfen häufig strukturierte Data, einschließlich Transaktionsinformationen innerhalb von ScriptContext. Bestehende UPLC Programme können diese Strukturen über Funktionen wie unConstrData, chooseData und Listenoperationen dekonstruieren, wobei jeder Schritt zusätzliche Arbeit im CEK Evaluator verursacht.
CIP-0194 schlägt eine neue Match Operation vor, die verschachtelte Werte direkt inspizieren und nur die von einem Skript benötigten Felder erfassen kann. Sie umfasst Ganzzahlen, Byte Strings, Listen, Paare und strukturierte Data, während der bestehende Case Mechanismus für einfachere Operationen weiterhin verfügbar bleibt.
Die Änderung richtet sich in erster Linie an Validatoren, die wiederholt den Transaktionskontext prüfen, einschließlich komplexerer DeFi, Trading und Lending Logik.
Ein funktionsfähiger Prototyp existiert bereits im Plutus Codebestand. Für den produktiven Einsatz wären jedoch weiterhin Konformitätstests, kalibrierte Kostenparameter, Ledger Unterstützung und eine Cardano Node Veröffentlichung erforderlich.
Frühe Benchmarks zeigen geringere CEK Ausführungszeit
Das CIP enthält lokale Benchmarks, die Match mit bestehenden Methoden zum Zerlegen von Data vergleichen.
Beim Abrufen eines einzelnen tief verschachtelten Werts war die gemessene CEK Ausführung in den getesteten Szenarien zwischen 6.38 und 13.74 mal schneller. Ein Test mit 64 verschachtelten Data Ebenen verzeichnete 2.297 Mikrosekunden mit Match, verglichen mit 31.068 Mikrosekunden bei der bestehenden Methode.
Die Leistungslücke verringert sich, wenn Skripte mehrere Werte erfassen, mit getesteten Verbesserungen von etwa 1.67 bis 6.10 mal je nach Struktur und Ausgangsmethode.
Diese Zahlen messen die lokale CEK Wall Clock Leistung statt der endgültigen Cardano Ausführungseinheiten. Das Kostenmodell bleibt unkalibriert. Vorläufige CPU und Speicherbudgets im Vorschlag verbesserten sich je nach Arbeitslast um 10% bis 90%, wobei typische ScriptContext Szenarien unter den anfänglichen Parametern etwa 40% bis 60% Verbesserung zeigten.
Der Vorschlag ordnet Match der Plutus Core Sprachversion 1.2.0 zu, die Ledger Unterstützung und eine Aktivierung durch den Hard Fork Prozess von Cardano erfordern würde, bevor Skripte dies im Mainnet nutzen könnten.
CIP-0195 definiert das Plutus V4 Data Modell
CIP-0195 behandelt die andere Seite des Plutus Stacks, indem es festlegt, wie Plutus V4 Ledger API Typen als Data dargestellt werden sollen.
Der Vorschlag umfasst den V4 ScriptContext und verwandte Strukturen, einschließlich einer erweiterten TxInfo. Er ersetzt den informelleren Ansatz früherer Plutus Versionen, bei dem Entwickler und alternative Werkzeuge das Kodierungsverhalten häufig aus Implementierungscode ableiten mussten statt aus einer eigenen Spezifikation.
Das vorgeschlagene V4 Design verwendet weiterhin Listen für die Datentyp Kodierung. CIP-0195 führt an, dass neuere UPLC Operationen den Zugriff auf Listen effizient machen und zugleich die zusätzlichen Konstruktoren und die Ledger Integration vermeiden, die ein breiteres arraybasiertes Modell erfordern würde.
CIP-0194 und CIP-0195 können unabhängig voneinander voranschreiten, gemeinsam adressieren sie jedoch, wie die nächste Plutus Generation Ledger Daten strukturiert und darauf zugreift. Bei Annahme würde CIP-0195 standardisieren, wie Plutus V4 diese Daten bereitstellt, während CIP-0194 Validatoren eine Möglichkeit mit geringerem Overhead geben würde, sie zu inspizieren. Beide benötigen weiterhin die Genehmigung der Spezifikation, kalibrierte Kostenmodelle und Ledger Integration, bevor sie das Cardano Mainnet erreichen.