Wprowadzenie
Wraz ze wzrostem popularności blockchain i kryptowalut, dowody zerowej wiedzy stały się coraz ważniejsze w kryptografii. Te typy dowodów pozwalają jednej stronie udowodnić, że znają pewne informacje bez faktycznego ujawniania informacji, co czyni je użytecznymi dla poufnych transakcji. W tym wpisie na blogu porównamy różnice między dwoma najczęściej używanymi rodzajami dowodów zerowych: zk-SNARKs vs zk-STARKs.
Czym jest Zero Knowledge Proofs?
W kryptografii dowody zerowej wiedzy są rodzajem protokołu, który umożliwia jednej stronie udowodnienie drugiej stronie, że dane stwierdzenie jest prawdziwe bez ujawniania żadnych dodatkowych informacji poza prawdziwością stwierdzenia. Innymi słowy, dowody zerowej wiedzy pozwalają jednej stronie zademonstrować wiedzę o danym fakcie bez ujawniania jakichkolwiek innych informacji, które mogłyby zostać wykorzystane do uzyskania tej samej wiedzy. To sprawia, że są one przydatne w zastosowaniach wymagających bezpiecznych i prywatnych transakcji, takich jak w blockchain i kryptowalutach, gdzie mogą być używane do weryfikacji transakcji bez ujawniania jakichkolwiek wrażliwych informacji. Dowody zerowej wiedzy stają się coraz ważniejsze w kryptografii ze względu na ich potencjalne zastosowania w systemach chroniących prywatność i bezpiecznych transakcjach.
W poniższym filmie Mina Protocol poznasz więcej szczegółów:
Zk-SNARKs vs zk-STARKs: Jaka jest Różnica?
W dziedzinie dowodów z zerową wiedzą istnieją dwa rodzaje: k-SNARK i zk-STARK. Czynnikiem odróżniającym te dwa rodzaje dowodów jest ich podejście do generowania dowodów. Podczas gdy zk-SNARKs wykorzystują zaufaną konfigurację, w której grupa zaufanych osób generuje zestaw publicznych parametrów w celu wygenerowania dowodów, które mogą być ponownie wykorzystane w nieskończoność, zk-STARKs wykorzystują bardziej wymagającą obliczeniowo metodę, która neguje potrzebę zaufanej konfiguracji.
Zk-SNARKs vs zk-STARKs
Porównując Zk-SNARKs i zk-STARKs, jedną z kluczowych różnic jest ich poziom przejrzystości. Zk-SNARKs są uważane za mniej przejrzyste niż zk-STARKs ze względu na ich zależność od tajnego klucza, który jest znany tylko zaufanym uczestnikom konfiguracji, co mogłoby zagrozić bezpieczeństwu systemu w przypadku wycieku lub kompromitacji. Jednakże, zk-STARK jest całkowicie przejrzysty i nie opiera się na założeniach lub tajnych kluczach, co czyni go bardziej atrakcyjnym dla tych, którzy stawiają na pierwszym miejscu zarówno przejrzystość jak i bezpieczeństwo.
Pod względem czasu generowania dowodu i rozmiaru, Zk-SNARKs są generalnie mniej wydajne niż zk-STARKs. Jednakże, zk-STARKs mają przewagę skalowalności i mogą obsługiwać bardziej złożone obliczenia. Dodatkowo, zk-STARKs są post-quantum secure, podczas gdy Zk-SNARKs nie są, co czyni je odpornymi na ataki z komputerów kwantowych. Innym ważnym aspektem jest to, że zk-STARKs są bardziej skalowalne i mogą obsługiwać większe obliczenia w porównaniu do zk-SNARKs.
Zk-SNARKs Wytłumaczone
Zk-SNARKs stały się coraz bardziej popularne ze względu na ich wydajność i cechy chroniące prywatność, dzięki czemu mają zastosowanie w różnych rzeczywistych scenariuszach, takich jak w blockchain, gdzie mogą być wdrożone w celu udowodnienia własności aktywów cyfrowych bez ujawniania wrażliwych informacji. Dodatkowo, Zk-SNARKs odegrały kluczową rolę w systemach głosowania, zapewniając dokładne zliczanie głosów przy zachowaniu anonimowości wyborców. Jedno z najbardziej godnych uwagi zastosowań Zk-SNARKów można zaobserwować w Zcash, prywatnej kryptowalucie, która pozwala użytkownikom na anonimowe transakcje przy jednoczesnym ukryciu danych transakcyjnych. Pojawiły się jednak obawy o potencjalne zagrożenia bezpieczeństwa związane z wykorzystaniem zaufanych konfiguracji w Zk-SNARKs, ponieważ skompromitowana zaufana konfiguracja może zagrozić prywatności całego systemu.
Zk-STARKs Wytłumaczone
Zamiast wymagać zaufanej konfiguracji jak w przypadku zk-SNARKów, zk-STARKi zostały opracowane jako lepsza alternatywa, która jest bardziej odporna na ataki. Dzieje się tak, ponieważ zaufana konfiguracja zk-SNARKs jest podatna na złośliwe użycie, jeśli zostanie skompromitowana. Pomimo tego, zk-STARKs wymagają więcej obliczeń do wygenerowania dowodu, co czyni je mniej wydajnymi. Mimo to, ostatnie osiągnięcia utorowały drogę do bardziej wydajnych zk-STARKów, czyniąc je obiecującym zamiennikiem dla zk-SNARKów.
Zgodnie z ich przypadkami użycia, zk-SNARKs i zk-STARKs różnią się nie tylko wydajnością i zaufanymi konfiguracjami. Aplikacje, które wymagają szybkiej i wydajnej weryfikacji dowodu, takie jak chroniące prywatność transakcje w kryptowalutach, zazwyczaj używają zk-SNARKów. Z kolei zk-STARKs są bardziej odpowiednie dla aplikacji, które wymagają przejrzystości i braku zaufanej konfiguracji, takich jak systemy głosowania i zdecentralizowane organizacje autonomiczne (DAO). Dodatkowo warto zauważyć, że chociaż zk-SNARKs i zk-STARKs są najbardziej znanymi typami dowodów zerowej wiedzy, istnieją inne warianty, takie jak Bulletproofs i Aurora, które oferują różne kompromisy w zakresie wydajności i bezpieczeństwa, w zależności od konkretnego przypadku użycia.
Jak zaimplementować zk proof w projekcie?
Podczas implementacji dowodu zerowej wiedzy w projekcie, istnieją różne kroki techniczne, a w zależności od typu użytego dowodu zerowej wiedzy, dostępne są różne metody i narzędzia, takie jak zk-SNARKs vs zk-STARKs. Na przykład, gdy używamy zk-SNARKs, deweloperzy muszą wykorzystać zaufaną konfigurację do produkcji parametrów publicznych, które będą używane do generowania i uwierzytelniania dowodów. Proces ten wymaga wyboru odpowiedniej ceremonii trusted setup, skonfigurowania niezbędnej infrastruktury oraz przypisania uczestników, którzy będą generować parametry. Po przeprowadzeniu trusted setup, programiści muszą włączyć do swojego kodu odpowiednie biblioteki, takie jak libsnark, oraz opracować funkcje wymagane do generowania i uwierzytelniania dowodów.
Jeśli chodzi o zk-STARK, deweloperzy muszą zastosować inne podejście, ponieważ nie jest wymagana zaufana konfiguracja. Aby udowodnić obliczenia, muszą oni wykorzystać narzędzia takie jak circom i snarkjs do generowania obwodów oraz narzędzia takie jak groth16 i marlin do weryfikacji i generowania dowodów. Obejmuje to wybór odpowiednich narzędzi i bibliotek, tworzenie obwodów oraz zapewnienie pełnej implementacji funkcji weryfikacyjnych i generowania dowodów.
Głębokie zrozumienie zaangażowanych protokołów kryptograficznych, jak również posiadanie dostępu do niezbędnych narzędzi i bibliotek, są kluczowymi wymaganiami dla programistów podczas implementacji dowodu zerowej wiedzy w projekcie. Dodatkowo, programiści muszą zapewnić, że dowody generowane przez system są poprawne, bezpieczne i wydajne bez naruszania prywatności lub bezpieczeństwa użytkowników. Testowanie i debugowanie odgrywa krytyczną rolę podczas procesu, a programiści muszą zapewnić, że system przejdzie dokładne testy przed wdrożeniem go do produkcji.
Podsumowanie
Dowody zerowej wiedzy stały się coraz bardziej kluczowe w kryptografii, w szczególności w blockchainie i kryptowalutach. Najczęściej używanymi typami dowodów zerowej wiedzy są zk-SNARKs i zk-STARKs, które różnią się podejściem do generowania dowodów, poziomem przejrzystości, czasem i rozmiarem generowania dowodów, skalowalnością i bezpieczeństwem post-quantum. Aby zaimplementować dowód zerowej wiedzy w projekcie, deweloperzy muszą posiadać dogłębne zrozumienie zastosowanych protokołów kryptograficznych, dostęp do niezbędnych narzędzi i bibliotek oraz zapewnić, że system przejdzie kompleksowe testy przed wdrożeniem. W zależności od zastosowanego dowodu zerowej wiedzy wymagane są różne kroki techniczne i metody. Ponieważ wykorzystanie dowodów zerowej wiedzy wciąż się rozszerza, zrozumienie kompromisów pomiędzy różnymi typami i efektywne wdrożenie ich w różnych aplikacjach przy jednoczesnym zachowaniu prywatności i bezpieczeństwa jest niezwykle ważne.