Największe błędy programistyczne w historii kryptowalut

101
6 przykładów na to, jak kryptowaluty i blockchain zmieniają sposób prowadzenia biznesu

Programiści blockchaina rozumieją, jak duże znaczenie ma weryfikacja napisanego kodu, zanim zostanie on wprowadzony na daną platformę. Niestety nikt nie jest doskonały, a błędy programistyczne w sferze krypto mogą się zdarzyć (i się zdarzają). Jednakże kiedy niedoskonały kod zostaje wprowadzony do blockchaina, może on wpłynąć na dużą część społeczności danego coina.

Jeden mały błąd programistyczny może prowadzić do milionów utraconych funduszy. Jak się za chwilę dowiesz, takie sytuacje już powodowały katastrofę na różnych łańcuchach bloków. Dalekosiężne konsekwencje takich wypadków są też powodem, dla których widzimy tak dużo projektów typu open-source. Jest to dodatkowa warstwa zabezpieczenia ze względu na dużą liczbę zewnętrznych programistów sprawdzających kod pod kątem błędów. Jednakże nawet wtedy może się zdarzyć, że człowiek nie wychwyci jakiegoś ważnego szczegółu wpływającego na całą sieć.

Oto pięć największych błędów programistycznych w historii krypto.

Błąd portfelu Parity w sieci Ethereum

Wyobraź sobie, że programujesz inteligentny kontrakt i nagle przez przypadek przejąłeś kontrolę nad portfelami tysięcy osób. Co byś zrobił? Poszedł zakupić Lambo? A może twoja moralność jest tak wysoka jak u programisty devops199, który cofnął swój kod i przywrócił środki na portfele swoich prawowitych właścicieli?

Słyszałeś dobrze: devops199 usunął kod, który przypadkowo przyznał mu dostęp do tysięcy portfeli Parity typu multi-signature (posiadającymi więcej niż jeden klucz). Niestety historia ta nie ma pozytywnego zakończenia. Wyeliminowanie tego kodu zamroziło także wszystkie fundusze w tych portfelach – i to na zawsze. W sumie w sieci Ethereum zginęło wtedy 300 milionów dolarów.

Jak na ironię, błąd ten został stworzony w tym samym miesiącu przez programistów Parity, którzy pisali kod po godzinach, by tylko zablokować jednego z hakerów przed kradzieżą środków z ich portfeli. Owemu hakerowi udało się zebrać 32 miliony dolarów, zanim wprowadzono aktualizację systemu, która zamknęła furtkę w protokole portfela (jednocześnie tworząc feralny błąd, który kosztował użytkowników dziewięć razy więcej niż to, co ukradł haker).

Dziewięćdziesiąt dwa miliardy bitcoinów

Programista bitcoina Jeff Garzik zauważył coś dziwnego podczas przeglądania kodu bitcoina 8 sierpnia 2010 roku. Natychmiast skierował się na forum bitcointalk, aby ostrzec innych deweloperów o poważnym problemie, z którym się zetknął. Garzik zauważył, że wartość jednego z bloków wynosiła 92 miliardy bitcoinów. Biorąc pod uwagę, że w sumie ma zostać wykopanych jedynie 21 000 000 bitcoinów, było to wywrócenie do góry nogami wszystkich podstaw sieci bitcoin.

Błąd był tak znaczący, że twórcy postanowili nacisnąć przycisk reset. Zrobili to, przywracając system do bloku poprzedzającego blok zawierający 92 miliardy bitcoinów. To ponowne uruchomienie oznaczało, że wszystko transakcje przeprowadzone po haku, ale przed poprawką, zostały unieważnione.

Później okazało się, że haker znalazł błąd, który pozwolił mu przekroczyć zakres liczb całkowitych. Ten typ błędu występuje, gdy system ponownie uruchamia swoje protokoły zliczające, zamiast je kontynuować chronologicznie. Kiedy tak się dzieje, może dojść do wielu niepożądanych sytuacji w sieci. W tym przypadku doprowadziło to do powstania 92 miliardów bitcoinów. Wladimir Van Der Laan nazwał ten błąd „najgorszym” w historii bitcoina.

Incydent z ICO REX

REX wnosi zalety technologii blockchain do sektora nieruchomości. Platforma ta tworzy zdecentralizowany system wymiany ofert na łańcuchu bloków i pomimo że miała już co najmniej jeden poważny błąd w kodzie, to powoli odnotowuje coraz większy sukces.

REX pojawił się na pierwszych stronach gazet w sierpniu 2017 roku, kiedy jego twórcy stracili 1,3 miliona dolarów podczas pierwszej oferty ICO. Błąd pojawił się, gdy jeden z deweloperów wprowadził nieprawidłowy łańcuch szesnastkowy Javascript podczas programowania inteligentnych kontraktów ICO. Ten błąd spowodował, że fundusze uczestników ICO zostały wysłane na nieaktywny adres w blockchainie.

Na szczęście dla tych, którzy stracili fundusze, REX zebrał już 13 milionów dolarów funduszy i był w stanie przekazać wszystkim inwestorom swoje tokeny. Nie wszyscy mają tyle szczęścia, kiedy pojawiają się błędy w kodzie kryptowaluty.

Binance zatrzymuje trading

Kiedy jesteś jedną z największych giełd na świecie, wszelkie błędy w kodzie mogą być szkodliwe dla tysięcy użytkowników krypto. W lutym tego roku Binance zawiesił obrót przez prawie dwa dni z powodu właśnie takiego błędu. Embargo na handel miało trwać najpierw tylko 24 godziny, ale Binance przedłużył je z powodu „nieprzewidzianych opóźnień”.

Biorąc pod uwagę ogromną liczbę ataków, jakie giełdy kryptowalutowe doświadczyły w poprzednich latach, nie jest zaskoczeniem, że niektórzy użytkownicy podejrzliwe patrzyli na takie działania. Wielu wierzyło, że giełda została shakowana i że jej właściciele nie chcą tego publicznie przyznać. Obawy wzrosły znacznie, gdy nawet John McAfee włączył się do dyskusji, kreśląc czarny scenariusz.

W odpowiedzi na rosnący niepokój, dyrektor generalny Binance Zhao Chengpeng opublikował błąd w kodzie, nad którym pracowali. Jednocześnie obiecał aktualizować swoje konto w mediach społecznościowych co dwie godziny, dopóki problem nie zostanie rozwiązany. W końcu programiści skorygowali błąd bez utraty funduszy użytkowników.

Koszmar aktualizacji bitcoina

Podobnie jak w innych systemach, także kod w bitcoinie musi być od czasu do czasu aktualizowany. Te poprawki są niezbędne do utrzymania płynnego działania bockchaina. Kiedy jednak coś pójdzie nie tak z aktualizacją tak dużej sieci, może się stać katastrofa.

Doskonały przykład koszmaru aktualizacji bitcoina miał miejsce w marcu 2013 roku. Bitcoin miał planowaną aktualizację z wersji 0.7 do 0.8. Wersja 0.8 zwiększała rozmiar bloku bitcoina. Po zakończeniu aktualizacji zaczął się koszmar.

Deweloperzy zdali sobie sprawę, że aktualizacja sprawiła, iż sieć była niezgodną z aktualną wersją oprogramowania. To uaktualnienie podzieliło łańcuch na dwa osobne. Podział ten jest podobny do hard forka Bitcoin Cash, który nastąpił dużo, dużo później.

Fani bitcoina zaczęli informować programistów o problemach, które napotkali podczas aktualizacji oprogramowania. Ostatecznie społeczność zadecydowała, że najlepiej jest nacisnąć przycisk restartu raz jeszcze. Bitcoin powrócił do wersji 0.7, ale jak już pewnie wiesz, nie był to koniec debaty na temat wielkości bloku w sieci bitcoin.

Uważaj na błędy w oprogramowaniu krypto

Podczas gdy technologia blockchain pozwala nam ulepszać nasze obecne systemy, nie jest idealna. Te największe błędy w kodach kryptowalut podkreślają trudności, z jakimi borykają się dzisiejsi deweloperzy blockchaina. Większość użytkowników krypto nigdy nie zatrzyma się i nie pomyśli o tym, jaką inteligencją i wiedzą trzeba się wykazywać, by zostać programistą w tej sferze.

Teraz, gdy już przeczytałeś o błędach, których mógłbyś być świadkiem, na pewno bardziej docenisz sytuację, kiedy wszystko działa tak, jak powinno.

 


Oryginalny artykuł został opublikowany na CoinCentral.com.