Ethereum działa od 2015 roku i od zawsze polega na algorytmie Proof of Work. Niestety, z czasem pojawiło się wiele problemów, których nie da się rozwiązać korzystając z obecnej architektury sieci.
Problemy
Głównym problemem Ethereum jest skalowalność. Wraz ze wzrostem wykorzystania sieci pojawiły się ogromne opłaty i wydłużone czasy oczekiwania na potwierdzenie transakcji. Aktualnie Ethereum pozwala na przetworzenie zaledwie kilkudziesięciu transakcji na sekundę, a mechanizm aukcyjny sprawia, że koszty bardziej skomplikowanych operacji niż prosty transfer środków, potrafiły sięgać kilkuset dolarów, co skutecznie odstraszyło „zwykłych” użytkowników. Poza tym cały czas zwiększa się próg wejścia, jeśli chodzi o udział w konsensusie. Do tego wszystkiego dochodzi negatywna narracja dotycząca zużycia prądu przez sieci Proof of Work i niekorzystny wpływ tego procesu na środowisko.
Rozwiązanie tych wszystkich problemów wydaje się nadejść wraz z omawianym w artykule Ethereum 2.0
Ethereum 2.0
Ethereum 2.0, nazywane także aktualizacją "Serenity", odnosi się do serii zmian, które wejdą w życie pod koniec 2021 roku lub na początku 2022. Największą z nich jest odejście od mechanizmu Proof of Work na rzecz znacznie bardziej energooszczędnego Proof of Stake, a także wprowadzenie do łańcucha technologii dzielenia bazy danych na fragmenty, czyli popularnego ostatnimi czasy „shardingu”.
Fazy
Cały proces przejścia nie jest prosty, nie tylko ze względu na zmianę ogólnych założeń konsensusu, ale przede wszystkim ze względu na ogrom środków, które Ethereum zabezpiecza. Ewentualne błędy i niedopatrzenia mogłyby okazać się katastrofalne dla całej sieci, dlatego też pierwsze prace i badania rozpoczęto już w 2014 roku, czyli jeszcze... przed startem głównej sieci Ethereum.
Cała aktualizacja została podzielona na trzy fazy, z czego pierwsza jest już za nami. Te fazy to The Beacon Chain, The merge i Shard Chains.
The Beacon Chain
Faza 0 oficjalnie weszła w życie 1 grudnia 2020 roku. Wraz z nią wprowadzono Beacon Chain oraz Proof of Stake, którego działanie wyjaśnimy troszkę później. Beacon Chain jest osobnym łańcuchem działającym oddzielnie i równolegle do łańcucha Proof of Work ETH 1.0. Beacon Chain będzie głównym źródłem prawdy oraz zajmie się konsensusem Eth 2.0.
Początkowo sieć będzie składać się z 64 shardów (o których później) z możliwością zwiększenia tej liczby do ponad 1000, a Beacon Chain będzie wszystkie te shardy koordynował. Przez początkowo rozumiemy w pierwszych latach działania ETH 2, nie od pierwszego dnia.
Staking na Beacon Chain działa już od kilku miesięcy i wymaga zablokowania 32 ETH. Należy jednak pamiętać, że po „przeniesieniu” ETH na łańcuch PoS, nie ma możliwości powrotu, aż do momentu, w którym wypłaty zostaną włączone. Ma to nastąpić kilka miesięcy po samym "połączeniu".
Beacon Chain nadal działa równolegle do łańcucha Proof of Work, ale już niedługo dojdzie do ich połączenia, czyli fazy The merge.
The merge
Połączenie to oficjalne przejście Ethereum na Proof of Stake i całkowite porzucenie dotychczas stosowanego Proof of Work. W momencie, którym dojdzie do połączenia sieć główna stanie się własnym fragmentem (shardem).
Mainnet zapewni możliwość uruchamiania smart kontraktów w systemie PoS, a także pełną historię i aktualny stan Ethereum. Użytkownicy sieci nadal będą posiadać swoje tokeny i używać aplikacji tak jak to robili wcześniej.
Górnicy sieci PoW zostaną zastąpieni przez walidatorów.
Shard Chains
Sharding to proces poziomego dzielenia bazy danych w celu rozłożenia obciążenia. Można to sobie wyobrazić jako kilka łańcuchów, które działają równolegle do siebie i są koordynowane przez jeden główny (w tym przypadku Beacon Chain). W Ethereum sharding zmniejszy przeciążenie sieci i zwiększy liczbę transakcji na sekundę, tworząc nowe łańcuchy, czyli właśnie „fragmenty” lub „odłamki”.
W przypadku shardów walidatorzy muszą przechowywać i uruchamiać dane tylko dla fragmentu, który weryfikują, a nie całej sieci. Znacznie zmniejsza to wymagania sprzętowe i przyspiesza sieć. Początkowo dostarczą one tylko dodatkowe dane do sieci i nie będą obsługiwać transakcji ani inteligentnych kontraktów, jednak nadal zapewnią znacznie lepszą przepustowość. W późniejszym etapie rozwoju mają otrzymać podobną funkcjonalność co sieć główna, czyli obsługa smart kontraktów i kont.
Ethereum 2.0 to całkowita zmiana zasad działania Ethereum, jeśli chodzi o konsensus i wprowadzenie shardingu. Teraz przyjrzyjmy się nieco bliżej jak działa Proof of Stake w Ethereum.
Ethereum Proof of Stake
Ethereum 2.0 będzie stosowało mechanizm Proof of Stake, w którym walidatorzy będą musieli zablokować 32 ETH, aby brać udział w konsensusie.
Walidatorzy
Walidatorzy są wybierani losowo do tworzenia bloków oraz są odpowiedzialni za sprawdzanie i potwierdzanie bloków, których nie tworzą. Stawka walidatora jest zabezpieczeniem, które może stracić częściowo lub w całości jeśli źle się zachowuje.
Walidator otrzymuje wynagrodzenie za proponowanie nowych bloków, a także za głosowanie na te zaproponowane przez innych. Głosy oddawane przez walidatorów nazywane są atestami, a każdy atest składa się z kilku elementów takich jak różne głosy i podpisy.
Beacon Chain
Beacon Chain zajmuje się koordynacją sieci, która ma składać się z wielu shardów. Odbiera informacje o stanie każdego fragmentu i udostępnia go innym fragmentom, umożliwiając synchronizację sieci. W każdym bloku Beacon Chain jest odniesienie do każdego bloku 64 shardów. Te odniesienia są nazwane "Crosslinks".
W momencie wysłania transakcji do shardu walidator będzie odpowiedzialny za dodanie transakcji do bloku danego fragmentu. Walidatorzy są wybierani pseudolosowo przez Beacon Chain.
Walidator znacznie częściej będzie wybierany do głosowania na bloki proponowane przez innych walidatorów niż do propozycji bloku. Te głosy (atesty) są rejestrowane na Beacon Chain, nie same transakcje.
Co najmniej 128 walidatorów jest wymaganych do głosowania nad każdym blokiem z każdego shardu, jest to tak zwany „komitet”. Komitet, ze względów bezpieczeństwa, składa się z co najmniej 128 walidatorów dla Beacon Chain i każdego z shardów. Przy takim ustawieniu szanse ewentualnego atakującego na posiadanie 2/3 w komitecie wynoszą 1 do biliona.
W każdej epoce pseudolosowy proces RANDAO wybiera walidatora, który zaproponuje blok w każdym slocie i przypisze walidatorów do komitetów. Epoka w Ethereum składa się z 32 slotów, a każdy slot trwa 12 sekund. W ciągu tych 12 sekund jest dodawany blok.
Co 12 sekund do sieci Ethereum będzie dodawany 1 blok Beacon Chain zawierający dane z 64 bloków każdego z shardów.
W każdej epoce walidator jest pseudolosowo przypisywany do jednego slotu w jednym fragmencie. Walidator uczestniczy w konsensusie przypisanego fragmentu, czyli przetwarza i weryfikuje transakcje w jednym konkretnym shardzie w każdej epoce.
Każdy slot posiada tę samą liczbę losowo przypisanych walidatorów zarówno w Beacon Chain jak i w shardach. Walidator może głosować nad poprawnością bloku raz na epokę, czyli może znajdować się tylko w jednym komitecie w ciągu 6 minut i 24 sekund.
Ostateczność
Blok jest uznany jako „finalny” lub też „ostateczny” gdy nie może być już zmieniony i jest stałą częścią łańcucha.
W Ethereum 2 za ostateczność bloków odpowiada protokół Casper. Walidatorzy oprócz głosowania na bloki głosują także na punkty kontrolne. W momencie gdy kończy się epoka, a jej punkt kontrolny ma głosy 2/3 walidatorów jest on „usprawiedliwiony". Jeśli punkt kontrolny kolejnej epoki jest usprawiedliwiony, to poprzedni zostaje ostateczny. Zazwyczaj blok jest finalny po dwóch kolejnych epokach. Jeśli walidatorzy spróbują to później zmienić za pomocą ataku 51% stracą całą swoją stawkę.
Natomiast sam konsensus w Ethereum 2.0 to "Gasper". Jest to połączenie gadżetu Casper-FGG i algorytmu wyboru forków LMD-GHOST. Razem te komponenty tworzą mechanizm konsensusu zabezpieczający Ethereum.
Podsumowanie
Tak w dużym skrócie działa Ethereum 2.0. Walidatorzy, którzy blokują stawkę w wysokości 32 ETH są pseudolosowo przypisywani do proponowania i weryfikowania poszczególnych bloków w każdym shardzie oraz na Beacon Chain.
W tym momencie Beacon Chain posiada prawie 200 000 walidatorów. Jest to coś, co będzie wyróżniać Ethereum od innych projektów Proof of Stake. Ilość walidatorów w wielu sieciach ogranicza się do kilkuset lub kilku tysięcy, w Ethereum ta liczba już teraz sięga setek tysięcy, a w przyszłości może wynosić nawet ponad milion.