Celem poniższego tekstu jest zarysowanie procesu wprowadzania zmian w sieciach blockchain na przykładzie Bitcoin i ścierających się w tym procesie interesów różnych uczestników i użytkowników tej akurat sieci. Mechanizm ten w praktyce pokazuje, że implementacje blockchaina zaczynają mieć powoli za sobą okres rewolucyjno – romantyczny. Zaczynają zaś wytwarzać w swoim obrębie mechanizmy władzy, dominacji, obrony interesów takie same jak od zawsze występują w, nazwijmy to, “tradycyjnej” gospodarce. Jest to o tyle godne odnotowania, że blockchain (tutaj w wydaniu Bitcoin) miał być remedium na centralizację, deficyt zaufania i kilka innych bolączek jednocześnie globalnej oraz rozproszonej ekonomii. A tymczasem powoli, technologia ta i ludzie jako jej użytkownicy odtwarzają mechanizmy, które były poddane krytyce wraz z powstaniem blockchain. Osobiście nie uważam to za nic złego, a raczej za normalną drogę rozwoju wszelkich nowych idei czy systemów (każda rewolucja wytwarza nowe elity). Zresztą, każdy system (tutaj bez przymiotnika) tworzą i rozwijają ludzie ze swoimi wadami i ograniczeniami. Zatem finalnie żaden nowy pomysł nie będzie całkowicie odporny na wady (cechy) systemów, w kontrze do których powstał.

***

Sierpień 2017 r. to pamiętny miesiąc dla społeczności Bitcoin. Tego dnia aktywowano poprawkę/rozszerzenie Segregated Witness (SegWit). W mediach, także nie-branżowych) pisano o tym wiele, oczywiście koncentrując się na pewnych kliszach i powtarzaniu podstawowych informacji, że potencjalny rozmiar bloku wzrósł do 2 MB (samo to stwierdzenie jest już dużym uproszczeniem). Czasem podawano jeszcze informację, że SegWit adresuje tzw. “malleability bug”.

Więcej o tym błędzie tutaj:

https://bitcoinmagazine.com/articles/the-who-what-why-and-how-of-the-ongoing-transaction-malleability-attack-1444253640/

 

Kwestia tego buga jest sama w sobie bardzo ciekawa. Dość powiedzieć, że przyczynkiem do rozpoczęcia prac nad SegWit (w 2012 r.) było właśnie wyeliminowanie wspomnianej luki (zrobiono to przez separację sygnatury transakcji od innych danych o transakcji [stąd nazwa Separated Witness]), niosącej potencjalne zagrożenie podmiany sygnatury transakcji przez podmiot trzeci już po fakcie stworzenia sygnatury transakcji. Podmiotami mającymi możliwość takiej zamiany mogli być choćby górnicy. Dyskusja o wyeliminowaniu buga w pewnym momencie zbiegła się z kwestią zwiększenia wielkości bloku. Zwłaszcza gdy okazało się, że wspomniane zwiększenie limitu wielkości bloku wymaga załatania “malleability bug”.

Wydawałoby się więc, że SegWit to same korzyści. Niestety, okazało się, że o ile sama eliminacja buga może być zrealizowana jako tzw. soft fork*, to zwiększenie limitu bloku wymaga z kolei zmiany typu hard fork. Połączenie tych kwestii raczej kierowało cały proces całościowo w kierunku zmiany typu hard i braku kompatybilności wstecz. W tym momencie, wielu kluczowych górników zaczęło kontestować ideę SegWit.

Podstawy tej kontestacji do pewnego stopnia wyjaśniły się, trochę upraszczając całą historię, w momencie wybuchu pewnego skandalu. Mianowicie, w kwietniu 2017 r. Gregory Maxwell upublicznił informację, że chipy ASIC używane przez wielu górników mają wbudowaną implementację technologii AsicBoost. W tym momencie stało się w zasadzie jasne czemu górnicy bronią się przed poprawką. Tym brakującym elementem układanki był fakt, iż użycie AsicBoost stałoby się niemożliwe (niekomapatybilne) przy wprowadzeniu SegWit w wydaniu soft fork. Czemu miało to znaczenie? Z powodów czysto ekonomicznych. Największe kopalnie zainwestowały olbrzymie środki w sprzęt “górniczy” oparty na układach dających im przewagę w procesie wydobywania bloków. Innymi słowy, niektórzy instytucjonalni górnicy zaczęli działać jak klasyczna grupa interesu, blokując zmiany korzystne dla ogółu społeczności (wielkość bloku, załatanie buga, skalowalność), a niekorzystne (przynajmniej krótkoterminowo) dla nich i ich inwestycji. Samo w sobie nie jest to niczym zaskakującym. Niemniej, z punktu widzenia pewnego idealizmu towarzyszącego powstaniu Bitcoina (i blockchaina), daje do myślenia.

W tym przypadku historia (po wielu dodatkowych smaczkach i zwrotach akcji, włączając w to powstanie SegWit2Mb) zakończyła się swego rodzaju kompromisem, którego ucieranie się jest moim zdaniem ciekawie, a momentami porywająco opisane tutaj:

https://bitcoinmagazine.com/articles/long-road-segwit-how-bitcoins-biggest-protocol-upgrade-became-reality/

a także trochę bardziej technicznie tutaj:

https://bitcoinmagazine.com/articles/bip91-segwit-activation-kludge-should-keep-bitcoin-whole/

Sama w sobie ta historia może być pasjonująca. To na co jednak warto dodatkowo zwrócić uwagę, to fakt, że jak w przypadku każdej rewolucji, także i ta może zacząć odtwarzać mechanizmy znane z krytykowanej przez siebie przeszłości. W tym przypadku, sieć oparta na blockchain miała stać się środowiskiem, z którego wyeliminowano tradycyjne instytucje pośredniczące (tj. pośredniczące w dystrybucji zaufania i udostępniające zasoby konieczne do utrzymania sieci/usługi). Szybko jednak nowa struktura (nie waham się powiedzieć, że także społeczna) wytworzyła swoje własne hierarchie i ośrodki decyzyjne o odpowiednio silnym głosie. Co nie przekreśla wartości tego jak ostatecznie cała ta w sumie wieloletnia dyskusja o SegWit została rozwiązana.

Powyższe jest zaledwie krótkim obrazkiem z fascynującej historii i ewolucji bardzo ciekawej technologii (mam na myśli ogólnie blockchain) i, paradoksalnie, świadectwem jej dojrzałości. Dojrzałość ta znajduje wyraz w wytworzeniu się oraz działaniu mechanizmów ścierania się interesów ale i w zdolności wypracowywania kompromisów. Jak to w życiu…

*Zasadniczo istnieją soft i hard fork. Łatwiej to wytłumaczyć zaczynając od omówienia hard fork. Obrazuje to sytuacja, w której w sieci blockchain z jakiś powodów (zamierzonych lub nie) w zbliżonym czasie zostają wykopane dwa bloki, z których każdy zapoczątkowuje równoległy łańcuch bloków (rozwidlenie). W “normalnych” okolicznościach przez pewien czas górnicy wykopują bloki do obydwu łańcuchów, aż jeden stanie się dłuższym, dominującym, a drugi zostanie osierocony. W specjalnie uruchomionym procesie hard fork, inicjuje się go po to, aby wprowadzić do blokchaina zmiany niekompatybilne z poprzednim blokami. Bywa jednak i tak, że zmiana nie zostanie zaakceptowana. Czego z kolei efektem może być rozłam w sieci i trwałe rozejście się danego blockchaina na np. dwie różne kryptowaluty. Jest to częsta geneza pojawiania się nowych kryptowalut “na korzeniu” pierwotnej. Powstaje wtedy sieć akceptująca dane zmiany i rozłamowcy, którzy chcą operować kryptowalutą typu “classic” (sprzed zmian). Bywają także rozłamy specjalnie przeprowadzone z powodów operacyjnych czy ekonomicznych (Bitcoin Gold). Oprócz wprowadzania dużych zmian i/lub inicjowania rozłamów hard fork może być niezamierzony. Ma miejsce wtedy kiedy, jak wspomniałem, dwa bloki zostały wykopane w praktyce identycznym czasie i zaczynają być punktami wyjścia dla własnych łańcuchów. W takim jednak przypadku jeden z łańcuchów w końcu zostaje osierocony, a transakcje z niego zostają unieważnione.

Jak łatwo się teraz domyślić, soft fork to także zmiana w sieci ale nie wymagająca jej podziału. A także kompatybilna wstecz. Z punktu widzenia zachowania sieci w całości, znacznie bezpieczniejsza. Z punktu widzenia zrealizowania bywa, ze trudniejsza. Kompatybilność wstecz, co dość oczywiste, przy fundamentalnych zmianach bywa trudna do zachowania i realizacji. Wtedy zaczyna się myśleć nad hard fork co oczywiście otwiera puszkę pandory w postaci potencjalnego rozłamu w przypadku braku akceptacji zmiany przez jakąś część danej społeczności.