Filieton #3: Algorytmy konsensusu

in #polish3 years ago (edited)

Filieton3.png

💡 Filietony to seria wpisów-felietonów autorstwa @mciszczon tworzonych w ramach działalności @instytutfi, których celem jest upowszechnienie i popularyzacja wiedzy na temat współczesnego technologicznego świata, jego zawiłości i możliwości. Jak działać w tym świecie rozsądnie, jak zmieniać nasze otoczenie na lepsze? Na te i inne pytania próbują odpowiedzieć Filietony.

W komentarzach pod wpisem zapowiadającym serię Filietonów zadaliście mi kilka ciekawych pytań związanych z technologiami blockchainowymi i nie tylko: m.in. o różne rodzaje algorytmów konsensusu oraz różnice pomiędzy Ethereum i Cardano. Obiecałem, że postaram się na wszystkie te pytania odpowiedzieć wyczerpująco i merytorycznie.

Dzisiaj na tapet wezmę temat mechanizmów konsensusu w systemach blockchainowych i odpowiem na pytanie @bezkresu z nimi związane.

Zapraszam zatem do lektury!

* * *

https://images.unsplash.com/photo-1518135714426-c18f5ffb6f4d?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1373&q=80

1. Algorytmy konsenusu – z czym to się je?

Dawid (@bezkresu) zadał pytanie otwierające technologiczną puszkę pandory:

(...) [C]hętnie poznałbym zagadnienia funkcjonowania sieci blockchainowych. Proof of work vs. proof of stake. Czy są jakieś praktyczne różnice dla odbiorcy. Czy ma to jakiś wpływ na cokolwiek (np. bezpieczeństwo). I dlaczego proof of work wciąż istnieje skoro pożera tyle prądu?

Zarówno proof of work (ang. dowód wykonanej pracy) jak i proof of stake (nie jest mi znane żadne sensowne tłumaczenie na j. polski – ja przetłumaczyłbym to pojęcie jako dowód zastawu) to tak zwane algorytmy (czy też mechanizmy) konsensusu. Pojęcie to jest ściśle związane z funkcjonowaniem sieci blockchainowych i trudno rozmawiać o technologicznych podstawach takich sieci bez zrozumienia funkcjonowania właśnie algorytmów konsensusu.

Warto dodać, że wspomniane dwa algorytmy (często nazywane skrótowo PoW oraz PoS) nie są wcale jedynymy opracowanymi i funkcjonującymi z powodzeniem mechanizmami. Zanim jednak będę mógł je omówić, zacząć muszę od wyjaśnienia samego pojęcia algorytmu konsensusu i nakreślenia problemu, jaki on rozwiązuje.

https://images.unsplash.com/photo-1460194436988-671f763436b7?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80

Problem bizantyjskich generałów

W informatyce jednym z wielu problemów, który rozwiązuje się od dekad, jest tzw. problem konsensusu. Stanowi on zasadniczy problem dotyczący systemach rozproszonych wykonujących obliczenia rozproszone – to znaczy takich systemach, w których poprawne wykonanie danej operacji wymaga wykonania pracy przez dwa lub więcej procesów. Istnieje wiele powodów, dla których oczekiwany wynik takiej operacji może być niepoprawny (niezgodny z oczekiwaniami): jeden z procesów może ulec awarii lub zwrócić niepoprawny wynik itp.

Doskonale sytuację tę obrazuje tzw. problem bizantyjskich generałów. Otóż wyobraźmy sobie, że przed murami wrogiego miasta czeka zebrana armia bizantyjska. Armia składa się z kilku poszczególnych legionów. Każdy legion posiada swojego generała.

Generałowie ci muszą zdecydować o tym czy powinni zaatakować mury miasta, czy też wycofać się (bo np. nie są w stanie wygrać). Co ważne, wszyscy generałowie muszą wspólnie podjąć taką samą decyzję: albo wszyscy zaatakują i wygrają, albo wycofają się i nie dojdzie do żadnych strat. W przypadku, gdy część generałów zaatakuje, a reszta się wycofa, będziemy mieli do czynienia ze straszliwą masakrą.

Niestety, poszczególne legiony rozlokowane są od siebie w dużych odległościach, przez co generałowie nie mogą komunikować się ze sobą pośrednio – muszą do siebie wysyłać gońców. Nastręcza to wiele problemów, bowiem goniec może zginąć po drodze i nigdy nie dotrzeć.

Niektórzy generałowie mogą też okazać się zdrajcami, przez co będą starali się celowo doprowadzić do podjęcia nieodpowiednich decyzji i przechylenia szali na stronę przeciwników Bizancjum. Zdrajcy mogą na przykład przekazać różne dane co do liczebności swojej armii albo przekazać decyzję o wycofaniu się tym generałom, którzy chcą się wycofać, a chcącym walczyć przekazać decyzję o podjęciu walki.

https://images.unsplash.com/photo-1536778215133-7e02ee89cb90?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80

Poszukiwanie konsensusu

Co mogą zrobić wierni generałowie, aby podjąć właściwą decyzję? Otóż tworzą oni taki genialny w swej prostocie system: każdy generał tworzy notatkę z liczebnością swojego wojska oraz swoją opinią na temat tego, czy armia powinna zaatakować czy wycofać się. Taką notkę następnie wysyła do wszystkich pozostałych generałów.

Generałowie umawiaja się na termin jednego dnia – to właśnie czas, w którym muszą oszacować liczebność swojego legionu i przekazać notatkę do pozostałych. Jeżeli tak się nie stanie, pozostali generałowie nie wezmą go pod uwagę – nie mogą czekać bez końca, gdyż wystawiają się na atak przeciwnika.

Kiedy już generałowie otrzymają notatki od wszystkich pozostałych (lub upłynie termin jednego dnia), każdy z nich przygotowuje specjalny arkusz. W tym arkuszu zamieszcza wszystkie otrzymane od innych notatki, tworząc w ten sposób zbiór informacji dotyczących całej armii. Znajduje się tam liczebność wszystkich legionów oraz proponowane decyzje każdego z generałów. Tak przygotowany arkusz po raz kolejny przesyła do wszystkich pozostałych generałów.

Dzięki takiemu podejściu do problemu, każdy generał nie tylko posiada informacje od pozostałych, które mu przeznaczyli, ale też wie jakie informacje przekazali innym. W ten sposób bardzo łatwo mogą wykryć zdrajców – informacje przekazane przez zdrajców będą bowiem niespójne w ramach danego bloku, natomiast uczciwi generałowie to ci, którzy przekazali wszystkim takie same decyzje i informacje.

https://images.unsplash.com/photo-1519995451813-39e29e054914?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80

Problem konsensusu w sieci blockchain

Powyższy przykład bizantyjskich generałów w bardzo prosty sposób pokazuje uogólniony problem konsensusu oraz próbę jego rozwiązania przez tworzenie arkuszy zawierających w sobie zbiór informacji od wszystkich uczestników sieci.

Z podobnym problemem borykają się informatyczne systemy rozproszone, których blockchain jest najlepszym przykładem. W naszym jednak przypadku nie ma generałów, ale użytkownicy oraz ich akcje w ramach sieci bloków. Zamiast gońców mamy łącza internetowe, zamiast armii zasobne kryptoportfele, a zamiast wrogiego miasta do zdobycia mamy stary system ekonomiczny do obalenia. Znowu. Hurra...

Ustalmy więc taką nomenklaturę: notatki, które wysyłali do siebie generałowie, nazwijmy od teraz transakcjami, a arkusze zawierające wszystkie transakcje nazwijmy sobie blokami.

Otóż wyobraźmy sobie, że w naszej sieci działa sobie jakiś użyszkodnik o nazwie mrtwister. Posiada on w swoim portfelu kryptowalutę – nazwijmy ją WFST (od Włoskiej Fabryki Samochodów w Turynie). Jego portfel jest zasobny w dokładnie jeden token tej kryptowaluty, a zatem 1 WFST. Użyszkodnik ten postanawia dokonać małego oszustwa znanego jako podwójny wydatek (ang. double spending).

Aby tego dokonać, ogłasza w sieci dwie transakcje: jedna z nich przekazuje 1 WFST użytkownikowi A, a druga 1 WFST użytkownikowi B. W przypadku fizycznych monet takich jak na zdjęciu byłoby to niemożliwe. Jednak w świecie blockchainu wszystko jest tylko cyfrowym zapisem i nic nie stoi na przeszkodzie, aby taki podwójny wydatek trafił do sieci bloków. W przypadku tradycyjnej bankowości istnieje pośrednik takiej transakcji w postaci właśnie banku. Pośrednik ten łatwo połapie się w próbie oszustwa i unieważni jedną lub obie transakcje – być może nawet od razu zablokuje konto.

Jednak to nie bank, tylko blockchain... Szkodliwe transakcje zaczynają się propagować w sieci. Niektóre bloki otrzymują informację o transakcji do A, ale inne do B – zapisują tę informację i przekazują ją dalej. Nasz użyszkodnik już zaciera ręce i napawa się swym oszustwem. Myśli sobie: w końcu to nie bank, nikt nie weryfikuje ręcznie żadnych transferów.

mrtwister otwiera już szampana, aż tu nagle... wszystkie serwery w sieci zaczynają porównywać utworzone przez siebie bloki wszystkich transakcji i odkrywają niespójność danych. Część bloków zapisała transfer do A, a część do B. Szybko zaczyna się algorytmiczna analiza i wniosek jest oczywisty: mrtwister nie był w stanie wysłać 1 WFST zarówno do A jak i B, bo według większości bloków w momencie transakcji miał na to za mało środków na koncie.

Naszą sieć bloków skonfigurowaliśmy uprzednio akurat w taki sposób, że transakcja potwierdzona przez większą liczbę bloków zostanie uznana za poprawną, a druga odrzucona i przez całą sieć uznana za niepoprawną. W naszym przypadku więcej bloków (ponad 50%) potwierdza transfer do A.

https://images.unsplash.com/photo-1545987796-200677ee1011?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80

* * *

2. Różne algorytmy konsensusu w sieciach blockchainowych

Cały powyższy rozdział powzwolił nam zrozumieć problemy uzyskiwania konsenusu wiążące się z działaniem sieci blockchain i podstawowe sposoby na ich rozwiązanie. Jednak diabeł tkwi w szczegółach. Pod koniec poprzedniego rozdziału stwierdziliśmy:

Naszą sieć bloków skonfigurowaliśmy uprzednio w taki sposób, że transakcja potwierdzona przez większą liczbę bloków zostanie uznana za poprawną (...).

Co jednak, gdyby nasz oszust był o wiele bardziej sprytny ora potężny i na przykład sam posiadał większość serwerów zawierających bloki? Wówczas mógłby manipulować konsensusem i zawsze przechylać go na swoją korzyść. Mógłby też po prostu przekupić większość osób utrzymujących sieć bloków, aby ludzie ci szli mu w sukurs. Koniec końców chodzi o to, aby większość bloków w sieci mieć po swojej stronie...

Dlatego właśnie tak kluczowe jest wprowadzenie mechanizmu, który w jakiś sposób utrudni tworzenie nowych bloków i sprawi, że próba oszutwa okaże się niemożliwa – lub przynajmniej nieopłacalna.

W jaki sposób osiąga się ten cel w przypadku sieci blockchainowych? Otóż aby jakikolwiek nowy blok został uznany za wiarygodny i włączony do sieci, musi zostać udowodniona jego autentyczność.

https://images.unsplash.com/photo-1612180564996-f326ba5b939d?ixlib=rb-1.2.1&ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&auto=format&fit=crop&w=1267&q=80

Proof of work (Dowód wykonanej pracy)

Proof of work (PoW) to najbardziej znany algorytm konsensusu w sieci blockchain – i nie bez powodu. To właśnie PoW jest algorytmem od początku stojącym za wiarygodnością sieci Bitcoin, choć jego historia jest znacznie dłuższa – pierwsze pomysły na powiązanie rosnących możliwości wykonywania obliczeń przez komputery z wartością ekonomiczną pojawiały się od lat 80-tych.

Dopiero rok 2008 przyniósł rewolucję. Wtedy to niejaki Satoshi Nakamoto opublikował dokument opisujący działanie systemu blockchainowego oraz uruchomił pierwszy taki system wraz z powiązanąz nim kryptowalutą: Bitcoinem. Reszta to historia...

Mechanizm działa PoW jest dosyć prosty. Każdy blok w systemie posiada specjalne hasło. Kiedy w obiegu ma pojawić się kolejny blok, aby zostać uznanym za wiarygodny musi podać owe hasło z bloku poprzedniego – w przeciwnym wypadku nie zostanie uznany. Cały problem polega na tym, że hasło to dostępne jest wyłącznie w postaci zaszyfrowanej, a jego odszyfrowanie wymaga ogromnego nakładu pracy w postaci mocy obliczeniowej. To właśnie dlatego mówi się potocznie o kopaniu kryptowaluty – proces ten bowiem wymaga dużych nakładów pracy, jednak daje szansę na wykopanie samorodka.

Utrudnia to wykonanie oszustwa, gdyż wymaga ono znacznych nakładów finansowych. Co więcej, koszt oszustwa rośnie wraz z rozrostem sieci. Nie będę tutaj wchodził w techniczne szczegóły, wystarczy bowiem wiedzieć, że szansę na przekłamanie blockchaina mamy tylko w przypadku, gdy posiadamy przynajmniej 51% mocy obliczeniowej całej sieci. Tylko wtedy możemy zmusić ją do tego, aby uznała niepoprawne (sfałszowane) bloki za wiarygodne.

Jeśli się nie mylę, do tej pory jeszcze nigdy nie doszło do zakończonego powodzeniem ataku fałszerskiego na sieć Bitcoinów, ale już na jego hardforki – tak. Dobrym przykładem będzie tutaj waluta Bitcoin Gold, która już kilkukrotnie została pomyślnie zaatakowana przez hakerów – ostatnim razem na początku 2020 roku. Hakerom udało się wtedy dokonać podwójnego wydatku waluty BTG o równowartości ok. 72 tysięcy dolarów, co kosztowało ich prawdopodobnie tylko nieco ponad 1000 dolarów. Ofiarą ataku typu 51% padło wielokrotnie też Ethereum Classic.

Zalety

  • Szeroka decentralizacja. PoW zasadniczo pozwala każdemu na wzięcie udziało w procesie kopania kryptowaluty bez spełniania żadnych dodatkowych wymogów. Potrzebny jest wyłącznie odpowiedni sprzęt.
  • Sprawiedliwy podział tokenów. W systemie opartym o PoW tokeny są dzielone w sposób sprawiedliwy, tj. każdy uczestnik procesu kopania otrzymuje ilość waluty proporcjonalnie do wykonanej przez siebie pracy w deszyfrowaniu kolejnego bloku.

Wady

  • Wysoki koszt energii elektrycznej. Wysoka złożoność obliczeniowa weryfikowania nowych bloków oznacza ogromne koszty energetyczne utrzymania sprzętu służącego do kopania kryptowaluty. Wystarczy rzut okiem na zdjęcia kopalnii kryptowalutowych aby uzmysłowić sobie, jak wiele prądu potrzebują one do funkcjonowania. Szacunki sprzed paru lat mówiły o tym, że energia zużywana do kopania Bitcoina wystarczyłaby na zaspokojenie potrzeb energetycznych kraju takiego jak Czechy.
  • Ryzyko oligarchii. Ryzyko powstania oligarchii, w której kilku użytkowników posiadających najwięcej mocy obliczeniowej posiada za duży wpływ na działanie całego systemu.

Przykłady kryptowalut

  • Bitcoin (BTC)
  • Ethereum Classic (ETC)
  • Litecoin (LTC)

https://images.unsplash.com/photo-1538388933536-31c33d2703a0?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80

Proof of stake (Dowód doli)

PoS to drugi najpopularniejszy algorytm konensusu w sieciach blockchainowych i powstał aby rozwiązać problemy tego pierwszego – a przy okazji pojawiły się inne. Założenie PoS jest zupełnie inne niż w przypadku PoW – nowe tokeny kryptowaluty przydzielane są wszystkim użytkownikom sieci proporcjonalnie do już posiadanych przez nich tokenów. Słowo stake można przetłumaczyć także jako stos. Można zatem powiedzieć, że działanie PoS przypomina funkcjonowanie lokaty bankowej – czym więcej waluty odłożymy na kupkę, tym więcej wypracuje ona zysku.

Jak blockchain opart o PoW zapewnia wiarygodność bloków? W tym przypadku ważna jest rola specjalnych użytkowników określanych mianem validators (po polsku nazwalibyśmy ich weryfikatorami). Użytkownicy ci muszą zamrozić posiadaną przez siebie kryptowalutę aby potwierdzać nowe bloki. Nie otrzymują oni jednak w zamian nowowygenerowanych tokenów (te w całości trafiają do zwyczajnych użytkowników) – zamiast tego trafiają do nich opłaty za transakcje, które wykonują użytkownicy sieci. Wysokość tej nagrody jest także proporcjonalna do ilości zamrożonej przez weryfikatora kryptowaluty.

Aby zniechęcić weryfikatorów do oszustw, blockchain oparty o mechanizm PoS najczęściej przewiduje również pewnego rodzaju kary, które powodują utratę części zamrożonych środków przez weryfikatora. W przypadku propagowania przez serwer weryfikatora niepoprawnych transakcji znaczna część jego odłożonej kryptowaluty zostanie przejęta lub wypalona, tj. zniknie w eterze zmniejszając ilość waluty w obiegu. Mniejsze kary mogą być przyznawane także w przypadku braku dostępu do serwera (tzn. kiedy jest on offline), gdyż powoduje to dłuższy czas zatwierdzania nowych bloków i czyni sieć mniej odporną na awarie.

Teoretycznie blockchain opart o mechanizm PoS również jest narażony na tak typu 51%. W tym przypadku atakujący użytkownik musiałby posiąść 51% całej kryptowaluty, która jest w obiegu. O ile jest to możliwe, o tyle z punktu widzenia takiego użytkownika nie jest opłacalne fałszowanie takiej sieci, bowiem w przypadku wykrycia fałszerstwa wartość kryptowaluty zacznie bardzo szybko spadać – straci więc i sam atakujący, gdyż jego portfel jest zamrożony i minie jakiś czas, zanim będzie mógł on wypłacić swoje środki.

PoS to oczywiście mechanizm stojący za funkcjonowaniem blockchainu Hive. W tym przypadku zamrożona kryptowaluta Hive nazywana jest Hive Power (VESTS), a weryfikatorzy to nasi witnessi.

Zalety

  • Niski próg wejścia. Aby brać udział w kopaniu kryptowaluty nie potrzeba drogiego sprzętu. Wystarczy nawet najmniejsza inwestycja, a zakupione kryptowaluty zaczynają same generować zysk.
  • Niski koszt energetyczny. Skoro wykonywanie bardzo złożonych obliczeń nie jest konieczne, to utrzymanie sieci staje się dużo mniej kosztowne w energię, a istnienie kopalni nie ma żadnego sensu.
  • Bardziej sprawiedliwy podział tokenów. W przypadku mechanizmu PoW użytkownicy dysponujący większą mocą obliczeniową posiadają nieproporcjonalnie większe prawdopodobieństwo wykopania kolejnego bloku i uzyskania nagrody. W przypadku PoS nagroda jest liniowo zależna od ilości zamrożonej kryptowaluty (zaróżno w przypadku weryfiaktorów jak i zwyczajnych użytkowników i ich lokat).

Wady

  • Ryzyko oligarchii. Blockchain opart o PoS również jest podatny na powstanie oligarchii, w której kilku użytkowników posiadających najwięcej zamrożonej kryptowaluty posiada zbyt wielki wpływ na cały system. Przykład takiej sytuacji mieliśmy przy rozłamie Steem i Hive.
  • Ryzyko utraty doli. W przypadku systemów opartych o PoW kradzież kryptowaluty nie wpływa na dalszą możliwość wykopywania nowych bloków (moce obliczeniowe nie zostają naruszone). W przypadku PoS kradzież kryptowaluty oznacza utratę możliwości brania dalszego udziału w kopaniu nowych bloków i udziału w podziale nagród.
  • Podatność na nowe rodzaje ataków: atak nic do stracenia oraz atak historii alternatywnej. Nie będę ich tutaj dokładnie opisywał, bo wymagają kolejnej dawki technicznych wyjaśnień, których zapewne i tak macie już dość.

Przykłady kryptowalut

  • Ethereum (ETH)
  • Steem (STEEM)
  • Hive (HIVE)

Pozostałe algorytmy

PoW i PoS to nie jedyne mechanizmy uzyskiwania konsensusu w rozproszonych systemach informatycznych. Są one jednak zdecydowanie najpopularniejsze, pozostałe stanowią (jak na razie) ciekawostkę.

Proof of Personhood (PoP)

Nietypowy mechanizm, w którym każda osoba w świecie rzeczywistym otrzymuje takie samo prawo głosowania oraz powiązane z nim nagrody. System taki równomiernie traktuje i nagradza wszystkich użytkowników, niezależnie od tego jakie wykonują one czynności czy ile posiadają kryptowaluty.

W założeniu mechanizm PoP ma zapobiec procesowi centralizowania się systemów blockchain, co zaobserwowano już w przypadku blockchainów PoW oraz obserwuje się w blockchainach PoS. Rozważa się użycie blockchainów PoP w systemach demokratycznych oraz oparcie o nie systemu gwarantowanego dochodu podstawowego.

Głównym problemem, z jakim musi się zmierzyć mechanizm PoP, to potwierdzenie tożsamości użytkowników – tak aby uniknąć tworzenia przez jedną osobę kilku kont.

Proof of Authority (PoA)

Można powiedzieć, że mechanizm ten przypomina nieco mechanizm PoS, jednak kluczową rolę odgrywa nie zamrożona ilość kryptowaluty, ale reputacja (autorytet) użytkowników-weryfikatorów. Wyższa reputacja (większy posiadany autorytet) oznacza większy przydział nagród.

Uważa się, że mechanizm ten nie nadaje się do bycia podstawą publicznych systemów blockchain, natomiast może być używany w sieciach prywatnych.

Proof of Space (nazywane też Proof of Storage)

Mechanizm ten bardzo przypomina pierwotne Proof of Work z tą jednak różnicą, że zamiast wykonywania kosztownych obliczeń deszyfrujących, użytkownicy muszą udostępnić jakąś ilość wolnej przestrzeni dyskowej.

Jego zalety są podobne do PoW, jednak nie wymaga on tak ogromnych nakładów energii elektrycznej, dzięki czemu stanowi bardziej ekologiczną alternatywę. Pozwala także na ciekawe zastosowania m.in. w wykrywaniu wirusów komputerowych.

Do tej pory mechanizm ten był implementowany głównie teoretycznie.

Proofs of Sequential Work/Proof of Time (PoSW/POT)

Jest to zaproponowany niedawno mechanizm konsensusu. Przypomina on nieco mechanizm PoW, jednak wykonywane obliczenia nie są aż tak skomplikowane – dzięki temu nie wymagają tak drogiego sprzętu oraz są bardziej ekologiczne. Dowód generowany jest poprzez wykonywanie jakichś obliczeń przez dany okres czasu – nie jest ważne uzyskanie rozwiązania tych obliczeń. Co więcej, proponowana w takim mechanizmie zagadka kryptograficzna posiada podobny czas jej rozwiązania zarówno dla słabszych jak i potężniejszych procesorów. Droższy i szybszy sprzęt komputerowy nie przyniesie zatem żadnych korzyści kopiącemu.

Do tej pory nie powstał bodaj jeszcze żaden system oparty o ten mechanizm.

https://images.unsplash.com/photo-1571097378569-f80dbf68dfde?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1469&q=80

Dlaczego PoW jeszcze istnieje?

Po tym króciutkim wstępie wrócę zatem do pytania @bezkresu:

(...) [C]hętnie poznałbym zagadnienia funkcjonowania sieci blockchainowych. Proof of work vs. proof of stake. Czy są jakieś praktyczne różnice dla odbiorcy. Czy ma to jakiś wpływ na cokolwiek (np. bezpieczeństwo). I dlaczego proof of work wciąż istnieje skoro pożera tyle prądu?

Odpowiedź zdaje się zatem zaskakująco prosta: PoW istnieje, bowiem istnieją kryptowaluty działajace według tego mechanizmu i pozwalają one bardzo dobrze zarobić na ich kopaniu. Dwie opcje na zmianę tej sytuacji, jakie sobie wyobrażam, to:

  1. Delegalizacja PoW. Tak, brzmi to zabawnie także i dla mnie. Ale wyobrażam sobie, że delegalizacja kryptowalut opartych o blockchain operujący mechanizmem PoW poważnie uderzyłaby w wartości takich walut i mocno ograniczyła ich znaczenie.
  2. Zmiana społecznej świadomości. Druga opcja, jaką widzę, to przekonanie ludzi do tego, że korzystanie z kryptowalut opartych o PoW jest nieetyczne i nieekologiczne. W ten sposób zniechęciłoby się nowych inwestorów do wchodzenia w takie kryptowalulty i zapewne pośrednio obniżało ich wartości.

Nie wydaje mi się, aby którakolwiek z tych opcji była możliwa i dobra. Przyjdzie nam zatem czekać i obserwować powolną ewolucję blockchainów. Z czasem najbardziej optymalne mechanizmy powinny wygrać same. PoW będzie miał tutaj trudną walkę przed sobą, ponieważ kopanie takiej kryptowaluty wymaga ogromnych nakładów finansowych: w sprzęt, w energię elektryczną, w fizyczną przestrzeń do utrzymania tego wszystkiego. Już w tym momencie próg wejścia do Bitcoina jest bardzo wysoki i nam maluczkim praktycznie nie opłaca się go kopać. Zwłaszcza, że z czasem rośnie złożoność obliczeniowa wykopywania nowych bloków Bitcoina, a nagroda spada.

Oczywiście mogę się mylić i PoW zostanie z nami na długo. Wystarczy rozejrzeć się dookoła i można uświadomić sobie, że nie żyjemy w najlepszym możliwym, najbardziej optymalnym świecie – żyjemy w świecie, który jest wystarczająco optymalny.

* * *

Podsumowanie

W dzisiejszym wpisie zaprezentowałem na przykładzie bizantyjskich generałów problem poszukiwania konsensusu w rozproszonym systemie. Następnie przeniosłem problem na bardziej techniczny grunt i pokazałem problem tzw. podwójnego wydatku na przykładzie wymyślonej kryptowaluty WFST i użyszkodnika mrtwister. W dalszej części omówione zostały różne przykłady algorytmów konsensusu wykorzystywane dzisiaj w sieciach blockchain: dwa główne proof of work oraz proof of stake, oraz kilka mniej popularnych: proof of personhood, proof of space czy proof of time.

Rozumienie pojęcia mechanizmu konsensusu oraz praktycznej implementacji różnych algorytmów konsensusu jest kluczowa do zrozumienia działania systemów blockchainowych, ich możliwych zastosowań i niebezpieczeństw z tym związanych.

Wiedza ta będzie potrzebna podczas lektury kolejnych wpisów, w których omówię dokładniej niektóre blockchainy (m.in. Ethereum oraz Cardano) oraz opowiem o zagrożeniu, jakie komputery kwantowe stanowią dla systemów blockchain oraz współczesnej kryptografii w ogóle.

Dziękuję za uwagę i do następnego razu!

* * *

Poprzednie wpisy

Zachęcam także do lektury poprzednich wpisów z serii Filietonów: wpisu wprowadzającego, którzy przedstawia ideę projektu, oraz artykułu poświęconemu patriotyzmowi gospodarczemu oraz temu jak technologia może go wspierać.

Sort:  

Congratulations @mciszczon! You have completed the following achievement on the Hive blockchain and have been rewarded with new badge(s) :

You published more than 40 posts.
Your next target is to reach 50 posts.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Check out the last post from @hivebuzz:

Hive Tour Update - Advanced posting
Valentine's day challenge - Give a badge to your beloved!

Mieszanie generałów nie jest dobrym przykładem do takiego kalibru technicznego. Czy mi się wydaje albo przegapiłem brakuje - Delegated Proof of Stake (DPOS) na przykładzie Hive.

Nie zauważyłem, abym mieszał jakichś generałów – nie przygotowywałem przecież żadnej zupy!

Rzeczywiście, nie wspomniałem o DPoS. Natomiast wydaje mi się, że nakreślenie różnic pomiędzy PoS oraz DPoS bez wchodzenia na wyższy poziom technicznej szczegółowości nie miałby za bardzo sensu. DPoS i Hive mogę opisać bardziej szczegółowo w jednym z kolejnych wpisów – dzięki za pomysł :)

@arenacrypto w sumie ma rację. Można być witnessem Hive z bardzo małym HP. Grunt to mieć poparcie społeczności. BTW, pamiętam, że o Steemie mówiło się kiedyś “Proof-of-Brain" ;)

Ten fragment da do myślenia i pewnie go znasz ...:)

Algorytm konsensusu DPoS został stworzony przez Daniela Larimera, w 2014 roku. Bitshares, Steem, Ark i Lisk - to tylko niektóre z kryptowalut, które wykorzystują algorytm konsensusu DPoS.

Stake w tym kontekście oznacza raczej stawkę (jak w grach hazardowych) niż stos — użytkownik zamrażający jakąś kwotę obstawia, że wszystko będzie w porządku. Zastaw czy poręczenie też byłyby trafnymi terminami, nawet jeżeli nie są stuprocentowymi odpowiednikami wyrazu stake.

Stos był przez analogię do odłożonej kupki, ha! Dzięki za spojrzenie na sprawę swym wyspecjalizowanym w angielskiej mowie okiem. Ja niestety nazbyt często mam problem z przełożeniem pewnych angielskich terminów na język polski, bo na co dzień operuję ciągle pojęciami angielskimi.