092015–2017

Blocksize War: kto może zmieniać reguły Bitcoina

Spór nie zaczął się od bohaterów i złoczyńców, lecz od pełnych bloków. Skończył się kilkoma łańcuchami i praktyczną odpowiedzią: ani moc obliczeniowa, ani firmy, ani deweloperzy nie decydują samodzielnie, co węzeł musi zaakceptować.

Jeden megabajt wyglądał na parametr techniczny, z którym poradzą sobie szybsze komputery i jeden porządny benchmark. Do roku 2015 stał się przedmiotem sporu o przyszły kształt pieniądza i o to, kto ma prawo powiedzieć, czym jest Bitcoin. Gavin Andresen i Mike Hearn opowiadali się za znacznie większymi blokami. Deweloperzy tacy jak Pieter Wuille i Gregory Maxwell ostrzegali przed ceną, jaką zapłaciliby operatorzy węzłów. Górnicy, giełdy, inwestorzy i anonimowi użytkownicy dokładali własną presję. Blocksize War nie była jedną kłótnią ani pojedynkiem dwóch obozów. Była dwuletnią serią propozycji, ultimatum, konferencji, wydań oprogramowania i terminów, podczas której każda grupa odkryła różnicę między tym, na co może wpłynąć, a tym, co może wymusić.

01

Pełne bloki i dwie różne obawy

Wraz ze wzrostem wykorzystania sieci bloki zbliżały się do limitu, a opłaty rosły. Zwolennicy większych bloków ostrzegali, że drogie transakcje wyprą zwykłe płatności i uczynią z Bitcoina sieć dla bogatych. Zwolennicy ostrożniejszego podejścia ostrzegali, że szybki przyrost danych i wymagań utrudni prowadzenie full node w domu i skupi weryfikację w centrach danych.

Obie strony mówiły o decentralizacji, ale mierzyły ją inaczej. Jedna liczbą ludzi, których stać na transakcję; druga liczbą ludzi, których stać na niezależne sprawdzanie reguł. Propozycje Bitcoin XT, Classic, a później Unlimited obiecywały bezpośrednie zwiększenie limitu. Prace nad SegWit zmierzały do zmiany formatu transakcji i efektywniejszego wykorzystania miejsca.

Limit jednego megabajta nie był przy tym prawem natury ani pierwotnym celem Bitcoina. Satoshi wprowadził go, aby chronić młodą sieć przed zbyt dużymi blokami. Spór nie dotyczył więc tego, czy wolno zmienić jedną świętą stałą, lecz tego, jak szybko można rosnąć, nie przenosząc weryfikacji do ludzi z najszybszym łączem, największymi dyskami i największą cierpliwością podczas początkowej synchronizacji. Nawet mała zmiana techniczna niosła długofalową wizję tego, kto będzie mógł powiedzieć: sam sprawdziłem reguły.

BIP101 Andresena proponował skok do ośmiu megabajtów, a następnie przewidywalny wzrost limitu. Hearn włączył go do klienta Bitcoin XT i obaj publicznie wezwali górników oraz użytkowników do poparcia zmiany. Dla nich pełna kolejka transakcji oznaczała złamanie pierwotnej obietnicy taniej elektronicznej gotówki. Jeśli nowy użytkownik musiałby przy małej płatności konkurować wysoką opłatą, ich zdaniem sieć przegrałaby z kartami, zanim na dobre weszłaby do codziennego użytku.

Po drugiej stronie nie stali ludzie, którzy chcieli, by Bitcoin pozostał mały. Pieter Wuille zaproponował Segregated Witness, a Gregory Maxwell i inni deweloperzy mówili o drugich warstwach oraz efektywniejszym wykorzystaniu każdego bajtu. Ich obawy sięgały kilka kroków naprzód: większy blok dzisiaj oznacza wyższe wymagania dotyczące łącza, przechowywania i weryfikacji już na zawsze. Gdy domowy węzeł przestanie być praktycznym rozwiązaniem, użytkownik zacznie ufać cudzemu serwerowi. Oba obozy broniły dostępności; każdy widział ją po innej stronie transakcji.

02

Porozumienie z Nowego Jorku

W maju 2017 grupa dużych firm i górników ogłosiła New York Agreement. Plan SegWit2x łączył szybką aktywację SegWit z późniejszym hard forkiem, który miał wprowadzić dwumegabajtowy blok bazowy. Sygnatariusze powoływali się na duży udział w mocy obliczeniowej i wolumenie transakcji, występując tak, jakby koordynacja największych przedsiębiorstw mogła zakończyć spór.

Porozumienie nie wiązało jednak użytkowników korzystających z innego oprogramowania. Krytycy odrzucali przede wszystkim pomysł, że zamknięte spotkanie może obiecać w imieniu sieci niekompatybilną zmianę. Górnicy mogą proponować bloki, a firmy nadawać im markę; węzeł nadal może uznać je za nieprawidłowe.

Pierwotne ogłoszenie mówiło o 58 firmach z 22 krajów i o 83,28 procenta mocy obliczeniowej. Te liczby miały znaczenie, ale nie mierzyły zgody niezależnych węzłów ani ludzi, którzy trzymali bitcoiny poza usługami sygnatariuszy. Połączenie SegWit z późniejszym hard forkiem stworzyło ponadto polityczną transakcję: każda strona miała dostać część tego, czego chciała. Gdy pierwsza część została aktywowana, a druga pozostała sporna, okazało się, że za pakietem nie stoi żadna instytucja zdolna wymusić jego realizację do końca.

Porozumienie zorganizował założyciel Digital Currency Group Barry Silbert podczas konferencji Consensus w Nowym Jorku. Przy stole zasiedli przedstawiciele giełd, portfeli, firm płatniczych i przedsiębiorstw wydobywczych; implementacją SegWit2x kierował Jeff Garzik. Dla przedsiębiorców wyczerpanych długim sporem wyglądało to na dojrzały kompromis: wpływowi ludzie wreszcie uzgodnili termin i podpisali się pod nim nazwami swoich firm. Bitcoin nie miał jednak rejestru członków, w którym ich podpisy stanowiłyby kwalifikowaną większość.

Krytycy reagowali nie tylko na dwa megabajty, lecz także na sposób podjęcia decyzji. Adam Back, Gregory Maxwell i inni ostrzegali, że niekompatybilna zmiana z krótkim terminem stawia użytkowników przed faktem dokonanym. Sygnatariusze kontrolowali usługi, z których korzystało wielu ludzi, a górnicy mogli zapewnić większość mocy obliczeniowej. Nie mogli jednak zdalnie zmienić reguł walidacji węzła działającego w cudzym mieszkaniu. Porozumienie stworzyło więc osobliwą sytuację: największe firmy mogły ogłosić, co będą nazywać Bitcoinem, ale właściciel każdego węzła zachował własny przycisk odmowy.

03

UASF, BIP91 i łańcuch, który się nie rozdzielił

BIP148 proponował user-activated soft fork: od 1 sierpnia uczestniczące węzły miały odrzucać bloki niesygnalizujące SegWit. Była to ryzykowna forma nacisku. Gdyby ekonomicznie istotna część sieci pozostała gdzie indziej, mogłyby powstać konkurencyjne historie lub chaotyczne reorganizacje.

Jeszcze przed decydującym dniem górnicy zaczęli jednak za pośrednictwem BIP91 sygnalizować warunki prowadzące do przesądzenia o aktywacji SegWit. Nie można więc uczciwie przypisać wyniku jednemu uczestnikowi: groźba UASF zmieniła bodźce, górnicy skoordynowali sygnalizację, a istniejące węzły egzekwowały reguły kompatybilnego soft forka. SegWit został aktywowany 24 sierpnia 2017.

Węzły z BIP148 nie mogły same aktywować SegWit poprzez wydobywanie bloków ani zmusić pozostałych do jego używania. Mogły jedynie z góry zadeklarować, że po wyznaczonym terminie nie będą przyjmować określonej grupy bloków. Siła tej deklaracji zależała od tego, czy pójdą za nią giełdy, sprzedawcy, portfele i posiadacze, których monety nadają łańcuchowi znaczenie gospodarcze. UASF działał więc jak publiczne zobowiązanie w grze koordynacyjnej: jego skuteczność wynikała nie z rozkazu, lecz z wiarygodnej możliwości, że nieposłuszny łańcuch będzie miał moc obliczeniową, ale mniej kupujących.

Propozycję BIP148 opublikował deweloper posługujący się pseudonimem Shaolinfry. Ludzie zaczęli nosić czapki z literami UASF, a 1 sierpnia nazywali dniem niepodległości. Za memami stała jednak poważna stawka. Gdyby górnicy kontynuowali pracę bez sygnalizacji, a znaczna część gospodarki poszła za BIP148, historie mogłyby się na pewien czas rozdzielić i użytkownicy nie wiedzieliby, który przychodzący przelew pozostanie ważny. Aktywista prowadzący węzeł ryzykował więc nie tylko hasło; ryzykował własną zdolność do bezpiecznego przyjmowania pieniędzy.

BIP91 Jamesa Hilliarda dał górnikom możliwość skoordynowania się przed terminem i zapewnienia sygnalizacji SegWit przy niższym progu. Gdy poparcie nagle wzrosło, każda strona odczytywała wynik po swojemu. Zwolennicy UASF widzieli dowód, że presja użytkowników zmieniła bodźce. Górnicy wskazywali na własną koordynację, a sygnatariusze New York Agreement na swój kompromis. Historia nie daje eksperymentu kontrolnego, w którym usuniemy jedną z grup. Pewne jest, że grożący konflikt skłonił wszystkich do wcześniejszego działania.

04

Bitcoin Cash odszedł, SegWit2x się wycofał

Dnia 1 sierpnia oddzielił się Bitcoin Cash z większymi blokami i własnymi regułami. Nie była to zmiana narzucona istniejącym węzłom, lecz nowy, niekompatybilny łańcuch o wspólnej historii do momentu podziału. Rynek i użytkownicy mogli odtąd osobno wyceniać oba aktywa i korzystać z obu sieci.

Druga część New York Agreement miała w listopadzie aktywować dwumegabajtowy hard fork. Jego organizatorzy wstrzymali go 8 listopada, przyznając, że nie uzyskali wystarczającego konsensusu, aby przeprowadzić aktualizację bez podziału. Wysoki poziom sygnalizacji mocy obliczeniowej nie przełożył się na pewność, że gospodarka przyjmie nowe bloki jako Bitcoin.

W chwili rozdzielenia oba łańcuchy dzieliły dotychczasową historię i ten sam stan niewydanych monet. Kto kontrolował klucze przed podziałem, po nim mógł pod pewnymi warunkami dysponować odpowiadającymi im aktywami po obu stronach. Od tego momentu każdy łańcuch przyjmował już jednak inne przyszłe bloki i budował własny efekt sieciowy. Rozłam nie zmusił starych węzłów do zmiany definicji prawidłowej transakcji; dał zwolennikom odmiennych reguł możliwość ponoszenia kosztów i skutków własnego wyboru.

Bitcoin Cash dał zwolennikom większych bloków coś, czego nie mogła dać niekończąca się debata: działający łańcuch zgodny z ich regułami. Giełdy musiały nadać mu symbol, portfele zająć się ochroną przed powtórzeniem transakcji, a posiadacze zdecydować, czy nowe monety sprzedać, zachować, czy zignorować. Spór częściowo przeniósł się z list mailingowych na rynek. Cena, moc obliczeniowa i wykorzystanie obu łańcuchów zaczęły wyrażać ciągłe wybory, a nie jednorazowe głosowanie nad jednym zwycięzcą.

SegWit2x miał być inny. Jego zwolennicy chcieli, by dwumegabajtowy łańcuch odziedziczył markę BTC i stał się kontynuacją, a nie boczną gałęzią. W miarę zbliżania się listopada brakowało szerokiego wsparcia w oprogramowaniu klientów i jasnego planu bezpiecznego funkcjonowania dwóch łańcuchów. Dnia 8 listopada Mike Belshe, Wences Casares, Jihan Wu, Jeff Garzik, Peter Smith i Erik Voorhees ogłosili odroczenie. Przyznali, że bez szerszej zgody dalej dzieliliby społeczność, którą chcieli zjednoczyć.

05

Władza jest rozproszona, a nie nieobecna

Wojnę często przedstawia się jako jednoznaczne zwycięstwo użytkowników. Dokładniejszy wniosek jest bardziej złożony. Deweloperzy mają wpływ na uwagę i jakość kodu, górnicy na kolejność bloków, firmy na płynność i markę, a użytkownicy na wybór oprogramowania i kontrahentów. Żadna grupa nie trzyma samodzielnie wszystkich dźwigni; niektóre mają ich jednak znacznie więcej niż inne.

Bitcoin nie głosował wtedy jedną liczbą. Koordynował się przez kod, publiczne argumenty, decyzje biznesowe, terminy i gotowość do ryzykowania podziału. Wynik nie został osiągnięty ani po cichu, ani tanio. Właśnie w tym tkwi jego znaczenie: reguły pozostały takie same nie dlatego, że nie było sporu, lecz dlatego, że do zmiany nie wystarczyło przekonać ludzi w najbardziej widocznej sali.

Konsensus Nakamoto rozstrzyga o kolejności transakcji w ramach wspólnie przyjętych reguł; nie jest parlamentem, który głosami mocy obliczeniowej przepisuje same reguły. Górnik może stworzyć blok z ogromną ilością pracy, ale węzeł go odrzuci, jeśli narusza on zasady jego oprogramowania. Wybór reguł odbywa się więc poza samym blockchainem: w kodzie, wersjach klientów, cenach, umowach i w tym, z kim ludzie są gotowi handlować. Blocksize War nie odkryła prostej konstytucji Bitcoina. Pokazała system, w którym zmiana jest możliwa, ale nikt nie ma zagwarantowanego prawa nazwać jej konsensusem.

Ludzie po wszystkich stronach zapłacili osobistą cenę. Mike Hearn w styczniu 2016 publicznie opuścił projekt i uznał eksperyment za nieudany. Gavin Andresen stracił dawną pozycję w Bitcoin Core. Deweloperzy mierzyli się z kampaniami wymierzonymi przeciw nim, firmy z bojkotem, a poszczególni ludzie z atakami, które zamieniały techniczną różnicę zdań w próbę charakteru. Zwycięska opowieść często sprowadza tych ludzi do zdrajców i bohaterów. Uczciwiej przyznać, że wielu broniło odmiennej wizji tego samego celu i czasami stosowało nacisk, który sami uważali za konieczną obronę.

Po wojnie słowa konsensus używano ostrożniej. Nie oznaczało już prostej liczby sygnałów górników, listy firm ani zgody głównych deweloperów. Oznaczało stan, w którym dostatecznie wielu uczestników uznaje zmianę za bezpieczniejszą od podziału, a pozostali nie mają woli lub siły utrzymać konkurencyjnych reguł. Nie jest to elegancki system głosowania. To nieustanne negocjacje, w których możliwość odejścia daje znaczenie także ludziom bez tytułu — a jednocześnie nigdy nie gwarantuje, że ich łańcuch będzie miał wartość, użytkowników lub bezpieczeństwo.

Atlas

Postacie i pojęcia w Atlasie

2017Wojna o rozmiar blokówBIP141SegWitNODEFull NodeFORK↓Soft ForkFORK↑Hard ForkRULESReguły konsensusuCOREBitcoin CoreGAVINGavin AndresenHEARNMike HearnSIPAPieter WuilleGMAXGregory MaxwellBACKAdam BackGARZIKJeff Garzik
  1. 01
    BIP 101 — Increase maximum block size

    Jedna z głównych formalnych propozycji automatycznego wzrostu limitu.

  2. 02
    BIP 141 — Segregated Witness

    Specyfikacja techniczna SegWit i block weight.

  3. 03
    Digital Currency Group — Bitcoin Scaling Agreement at Consensus 2017

    Pierwotny tekst New York Agreement i lista sygnatariuszy.

  4. 04
    SegWit2x Working Group — archived repository

    Ówczesna dokumentacja celu i implementacji SegWit2x.

  5. 05
  6. 06
    BIP 91 — Reduced threshold SegWit MASF

    Mechanizm koordynacji górników, który zapewnił sygnalizację przed 1 sierpnia.

  7. 07
    Bitcoin ABC — UAHF technical specification

    Ówczesna specyfikacja oddzielenia Bitcoin Cash.

  8. 08
    SegWit2x mailing list — Onwards

    Ogłoszenie z 8 listopada 2017, że hard fork nie uzyskał wystarczającego konsensusu.

Następna historia · 10FTX: saldo, którego nie było tam, gdzie miało być