Chatka cryptoDZIADKA | Co to jest blockchain? Część II: Konsensus
Jeśli czcionka jest dla ciebie zbyt mała – przytrzymaj klawisz Ctrl i dopasuj powiększenie klawiszami „+” i „-”.
Podczas gdy amerykański FED, Europejski Bank Centralny i rządy ~40 innych państw od lat na wyścigi obniżają stopy procentowe i dodrukowują pieniądze (aby ratować gospodarkę zrujnowaną obniżkami stóp procentowych i dodrukami pieniędzy) – technologia jutra zakradła się tylnymi drzwiami. A właściwie wtoczyła razem z drzwiami. I toczy się coraz szybciej. Jak śnieżna kula.
Zapewne znasz 4 etapy walki z tym co prawdziwe i nieuniknione:
I. Przemilczać
II. Ośmieszać
III. Walczyć
IV. Przegrać
Jak myślisz, na którym poziomie tej drabinki w dół znajdują się teraz wielkie banki, korporacje i rozdęta administracja większości krajów? Banki przerzucają kapitał przez granicę za pomocą kryptowalut; to samo robią rosyjscy oligarchowie, a Nicolas Maduro, prezydent Wenezueli, chcąc uniknąć opłat będących następstwem sankcji – kitra co się da w swoim ‘Trezorze’, którym zresztą chwali się publicznie. Czyli tzw. ‘elity’ robią dokładnie to, czego zabraniają nam.
Tego pociągu nie da się już zatrzymać.
Najlepszym dowodem jest brak logiki w p. 17. ‘Deklaracji Liderów G20’ (Osaka 2019):
Chociaż krypto-aktywa nie stanowią w tej chwili zagrożenia dla globalnej stabilności finansowej, uważnie monitorujemy rozwój sytuacji i zachowujemy czujność wobec istniejących i pojawiających się zagrożeń.
Kleisz to? Bo ja nie kleję. Że niby… istniejące zagrożenia nie stanowią zagrożenia, dopóki się nie pojawią? Dziękujemy wam, Liderzy, za waszą czujność wobec braku zagrożenia istniejącymi zagrożeniami.
Mniej ‘pociumane’ administracje państwowe wciąż jeszcze walczą z kryptowalutami (poziom III.) Np. nasz KNF tak długo i żarliwie ‘kochał’ giełdę BitBay, że ta musiała uciec na Maltę. (Tokeneo – chcąc uniknąć takich pieszczot – od razu powstała w Estonii).
Tymczasem wszystkie co bardziej kumate kraje – prześcigają się już, aby na gwałt przerobić prawodawstwo i choćby trochę osiodłać tę wierzgającą kobyłę (na zasadzie: ‘jeśli nie możesz wygrać, to się przyłącz i przejmij dowodzenie’). W chwili, gdy państwa BRICS, a więc ¼ grupy G20 ogłosiły, że zamierzają wprowadzić wspólną kryptowalutę – sprawa stała się jasna: WYŚCIG CHARTÓW RUSZYŁ (a więc poziom IV. – już wiedzą, że przegrali). Jednak – co było do przewidzenia – charty gonią za niewłaściwym królikiem. Moim zdaniem oni nie chcą dogonić Bitcoina, tylko… przegonić Librę.
Dlaczego tak myślę? Pierwsze wzmianki o ‘cryptoBRICS’ pochodzą z XII 2017. Przez dwa lata nic się nie działo. Skąd nagły pośpiech? Po drugie – anonimowe źródła Reuters donoszą, że od chwili ogłoszenia projektu Libra – we frankfurckim banku trwają prace nad kryptowalutą EBC. Potwierdzeniem tej tezy jest ostatnie wystąpienie nowej prezes EBC, Christine Lagarde w Parlamencie Europejskim.
* *
Ale do rzeczy. Dzisiaj o KONSENSUSIE:
Mój poprzedni rekonesans w świat krypto-bloków ujawnił, że ‘blockchain’ to tak naprawdę ‘HASHchain’, czyli jeden wielki łańcuch skrótów. Każda próba ingerencji w zatwierdzoną już transakcję jest równoznaczna z przebudowaniem wszystkich skrótów następujących po tej transakcji. Taka nowa wersja łańcucha zostaje automatycznie odrzucona przez sieć – jako różna od wersji uzgodnionej, której kopię posiada każdy z milionów węzłów.
Padło pytanie, czy dałoby radę pomajstrować ‘in statu nascendi’ (w momencie powstawania) nowego bloku. Tak naprawdę jest to pytanie o mechanizm uzgadniania prawdy, czyli tej wersji łańcucha bloków, która – w danej chwili – jest uznawana przez całą sieć za jedyną właściwą. Takie porozumienie pomiędzy węzłami nazywamy KONSENSUSEM.
Przeanalizujmy, jak to działa – na przykładzie transakcji finansowej.
Aby zakupić dowolną kryptowalutę, trzeba posiadać tzw. PORTFEL, czyli oprogramowanie umożliwiające dokonywanie transakcji. Istotą portfela jest to, że umożliwia swoim użytkownikom posiadanie DWÓCH KLUCZY: publicznego i prywatnego. (Klucze to po prostu ciągi znaków).
Klucz PUBLICZNY – może być widziany przez wszystkich użytkowników sieci i jest analogiczny do numeru konta bankowego. (Specyficznym skrótem klucza publicznego jest adres, na który ‘wpłaca się’ kryptowaluty).
Klucz PRYWATNY – służy do podpisywania transakcji. Bardzo ważne, aby zrozumieć, że działa on jak weksel na okaziciela. Czyli: To klucz prywatny, A NIE TY – jest właścicielem środków zgromadzonych na koncie (czyli przypisanych do klucza publicznego). Ktokolwiek go zna – może do woli dysponować środkami. Właśnie z tych powodów portfele przechowywane na czymkolwiek co jest podłączone do Internetu – uznawane są za ryzykowne. Klucze prywatne to pierwsza rzecz, której szukają hakerzy zaraz po włamaniu do komputera czy smartfona. (Przed kradzieżą kluczy prywatnych chronią tzw. ‘portfele sprzętowe’, które podłączane są do Internetu jedynie na krótką chwilę, w celu dokonania transakcji.)
OK, dołączmy hipotetyczny blok do hipotetycznego łańcucha.
Najpierw schemat, potem szczegóły:
1. Załóżmy, że użytkownik (węzeł) dokonuje transakcji (np. zakupu kryptowaluty) i podpisuje ją swoim kluczem prywatnym.
2. Transakcja ta jest teraz automatycznie rozsyłana do innych węzłów sieci, zgodnie z protokołem (procedurą) o nazwie ‘Gossip’ (plotka). Węzły te sprawdzają poprawność transakcji, stosując się do konkretnych, ustalonych kryteriów.
3. Po sprawdzeniu poprawności transakcji przez wiele węzłów jest ona dodawana do nowego, tworzonego właśnie bloku. Dodanie do bloku jest pierwszym zatwierdzeniem wszystkich transakcji, jakie są zapisane w treści danego bloku. Od tej chwili naszą transakcję uważa się za sfinalizowaną (choć nie w pełni zatwierdzoną).
4. Najważniejszą częścią procesu tworzenia łańcucha jest ustalenie – który z węzłów sieci ma dodać blok do łańcucha. Wymaga to porozumienia się węzłów, a mechanizm osiągania takiego porozumienia to tzw. KONSENSUS. Kiedy już zostanie osiągnięty, nowo utworzony blok jest dołączany do łańcucha poprzez powiązanie kryptograficzne. Dołączenie bloku jest drugim zatwierdzeniem wszystkich transakcji zapisanych w treści bloku.
5. Dołączenie do łańcucha kolejnego bloku będzie trzecim zatwierdzeniem naszych transakcji. I tak dalej: każde dołączenie następnego bloku to kolejne zatwierdzenie wszystkich wcześniejszych transakcji z wszystkich wcześniejszych bloków. Aby transakcja została uznana za ostatecznie zatwierdzoną potrzebna jest określona ilość zatwierdzeń. (W łańcuchu Bitcoin potrzebnych jest sześć potwierdzeń.)
Pora na szczegóły.
Powróćmy do ważnej rzeczy – OSIĄGANIA KONSENSUSU.
Dopóki mieliśmy do czynienia z siecią scentralizowaną – z konsensusem nie było problemów. Węzeł centralny (serwer) ustalał, co jest ‘prawdą’ i dyktował swoją wersję prawdy wszystkim klientom sieci. Mógł to robić, bo – z samego założenia – był węzłem zaufanym.
W sieci rozproszonej – z założenia – wszystkie węzły są niezaufane. Niektóre są ‘uczciwe’, niektóre jednak mogą być ‘szkodliwe’ – z powodu uszkodzeń albo czystej, bezwstydnej złej woli. Jak w takim zdecentralizowanym środowisku zapewnić jedną wersję ‘prawdy’? Jak skoordynować działania setek niezaufanych węzłów tak, by wspólnie osiągnęły jeden i ten sam cel?
Prace nad tym problemem (tj. ’Jak zaufać bandzie felusiów, których nie znam?) trwają od końca epoki trzeciorzędu. Przełom nastąpił w roku 1982, kiedy to Lamport zaproponował eksperyment myślowy zwany ‘Problemem Bizantyjskich Generałów’:
Wyobraź sobie, że jesteś jednym z generałów armii bizantyjskiej. Waszym celem jest zdobycie dobrze obwarowanego miasta. Każdy z generałów wraz ze swoimi oddziałami zajmuje pozycję wokół miasta. Atak przyniesie skutek tylko wtedy, gdy będzie skoordynowany i wszyscy uderzycie w jednym momencie. Decyzją alternatywną jest wspólne wycofanie wojsk. Wasze pozycje są jednak od siebie oddalone, więc możecie się porozumiewać wyłącznie za pomocą posłańców. Problem tkwi w tym, że:
- każdy z generałów może być zdrajcą przesyłającym mylące komunikaty;
- każdy z posłańców może zostać pojmany i wymieniony na fałszywego, wiozącego fałszywy komunikat;
- każdy z generałów powinien potwierdzić, że otrzymał komunikat i zaatakuje w określonym momencie, jednak i jego posłańcy mogą zostać pojmani i przekupieni lub podstawieni;
- jak sprawić, aby inni generałowie mieli pewność, że ty nie jesteś zdrajcą lub że twoi posłańcy nie zostali pojmani lub przekupieni;
- jak sprawić, by każdy z generałów miał pewność, że wszyscy osiągnęliście konsensus i razem uderzycie lub razem wycofacie wojska.
Tak właśnie wygląda problem ZAUFANIA w sieci rozproszonej. Generałowie to węzły, posłańcami są kanały komunikacji, czyli połączenia pomiędzy węzłami. Nigdy nie wiadomo, który z węzłów okaże się węzłem ‘uczciwym’, godnym zaufania, a który zdrajcą – węzłem ‘szkodliwym’. Takie ‘szkodliwe’, czyli przesyłające fałszywe komunikaty węzły nazywamy bizantyjskimi (od nazwy opisywanego tu eksperymentu) – bez względu na to, czy szkodzą celowo, czy w efekcie awarii lub błędu.
Pytanie o zaufanie brzmi:
Jak osiągnąć pewność, że mnogie węzły są w absolutnym, gwarantowanym porozumieniu (konsensusie) – zanim zostanie podjęta akcja.
Akcją może być np. dołączenie nowego bloku do łańcucha, a konsensus polega na wybraniu węzła, który ma taką akcję przeprowadzić. Tylko ten jeden jedyny łańcuch – z nowo dołączonym blokiem przez konkretny, wybrany węzeł sieci – staje się nową powszechnie akceptowaną przez całą sieć wersją blockchain. Tylko ta wersja jest następnie kopiowana do wszystkich węzłów sieci. Dołączenie kolejnego bloku – również poprzedzi osiągnięcie konsensusu w sprawie wyboru węzła, który ma tego dokonać. I tak dalej.
Technologia DLT opracowała wiele mechanizmów osiągania konsensusu.
Dwa główne rodzaje to:
1. Mechanizm BFT (Byzantine Fault Tolerance = Tolerancja Błędu Bizantyjskiego).
Istotą metody jest tolerancja marginesu niepewności. Polega na zwielokrotnieniu wysyłanych komunikatów przez każdy węzeł sieci. Większość komunikatów danego węzła uznaje się za jego decyzję. Większość spośród decyzji wszystkich węzłów – jest decyzją ostateczną (automatycznie akceptowaną przez wszystkie węzły), czyli konsensusem. Metoda ta zwana bywa VOTING (głosowanie) i ma charakter decyzji większościowej.
2. Mechanizmy oparte na DOWODZIE.
Istotą jest wybór LIDERA, czyli węzła który zaproponuje ostateczną wersję prawdy (czyli dołączy blok do łańcucha). Wybór jest LOSOWY i dokonywany na podstawie uzgodnionego wstępnie algorytmu. Algorytmów dowodu jest wiele i mogą zawierać dodatkowe warunki. Dopiero spełnienie tych warunków włącza węzeł do grona kandydatów na lidera. Dwa najpopularniejsze z algorytmów dowodu to:
PoW (Proof of Work – dowód pracy)
Warunkiem jest tu dowód wydatkowania odpowiedniej ilości zasobów obliczeniowych. Kandydaci na lidera to węzły (komputery) udostępniające sieci swoją moc obliczeniową, która jest dość energochłonna (zużycie prądu). Właściciele węzłów otrzymują honorarium wypłacane kryptowalutą, która jeszcze nie krążyła w systemie – przez co niejako ‘wydobywają’ nowe zasoby danej kryptowaluty. Stąd właśnie nazwa takich węzłów: ‘miners’ (górnicy). PoW (zastosowane w Bitcoinie) było bardzo sprytnym rozwiązaniem, które wymusiło transfer kryptowaluty na waluty standardowe (którymi płaci się za prąd) i które przyczyniło się do rozwoju giełd kryptowalut.
PoS (Proof of Stake – dowód stawki)
Węzeł musi dowieść, że zainwestował w daną platformę (czyli posiada daną kryptowalutę) na tyle dużo, że koszt jego ataku na sieć jest większy niż ewentualne korzyści z ataku. Znaczenie ma tu też czas: prawdopodobieństwo zostania liderem rośnie wraz z czasem przetrzymywania kryptowaluty na koncie.
Osobiście dotarłem do 14 mechanizmów konsensusu, ale lista ta z pewnością nie jest kompletna.
* *
Na zakończenie – rozrywka. Wróćmy do mojej dygresji nt. przyszłości finansowej i puśćmy wodze fantazji.
Istnieje duże prawdopodobieństwo, że pierwsza generacja kryptowalut rządowych zbudowana będzie na platformie blockchain. Mechanizm osiągania konsensusu takich walut mógłby mieć postać Proof of Tax (PoT). Wyłoniony losowo lider zobowiązany byłby do odprowadzenia podatku od wszystkich transakcji zawartych w tym bloku. Dowód odprowadzenia tego podatku transakcyjnego – umożliwiałby węzłowi dołączenie bloku do łańcucha.
Węzeł lidera – pełniłby więc rolę poborcy podatkowego i mógłby być za to honorowany. Podatek transakcyjny – byłby tak naprawdę podatkiem przychodowym, liczonym od każdej transakcji dokonującej się w państwie i odprowadzanym na bieżąco (w pakietach odpowiadających treściom bloków). Podatek taki – przy wysokości 1% wartości transakcji – zastąpiłby wszystkie inne podatki, pozostając praktycznie niezauważonym.
Zauważ, że w takim systemie znikłyby z naszej świadomości pojęcia ‘urząd skarbowy’ czy ‘zeznanie podatkowe’. Nie miałyby sensu. Żylibyśmy sobie szczęśliwie, a ceną naszego szczęścia byłby samo-znikający 1% każdej transakcji.
Na dzisiaj tyle. Następnym razem będzie o kryptografii.
CDN