21 milionów BTC? | Bugi, “winni” i możliwe rozwiązania

21 milionów BTC? Okazało się, że można więcej! Szok! Tym wyrażeniem śmiało można określić to, co zostało odkryte i poprawione w kodzie bitcoin w zeszłym tygodniu.

Więcej, niż 21 milionów BTC

Cała społeczność dociekała, zastanawiała się i analizowała lukę ukrytą przez ostatnie dwa lata w kodzie bitcoin. Problem dotyczył możliwości, do których bug mógł zostać wykorzystany. Światło dzienne ujrzał bowiem fakt, że można było wydobyć więcej, niż 21 milionów BTC, które założył Satoshi Nakamoto. Problem i dyskusja, która nawiązała się po ujawnieniu tego buga stała się iskrą do zastanowienia się, w jaki sposób zapobiegać występowaniu takich i podobnych błędów w przyszłości?

Pierwsza reakcja – woda w ustach. Kilka dni po wykryciu błędu nie podano żadnych formalnych propozycji. Nie oznacza to bynajmniej, ze dyskusja o problemie nie została rozpoczęta. Zaczęto zastanawiać się, jak działa Bitcoin i jakie jeszcze inne błędy skrywa w sobie jego oprogramowanie. W jaki sposób szybko identyfikować te błędy, aby móc je skutecznie rozwiązywać w przyszłości?

Duża porażka

Moderator subreddit’a  Bitcoin, wypowiadający się pod pseudonimem „Theymos” zaapelował do społeczności, aby pod żadnym pozorem nie zapominała o ujawnionym bugu. W jednym z postów stwierdził, że błąd „był niezaprzeczalnie poważną porażką” i dodał:

Jeśli wszystkie zasady i praktyki Bitcoin Core pozostaną bez zmian to nieuniknione jest, że podobna awaria w końcu się powtórzy i być może nie będziemy mieli tyle szczęścia (…)

Ta wypowiedź stanowi potwierdzenie, że potrzebny jest solidny przegląd kodu Bitcoin Core. Większy niż jakikolwiek, który miał miejsce do tej pory.

W obecnym stanie rzeczy Bitcoin Core utrzymywane jest przez ogromną, stale rosnącą ilość deweloperów, którzy wnoszą swój wkład do open source’owej bazy kodu bitcoin. Testowania też jest dużo – można zakładać, że testy obejmują prawie 20% kodu.

Mea culpa?

Deweloperzy twierdzą, że można zrobić więcej, aby zapewnić płynność działania cyfrowej waluty. Theymos na przykład sądzi, że jedna z metod będzie stworzenie „bardziej wyrafinowanych” testów dostosowanych do zlokalizowania ciężkich i trudnych do znalezienia błędów – takich, jak chociażby bug z zeszłego tygodnia:

Być może wszystkie duże firmy (…) powinny, zgodnie z oczekiwaniami społeczności, przypisać do Core wykwalifikowanych specjalistów w zakresie testów (…),

Kontynuował, dodając:

Obecnie wiele firm nie przyczynia się do rozwoju Core.

Inny człowiek związany z Bitcoin Core – James Hilliard zwrócił uwagę na tą samą kwestię i dodatkowo podkreślił, że programiści mogą zwiększyć „ilość” i „jakość ” testów. Pewnie łatwiej powiedzieć, niż zrobićJ Greg Maxwell z kolei zgodził się w wątku, który rozpoczął Theymos, że testowanie jest ważne, ale ważna w tym jest przede wszystkim jakość i szczegółowość przeprowadzanych testów:

Kierowanie większego wysiłku na testowanie było dla nas wyzwaniem długoterminowym po części dlatego, że sztuka testowania jest nie mniej trudna, niż jakikolwiek inny aspekt inżynierii systemów. Testowanie obejmuje szczególne zdolności i umiejętności, które nie każdy posiada.

Nie jest łatwo znaleźć dobrych testerów:

Rozwijanie kodu bitcoin w dużej mierze zależy od poprawnego przeglądania kodu i niema zbyt wielu ludzi, którzy są w stanie to zrobić, powiedział Hilliard.

Wielu uważa jednak, ze odpowiedzialność za błędy powinna spoczywać nie tylko na programistach. Jedną z wartości Bitcoina było przecież to, że jako zdecentralizowany projekt jest pozbawiony jakichkolwiek liderów. Utrzymywanie go zatem bez błędów leży w odpowiedzialności wszystkich korzystających.

Szukanie winnych

Często zwraca się uwagę na fakt, że w wielu przypadkach ludzie wskazują na konkretnych deweloperów, by to właśnie im przypisać winę za błędy. To coś w stylu „szukania winnego” – taka już jest ludzka natura. A przecież  cały projekt bitcoin jest otwarty, nie istnieje pojęcie „członkostwa”, a użytkownicy ponoszą tak samo dużą odpowiedzialność  za kontrolę jakości kodu,  jak deweloperzy, którzy działają aktywnie na jego rzecz.

Podobne odczucie podziela również Wladimir van der Laan, związany z Bitcoin Core, który napisał na Twitterze:

To było złe, że zbugowany kod był scalony. Tak – spieprzylismy to, ale „my”, którzy to spieprzyliśmy, to o wiele szersze pojęcie. Spieprzyła to cała społeczność poprzez nie dość dokładne sprawdzanie zmian w ramach konsensusu

Inżynier John Newberry zgodził się. Mimo tego, że nie był on autorem żadnego błędu w kodzie argumentował, że jako deweloper również odegrał w tym jakąś rolę poprzez niezbyt dokładne patrzenie na kod jako całość.

Posunął się nawet do stwierdzenie, że zauważył w kodzie  coś „zabawnego”. Założył jednak, że inni już to sprawdzili:

Zamiast weryfikować sam siebie zaufałem, że ludzie mądrzejsi i bystrzejsi ode mnie już się tym zajęli. Uznałem za pewnik, że ktoś inny wykonał pracę. Uznałem za pewnik, że ktoś  inny wykonał pracę, stwierdził.

Bitcoin Knots i szukanie rozwiązań

Dzisiaj w bitcoin znajduje się jedno główne oprogramowanie – Bitcoin Core,które obsługuje 95 procent węzłów sieci. Co ciekawe –  nie istnieje sposób, aby zobaczyć każdy węzeł bitcoin z osobna, ponieważ niektóre węzły chcą więcej prywatności i nie ogłaszają istnienia w pozostałej części sieci.

Jednym z pomysłów jest zatem próba wprowadzenia większej liczby implementacji kodu bitcoin. W ten sposób, jeśli jedna z implementacji stanie się ofiara jakiegoś błędu, który spowoduje awarię sieci – pozostałe instancje nadal będą działać w porządku, utrzymując całość sieci bitcoin w ryzach.

Do pewnego stopnia takie rozwiązania już istnieją. Działają już, być może mniej znane implementacje kodu, takie jak na przykład Bitcoin Knots i Btcd. W świecie kryptowalut innych, niż Bitcoin, podobne rozwiązania stają się standardem. Ethereum chociażby posiada dwie dominujące implementacje: geth i parity,z których każda może być używana przez każdego, kto korzysta z oprogramowania.

Pomimo tego wielu deweloperów bitcoin wyraża obawę, że dodanie więcej implementacji kodu do Bitcoin Core może spowodować problemy. Te zaś, mogą okazać się jeszcze bardziej dotkliwe, niż luka ujawniona w zeszłym tygodniu:

Wielu ludzi nie zdaje sobie sprawy z tego, że posiadanie różnych implementacji ułatwi atakującym dzielenie sieciargumentował Andrew Chow na forum bitcointalk. W związku z tym, programiści nie są do końca zgodni odnośnie sposobów działania i strategii w tej sprawie.

Podsumowanie

Bug pozwalający na stworzenie więcej, niż 21 milionów BTC zelektryzował społeczność. Dał również nowe, szerokie pole do zastanowienia się, w jaki sposób radzić sobie z podobnymi zdarzeniami w przyszłości. Theymos bardzo dobrze wyraził to, gdy powiedział:

Nie wiem dokładnie, w jaki sposób można zapobiec wystąpieniu takiego błędu ponownie. Wiem jednak, że błędem społeczności byłoby, jeśli zbagatelizowałaby ten błąd tylko dlatego, że tym razem nic się nie stało.

A jakie jest Twoje zdanie na ten temat?

Co to jest Bitcoin? | Jak działa Bitcoin? | Sprawdź kurs BTC | Giełdy kryptowalut | Portfele Bitcoin

We will be happy to hear your thoughts

Dodaj Odpowiedź

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Login/Register access is temporary disabled
Compare items
  • Total (0)
Compare
0