Jak udowodnić coś, bez ujawniania tego? Czyli jak działa Zcash.

Dotrzymywanie tajemnic przychodzi wielu osobom ze sporą trudnością. Ludzka natura jest tak zaprojektowana, że posiadanie informacji, o których nie wie reszta nie tylko wprawia nas w miły nastrój, ale daje również poczucie bezpieczeństwa i przewagi w danym aspekcie. W przypadku rynku finansowego na najlepszej pozycji zawsze są insiders, czyli osoby bezpośrednio związane z daną spółką bądź mające niezwykle bliskie kontakty z osobami odpowiedzialnymi za kierowanie danym przedsiębiorstwem. To oni wiedzą pierwsi, kiedy jest najlepszy moment na zakup, a kiedy najlepiej pozbyć się wszystkiego co związane z daną firmą. Posiadane przez nich informacje są niezwykle cenne i bardzo często dość mocno opłacalne. Dzielenie się nimi jest nie tylko nieetyczne, ale może także pociągnąć za sobą kroki prawne. Również w życiu codziennym często wiemy coś, co może zaszkodzić bądź zranić drugą osobę. Nie zawsze możemy również ujawnić tę informację. Jak więc udowodnić, że wiemy coś bez ujawniania tego? Aby odpowiedzieć na to pytanie, przyjrzymy się kryptowalucie, która bardzo ciekawie podchodzi do spraw prywatności. Sprawdźmy więc jak działa Zcash i jego innowacyjny zero knowledge proof.

Słowem wstępu…

Zcash coinpaprika

Zcash to aktualnie 22 kryptowaluta pod względem kapitalizacji, która sięga ponad 730 milionów USD. Jego cena kształtuje się na poziomie ok. 175 USD i w przeciągu roku spadła o ponad 42 %. Patrząc na informacje zawarte na Coinpaprika, możemy dostrzec, że jego ATH wyniosło prawie 6 000 USD. Warto w tym miejscu zaznaczyć, że wartość ta pochodzi z października 2016, kiedy to ruszyło wydobycie tej kryptowaluty. Z powodu dość sporego szumu wokół niej (głównie związanego z konceptem zero knowledge proof), wielu inwestorów wyceniało go absurdalnie w pierwszych godzinach bądź dniach handlu.

Patrząc na poniższy wykres z Tradingview na interwale tygodniowym, od razu widać jak irracjonalna była cena prawie 6 000 USD (Tradingview pokazuje nawet wartość 20 000 USD). Po 2 tygodniach spadła ona o 98 % do poziomu ok. 100 USD.

Zcash tradingview

Za jego ATH lepiej więc przyjąć cenę z 7 stycznia br., 880 USD. Na dzień dzisiejszy jest on więc na 80 % przecenie. Co tak więc mogło zachwycić inwestorów w październiku 2016 roku, że byli w stanie zapłacić aż tyle za Zcasha?

Wiem, że nic nie wiem

Podstawą działania blockchainu wielu kryptowalut (w tym Bitcoina) jest weryfikacja transakcji. Odbywa się ona poprzez sprawdzenie inputu adresu wysyłającego oraz outputu adresu odbierającego a następnie zaktualizowaniu ich. Przed dokonaniem transakcji górnicy i ich koparki weryfikują, ile monet posiada adres X (adres wysyłający) a ile adres Y (adres odbierający). Odbywa się to poprzez sprawdzenie i zsumowanie wszystkich transakcji wejściowych i wyjściowych w celu ustalenia stanu konta. Kiedy już wiadomo, ile monet posiada adres X (i czy jest to wystarczająca ilość, aby dokonać nowej transakcji), a ile Y, transakcja jest przetwarzana i weryfikowana. W wyniku czego z adresu X zabierana jest określona ilość monet i dodawana do stanu adresu Y. W tym momencie można wysunąć dość dyskusyjny wniosek czy np. Bitcoin jest anonimowy, skoro znamy wszystkie transakcje wejściowe i wyjściowe danego adresu, a więc i jego stan posiadania. Możemy również prześledzić wszystkie transakcje, aż do pierwszego bloku czyli 9 stycznia 2009 r.

Zcash również podobnie jak Bitcoin weryfikuje transakcje, aczkolwiek pozwala, aby wszelkie informacje na ich temat były ukryte (ang. shielded). Odbywa się to przy zgodności sieci (ang. consensus) poprzez dowody zk-SNARK, które są nową częścią kryptografii zerowej wiedzy (ang. zero knowledge). zk-SNARK jest dowodem, który pozwala na udowodnienie czegoś bez ujawniania tego. Udowadniający może udowodnić weryfikującemu, że jest w posiadaniu klucza prywatnego, bez pokazywania tego klucza bądź ujawniania jego zapisu.

Aby lepiej wytłumaczyć sposób w jaki działa zk-SNARK, wyobraźmy sobie sytuację, w której mamy dwie osoby. Jedna z nich jest w pełni zdrowa i nic jej nie dolega. Druga jest daltonistą, czyli nie rozróżnia barwy czerwonej i zielonej. W pokoju, w którym znajdują się te dwie osoby, są również dwie małe, identyczne piłki. Jedna czerwona i druga zielona. Osoba nie cierpiąca na daltonizm nie jest w stanie przekonać daltonisty, że dwie piłki różnią się kolorem. Wpada jednak na pomysł przeprowadzeniu małego testu. Daltonista bierze dwie tak samo wyglądające dla niego piłki i chowa je za plecami. Staje przodem do osoby z w pełni zdrowym wzrokiem, tak aby ona nie mogła widzieć piłek. Następnie daltonista wyciąga przed siebie jedną rękę, w której ma piłkę. Nie ma pojęcia jakiego jest koloru. Osoba zdrowa, mówi mu, że piłka jest koloru czerwonego. Następnie daltonista chowa rękę z powrotem za siebie. Zamienia teraz piłki w rękach (czerwona jest więc w innej ręce) i wyciąga drugą rękę. Osoba zdrowa ponownie mówi mu, że piłka jest czerwona. W tym momencie daltonista może założyć dwie opcje. Albo piłki są naprawdę różnego koloru, albo osoba zdrowa po prostu miała szczęście i przewidziała to, że zamiennie piłki w rękach.

Daltonista może jednak powtórzyć tę próbę sto razy i uzyskać dowód na to, że piłki są dwóch różnych kolorów. Prawdopodobieństwo, że osoba zdrowa zgadnie poprawnie sto razy z rzędu czy piłki zostały zmienione w rękach czy nie (w przypadku, gdyby były jednak one jednego koloru) jest dość niska. Test ten można przeprowadzić więc nieskończenie wiele razy a jego wynik powinien być zawsze stu procentowy (w przypadku uczciwości osoby zdrowej).

Drugim przykładem z życia codziennego, może być Paweł i Monika. Paweł twierdzi, że zna sekretny kod do drzwi, które są idealnie w połowie okrągłej jaskini. Monika nie wierzy Pawłowi i żąda dowodu. Z racji tego, że Paweł nie może ujawnić kodu postanawia więc zabrać Monikę do owej jaskini i udowodnić jej, że zna kod. Jak już wspomniałem, jaskinia jest okrągła i ma budowę opony bądź pączka z dziurką. W jej połowie są mocne stalowe wrota, które można otworzyć tylko i wyłącznie przy pomocy kodu. Monika staje więc przy wejściu jaskini a Paweł wchodzi do niej skręcając w prawo. Jeżeli Paweł wyjdzie z jaskini z lewej strony, to automatycznie przedstawia dowód wiedzy na temat kodu do wrót. Monika cały czas obserwowała wejście jaskini, więc nie mógł on się cofnąć. W ten sposób Paweł przedstawia dowód bez ujawniania kodu.

Piłki, jaskinia i blockchain

Jak zatem mogą wyglądać transakcje na blockchainie Zcasha? Poniższa grafika przedstawia ogólne zasady przeprowadzania transakcji w Zcashu.

Zcash transakcje

Źródło: Zcash Blog

Ukryte transakcje (shielded transactions) przebiegają tak samo jak transparentne transakcje, za wyjątkiem procesu generowania dowodu zerowej wiedzy (zero-knowledge proof). Dzięki temu ukryte transakcje mogą być zweryfikowane bez ujawniania ich danych. W Zcashu istnieją cztery typy transakcji. Przedstawia je poniższa grafika:

Typy transakcji Zcash

Źródło: Zcash Blog

Jeżeli zatem zależy nam na anonimowości to możemy ukryć naszą transakcję, która w blockchain explorerze będzie wyglądać tak:

Ukryta transakcja Zcash

Źródło: Zcash Blog

Brak adresu wysyłającego i odbierającego. Brak wartości transakcji. Brak stanu kont adresów. Widzimy jedynie fee i ilość potwierdzeń. Jeżeli jednak nie dbamy o prywatność, a druga strona transakcji ją ceni, to możemy ukryć tylko połowę danych (shielding). W blockchain explorerze będą dostępne następujące informacje:

Shielding transakcja Zcash

Źródło: Zcash Blog

W tym przypadku znamy więc adres wysyłający i jego końcowy stan konta. Nie wiem jednak jaka jest wartość transakcji i czy została ona wysłana do jednego lub wielu adresów.

A na zakończenie…

…trzeba powiedzieć, że Zcash ma dość sporą konkurencję w sferze anonimowości choćby ze strony Dash i Monero. Przyglądając się jednak bliżej tym trzem kryptowalutom zobaczymy, że podchodzą one do anonimowości w zupełnie inny sposób. Mi osobiście niezwykle podoba się pomysł i wykonanie jakie oferuje Zcash. Na pewno znajdą się tacy, którzy przepowiedzą jego niepowodzenie min. ze względu na konkurencję. Ale czy to nie innowacyjność i różne podejście do problemu są siłą kryptowalut? Jak na razie Zcash w tym aspekcie nie ustępuje pola innym.

Maciej Kmita

Komentarze