Czekając na werdykt w sprawie Storm, dobrze jest przypomnieć sobie, że ukryte pule to tylko matematyka i nie są aż tak trudne do zrozumienia. Każdy może je zaimplementować. Oto wątek z podstawową intuicją, jak one działają:
Celem jest zbudowanie systemu, w którym wszystkie informacje w każdej transakcji pozostają w pełni prywatne dla użytkowników. Nie powinniśmy oczekiwać niczego mniej od naszych systemów transakcyjnych. To jest fundamentalne prawo człowieka do prywatności.
Problem polega na tym, że jeśli wszystkie informacje są prywatne, jak blockchain wie, że transakcja jest ważna? Jak wie, że użytkownik rzeczywiście ma środki, które zamierza wysłać? Że nie wydaje ich podwójnie? Oczywistą odpowiedzią jest: zk-proofs. Ale czy to naprawdę takie proste?
Załóżmy, że masz konto z saldem 10. Chcesz wysłać 5 na obronę Romana. Więc robisz dowód zk, który pokazuje, że masz 10, a twoja transakcja wysyła 5. Wydaje się wystarczająco proste!
Ale poczekaj! Kiedy udowodniłeś, że masz 10, to dowód dotyczył jakiegoś stanu w przeszłości, przed ostatnim blokiem, w którym twoja transakcja została uwzględniona. Może od tego czasu wydałeś wszystkie monety! Jak możesz udowodnić, że nadal masz 10 w ostatnim bloku?
To jest w rzeczywistości dość skomplikowane, i to jest powód, dla którego ukryte pule nie działają naprawdę z systemami opartymi na kontach - nie ma prostego, niezawodnego sposobu, aby udowodnić blockchainowi, w zk, najnowszy stan w czasie rzeczywistym. Rozwiązanie? Użyj UTXO. Słynne "Unspent Tx Outputs" z Bitcoina.
W przypadku UTXO nie masz jednego aktualizowanego konta, masz indywidualne "notatki", które można wydać tylko raz, w całości (jak prawdziwa moneta). Systemy UTXO są ogólnie dość irytujące w rozwoju, ale ta właściwość "wydaj raz" czyni je bardzo użytecznymi dla chronionych pul.
W systemie UTXO, takim jak Bitcoin, gdy chcesz wydać UTXO, wszystkie pełne węzły mogą sprawdzić, czy UTXO istnieje (zostało utworzone w przeszłości) i czy nie zostało jeszcze wydane. To jest proste. Ale jeśli wszystkie dane w UTXO są zaszyfrowane, jak możemy to sprawdzić?
Nie tylko dane są szyfrowane, ale nawet nie chcemy ujawniać *który* UTXO jest wydawany. Gdybyśmy to zrobili, to ten, kto wysłał ci UTXO, wiedziałby, kiedy go wydałeś. W idealnym projekcie chronionego zbioru, ZERO informacji nie jest ujawniane przez transakcję.
Podstawowym trikiem ukrytych pul jest wprowadzenie wartości "nullifier", która może być publicznie ujawniona, ale jest unikalnie wyprowadzana przez wydawcę dla każdego UTXO. Aby wydać UTXO, blockchain sprawdza, czy nullifier już nie istnieje. To zapewnia, że każdy UTXO może być wydany tylko raz.
Teraz możemy wrócić do naszego zk-proof. Musimy po prostu udowodnić, że UTXO, które wydajemy, rzeczywiście istnieje w łańcuchu, a że nullifier, który ujawniliśmy, jest poprawnie wyprowadzony z UTXO, które wydajemy. To wszystko!
W praktyce oznacza to, że systemy z ukrytymi pulami zazwyczaj przechowują dwa odrębne drzewa Merkle'a. Jedno zawiera hashe UTXO (UTXO często nazywane są "notami", a ich hashe "zobowiązaniami not") i drugie zawiera nullifikatory. Oba drzewa są tylko do dodawania!
Gdy nowy banknot jest tworzony, jego hash jest przechowywany w drzewie Merkle banknotu. Sam banknot jest szyfrowany. Gdy użytkownik później chce wydać ten banknot, oblicza nullifier dla banknotu i tworzy dowód zk, pokazując, że banknot znajduje się w drzewie Merkle, a nullifier jest poprawny.
Nullifikator jest ujawniany publicznie, a łańcuch sprawdza, czy już nie istnieje w drzewie nullifikatorów. Następnie jest tam przechowywany, aby nota nie mogła być wydana ponownie. Nikt tak naprawdę nie może powiedzieć, która nota jest wydawana, ponieważ oryginalna nota pozostaje nietknięta w drzewie not!
Oto podstawowy projekt wszystkich dzisiaj ukrytych pul, w tym @Zcash, @TornadoCash, @penumbrazone, @namada i innych. Oczywiście w projektowaniu ukrytych pul jest znacznie więcej. Bądźcie na bieżąco z kolejnymi wątkami, w których zagłębimy się w te mechanizmy.
@AThryver @0xkaiserkarel Powszechne nieporozumienie i potencjalnie mylące użycie terminu „zk” tutaj. Zobacz
Ethan Buchman (🐝,🦇)
Ethan Buchman (🐝,🦇)24 lip 2024
TEE? ZKP? MPC? FHE? Wszystko, co musisz wiedzieć o najważniejszych trzech literowych akronimach w kryptowalutach Albo jak zdobywać przyjaciół i wpływać na ludzi TEE 🧵
33,68K