Tytuł oryginalny: (Wait, Why We Need Consensus Again?)

Wykonawcy: Shresth Agrawal, Dionysis Zindros, k4m4, pod.network

Opracowane przez: Tia, Techub News

Błędne przekonanie, że Ziemia jest centrum wszechświata, utrzymywało się przez wieki. W tamtych czasach ludzie wierzyli, że słońce, gwiazdy i planety krążą wokół Ziemi. Dopiero odważni myśliciele ujawnili prawdę o heliocentryzmie, co zrewolucjonizowało astronomię, burząc model geocentryczny.

Podobnie jak w świecie astronomii, w świecie blockchain od dawna panuje nieporozumienie: konsensus jest warunkiem koniecznym ustanowienia zdecentralizowanych płatności. Jesteśmy zamknięci w Bitcoinie i Ethereum.

Waluty zdecentralizowane wymagają zdecentralizowanych rozwiązań konsensusowych. — Biała księga Ethereum, 2014

Konsensus jest w rzeczywistości wrogiem. Eliminując konsensus, możemy realizować transakcje tak szybko, jak wyszukiwanie w Google.

Dylemat konsensusu

Eve zaoszczędziła swoje Bitcoiny, aby kupić swoją pierwszą Teslę. Bob i Charlie są operatorami dealerskimi Tesli.

Ewa podpisuje wiadomość, w której informuje, że przekazuje pieniądze Bobowi. Bob otrzymuje płatność podpisaną przez Eve, ale nie czuje się jeszcze komfortowo, wręczając jej kluczyki do samochodu. Ponieważ Bob musi mieć pewność, że Ewa nie podpisze jednocześnie transakcji płatniczej z Charliem (podwójne wydatki).

Rysunek 1: Ewa podejmuje próbę podwójnego wydania, aby przekazać te same żetony Bobowi i Charliemu.

Zwykle do rozwiązania problemu podwójnych wydatków stosuje się konsensus blockchain. Konsensus przyjmuje transakcje jako dane wejściowe i wyprowadza je w pewnym globalnym porządku, co do którego zgadza się większość węzłów.

Rysunek 2: Konsensus działa jak czarna skrzynka, która przyjmuje jako dane wejściowe nieuporządkowaną „pamięć” transakcji i wyprowadza je w kolejności akceptowanej przez wszystkich.

Wracając do Ewy. Transakcja, która płaci Eve Bobowi, nazywa się tx1, a transakcja, która płaci Charliemu, nazywa się tx2. Blockchain zapewnia kolejność transakcji w drodze konsensusu. W przypadku wystąpienia podwójnego wydatku ważna jest transakcja, która jako pierwsza została wyjęta z bloku.

W sieci, w której uczestniczy tylko jedna strona, osiągnięcie konsensusu jest proste: strona ta po prostu wyprowadza transakcje w kolejności, w jakiej zostały otrzymane. Jednak w sieci, w której uczestniczą dwie lub więcej stron, różnice w warunkach sieciowych spowodują, że transakcje będą odbierane w innej kolejności. Poza tym złośliwe strony mogą celowo prezentować sprzeczne poglądy lub powodować opóźnienia w sieci. Jak zatem uzgodnić porządek globalny?

Do zarządzania wszystkimi transakcjami możemy wykorzystać scentralizowany bank. Ponieważ jednak nie chcemy polegać na żadnym zaufanym pośredniku, wybieramy grupę uczestników zwaną walidatorami i zakładamy, że ponad dwie trzecie z nich jest uczciwych.

Walidatorzy osiągają konsensus poprzez wiele rund komunikacji. Co jakiś czas losowo wybierany jest lider, który proponuje porządek globalny, umieszczając oczekujące transakcje w podpisanych przez niego blokach. Pozostali walidatorzy głosują na bloki lidera. Bloki posiadające podpisy dwóch trzecich walidatorów uważa się za poświadczone notarialnie. Złośliwy lider może selektywnie cenzurować transakcje lub nawet nie tworzyć blokad, zmuszając proces do rozpoczęcia od nowa. Wielokrotne powtarzanie tego iteracyjnego procesu pozwala każdemu ostatecznie dojść do tej samej sekwencji. Proces osiągania konsensusu jest powolny.

Z kolei aplikacje internetowe są szybkie i wymagają tylko jednej operacji w obie strony – klient wysyła żądanie HTTP, a serwer zwraca odpowiedź HTTP.

Czy potrzebujemy pełnego sortowania?

Zastanówmy się: czy każda transakcja musi być częścią państwa globalnego?

Załóżmy, że istnieją dwie transakcje płatnicze: Alicja płaci Bobowi, a Charlie płaci Dave’owi. Ponieważ obie płatności są niezależne, można je właściwie wykonać w dowolnej kolejności. Oznacza to, że niezależnie od sposobu wykonania, wynikowy stan pozostaje niezmieniony.

Rysunek 3: Płatność Alicji na rzecz Boba jest niezależna od płatności Charliego na rzecz Dave’a. Niezależnie od kolejności rozliczenia tych transakcji, skutki pozostają takie same.

Konsensus może rozwiązać problem podwójnych wydatków, ale czy możemy uniknąć kosztów opóźnień, jakie się z tym wiążą?

Oto jak to zrobić. Podobnie jak w przypadku konsensusu, nadal potrzebna jest grupa walidatorów, przy czym zakłada się, że ponad dwie trzecie z nich to osoby uczciwe. Zamiast uzgadniać zamówienie globalne, walidatorzy gwarantują, że otrzymane transakcje są ważne (w oparciu o ich lokalny pogląd), podpisując je. Dopóki transakcja zostanie potwierdzona przez więcej niż dwie trzecie walidatorów, jest to transakcja ważna.

Eve wysyła do walidatora dwie transakcje podwójnego wydatku. Po pierwsze, istnieje grupa nieuczciwych walidatorów, którzy podpisali obie transakcje w tym samym czasie. Następnie dzieli uczciwych walidatorów na dwie grupy (zakładając, że każda grupa stanowi jedną trzecią całkowitej liczby walidatorów) i wysyła różne transakcje do różnych grup (np. transakcję do Boba do pierwszej grupy i transakcję do Boba do druga grupa). grupa transakcji wysłana do Charliego). Jednak Eve nadal nie była w stanie zebrać wystarczającej liczby podpisów dla tych dwóch transakcji, aby przeprowadzić atak polegający na podwójnych wydatkach.

Aby ponownie zwizualizować tę rozproszoną sieć, załóżmy, że sieć ma N walidatorów, z których mniej niż jedna trzecia jest złośliwa.

Uczciwi użytkownicy: Roześlij nową transakcję do wszystkich walidatorów, a po otrzymaniu podpisów ponad dwóch trzecich walidatorów, transakcję uważa się za zakończoną i uzyskuje certyfikat.

Uczciwy weryfikator: prowadzi lokalną listę niewydanych tokenów i podpisuje tylko pierwszą ważną transakcję dotyczącą tokena.

Aby doszło do podwójnego wydatku, obie transakcje podwójnego wydatku muszą uzyskać certyfikaty, co oznacza, że ​​ponad jedna trzecia weryfikatorów musi być nieuczciwa.

Ten protokół oparty na braku konsensusu nie wymaga komunikacji między walidatorami, a jedynie jednego połączenia sieciowego! Co więcej, architektura ta została dobrze zbadana w literaturze blockchain, gdzie jej akademickim terminem jest transmisja konsensusowa.

Czy istnieją jakieś potencjalne zagrożenia? Kiedy Eve spróbuje podwoić wydatki, konsensus ustali, że jej transakcje będą uporządkowane globalnie i zaakceptowana zostanie tylko pierwsza z dwóch transakcji. Jednak w opisanym przez nas protokole nie ma gwarancji, że każda transakcja Eve zostanie ostatecznie sfinalizowana. Konto Eve może nawet zostać trwale zablokowane, gdyż nie musimy udzielać żadnych gwarancji kontrahentom.

Dlaczego więc znowu potrzebujemy konsensusu?

Nie mamy konsensusu.

Oprócz płatności, protokoły „torby” lub wspólne podzbiory (np. aukcje w łańcuchu, głosowanie, zlecenia z limitem), przepływy informacji wymagające tylko dołączenia (zdecentralizowane społecznościowe, notarialne) oraz protokoły, które można wyrazić jako bezkonfliktowe replikowane dane typy (wykresy społecznościowe, systemy reputacji, gry) mogą działać bez globalnego porządku. Wiele obecnie działających protokołów DeFi, które opierają się na kolejności, może również działać bez kolejności globalnej.

Pody eliminują konsensus, umożliwiając zdecentralizowany system tak szybki jak wyszukiwarka Google i tak bezpieczny jak Bitcoin.