Czym są Hard Forki i Soft Frorki
Spis Treści
Wprowadzenie
Kto podejmuje decyzje w sieci blockchain?
Czym jest fork?
Hard forki a soft forki
Hard forki kontra soft forki – co jest lepsze?
Przemyślenia końcowe
Czym są Hard Forki i Soft Frorki
Strona GłównaArtykuły
Czym są Hard Forki i Soft Frorki

Czym są Hard Forki i Soft Frorki

Średnio zaawansowany
Published Nov 29, 2018Updated Aug 24, 2021
8m


Spis Treści


Wprowadzenie

Gdy pojawia się powiadomienie o zaktualizowaniu aplikacji banku na smartfonie, prawdopodobnie nawet się nie zastanawiasz i ją pobierasz. Być może Twój telefon aktualizuje się automatycznie, a Ty nawet tego nie zauważasz. W końcu jest to konieczny proces – jeśli nie zainstalujesz najnowszej wersji oprogramowania, ryzykujesz odmową dostępu do danej usługi.

W kryptowalutach typu open-source sytuacja przedstawia się zupełnie inaczej. Nie musisz czytać każdego wiersza kodu, który stanowi podstawę Bitcoina, aby go używać, ale posiadanie takiego wyboru jest ważne. Widzisz, nie ma tu żadnej hierarchii ani banku, który może po prostu przesyłać aktualizacje i zmieniać rzeczy według własnego uznania. W rezultacie wdrażanie nowych funkcji w sieciach blockchain może być wyzwaniem.
W tym artykule zbadamy, w jaki sposób sieci kryptowalut mogą być aktualizowane pomimo braku organu centralnego. W tym celu używają dwóch różnych mechanizmów: hard forków i soft forków


Kto podejmuje decyzje w sieci blockchain?

Chcąc dowiedzieć się, jak działają forki, ważne jest, aby najpierw zrozumieć uczestników zaangażowanych w proces podejmowania decyzji (lub zarządzania) siecią.
W Bitcoinie możemy wyróżnić trzy podzbiory uczestników – deweloperów, górników i użytkowników pełnych węzłów. Są to strony, które faktycznie współtworzą sieć. Lekkie węzły (tj. portfele w telefonach, laptopach itp.) są szeroko używane, ale tak naprawdę nie są „uczestnikami” sieci.


Deweloperzy

Deweloperzy są odpowiedzialni za tworzenie i aktualizowanie kodu. W przypadku typowej monety każdy może wnieść swój wkład w ten proces. Kod jest dostępny publicznie, więc mogą przesyłać zmiany do przeglądu przez innych programistów. 


Górnicy

Górnicy zabezpieczają sieć. Uruchamiają kod kryptowaluty i przeznaczają zasoby na dodawanie nowych bloków do blockchaina. W sieci Bitcoin robią to poprzez Proof of Work. Są nagradzani za swoje wysiłki w postaci nagrody blokowej.


Użytkownicy pełnych węzłów

Pełne węzły są kręgosłupem sieci kryptowalut. Sprawdzają, wysyłają i odbierają bloki oraz transakcje, a także przechowują kopię całego blockchaina.


Te kategorie często się pokrywają. Możesz na przykład być programistą i użytkownikiem pełnego węzła lub górnikiem i użytkownikiem pełnego węzła. Możesz być każdym z tych trzech lub żadnym. W rzeczywistości wielu z tych, których uważamy za użytkowników kryptowalut, nie pełni żadnej z powyższych ról. Zamiast tego decydują się na użycie lekkich węzłów lub scentralizowanych usług.

Patrząc na powyższe opisy, możesz przedstawić mocne stanowiska deweloperów i górników podejmujących decyzje dotyczące sieci. Programiści tworzą kod – bez nich nie mielibyście żadnego oprogramowania do uruchomienia ani nikogo, kto naprawiałby błędy lub dodawałby nowe funkcje. Górnicy zabezpieczają sieć – bez zdrowej konkurencji górniczej blockchain może zostać przejęty bądź zatrzymany.
Gdyby jednak te dwie grupy próbowały zmusić resztę sieci do podążania za ich wolą, nie skończyłoby się to zbyt dobrze. Dla wielu rzeczywista moc koncentruje się w pełnych węzłach. W dużej mierze jest to funkcja opt-in, co oznacza, że użytkownicy mogą wybrać, jakie oprogramowanie używają. 
Programiści nie włamują się do Twojego domu z pistoletem w ręce i nie zmuszają cię do pobrania plików binarnych Bitcoin Core. Jeśli górnicy przyjmą postawę „moja droga lub żadna”, aby wymusić na użytkownikach niechcianą zmianę, cóż, użytkownicy po prostu wybiorą alternatywę. 
Te strony nie są wszechmocnymi władcami – są dostawcami usług. Jeśli ludzie zdecydują się nie korzystać z sieci, moneta straci na wartości. Utrata wartości wpływa bezpośrednio na górników (ich nagrody są warte mniej, gdy są denominowane w dolarach). Jeśli chodzi o programistów, użytkownicy mogą ich po prostu zignorować.
Widzisz, to nie jest tak, że oprogramowanie jest zastrzeżone. Możesz wprowadzić dowolne zmiany, a jeśli inni uruchomią zmodyfikowane przez Ciebie oprogramowanie, wszyscy możecie się komunikować. W takim przypadku forkujesz oprogramowanie i tworzysz nową sieć.


Czym jest fork?

Fork oprogramowania następuje w punkcie, w którym oprogramowanie jest kopiowane i modyfikowane. Oryginalny projekt trwa nadal, ale jest teraz oddzielony od nowego, który zmierza w innym kierunku. Załóżmy, że zespół Twojej ulubionej witryny z treścią o kryptowalutach miał poważny spór co do dalszego postępowania. Część zespołu może powielać witrynę w innej domenie. Ale w przyszłości będą publikować inne rodzaje treści niż oryginał.

Projekty opierają się na wspólnej płaszczyźnie i mają wspólną historię. Podobnie jak pojedyncza droga, która później się rozdziela, teraz ich ścieżki trwale się rozchodzą.

Zauważ, że tego rodzaju rzeczy zdarzają się często w projektach open-source i miały miejsce przez długi czas przed pojawieniem się Bitcoina lub Ethereum. Jednak rozróżnienie między hard forkami i sort forkami jest prawie wyłączne dla przestrzeni blockchain. Powiedzmy sobie o tym nieco więcej.



Hard forki a soft forki

Pomimo podobnych nazw i tego samego celu, hard forki i soft forki się od siebie różnią. Przyjrzyjmy się im dokładniej.


Czym jest hard fork?

Hard forki to niekompatybilna wstecz aktualizacje oprogramowania. Zazwyczaj ma on miejsce, gdy węzły dodają nowe reguły w sposób, który jest sprzeczny z regułami starych węzłów. Nowe węzły mogą komunikować się tylko z tymi, które obsługują nową wersję. W rezultacie blockchain dzieli się, tworząc dwie oddzielne sieci: jedną ze starymi zasadami, a drugą z nowymi.


Podczas aktualizacji węzły zmieniają kolor na niebieski. Starsze żółte węzły je odrzucają, podczas gdy niebieskie łączą się ze sobą.


Więc teraz istnieją dwie sieci działające równolegle. Obie będą nadal propagować bloki i transakcje, ale nie mogą już pracować na tym samym blockchainie. Wszystkie węzły miały identyczny blockchain do momentu forka (i jest to już historią), lecz później charakteryzować się będą osobnymi transakcjami i blokami.



Ponieważ istnieje ta wspólna historia, skończysz z coinami w obu sieciach, jeśli trzymasz je przed forkiem. Załóżmy, że miałeś 5 BTC, gdy nastąpił fork w bloku 600,000. Możesz wydać te 5 BTC na starym blockchainie w bloku 600,001, ale nie zostały one wydane w bloku 600,001 nowego blockchaina. Zakładając, że kryptografia się nie zmieniła, Twoje klucze prywatne nadal zawierają pięć monet w rozwidlonej sieci. 
Przykładem hard forka był fork z 2017 roku, w którym Bitcoin podzielił się na dwa oddzielne blockchainy - oryginalny, Bitcoin (BTC) i nowy, Bitcoin Cash (BCH). Fork nastąpił po wielu kłótniach o najlepsze podejście do skalowania. Zwolennicy Bitcoin Cash chcieli zwiększyć rozmiar bloku, podczas gdy zwolennicy Bitcoin byli przeciwni zmianie.
Zwiększenie rozmiaru bloku wymaga modyfikacji reguł funkcjonowania sieci. Było to przed soft forkiem SegWit (więcej o tym wkrótce), więc węzły akceptowały tylko bloki mniejsze niż 1 MB. Jeśli utworzyłeś blok o rozmiarze 2 MB, który był prawidłowy, inne węzły nadal go odrzucały.

Tylko węzły, które zmieniły oprogramowanie, aby zezwalać na bloki o rozmiarze przekraczającym 1 MB, mogły zaakceptować te bloki. Oczywiście spowodowałoby to, że byłyby niekompatybilne z poprzednią wersją, więc tylko węzły z tymi samymi modyfikacjami protokołu mogły się komunikować.


Czym jest soft fork?

Soft fork jest aktualizacją kompatybilną wstecz, co oznacza, że zaktualizowane węzły mogą nadal komunikować się z niezaktualizowanymi. To, co zazwyczaj widzisz w soft forku, to dodanie nowej reguły, która nie koliduje ze starszymi regułami.
Na przykład zmniejszenie rozmiaru bloku można zrealizować za pomocą soft-forkingu. Ponownie skorzystajmy z Bitcoina, aby to zilustrować: chociaż istnieje ograniczenie co do tego, jak duży może być blok, nie ma ograniczenia co do tego, jak mały może być. Jeśli chcesz akceptować tylko bloki poniżej określonego rozmiaru, wystarczy odrzucić większe.

Jednak nie powoduje to automatycznego odłączenia Cię od sieci. Nadal komunikujesz się z węzłami, które nie stosują tych reguł, ale odfiltrowujesz niektóre informacje, które Ci przekazują.

Dobry przykład z życia wzięty to wspomniany wcześniej soft fork, Segregated Witness (SegWit), który nastąpił wkrótce po podziale Bitcoin/Bitcoin Cash. SegWit był aktualizacją, która zmieniła format bloków i transakcji, ale została sprytnie wykonana. Stare węzły nadal mogły weryfikować bloki i transakcje (formatowanie nie łamało reguł), ale po prostu ich nie rozumiały. Niektóre pola można odczytać tylko wtedy, gdy węzły przełączają się na nowsze oprogramowanie, co umożliwia im analizowanie dodatkowych danych.



Nawet dwa lata po aktywacji SegWit nie wszystkie węzły zostały zaktualizowane. Ma to swoje zalety, a sama aktualizacja nie jest nagląca, ponieważ nie wprowadza przełomowej zmiany do sieci.


Hard forki kontra soft forki – co jest lepsze?

Zasadniczo oba powyższe typy forków służą różnym celom. Sporne hard forki mogą dzielić społeczność, ale planowane pozwalają na swobodę modyfikowania oprogramowania za zgodą wszystkich.

Soft forki to delikatniejsza opcja. Ogólnie rzecz biorąc, masz bardziej ograniczone możliwości, ponieważ nowe zmiany nie mogą kolidować ze starymi zasadami. To powiedziawszy, jeśli Twoją aktualizację można spreparować w taki sposób, aby była kompatybilna, nie musisz się martwić o fragmentację sieci.


Przemyślenia końcowe

Hard forki i soft forki mają kluczowe znaczenie dla długoterminowego sukcesu sieci blockchain. Pozwalają nam wprowadzać zmiany i aktualizacje w zdecentralizowanych systemach, pomimo braku organu centralnego.

Forki umożliwiają blockchainom i kryptowalutom integrację nowych funkcji w miarę ich opracowywania. Bez tych mechanizmów potrzebowalibyśmy scentralizowanego systemu z odgórną kontrolą. W przeciwnym razie utknęlibyśmy przy tych samych zasadach przez cały okres istnienia protokołu.