Zahlungsseite hängt fünf Sekunden lang, und weil mir kurz die Hand zittert, tippe ich nochmal. Bei normalen Zahlungen kann man noch zwei Buchungen prüfen – aber bei Privatzahlungen werden Betrag und Beteiligte versteckt. Wieso sollte das Netzwerk dann überhaupt wissen, dass du dasselbe Geld nicht zweimal ausgegeben hast?
Ich habe diese Frage erneut aufgegriffen und den Phoenix von @Dusk neu zerlegt. Er führt Gelder nicht als öffentliches Guthaben, sondern zerlegt sie in verschlüsselte »notes« und schreibt das »note«-Versprechen in einen Merkle-Baum. Beim Ausgeben sorgt ein Zero-Knowledge-Beweis dafür, dass nachgewiesen wird, dass diese »note« echt existiert, vom Nutzer kontrolliert wird und Eingaben und Ausgaben in der Bilanz übereinstimmen – ohne dabei den konkreten Betrag oder die zugehörigen »notes« offenzulegen.
Wirklich für den Schutz vor »Double-Spending« sorgen die »nullifier«. Man kann sie verstehen als eindeutige Markierungen, die übrig bleiben, sobald eine »note« bereits verwendet wurde. Die Außenwelt kann daraus nicht die ursprüngliche »note« ableiten, aber das Netzwerk kann prüfen, ob diese Markierung schon einmal aufgetaucht ist. Wenn dieselbe »note« für zwei Transaktionen konstruiert wird, kollidieren sie beim gleichen »nullifier« – beide können nicht gleichzeitig gültig sein.
In der aktuellen Dusk-Dokumentation steht außerdem: Wenn Phoenix-Transaktionen im Mempool aufgrund eines »nullifier«-Konflikts kollidieren, kann nur eine neue Transaktion mit streng höherem Gas-Preis die alte ersetzen. Höhere Gebühren erneut senden bedeutet also vermutlich: ersetzen statt eine zusätzliche Zahlung hinzufügen. Sobald aber eine Transaktion in einem bereits akzeptierten Block ausgeführt wurde, werden selbst bei einem Vertragsfehler die betreffenden »notes« und das Gas verbraucht. Erst wenn der Block in den Zustand »finalized« übergeht, gilt es wirklich als endgültiges Ergebnis.
So löst die Kryptografie das Problem, dass Vermögenswerte nicht kopiert werden können – aber die Wallet muss trotzdem erklären, was als »ausstehend«, »ersetzt«, »fehlgeschlagen« und »endgültig bestätigt« gilt. Zeigt sie nur »fehlgeschlagen«, könnte der Nutzer trotzdem immer wieder erneut versuchen.
$DUSK ist Gas und ein gesperrtes Staking-Asset, aber es darf nicht als Qualitätsversprechen für das Produkterlebnis herhalten. Ich möchte vielmehr sehen, ob die Wallet die Ersetzungsbeziehung, den Grund für den »note«-Verbrauch und den endgültigen Status anzeigen kann. Privatsphäre darf Details verbergen, aber nicht, ob eine Transaktion überhaupt stattgefunden hat.
#dusk $DUSK
Ich habe diese Frage erneut aufgegriffen und den Phoenix von @Dusk neu zerlegt. Er führt Gelder nicht als öffentliches Guthaben, sondern zerlegt sie in verschlüsselte »notes« und schreibt das »note«-Versprechen in einen Merkle-Baum. Beim Ausgeben sorgt ein Zero-Knowledge-Beweis dafür, dass nachgewiesen wird, dass diese »note« echt existiert, vom Nutzer kontrolliert wird und Eingaben und Ausgaben in der Bilanz übereinstimmen – ohne dabei den konkreten Betrag oder die zugehörigen »notes« offenzulegen.
Wirklich für den Schutz vor »Double-Spending« sorgen die »nullifier«. Man kann sie verstehen als eindeutige Markierungen, die übrig bleiben, sobald eine »note« bereits verwendet wurde. Die Außenwelt kann daraus nicht die ursprüngliche »note« ableiten, aber das Netzwerk kann prüfen, ob diese Markierung schon einmal aufgetaucht ist. Wenn dieselbe »note« für zwei Transaktionen konstruiert wird, kollidieren sie beim gleichen »nullifier« – beide können nicht gleichzeitig gültig sein.
In der aktuellen Dusk-Dokumentation steht außerdem: Wenn Phoenix-Transaktionen im Mempool aufgrund eines »nullifier«-Konflikts kollidieren, kann nur eine neue Transaktion mit streng höherem Gas-Preis die alte ersetzen. Höhere Gebühren erneut senden bedeutet also vermutlich: ersetzen statt eine zusätzliche Zahlung hinzufügen. Sobald aber eine Transaktion in einem bereits akzeptierten Block ausgeführt wurde, werden selbst bei einem Vertragsfehler die betreffenden »notes« und das Gas verbraucht. Erst wenn der Block in den Zustand »finalized« übergeht, gilt es wirklich als endgültiges Ergebnis.
So löst die Kryptografie das Problem, dass Vermögenswerte nicht kopiert werden können – aber die Wallet muss trotzdem erklären, was als »ausstehend«, »ersetzt«, »fehlgeschlagen« und »endgültig bestätigt« gilt. Zeigt sie nur »fehlgeschlagen«, könnte der Nutzer trotzdem immer wieder erneut versuchen.
$DUSK ist Gas und ein gesperrtes Staking-Asset, aber es darf nicht als Qualitätsversprechen für das Produkterlebnis herhalten. Ich möchte vielmehr sehen, ob die Wallet die Ersetzungsbeziehung, den Grund für den »note«-Verbrauch und den endgültigen Status anzeigen kann. Privatsphäre darf Details verbergen, aber nicht, ob eine Transaktion überhaupt stattgefunden hat.
#dusk $DUSK
