Jednym z największych dylematów w krypto jest kwestia, jak skalować sieci, zachowując jednocześnie ich decentralizację. Obecnie przyjęta odpowiedź brzmi: nie specjalnie się da. I w tym momencie, całe na biało, wchodzi zero knowledge proofs.

Na czym polega blockchain trilemma?

Blockchain trilemma opowiada o dylemacie, przed którym stają wszyscy twórcy sieci krypto. Każda z nich charakteryzuje się trzema głównymi przymiotami:

  • Bezpieczeństwo
  • Decentralizacja
  • Skalowalność

Bezpieczeństwo określa jak trudno jest dokonać złowrogich działań w sieci. Na przykład przejąć czyjeś saldo czy dokonać niezgodnej z protokołem transakcji. Na jego czele stoją kryptografia oraz mechanizmy utrzymania konsensusu. Dwa najpopularniejsze z nich to Proof of Work (PoW) oraz Proof of Stake (PoS). W PoW bezpieczeństwo sieci jest wprost zależne od wielkości mocy obliczeniowej poświęconej do jej zabezpieczania. A w PoS do ilości kapitału poświęconego temu samemu celowi.

Decentralizacja. To chyba najciekawszy i zarazem najistotniejszy z przymiotów krypto. Najistotniejszy, bowiem to z niego wynikają najważniejsze innowacje krypto: pełna otwartość sieci, wolność i samostanowienie jej uczestników, odporność na cenzurę oraz brak potrzeby zaufania do stron trzecich. To jest unikalna wartość Bitcoina i krypto. Już wcześniej mieliśmy sieci finansowe, które były bezpieczne i skalowalne. Nie mieliśmy jednak sieci zdecentralizowanych, w których nikt, poza samym użytkownikiem, nie ma kontroli nad jego środkami i działaniami. Jest to też ciekawa własność, ponieważ nie jest ona jednoznacznie mierzalna. Można tutaj stosować różne wskaźniki, które mogą zaciemniać obraz sytuacji. 

No i finalnie mamy skalowalność. Czyli zdolność sieci do szybkiego przetwarzania jak największej ilości transakcji. Oczywiście chcemy jak najwięcej, jak najszybciej. Najlepiej do tego jeszcze jak najtaniej.

No i w tym miejscu jest najlepszy moment aby przedstawić głównego bohatera tej sekcji. Zwanego jako Blockchain Trilemma. Mówi on, że spośród tych trzech cech (bezpieczeństwo, decentralizacja oraz skalowalność) nie da się osiągnąć wszystkich na raz. 

Obrazowo można to przedstawić jako trójkąt, którego wierzchołkami są trzy wspomniane cechy:

I teraz my tworząc, rozwijając dany projekt musimy postawić kropkę gdzieś w środku tego trójkąta. Siłą rzeczy nie może ona jednocześnie znajdować się w bliskiej odległości do wszystkich wierzchołków.

To zjawisko, ten trilemmat nie wynika z tego, że twórcy protokołów umówili się, że można wybrać tylko maksymalnie 2 z 3. Albo że bóg tak chciał. Wynika to z zależności pomiędzy tymi sieciami.

Im bardziej skalowalną sieć będziemy chcieli zrobić, tym większe będą nasze wymagania technologiczne (moc obliczeniowa, przestrzeń dyskowa, jakość połączenia internetowa) wobec uczestników i walidatorów sieci. A im trudniej o spełnienie tych warunków, tym mniej uczestników i tym większa kontrola (centralizacja) w rękach tych istniejących. Wtedy oni z własnej inicjatywy (bądź w wyniku żądań regulatorów) mogą złamać główne pryncypia sieci (odporność na cenzurę, wprowadzenie niezgodnej z protokołem transakcji czy zamrożenie czyjegoś salda). Czyli z wynikającej z technologii i decentralizacji pewności, że nikt nie wykona niepożądanych działań przechodzimy w stronę ufności, że nikt tego nie zrobi (chociaż są tacy, którzy mogą). Widzimy więc, że kompromisy w stosunku do decentralizacji rzutują też na bezpieczeństwie sieci i zgromadzonych w niej środków.

Z tych powodów, główne kryptowaluty, które wyrosły z etosu wolnościowego, takie jak Bitcoin i Ethereum podjęły decyzję, że nie będą one poświęcać swojej decentralizacji na rzecz skalowalności. A problem ten rozwiążą na tak zwanych drugich warstwach (ang. Layer 2). Lightning Network dla Bitcoina czy roll-upy dla Etheruem.

Mamy też młodsze projekty, gdzie etos krypto w dużej mierze został zastąpiony pieniędzmi od funduszy VC i ich rządzą dobrego zysku. W celu wyróżnienia się na rynku i przeciągnięcia dużej rzeszy użytkowników często optymalizują one architekturę swoich sieci właśnie pod kątem skalowalności. Przykładami takich sieci mogą być chociażby BNB Chain, FLOW czy Solana.

No cóż, skoro nie można mieć wszystkiego, to projekty i ich użytkownicy muszą wybierać (i płacić za to cenę), co jest dla nich ważniejsze.

Czym są zero knowledge proofs?

Teraz przejdziemy do szybkiego omówienia drugiego bohatera naszego artykułu. A jest nim kryptografia zero knowledge proofs (ZK, ZK-proofs. ZKP).

Jest to stosunkowo świeża dziedzina kryptografii, które oferuje nam niesamowite, trochę magiczne przymioty. Trochę jak mechanika kwantowa. Gdy się czyta opis, jak to działa, to zdrowy rozsądek podpowiada, że to nie powinno tak działać. A jednak tak działa.

No to przyjrzyjmy się temu, w jaki sposób działa ZK-proofs.

Jak wskazuje sama nazwa, opiera się ono o dowody (proofs). Dowody, którymi jedna strona (twórca dowodu), jest w stanie zagwarantować drugij stronie (weryfikatorowi) prawdziwość danego stwierdzenia, bez ujawniania żadnych informacji związanych z tym stwierdzeniem. W wyniku takiego dowodu, weryfikator może mieć pewność, że coś jest prawdziwe. Nie poznając żadnych przesłanek ku temu prowadzących. Nie rozszerzając swojej wiedzy na ten temat (stąd zero knowledge).

Przełóżmy to na przykład z życia codziennego.

Załóżmy, że udajesz się do sklepu, aby zakupić alkohol. Zgodnie z literą polskiego prawa, aby to zrobić, musisz mieć powyżej 18 lat. Sprzedawca widzą Cię, chce to zweryfikować.

W świecie dzisiejszym prosi Cię więc o okazanie dowodu osobistego. Po czym sprawdza na nim datę Twojego urodzenia. Przy okazji mogąc poznać inne Twoje dane osobowe (imię, nazwisko, PESEL) nie mające totalnie żadnego związku z przeprowadzanym właśnie procesem weryfikacji wieku.

Natomiast w świecie masowego wykorzystania ZK, Ty nie pokazujesz sprzedawcy swojego dowodu osobistego. Zamiast tego, na jego podstawie tworzysz proof (dowód na podstawie dowodu ;), który pozwala sprzedawcy mieć pewność, że jesteś pełnoletni. Bez ujawniania mu żadnych Twoich danych osobowych. Z datą urodzenia włącznie.

Brzmi trochę jak magia, przyznasz. Ale podobno to matematyka.

W tym miejscu warto jeszcze wspomnieć o tym, że wyliczenie takiego dowodu, może być dość kosztowne w kontekście wykorzystania mocy obliczeniowej. Ale za to same dowody są dość małe i tanie (jeśli chodzi o moc obliczeniową) do zweryfikowania. Mając tego świadomość pora przejść do kolejnej sekcji, w której zero knowledge pozamiata blockchain trilemma. 

ZK – autostrada do tysięcy transakcji na sekundę w zdecentralizowany sposób?

Przyjrzyjmy się teraz temu, w jaki sposób przymioty zk-proofs mogą pomóc nam wyjść z ograniczającego pudełka blockchain trilemma.

Jeśli chcemy wykonywać więcej transakcji na sekundę, to siłą rzeczy:

  1. Potrzebujemy większej mocy obliczeniowej, do przeprocesowania tych transakcji. Zwłaszcza w kontekście wykonywania smart contractów
  2. Stworzymy większą ilość danych, które najpierw musimy sprawie rozpropagować po wszystkich uczestnikach sieci, a potem wszyscy oni muszą przechowywać wszystkie te dane na wieki wieków.

Zacznijmy od mocy obliczeniowej. Bo tutaj mogą się dziać najwspanialsze rzeczy.

W rozproszonych (w tym zdecentralizowanych) sieciach każda transakcja jest przetwarzana przez wszystkich uczestników sieci. Siłą rzeczy musimy więc tutaj równać do najsłabszych. Skoro każdy ma przetworzyć wszystko, to musimy zadbać o to, aby wszystko nie przekraczało zasobów sprzętowych tych najsłabszych. W przypadku sieci zdecentralizowanych sieci jak Bitcoin czy Ethereum ta poprzeczka zawieszona jest naprawdę nisko. Stąd mamy kilka czy kilkanaście transakcji na sekundę. Natomiast sieci, które nie bawią się w grę o decentralizację, takie jak ICP czy Solana, mogą wymagać od swoich uczestników wysokiej jakości farm serwerów, które są zdolne do przetwarzania tysięcy transakcji na sekundę.

Tutaj warto jeszcze wspomnieć, że transakcja transakcji nierówna. Mamy więc do czynienia ze stosunkowo prostymi i małymi transakcjami przesyłu wartości. Mamy też większe i wymagające większej mocy obliczeniowej transakcje korzystające na raz z wielu protokołów DeFi. Czy w końcu mamy znacząco większe transakcje, które w ogóle nie istnieją w praktyce, bo są na tyle duże i skomplikowane, że nie zdążyły by się wykonać w ciągu jednego bloku. Co znacząco ogranicza możliwości tego, co jest do zrobienia on chain.

To teraz zobacz to. Nasz przykład z potwierdzaniem pełnoletności. Zk-proof na to liczymy na boku i przedstawiamy pani w sklepie. Mówiąc językiem on chain, jest to transakcja, która weryfikuje naszą pełnoletności. Za pomocą zk-proof możemy udowodnić, że przeprowadziliśmy sprawdzanie naszego wieku na podstawie przyjętego algorytmu i że dla naszych danych (których nie ujawniamy) wyszło, że jesteśmy pełnoletni.

To teraz to zgeneralizujmy. Zk-proofs pozwalają nam udowodnić, że dokonaliśmy dowolnych obliczeń, zgodnie z przewidzianym algorytmem i wyszło nam to i to. I teraz te obliczenia, jak i dowód zk-proof na nie, my możemy sobie policzyć na boku (off-chain). Natomiast do sieci (on-chain) przesyłamy dowód na to. I każdy uczestnik sieci jest w stanie to szybko zweryfikować przy wykorzystaniu niewielkiej mocy obliczeniowej. A to oznacza, że nie każdy musi liczyć wszystko. Tylko każdy sobie liczy transakcje sam i do sieci przesyła jedynie dowód, co mu wyszło. Który każdy może szybko i sprawnie zweryfikować. 

No i teraz przechodzimy do punktu drugiego. Powiedzmy, że narobimy sobie dużo tych transakcji i dowodów na nie. No to one niestety zajmują miejsce. Co powoduje dwa wyzwania: szybka synchronizacja bieżąca danych między uczestnikami oraz potrzebę ich późniejszego przechowywania. I tutaj zk-proofs, szczególnie w tym drugim aspekcie, równiez może być bardzo pomocne. Tutaj wiele zależy od implementacji, ale są możliwe sytuacje:

  1. W jednym dowodzie zamieszczamy wiele transakcji, a rozmiar dowodu nie jest liniowo zależny od ilości i wielkości transakcji, które udowadnia. A być może nawet ma stałą wielkość niezależnie od ilości udowadnia nych transakcji (jak funkcje hashujące)
  2. Dowody można w sobie zagnieżdżać. W dowodzie umieszczać dowody, że dowiedliśmy wcześniej co innego. Co przy niektórych implementacjach pozwala tworzyć blockchain o stałej, małej wielkości. 

Bonus w postaci prywatności

Wróćmy jeszcze na chwilę do naszego przykładu, z potwierdzaniem pełnoletności w sklepie. Jeśli skorzystamy tam z ZK, to osiągniemy zamierzony efekt (potwierdzenie pełnoletności) bez ujawniania żadnych informacji o sobie. Wliczając w to naszą datę urodzenia.

To samo jest prawdziwe w kontekście transakcji krypto. Tworząc dowód zk-proof możemy dowieść, że dana transakcja jest całkowicie poprawna z protokołem, jednocześnie nie ujawniając żadnych informacji na jej temat. Nie wiadomo co, kto, komu i ile, ale wiadomo, że jest to poprawna transakcja, która może być uwzględniona w sieci. Co daje nam bardzo duży poziom prywatność. 

I właśnie prywatność jest kontekstem, w którym to zero knowledge po raz pierwszy zagościło w świecie krypto. Będąc podstawą projektów prywatnościowych, takich jak chociażby ZCash.

Wysoki poziom choćby opcjonalnej prywatności jest jednym z kluczowych aspektów masowej adopcji krypto. W większości tradycyjnych branż, wliczając w to sektor finansowy, radykalna transparentność, jaką oferują publiczne sieci blockchain, nie jest cechą pożądaną. W naprawdę sporej przestrzeni, zarówno życia biznesowego, jak i prywatnego, nie chcemy, aby cały świat oglądał nasze posunięcia w czasie rzeczywistym. A rozwiązania oparte o zk-proofs oferują nam możliwość zachowania prywatności naszych transakcji.

Poznaj projekty oparte o zk-proofs

Na koniec parę słów o projektach, implementujących zero knowledge w świecie krypto.

Jak już wcześniej wspomniałem, w pierwszej kolejności były to projekty prywatnościowe. Takie jak Firo (dawniej znany pod nazwą ZCoin) czy ZCash.

My najcześniej wspominaliśmy o zero knowledgrze w kontekście skalowania Ethereum przy wykorzystaniu drugich warstw. I jednym z rodzajów tego typu sieci są zk-rollups. Gdzie zk jest oczywiście skrótem od zero knowledge. A najpopularniejsze projekty tego typu to zkSync, StarkNet czy Loopring.

My natomiast podczas najbliższego webinaru skupimy się na mniej znanych projektach, które w oparciu m.in o zk-proofs chcą stworzyć rozwiązania pierwszej warstwy nowej generacji. Zapisz się już teraz, aby potem nie żałować, że przegapiłeś.

Leave a Comment