Das Lesen der Phoenix-Schaltungsbedingungen hat mich aufgehalten. Auf Dusk $DUSK #dusk @Duskfoundation sieht der Transfer-Contract nie auf die tatsächlichen Notenwerte oder darauf, welcher Merkle-Leaf ausgegeben wird.
Er überprüft nur einen PLONK-Beweis, der zeigt, dass die privaten Eingaben fünf Bedingungen erfüllen: der Noten-Hash öffnet sich gegen einen aktuellen Merkle-Root von Noten, der Prover kennt den Noten-Geheimschlüssel, der Nullifier entspricht Poseidon(npk′ ‖ Position), die Ausgabeverpflichtungen werden korrekt geöffnet und die Summe der Eingabewerte entspricht den Ausgaben plus Gebühr plus jeder möglichen Einzahlung.
Die Nullifier selbst werden veröffentlicht, damit das Netzwerk Wiederverwendung zurückweisen kann. Da jeder Nullifier aus dem versteckten Notenschlüssel und der Position abgeleitet ist, kann kein Beobachter einen Nullifier einer bestimmten Leaf zuordnen. Die Gültigkeit lebt vollständig in der Erfüllung der Schaltung; der Inhalt erscheint nie im Ledger.
Was sich für mich geändert hat, war die Erkenntnis, dass der Schutz vor Doppelausgaben und die Integrität des Kontostands beide innerhalb des Beweises liegen, statt in einer sichtbaren Zustandsänderung.
Nächste Prüfung: ob alle akzeptierten Phoenix-Transaktionen ihre veröffentlichten Nullifier nach der Finalität im On-Chain-Nullifier-Set weiterhin eindeutig halten.
@Dusk