#dusk $DUSK @Dusk
Die Dokumentation zu den Moonlight-Transaktionen enthält einen Abschnitt, den die meisten Menschen als bloße Standardpassage behandeln – die vollständige Liste der Sicherheitseigenschaften, die das Whitepaper formell nennt. Es gibt vier davon, und die letzte ist interessanter, als es klingt.
Moonlight-Sicherheitseigenschaften: Unangreifbarkeit (gesichert durch digitale Signaturen), Verhinderung von Double-Spending (das Netzwerk prüft die Kontostände, bevor es akzeptiert), Nicht-Veränderbarkeit (die Signatur umfasst den Hash aller Transaktionsfelder, sodass jede Änderung sie ungültig macht) und Schutz vor Replay-Attacken (gesichert durch den Nonce).
Es lohnt sich, darüber nachzudenken, was der Nonce hier genau macht.
Eine Replay-Attacke liegt vor, wenn jemand eine gültige, signierte Transaktion nimmt und erneut übermittelt. Die Signatur ist echt – sie wurde von dir signiert –, aber du hast diese konkrete Übermittlung nicht autorisiert. Ohne einen Replay-Schutz könnte eine einmal gültig gesendete Transaktion für immer von jedem erneut übertragen werden, der sie abgefangen hat.
Der Nonce löst das. Jedes Moonlight-Konto hat einen aktuellen Nonce – einen Zähler, der mit jeder akzeptierten Transaktion erhöht wird. Wenn du eine Transaktion einreichst, muss das Nonce-Feld exakt current_nonce + 1 enthalten. Das Netzwerk lehnt alles ab, bei dem diese Prüfung fehlschlägt. Sobald es akzeptiert wurde, wird der Nonce des Kontos erhöht, sodass dieselbe Transaktion nicht erneut eingereicht werden kann.
Nicht, dass das ungewöhnlich wäre. Jede ernsthafte Konten-basierte Kette verwendet Nonces genau für diesen Zweck. Ethereum macht es genauso.
Nur dass es auch nicht trivial ist. Der Nonce erledigt eine eigene Aufgabe von der Signatur – die Signatur beweist die Autorisierung, der Nonce beweist, dass diese konkrete Instanz einer Transaktion neu ist. Man braucht beides, und sie decken unterschiedliche Angriffsszenarien ab.
Was ich noch nicht ausgearbeitet habe, ist, ob Moonlight-Nonces kontoweit oder pro Smart Contract gelten – ob der Aufruf eines Contracts und das Senden einer direkten Übertragung vom selben Konto einen einzigen gemeinsamen Nonce-Zähler teilen, oder ob jede Interaktionstyp eine eigene Sequenz hat. @Dusk
$DUSK #dusk
Die Dokumentation zu den Moonlight-Transaktionen enthält einen Abschnitt, den die meisten Menschen als bloße Standardpassage behandeln – die vollständige Liste der Sicherheitseigenschaften, die das Whitepaper formell nennt. Es gibt vier davon, und die letzte ist interessanter, als es klingt.
Moonlight-Sicherheitseigenschaften: Unangreifbarkeit (gesichert durch digitale Signaturen), Verhinderung von Double-Spending (das Netzwerk prüft die Kontostände, bevor es akzeptiert), Nicht-Veränderbarkeit (die Signatur umfasst den Hash aller Transaktionsfelder, sodass jede Änderung sie ungültig macht) und Schutz vor Replay-Attacken (gesichert durch den Nonce).
Es lohnt sich, darüber nachzudenken, was der Nonce hier genau macht.
Eine Replay-Attacke liegt vor, wenn jemand eine gültige, signierte Transaktion nimmt und erneut übermittelt. Die Signatur ist echt – sie wurde von dir signiert –, aber du hast diese konkrete Übermittlung nicht autorisiert. Ohne einen Replay-Schutz könnte eine einmal gültig gesendete Transaktion für immer von jedem erneut übertragen werden, der sie abgefangen hat.
Der Nonce löst das. Jedes Moonlight-Konto hat einen aktuellen Nonce – einen Zähler, der mit jeder akzeptierten Transaktion erhöht wird. Wenn du eine Transaktion einreichst, muss das Nonce-Feld exakt current_nonce + 1 enthalten. Das Netzwerk lehnt alles ab, bei dem diese Prüfung fehlschlägt. Sobald es akzeptiert wurde, wird der Nonce des Kontos erhöht, sodass dieselbe Transaktion nicht erneut eingereicht werden kann.
Nicht, dass das ungewöhnlich wäre. Jede ernsthafte Konten-basierte Kette verwendet Nonces genau für diesen Zweck. Ethereum macht es genauso.
Nur dass es auch nicht trivial ist. Der Nonce erledigt eine eigene Aufgabe von der Signatur – die Signatur beweist die Autorisierung, der Nonce beweist, dass diese konkrete Instanz einer Transaktion neu ist. Man braucht beides, und sie decken unterschiedliche Angriffsszenarien ab.
Was ich noch nicht ausgearbeitet habe, ist, ob Moonlight-Nonces kontoweit oder pro Smart Contract gelten – ob der Aufruf eines Contracts und das Senden einer direkten Übertragung vom selben Konto einen einzigen gemeinsamen Nonce-Zähler teilen, oder ob jede Interaktionstyp eine eigene Sequenz hat. @Dusk
$DUSK #dusk

