Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/btcconfeno/czasnakrypto/wp-includes/functions.php on line 6131
21 milionów BTC? | Bugi, "winni" i możliwe rozwiązania - CzasNaKrypto.pl

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ź

Ta strona używa Akismet do redukcji spamu. Dowiedz się, w jaki sposób przetwarzane są dane Twoich komentarzy.

CzasNaKrypto.pl
Logo
Compare items
  • Total (0)
Compare
0