Ich habe heute Morgen über Phoenix gelesen und bin an etwas hängen geblieben, das fast zu einfach klang
Wenn jemand einen privaten Output ausgibt, warum markiert man diesen Output nicht einfach als ausgegeben
So dachte ich zuerst, dass es funktionieren sollte
Du gibst einen Output aus
das Netzwerk markiert ihn als ausgegeben
das erneute Ausgeben wird abgelehnt
Einfach—aber dann ist mir klar geworden, dass es dabei ein Problem gibt, wenn der Output selbst privat bleiben soll
Wenn das Netzwerk öffentlich auf den exakten privaten Output verweisen müsste, der ausgegeben wurde, gibst du Informationen über die Transaktion preis
Also bin ich zurück zum Phoenix-Abschnitt des Dusk-Whitepapers gegangen, um zu sehen, wie es das löst
Dort kommt der Nullifier ins Spiel
Phoenix kündigt nicht einfach an, welcher private Output ausgegeben wurde: Stattdessen erzeugt Phoenix einen eindeutigen kryptografischen Wert, der Nullifier genannt wird
Das Netzwerk kann prüfen, ob dieser Nullifier bereits aufgetaucht ist
Wenn ja, wird der Spend abgelehnt
Wenn nicht, kann die Transaktion fortgesetzt werden, ohne direkt offenzulegen, welcher private Output verwendet wurde
Das war der Teil, den ich anfangs übersehen habe
Das System braucht immer noch eine Möglichkeit, sich zu merken
dass dieser Wert bereits ausgegeben wurde
Aber es muss nicht unbedingt sagen:
„Dieser exakte private Output war der, der ausgegeben wurde.“
Und das ist ein viel schwierigeres Problem
Denn jetzt versucht man, zwei Dinge gleichzeitig zu lösen
Doppeltes Ausgeben stoppen
Den privaten Output, der ausgegeben wird, nicht offenlegen
Darum ergibt der Nullifier für mich jetzt Sinn
Er ist nicht einfach nur ein weiteres kryptografisches Objekt, das in Phoenix herumliegt
Er ist im Grunde die Verknüpfung zwischen dem Erinnern daran, dass etwas ausgegeben wurde, und dem Nicht-Offenlegen dessen, was genau ausgegeben wurde
Je mehr ich darüber nachdachte, desto mehr wurde mir klar, dass Privatsphäre nicht einfach nur darum geht, eine Transaktion zu verbergen
Manchmal geht es darum, die Verbindung zwischen einer Transaktion und dem privaten Statusbaustein dahinter zu verbergen
#dusk $DUSK @Dusk $BTR $BMT