Kiedy długość ma znaczenie, a więcej nie znaczy lepiej – czyli problem podwójnego bloku oraz atak 51%
W dzisiejszym wpisie poruszę dwa tematy, które od czasu do czasu pojawiają się w blockchainowej przestrzeni, a ich błędne zrozumienie może prowadzić do wielu nieporozumień. Pierwszym z nich będzie zagadnienie zwane problemem podwójnego bloku, drugi natomiast będzie dotykał tematyki większości “udziałów” w sieci, a nazywa się atakiem 51%. Mam nadzieję, że przedstawione informację wniosą dużo do Twojej blockchainowej wiedzy:)
Wybierz mądrze
Jeżeli przeczytałeś poprzedni wpis, to pewnie pamiętasz, że w przypadku niektórych blockchainów, w tym Bitcoina, do zabezpieczenia sieci wykorzystuje się algorytm zwany Proof of Work. Dla przypomnienia, polega on na jak najszybszym odgadnięciu identyfikatora kolejnego bloku, w celu dołączenia nowych transakcji do łańcucha. Kto wygra ten wyścig, dostaje nagrodę.
Ponieważ mamy do czynienia z rozproszoną siecią, to w rywalizacji bierze udziała ogromna liczba górników ze wszystkich zakątków świata. W momencie, gdy jeden z nich rozwiąże zagadkę, zaczyna informować innych o swojej wygranej. Rozejście się takiej wiadomości po całej sieci może zająć trochę czasu, co oznacza, że w takiej sytuacji ktoś inny może również odgadnąć hasz i zacząć informować o tym innych użytkowników. Jest to niezmiernie mało prawdopodobnyi przypadek, ale może się wydarzyć. W takim wypadku, na blockchainie pojawi się rozgałęzienie. Stanie się tak dlatego, że różni górnicy dostaną różne inne wiadomości. Cały łańcuch może wtedy wyglądać jak poniżej.
Na pierwszy rzut oka może się to wydawać ogromnym problemem. Przecież w bloku 67 mogą być całkowicie inne transakcje, niż w tym o numerze 68. Rodzić to może wiele nieprawidłowości. Czy w takim wypadku cały łańcuch został popsuty? A może od tej pory będą istniały dwa osobne blockchainy? Rozwiązanie jest prostsze, niż mogłoby się wydawać.
Chociaż w naszym świecie, często można usłyszeć zdanie “rozmiar nie ma znaczenia”, to w blockchainie panuje zupełnie inna zasada, a mianowicie dłuższy oznacza prawdziwy. Jakie to ma znaczenie w praktyce? Jeśli dojdzie do wspomnianej sytuacji, to oczywiście chwilowo stan blockchaina będzie niejasny. Jednak w momencie dołączenie kolejnego bloku do któregoś z łańcuchów, ten z większą jego liczbą zostanie uznany za prawidłowy, a wszystko to, co znajdowało się w drugiej części, straci na znaczeniu, tak jak na przedstawionym poniżej obrazku.
W teorii sytuacja może potrwać nieco dłużej, ponieważ mogłoby się ponownie okazać, że do dwóch łańcuchów zostały “równocześnie” dołączone nowe bloki. Jednak w pewnym momencie jeden z nich wygra, a drugi zostanie “skasowany”. Oznacza to de facto, że górnik który wykopał blok, nie ma od razu pewności, że otrzymane w nagrodę kryptowaluty nie przepadną z jego konta. Żeby ktoś nie pomyślał tylko w tej chwili, że na blockchainie w magiczny sposób może usunąć czyjeś środki. Nic bardziej mylnego. Po prostu nastąpi synchronizacja stanu, a górnik będzie musiał przepiąć się do odpowiedniego łańcucha, w którym żadnej nagrody nigdy nie dostał.
Jeśli miałeś okazję korzystać z giełd lub portfeli kryptowalutowych, mogłeś natknąć się na sytuację, w której widziałeś już otrzymane środki na swoim adresie, ale nie miałeś możliwości się nimi posługiwać. Dzieje się tak właśnie z powodu potencjalnego zagrożenia podwójnym blokiem. W każdym blockchainie istnieje liczba tzw. potwierdzeń, czyli kolejno dołączonych bloków do tego, w którym znajduje się nasza transakcja. W przypadku Bitcoina uznaje się, że dwa potwierdzenia to wystarczająca liczba do tego, by być pewnym, że nic się już nie zmieni.
Jak widzisz przedstawiony problem nie jest niczym strasznym, a jedynie wymaga nieco dodatkowego oczekiwania na zatwierdzenie transakcji. Jednak własność, która go rozwiązuje, a mianowicie dłuższy-znaczy prawdziwy, może zostać wykorzystana w złej intencji.
Kiedy większość przejmie kontrolę
Blockchain jest w pewnym sensie systemem demokratycznym. Oznacza to, że większość ma rację. Chociaż jest to duże uproszczenie, na potrzeby kolejnego zagadnienia przyjmijmy, że tak się dzieje. Zarówno w przypadku wykorzystania Proof of Work, jak i Proof of Stake, może dojść do hipotetycznej sytuacji, gdzie decyzja większości doprowadzi do manipulacji danymi. Nosi to nazwę ataku 51%.
W przypadku PoW, jeśli ktoś będzie dysponował mocą większą niż ta, która znajduje się w połowie sieci, wtedy może manipulować transakcjami, które znajdą się w blokach. Niektóre badania pokazują, że nawet posiadania niecałych 40% mocy może pozwolić na takie zachowanie.
Dzieje się tak, ponieważ taki górnik będzie w stanie tworzyć częściej nowe bloki, niż reszta osób razem wzięta, a jak wiesz z poprzedniego rozdziału, to najdłuższy łańcuch zostanie uznany za prawdziwy.
Taki atak może przebiegać następująco: w pewnym momencie górnik decyduje się, że nie będzie publikował informacji o wykopanych blokach, tworząc sobie swego rodzaju łańcuch poboczny. W swoich blokach oszust zamieszcza wybrane transakcje. W momencie, kiedy jego łańcuch stanie się dłuższy od tego prawdziwego, górnik ogłasza całej sieci swoje bloki. Ponieważ jego łańcuch jest najdłuższy, to reszta uczestników decyduje się na korzystanie z opublikowanych wyników, pozostawiając poprzedni stan w zapomnieniu. Poniższy obrazek demonstruje taką sytuację.
Wydaje się, że opisany problem sprawia, że korzystanie z blockchaina może być pozbawione sensu. Skoro technologia ta miała chronić przed oszustwami, a mimo to wciąż na nie pozwala, to jej zastosowanie traci na wartości. Na szczęście kolejny raz strach ma tylko wielkie oczy. Jeżeli pamiętasz, to jedną z ważniejszych cech blockchaina jest również jego transparentność i otwartość. Oznacza to, że sieć jest obserwowana nie tylko przez górników, ale również przez setki tysięcy innych osób. Gdyby ktoś spróbował wykonać taki atak, na pewno zostałoby to zauważone, a w konsekwencji ludzie przestaliby korzystać ze zmanipulowanego łańcucha. Oczywiście mogłoby to wywołać chwilowe perturbacje, jednak na dłuższą metę nie miałoby to znaczenia. Z drugiej strony, raczej nie chcielibyśmy pozwolić nawet na chwilowe zamieszanie. Dlatego im większa decentralizacja danego blockchaina oraz znaczna liczba różnego rodzaju użytkowników, tym sama sieć staje się bezpieczniejsza i mniej podatna na potencjalny atak.
Niemniej jednak warto zdawać sobie sprawę z przedstawionego zagrożenia, szczególnie wtedy, gdy korzystamy z mało popularnych blockchainów. W przypadku rozwiązań takich jak Bitcoin lub Ethereum, szansa na atak jest bardzo mało prawdopodobna, a nawet jeśli doszłoby do takiej próby, to z pewnością zostałoby to od razu wykryte. Jednak zdarzały się historie, kiedy w nowych i małych sieciach dochodziło do takiej sytuacji i zostało to odkryte dopiero po dłuższym czasie. Zazwyczaj kryptowaluta danego rozwiązania traciła całkowitą wartość, a sama sieć przestawała działać, z powodu zmniejszającej się liczby użytkowników.
W blockchainach opartych o PoS również może dojść do ataku 51%, ale zamiast posiadania odpowiedniej ilości mocy obliczeniowej, atakujący musi być wybierany jako walidator częściej, niż pozostałe 50% sieci. W najprostszym przypadku wystarczy, żeby posiadał ponad połowę środków zablokowanych przez walidatorów. W przypadku Ethereum, o ile wycena ethera będzie wynosić tyle, ile obecnie, atakujący potrzebowałby środków o wartości przekraczającej kilkadziesiąt miliardów dolarów. Trzeba przyznać, że jest to całkiem spora sumka pieniędzy:)
Ponieważ poznałeś już podstawy stojące za mechanizmami sterującymi blockchainem, możemy porozmawiać o rzeczach, które można z jego pomocą osiągnąć. Dlatego już w kolejnym wpisie poruszę temat smart kontraktów. Do następnego razu!