Rudarenje (engleski: mining) je proces upisivanja nepotvrđenih transakcija u blok-lanac.
U bitcoin mreži postoje dva osnovna tipa programa: novčanici i rudari. Novčanici kreiraju nove nepotvrđene transakcije i šalju ih u mrežu. Rudari preuzimaju te nove transakcije, formiraju ih u blokove i dodaju u blok-lanac. Kad rudar doda blok u blok-lanac, tada sve transakcije u tom bloku postaju potvrđene, a rudar za nagradu dobiva određeni broj novih bitcoina.
Transakcije se upisuju blok-lanac tako da rudar prikupi određeni broj nepotvrđenih transakcija, posloži ih u blok, izračuna kriptografski sažetak i zatim objavi da je dodao novi blok u blok-lanac.
Bitcoin sustav je dizajniran tako da se novi blok upiše u blok-lanac svakih 10 minuta. To se postiže na način da se regulira težina izračuna kriptografskog sažetka.
Rudari su za svoj trud nagrađeni tako da rudar dobije određeni broj novih bitcoina za svaki uspješno iskopani blok (trenutno je to 6,25 BTC). To je ujedno i način na koji se novi bitcoini dodaju u sustav.
Pojasnimo na pojednostavljenom primjeru. Pretpostavimo da najnoviji blok u blok-lancu ima oznaku 1234, da transakcije 341 i 568 koje rudar pokužava dodati u blok-lanac glase “A poslao B 1,3 BTC” i “C poslao D 2,7 BTC”, te da rudar posjeduje adresu E. Rudar slaže blok koji glasi “341: A poslao B 1,3 BTC; 568: C poslao D 2,7 BTC; prethodni blok: 1234; moja adresa: E; brojac: 0” i taj blok pokušava dodati u blok-lanac. Pretpostavimo da je (u ovom pojednostavljenom primjeru) blok dodan u blok-lanac kad rudar pronađe SHA256 kriptografski sažetak koji počinje sa dvije nule za redom. Rudar zatim računa SHA256 sažetak svog bloka i dobiva rezultat cfb0ba0a3d1a7d2b9b49d1c1588f03ac18563918b4bf9397b93948741ba6023b (pokušajte sami). Rudar u prvom koraku nije uspio potvrditi blok jer sažetak poruke počinje sa c, a ne sa 0. Rudar zatim brojač postavlja na 1 i računa sažetak za blok koji glasi “341: A poslao B 1,3 BTC; 568: C poslao D 2,7 BTC; prethodni blok: 1234; moja adresa: E; brojac: 1”. SHA256 sažetak ove je 8eb136c3c2eaf0d3425c80cf86436c985594b4d9c0654b8a7b1d6961168a7db7, i također ne počinje sa nulom, dakle rudar niti u drugom koraku nije uspio potvrditi blok i on opet podiže brojač za 1 i ponavlja isti proces dok ne dobije sažetak poruke koji počinje sa “00”.
Recimo da je nakon 9 minuta računanja složio blok koji glasi “341: A poslao B 1,3 BTC; 568: C poslao D 2,7 BTC; prethodni blok: 1234; moja adresa: E; brojac: 62”. Ovaj blok ima SHA256 sažetak jednak 002524bfe154d61fc278a6bca8bffc0cf3c4ebbc6645465c155bdd20512e797a (opet, pokušajte sami), dakle prva dva znaka su “00”. Rudar sada javlja svim ostalim članovima mreže (novčanicima i rudarima) da ima novi blok za blok-lanac. Označimo taj blok sa “2524” (2.-5. znak SHA256 sažetka). Svi ostali članovi mreže pregledaju njegov blok, te i sami izračunaju kriptografski sažetak bloka, potvrde da blok zbilja ima sažetak koji počinje sa dvije nule za redom i dodaju taj blok u svoju kopiju blok-lanca. Time transakcije 341 i 568 postaju potvrđene.
U trenutku kad je novi blok koji glasi “341: A poslao B 1,3 BTC; 568: C poslao D 2,7 BTC; prethodni blok: 1234; moja adresa: E; brojac: 62” upisan u blok-lanac, tada cijela bitcoin mreža prihvaća sljedeće podatke:
- 1,3 BTC je poslano sa adrese A na adresu B
- 2,7 BTC je poslano sa adrese C na adresu D
- novih 6,25 BTC je poslano na adresu E
- najnoviji blok u blok-lancu više nije 1234 nego 2524
No, naš rudar nije jedini koji je u tih 10 minuta pokušavao dodati novi blok u blok-lanac. Dok je on rudario, rudarili su i drugi, ali su bili sporiji od njega i nisu uspjeli završiti svoj posao prije našeg rudara. Oni će sada morati odustati od svojih blokova na kojima su radili, jer njihovi blokovi imaju u sebi podatak “prethodni blok: 1234”, a to više nije točan podatak. Morat će složiti novi blok koji će imati “prethodni blok: 2524” i koji neće sadržavati transakcije 341 i 568 koje su potvrđene u bloku 2524, te zatim krenuti ispočetka.
Osim ovdje opisanog pojednostavljenog algoritma, bitcoin protokol ima još neke mehanizme koji definiraju rudarenje, a to su:
- težina izračuna kriptografskog sažetka se ponovno preračunava svakih 2 tjedna
- uz transakcije je moguće uključiti i transakcijsku proviziju
- nagrada za rudara (trenutno 6,25 BTC) se periodički smanjuje
- rudar se može udružiti sa više rudara kako bi zajednički pokušavali potvrditi isti blok