Skip to content

Bitcoin bagovi

Teško je pronaći mane u moru pozitivnih komentara i stavova. Kada se priča o kriptovalutama uglavnom se o njima priča kao nešto što je izuzetno sigurno. Kriptografski šifrovano i neprobojno.

Kao i svaki open source projekat u početku teško da može da prođe bez grešaka u kodu. Ili barem sitnica koje su mogle bolje da se iskodiraju/osmisle. Tako su se primera radi distribucije linuxa kroz vreme usavršavale. Problem kod kriptovaluta je to što poseduju blockchain i jednom kada krenete da pakujete blok po blok opcija za vraćanje unazad ne bi trebala da postoji.

Mogućnost za takozvani soft fork (upgrade koda bez razdvajanja blockchaina) postoji ali je u ovom slučaju to složeniji manevar. Upgrade decentralizovane mreže, u poređenju sa nekim build-om ili centralizovanom aplikacijom, zahteva mehanizam poštovanja konsenzusa. Više od 50% nodova u mreži mora da se složi sa pravilima.

Ovo je jedini način na koji se mogu srediti bagovi koji će se, sada već sigurno, desiti u budućnosti. Jedan od njih je takozvani timestamp bug:

Timestamp bug

Unix timestamp je ništa drugo nego reprezentacija vremena u jednom broju. Programeri su našli način da naprave standard po kome bi vreme od 1. Januara 1970. godine zapisali u jednom broju. Bitcoin block header sadrži u sebi timestamp kako bi označio vreme kreiranog bloka. Taj timestamp služi takođe da bi se težina rudarenja rekalkulisala posle 2016 blokova (oko 2 nedelje).

Timestamp je veličine od 4 bajta. 4 bajta su 32 bita a 32 bita mogu da sačuvaju broj između 0 i broja 232-1. Taj broj je 4.294.967.295. Ako se taj broj iz timestampa u budućnosti pretvori u vreme, vreme postaje dan u februaru 2106. godine. U tom trenutku više nije moguće inkrementovati (povećavati) taj broj jer deo Bitcoin zaglavlja (headera) ne može da sadrži timestamp veći od 4 bajta i taj broj se vraća na svoje prvobitno stanje a to su sve nule…

…vreme se vraća na 1. Januar 1970. godine i blockchain dolazi do velikog problema.

Rešenje za to je u vidu soft forka (promene Bitcoin core code-a) i forsiranje nodova na primenu durgačijeg konsenzusa. Postoji rešenje i za hard fork (pravljenje drugog blockchaina i drugog lanca), nešto kao Bitcoin Cash ili Bitcoin SV. Činjenica da ti hard forkovi već postoje a da nisu sredili ovaj tehnički bag pokazuje samo da ti forkovi nisu napravljeni radi poboljšanja Bitcoina nego da su tu postojali drugi motivi. Koliko god ovo delovalo kao problem tehničke prirode u tom trenutku će to delovati više kao sociološki problem.

Blok 2016 rekalkulacija

Kod promene težine rudarenja jednu ulogu igra gore pomenuti UNIX timestamp. Razlika u vremenu između ukupno 2016 blokova određuje da li će se težina rudarenja povećati ili olakšati u narednih 2016 blokova. Barem bi tako trebalo da bude…

…rekalkulacija se i obavlja u poslednjih 2016 blokova ali sa time što se poslednji, 2016. blok, ne uzima u kalkulisanje. Njegova vrednost se ne računa!

Bag je veoma čudan jer bi se u teoriji hash-ratio mogao podići prilikom poslednjeg bloka na duplo i rekalkulacija se ne bi promenila u sledećih 2016. blokova. To bi moglo da utiče na double-spend problem koji je objašnjen u belom papiru. Međutim u praksi je gotovo nemoguće izvesti takav poduhvat na globalnom nivou jer je trenutno hash-ratio izuzetno veliki.

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *