
Šta je heš?
Šta je heš, zašto jedan promenjen znak daje sasvim drugi otisak i kako heševi drže Bitcoin na okupu.
Sadržaj
Najvažnije u nekoliko reči:
- Heš je kratak otisak podataka, uvek iste dužine, koji heš funkcija pravi iz bilo kog ulaza.
- Najmanja promena ulaza daje sasvim drugi heš, a iz heša ne može da se izračuna ulaz.
- Bitcoin koristi heš funkciju SHA-256, koja je i danas važeći standard i smatra se bezbednom.
- Heš funkcije čuvaju integritet i nepromenljivost Bitcoina. One vezuju blokove u lanac i daju posao rudarima.
Pre nego što nastaviš, korisno je da pročitaš tekst Kriptografija i Bitcoin: temelj digitalne bezbednosti. Heš funkcije dolaze iz kriptografije, pa će ti ovaj tekst biti lakši.
Heš je otisak prsta za podatke
Svako ko se bavi Bitcoinom pre ili kasnije naiđe na reči „heš“ i „brzina heširanja“ (engl. hashrate). Brzina heširanja je broj heševa koje cela mreža izračuna u sekundi. Oba pojma počinju od iste stvari, heš funkcije.
Reč „heš“ dolazi od engleskog glagola to hash, što znači „usitniti“ ili „iseckati“. Ideja je da se podaci iseckaju i izmešaju, pa da od njih nastane nešto novo. Heš funkcija upravo to radi. Uzima podatke bilo koje veličine i od njih pravi kratak izlaz, uvek iste dužine. Taj izlaz se zove heš i zapisuje se kao niz znakova.
Heš liči na otisak prsta. Po otisku prepoznaješ čoveka, ali iz otiska ne možeš da napraviš čoveka.
Heš se lako računa, a unazad ne može
U kriptografiji se heš funkcija opisuje kao jednosmerna funkcija. Podatak se lako pretvara u heš, ali je praktično nemoguće obrnuto, iz heša vratiti originalni tekst. Američki institut za standarde NIST u standardu FIPS 180-4 za SHA-256 kaže da je računski neizvodljivo naći poruku koja daje zadati heš.
Ceo Bitcoin whitepaper, PDF od 9 strana, kroz heš funkciju SHA-256 daje heš od 64 znaka. Tri skoro iste reči daju heševe iste dužine, ali potpuno drugačije.
Jedan znak razlike, sasvim drugi heš
Heš funkcija SHA-256. Svaki heš ima 64 znaka, bilo da je ulaz jedna reč ili ceo dokument.
„zdravo“polazna reč
e2eb6f836eebd207c1ff8a75fb6dfbb7798f3f6325e3452ef49e20d6e9d67208
„Zdravo“prvo slovo veliko
11a3522b00aeb041146fbd98a3054023d8cb29d48a033a7a19b27ae04b9b6c37
„zdravo!“jedan znak više
7ff6b7bf9e1c637aacab672322091b3becb52153c220397286572e0e80a03ac5
Ceo whitepaperPDF od 9 strana i 184.292 bajta
b1674191a88ec5cdd733e4240a81803105dc412d6c6708d53ab94fc248f4f553
Izvori: NIST, FIPS 180-4 (otvara se u novom prozoru), 2015, heš funkcija SHA-256, izlaz od 256 bita; Satoshi Nakamoto, „Bitcoin: A Peer-to-Peer Electronic Cash System“ (otvara se u novom prozoru), fajl preuzet 21.10.2026, heš celog fajla.
Heširaj svoj tekst
Upiši bilo šta. Heš se računa ovde, u tvom pregledaču.
85ff75e19546133fa674bea1d63e7b16d530e0bf89bc9a84dc0cde89c3ec0d85
Izvor: NIST, FIPS 180-4 (otvara se u novom prozoru), 2015, heš funkcija SHA-256, izlaz od 256 bita.
Bez obzira na to da li je ulaz dug ili kratak, da li koristimo veliko ili malo slovo, ili dodamo samo jedan znak, heš će uvek izgledati potpuno drugačije. Istovremeno, rezultat je uvek iste dužine. Kod SHA-256 to je 256 bita, zapisanih kao 64 znaka od 0 do 9 i od a do f.
Pokušaj da se iz heša obrnutim postupkom izračuna original praktično je nemoguć. Jedini put je pogađanje, ulaz po ulaz, a za to bi trebalo neizmerno mnogo vremena i računara.
Kad dva ulaza imaju isti heš, funkcija je probijena
Mogućih ulaza ima neuporedivo više nego heševa od 64 znaka. Zato sigurno postoje dva različita ulaza sa istim hešom. To se zove kolizija (engl. hash collision). Dobra heš funkcija nije ona bez kolizija, nego ona kod koje niko ne ume da ih nađe.
Ako neko ipak pronađe koliziju, heš funkcija se smatra probijenom i nebezbednom za upotrebu. Kod heš funkcija koje koristi Bitcoin to bi bio ozbiljan problem, jer bi dva različita zapisa imala isti otisak.
SHA-1 je probijena, SHA-256 i dalje stoji
Među najčešće korišćenim heš funkcijama je porodica SHA-2 (od engl. Secure Hash Algorithm, bezbedan heš algoritam). Starija funkcija SHA-1 danas se smatra nebezbednom. Prvu koliziju za nju objavili su 23. februara 2017. istraživači instituta CWI iz Amsterdama i Google-a, a NIST je 2022. odlučio da se SHA-1 potpuno napusti do kraja 2030.
Najpoznatija funkcija iz porodice SHA-2 je SHA-256, a u istu porodicu spadaju i SHA-224, SHA-384 i SHA-512 (FIPS 180-4). Broj iza naziva označava dužinu heša u bitovima.
SHA-256 se i dalje smatra bezbednom. Da bi se za zadati heš pogodio ulaz, u proseku bi trebalo oko 2²⁵⁶ pokušaja. Za bilo koju koliziju dovoljno je manje, oko 2¹²⁸ pokušaja (NIST SP 800-107, tabela 1), ali i to je broj sa 39 cifara. Cela Bitcoin mreža je 21.10.2026. računala oko 1,05 · 10²¹ heševa u sekundi. Kad bi radila samo to, za 2¹²⁸ pokušaja trebalo bi joj oko 10 milijardi godina.
Dobro je znati: pogađanje ulaz po ulaz zove se napad grubom silom (engl. brute force). Isto se tako probijaju i slabe lozinke.
Pet osobina koje heš funkciju čine bezbednom
Da bi se heš funkcija smatrala kriptografski bezbednom, mora da ima pet osobina:
- Determinističnost. Isti ulaz uvek daje isti izlaz.
- Efikasnost. Funkcija mora da bude brza i laka za računanje.
- Lavinski efekat. I najmanja promena ulaza mora da proizvede potpuno drugačiji izlaz.
- Jednosmernost. Iz heša praktično ne može da se izračuna ulaz.
- Otpornost na kolizije. Ne sme biti realno moguće naći dva različita ulaza sa istim hešom.
Heševi drže Bitcoin na okupu
Satoshi Nakamoto je lanac opisao još u whitepaperu. Svaki vremenski žig nosi heš prethodnog, pa tako nastaje lanac u kome svaki nov žig pojačava sve pre sebe (original, str. 2).
U Bitcoinu je to lanac blokova. Zaglavlje bloka ima šest polja u 80 bajtova. Jedno od njih je heš prethodnog bloka. Heš celog zaglavlja Bitcoin računa dva puta zaredom heš funkcijom SHA-256 (Bitcoin Core). Ovako to izgleda na prvom bloku.
Kako nastaje heš bloka
Stvarno zaglavlje bloka 0, šest polja u 80 bajtova, i heš koji iz njega izlazi.
Zaglavlje bloka 0
- Verzija
- 1
- Heš prethodnog bloka
- 64 nule, jer pre bloka 0 nije bilo nijednog
- Merklov koren
- 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
- Vreme
- 03.01.2009. u 18:15:05
- Težina (cilj)
- 0x1d00ffff
- Nonce
- 2.083.236.893
SHA-256, pa još jednom SHA-256nazad ne može
Heš bloka 0
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
Počinje sa 10 nula, pa ga je mreža prihvatila. Blok 1 nosi baš ovaj heš kao heš prethodnog bloka.
Isto zaglavlje, nonce veći za 1
9b227a4a5daa0cbae6874144bc5d7797d0513e320aceadeb3b06304971a41b1c
Nijedna nula na početku. Takav blok mreža ne bi prihvatila.
Izvori: mempool.space, blok 0 (otvara se u novom prozoru), otvoreno 19.10.2026, polja zaglavlja i heš bloka; Bitcoin Core, src/primitives/block.cpp i src/hash.h (otvara se u novom prozoru), otvoreno 21.10.2026, heš zaglavlja je dvostruki SHA-256 (HashWriter). Vreme je po svetskom vremenu (UTC). Blok eksploreri heš ispisuju sa bajtovima obrnutim redom, pa nule stoje na početku.
Jedno polje zaglavlja je i Merklov koren, jedan heš koji sažima sve transakcije u bloku. Transakcije se heširaju u parovima, pa se ti heševi opet heširaju u parovima, sve dok ne ostane jedan. Takvo stablo heševa zove se Merklovo stablo (odeljak 7 whitepapera). Promena jedne transakcije menja Merklov koren, pa i heš bloka.
Merklovo stablo od četiri transakcije
Odozdo naviše: svaki par heševa daje jedan nov heš, dok ne ostane jedan.
Sliku možeš da pomeraš levo-desno.
Izvor: Satoshi Nakamoto, Bitcoin: A Peer-to-Peer Electronic Cash System (otvara se u novom prozoru), 31.10.2008, Merklovo stablo, odeljak 7. Promena bilo koje transakcije menja njen heš, pa i sve heševe iznad nje, do korena.
Heš pravi i adresu od javnog ključa, kao na šemi u tekstu o kriptografiji.
Rudari traže heš koji počinje nulama
U Bitcoin mreži heš funkcije imaju glavnu ulogu i u rudarenju (engl. mining), poslu kojim se dodaje nov blok i za koji rudar dobija nagradu. Rudari traže heš bloka koji ispunjava unapred zadat uslov. Whitepaper taj uslov opisuje kao heš, na primer SHA-256, koji počinje određenim brojem nula (str. 3).
Dobro je znati: težina (engl. difficulty) određuje koliko strog uslov heš mora da ispuni da bi blok bio ispravan. Mreža je menja na svakih 2.016 blokova, tako da nov blok u proseku stiže na oko 10 minuta, bez obzira na ukupnu računarsku snagu u mreži (Bitcoin Core).
Rudarenje se svodi na neprestano isprobavanje različitih ulaznih vrednosti dok se ne pronađe odgovarajući heš. Rudar menja nonce, broj u zaglavlju, i svaki put računa nov heš. Heš bloka 0 počinje sa 10 nula, a heš bloka 972.139 iz oktobra 2026. sa 19 (mempool.space).
Nule na početku heša, 2009. i 2026.
Dva stvarna heša bloka, svaki od 64 znaka. Što je uslov stroži, to više nula mora da stoji na početku.
Blok 0, 3.1.2009.10 nula
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
Blok 972.139, 19.10.2026.19 nula
000000000000000000016d2d8ad770e7dbc44366a236ea329d35769c454137aa
Izvori: mempool.space, blok 0 (otvara se u novom prozoru), otvoreno 3.11.2026, heš bloka; mempool.space, blok 972.139 (otvara se u novom prozoru), otvoreno 3.11.2026, heš bloka.
Ovaj posao mogu da rade i procesor (CPU) i grafička karta (GPU), ali postoje i specijalizovani uređaji, ASIC rudari, čipovi napravljeni samo za računanje SHA-256, koji su u tome daleko efikasniji.
Heš funkcije pred izazovima budućnosti
Kvantni računari se pominju i kao moguća pretnja za SHA-256. Po NIST-u, kvantni računar bi heš funkcije poput SHA-256 mogao da napadne Groverovim algoritmom, ali mnogo slabije nego potpise, koje bi potpuno probio. Uz to, Bitcoin protokol može da se razvija i prilagođava novim tehnologijama, kao što je to već radio izmenama SegWit 2017. (BIP 141) i Taproot 2021. (BIP 341).
Heš funkcije su temelj Bitcoina. Bez njih ne bi bilo lanca blokova ni rudarenja. Ko razume heš, razume zašto se upisano u Bitcoin ne može tiho prepraviti.
Šta dalje?
Heš od javnog ključa pravi adresu, a javni ključ nastaje iz privatnog. Šta su ta dva ključa i kako se čuvaju, čitaš u sledećem tekstu, Privatni i javni ključevi: od fraze za oporavak do adrese.
Jedan znak razlike daje sasvim drugi otisak. Zato svako može sam da proveri Bitcoin i niko ne mora nikome da veruje na reč.
- Šta je heš?
Tekst 3 od 14
