Ich habe immer wieder eine Sache falsch gemacht, während ich Moonlight und Phoenix durchdachte: Ich behandelte die Zustandsform so, als würde sie auch die Endgültigkeit bestimmen.
Diese Annahme begann mich zu stören.
Moonlight kommt bei
#DuskVM mit einem public-account-Modell: Balances, Sender, Receiver, Amount und Nonce Progression.
Phoenix ist um eine komplett andere Spur herum gebaut: Encrypted Notes, Shielded Outputs, Nullifiers und Private State.
Mein erster Instinkt war, dass zwei so unterschiedliche Systeme wahrscheinlich auch zwei unterschiedliche Wege brauchen, um final zu werden.
Aber vielleicht fügte ich an der Stelle Komplexität hinzu, die eigentlich gar nicht da ist.
Moonlight kann weiterhin account-geformt bleiben. Phoenix kann weiterhin note-geformt bleiben.
#DuskVM muss weder das eine noch das andere in ein universelles Zustandsformat flachdrücken, nur um zu entscheiden, wann die Ausführung abgeschlossen ist.
Das ließ mich auch
#DuskDS neu überdenken.
Ich war davon ausgegangen, dass es darunter einen gemeinsam genutzten
$DUSK -Zustand erzeugen muss, der beide Modelle verbindet. Davon bin ich jetzt weniger überzeugt.
Die Ausführungslogik kann spezialisiert bleiben, während Dusk L1 dem resultierenden Zustand weiterhin eine deterministische Endgültigkeitsgrenze gibt.
Und ehrlich gesagt, ist diese Trennung für mich spannender als die einzelnen Zustandsmodelle.
Verschiedene Arten, Zustand darzustellen, erfordern nicht notwendigerweise unterschiedliche Antworten auf die Frage, wann dieser Zustand am Ende wirklich abgeschlossen ist.
Das, worüber ich noch nachdenke, ist, wie sauber diese Trennung Bestand hat, während Moonlight und Phoenix komplexer werden.
#dusk $DUSK @Dusk