W połowie września miała miejsce bardzo ważna aktualizacja sieci Ethereum, ale tuż przed tym jak do niej doszło miał miejsce hard-fork, czyli sytuacja, w której sieć uległa podziałowi. Co to tak naprawdę znaczy, że sieć jakiejś kryptowaluty się dzieli i w jakich sytuacjach może do tego dojść? Czyli - czym tak naprawdę jest hard fork?
Aktualizacja czy podział sieci?
Zaczynamy kolejny odcinek naszego najlepszego kursu o kryptowalutach, którego partnerem jest giełda kryptowaluta Binance. Jeśli jeszcze nie masz konta na największej i najbardziej płynnej giełdzie kryptowalut, jaką właśnie jest Binance, to korzystając z linku w opisie tego video otrzymasz o 20% niższe prowizje transakcyjne, bezterminowo.
Poprzedni odcinek naszego kursu był poświęcony Ethereum i bardzo ważnej aktualizacji sieci o nazwie The Merge. Kilkanaście godzin przed tą aktualizacją o której od dawna mówiło się w środowisku krypto doszło jednak do hard-forka, w ramach którego wyodrębniła się sieć o nazwie Ethereum Proof of Work. Skupia ona członków społeczności Ethereum, w tym oczywiście też cyfrowych górników, którzy sprzeciwiali się wprowadzeniu aktualizacji The Merge. Przypomnę tylko, że polegała ona na zmianie algorytmu konsensusu i związanej z tym rezygnacji z kopania ETH i tym samym obecności górników w sieci. Dlatego też zwolennicy EthereumPoW odłączyli się od sieci Ethereum tuż przed The Merge, pozostając przy dotychczasowym algorytmie konsensusu, czyli jak sama nazwa projektu wskazuje - Proof of Work.
No ale ktoś mógłby zapytać - o co chodzi z tym podziałem sieci i jak w ogóle może to tego dojść?
Na czym polega hard-fork?
Zacznijmy od tego, że pojęcie forku (powszechnie znanego wśród programistów), a w naszym przypadku konkretnie hard-forku jest tak naprawdę dość wieloznaczne i odnosi się do dwóch różnych sytuacji.
Żeby zrozumieć o co chodzi, trzeba mieć świadomość tego, że sieć każdej kryptowaluty, czy ogólnie jakiejś zdecentralizowanej bazy danych, składa się z wirtualnych węzłów, które na bieżąco przechowują i aktualizują dane na temat tego, co się w niej dzieje - w domyśle mówimy tutaj o rejestrze transakcji. Wszystkie węzły w sieci muszą działać na bazie tych samych zasad konsensusu, które są określone przez oprogramowanie. Oczywistym jest, że węzły muszą funkcjonować w oparciu o to samo oprogramowanie, albo o różne rodzaje softu, które są między sobą w pełni kompatybilne i działają na identycznych zasadach.
Ethereum ma za sobą awaryjny hard fork, który nie był początkowo planowany, a który finalnie doprowadził do trwałego podziału sieci - mowa tutaj o tym, co wydarzyło się w październiku 2016 roku, po tym jak okazało się, że jeden z największych smart kontraktów w sieci Ethereum (The Dao) miał lukę bezpieczeństwa, która pozwoliła przejąć jednemu z atakujących ponad 3 mln jednostek ETH. Większa część społeczności Ethereum opowiedziała się za tym żeby cofnąć transakcje, które wyprowadziły środki z The DAO, wykorzystując lukę w kodzie smart kontraktu. Spora część społeczności Ethereum mocno się temu sprzeciwiała, twierdząc że coś takiego jest złamaniem podstawowej zasady zdecentralizowanych sieci, czyli nieodwracalności transakcji. Ich podejście było bardzo konsekwentne, bo mówili oni wprost: “kod źródłowy jest prawem” i jeżeli w smart kontrakcie był błąd, który pozwalał komuś na wyprowadzenie środków, to tak naprawdę ten ktoś nie złamał prawa i nikogo nie okradł. I w żadnym wypadku nie zgadzali się na to, żeby cofnąć transakcję wykorzystującą błąd w smart kontrakcie The DAO.
Obu grupom nie udało się dojść do porozumienia w ramach jednej sieci blockchain, dlatego też 25 października 2016 roku doszło do hard forku Ethereum, w ramach którego przywrócono stan blockchaina sprzed transakcji z The DAO. Jako, że większość społeczności poparła ten hard fork, to sieć utrzymała dotychczasową nazwę Ethereum. Natomiast ci, którzy nie zgadzali się na cofnięcie transakcji z The DAO, nie dokonali aktualizacji i tym samym można powiedzieć, że zostali na starym łańcuchu, który od tamtego momentu nazywa się Ethereum Classic i jest całkowicie odrębny od Ethereum.
Najczęściej jednak, gdy ktoś mówi o hard forku, to ma na myśli podział sieci na dwa równoległe łańcuchy bloków, a nie aktualizację sieci samą w sobie. Taki hard fork, w ramach którego dochodzi do podziału, nazywany jest też secesyjnym, labo mniejszościowym. Tak jak wspomniałem na początku, żeby zdecentralizowana sieć zachowała swoją integralność, musi działać na identycznych zasadach konsensusu. Nie zawsze jednak jest tak, że wszyscy spośród społeczności konkretnej kryptowaluty mają identyczną wizję tego, jak dany projekt ma się rozwijać i w którą stronę powinien iść. Skutkiem takiej niezgody części społeczności może być chęć odłączenia się od “starego” łańcucha bloków, wprowadzając aktualizację, którą przyjmą tylko te węzły, które wspierają inną wizję rozwoju sieci. To jak wiadomo będzie skutkowało podziałem sieci. Nie bez powodu wziąłem w cudzysłów określenie “stary” łańcuch, bo tak naprawdę w ramach takiego hard-forka secesyjnego nie dochodzi tu do powstania nowego łańcucha bloków, tylko do podziału, bo oba łańcuchy aż do momentu rozdzielenia mają tę samą historię transakcji, bo działały na tych samych zasadach.
Jak dotąd największym hard forkiem tego typu był podział sieci bitcoina z 2017 r., na mocy którego powstała całkowicie osobna kryptowaluta o nazwie Bitcoin Cash. Przy hard forku secesyjnym wartość naszego portfela jest zduplikowana na równoległym, oddzielającym się łańcuchu. Czyli jeśli mieliśmy na naszym portfelu 1 BTC przed hard forkiem z 2017 roku, to na blockchainie Bitcoin Cash, który się wydzielił też mieliśmy identyczne saldo portfela, czyli 1 Bitcoin Cash, do którego można było uzyskać dostęp instalując kompatybilny portfel.
Wspomniany hard fork w sieci Ethereum, który miał miejsce tuż przed aktualizacją The Merge i w ramach którego wyodrębniła się sieć Ethereum PoW, był właśnie takim hard forkiem mniejszościowym, który skupiał górników i członków społeczności Ethereum, którzy sprzeciwiają się rezygnacji z kopania ETH. I na ich wyodrębnionym łańcuchu kolejne bloki transakcyjne wciąż są potwierdzane przez cyfrowych górników, którzy uwierzyli w ten projekt.
Warto też pamiętać o tym, że na takim najbardziej ogólnym poziomie hard fork to po prostu aktualizacja oprogramowania zdecentralizowanej sieci, która nie jest kompatybilna wstecznie - dlatego przykładem takiej aktualizacji może być sam The Merge w Ethereum. Skutkowała ona całkowitą zmianą algorytmu konsensusu z Proof of Work na Proof of Stake. I oczywistym jest, że taka aktualizacja sprawia, że węzły w sieci Ethereum, które nie przeprowadziły update’u po prostu przestaną być częścią sieci, bo nie będą w stanie komunikować się z pozostałymi węzłami, które dokonały aktualizacji.
Oczywiście, jeżeli jakieś węzły nie zaktualizują oprogramowania, to mogą dalej działać na starych zasadach, ale wtedy wyodrębni się osobny łańcuch, który nie będzie kompatybilny z tym, na którym przeprowadzono aktualizację. Ale trzeba pamiętać, że nie każdy hard-fork, rozumiany jako aktualizacja zasad działania sieci, prowadzi do jej podziału.
Zapewne spotkaliście się jeszcze z określeniem soft fork. To także jest aktualizacja sieci, ale w przeciwieństwie do hard forka, taka, która jest wstecznie kompatybilna. Czyli węzły w sieci mogą, ale wcale nie muszą jej implementować. I jeśli tego nie zrobią, to dalej będą mogły komunikować się z pozostałymi węzłami w sieci, również tymi, które zaktualizowały oprogramowanie. Soft forki obejmują zazwyczaj niewielkie poprawki i usprawnienia w sieci, które nie zmieniają reguł konsensusu całego blockchaina.