Przejdź do treści
Słownikbezpieczenstworollupy

Nullifier

Kryptograficzny znacznik dodawany do publicznego zbioru przy konsumpcji prywatnej noty. Protokół może zweryfikować, że coś zostało wydane, bez wiedzy co konkretnie — uniemożliwia podwójne wydatkowanie z zachowaniem prywatności stanu.

Problem, który nullifier rozwiązuje

W systemach prywatnych sald (jak Aztec) stan użytkownika jest ukryty. Ale protokół musi jakoś wiedzieć, że dana nota nie została już wcześniej wydana — inaczej właściciel mógłby ją wydać dwa razy.

Nullifier rozwiązuje to elegancko: gdy nota jest konsumowana, protokół generuje deterministyczny nullifier i dodaje go do publicznego zbioru. Przy próbie ponownego użycia tej samej noty nullifier już byłby w zbiorze — transakcja jest odrzucana.

Obserwator widzi, że coś zostało użyte, ale nie może powiązać nullifiera z oryginalną notą bez posiadania odpowiedniego sekretu.

Nullifier to kryptograficzny odpowiednik skreślenia pozycji z listy — bez ujawniania, co zostało skreślone. Publiczny zbiór nullifierów rośnie, ale nie ujawnia treści prywatnego stanu.

Najczęstsze błędne założenia

  • Nullifier to nie publiczna aktualizacja salda. To prywatyzujący zamiennik komunikatu 'ten zasób jest zużyty'.
  • Nullifier nie jest losowy — jest deterministycznie obliczany z noty i sekretu, żeby ta sama nota zawsze produkowała ten sam nullifier.
  • Samo posiadanie nullifiera nie ujawnia, który zasób za nim stoi — do tego potrzebny jest sekret właściciela.

Najczęstsze pytania

Aztec używa ich w modelu prywatnych sald opartym na notach. Wzorzec jest powszechny w systemach budowanych na zobowiązaniach (commitments) i zaszyfrowanym stanie — Zcash, Privacy Pools, różne ZK rollup.

Źródła i dalsza lektura