Potvrda

potvrđivanje blokaPotvrda transakcije (engleski: confirmation) je unošenje transakcije u blok-lanac. Kad novčanik kreira novu transakciju, ona nije u blok-lancu – ona je “nepotvrđena”. Kada rudar blok sa tom transakcijom doda u blok-lanac, ona postaje “potvrđena” – ima jednu potvrdu. Kako ostali rudari dodaju dodatne blokove u blok lanac, tako ta transakcija dobiva dodatne potvrde. Transakcija je za većinu sustava valjana nakon 3 potvrde.

Kad novčanik kreira novu transakciju, ona je ne postoji u blok-lancu – ta transakcija je nepotvrđena. Novčanik tu transakciju javi svim drugim novčanicima s kojima je povezan, koji informaciju o toj transakciji šire dalje kroz mrežu. Osim novčanika, u bitcoin mreži nalaze se i rudari, čija je zadaća potvrđivanje transakcija – kreiranje blokova transakcija i unošenje tih blokova u blok-lanac.

stvaranje blokaRudar unosi transakcije u blok-lanac tako da odabere određeni broj nepotvrđenih transakcija, stvori novi blok koji sadrži sve te transakcije i proslijedi taj novi blok svim ostalim članovima mreže (novčanicima i rudarima). Sve transakcije u tom bloku postaju “potvrđene” i za njih kažemo da imaju jednu potvrdu.

Za stvaranje novog bloka potrebno je obaviti određenu količinu posla koja osigurava da se novi blok u lancu pojavljuje otprilike svakih 10 minuta. U trenutku kada neki rudar doda novi blok na kraj blok-lanca, svi ostali rudari koji su već zaposleni stvaranjem novog bloka prestaju raditi na stvaranju bloka koji su do tada stvarali. Oni zatim ponovno odabiru nove nepotvrđene transakcije i kreću u stvaranje novog bloka.

Dakle, nova nepotvrđena transakcija prvo čeka da netko od rudara stvori novi blok, što traje između 0 i cca 10 minuta, ovisno koliko je prošlo od stvaranja zadnjeg bloka u lancu. Nakon što je novi blok stvoren, tada svi rudari ponovno biraju nepotvrđene transakcije koje će dodati u novi blok i kreću sa stvaranjem slijedećeg bloka. Naša nova nepotvrđena transakcija vrlo vjerojatno će se naći u tom sljedećem bloku i tako dobiti svoju “prvu potvrdu”.

sirenje nepotvrdjene transakcijeDakle, vrijeme potrebno za završavanje bloka koji je bio u procesu stvaranja kad je transakcija kreirana je između 0 i 10 minuta. Vrijeme potrebno za kreiranje prvog sljedećeg bloka, bloka koji će sadržavati našu novu transakciju je otprilike 10 minuta. Dakle, vrijeme od kreiranja nove transakcije, pa do njene prve potvrde je između 10 i 20 minuta.

U teoriji je moguće da se neki blok ispadne iz blok lanca tako što neki rudar uspije stvoriti nekoliko novih blokova za redom brže od ostatka mreže i pritom “zaobiđe” neki blok. Ovaj događaj je malo vjerojatan, ali moguć. Ovakvom napadu su izloženi samo najnoviji blokovi u blok-lancu. Stoga neki servisi transakciju prihvaćaju kao valjanu tek kad blok u kojem se ta transakcija nalazi više nije najnoviji blok, već se u lancu iza njega nalazi još nekoliko blokova. Broj blokova koji se nalaze u blok-lancu iza bloka u kojem je transakcija se naziva “broj potvrda”.

Primjerice, recimo da blok-lanac ima 234 bloka i da je blok 235 u procesu stvaranja. U tom trenutku mi stvorimo novu transakciju T. Transakcije koje će biti dodane u blok 235 su već odabrane, stoga prvo pričekamo da u blok-lanac bude dodan blok 235. Kad je blok 235 dodan u lanac, zatim kreće stvaranje bloka 236 u kojem će se nalaziti i naša transakcija T. Kad blok 236 bude dodan u blok-lanac, kažemo da je transakcija T “potvrđena”. Također kažemo da transakcija T ima “jednu potvrdu” jer se nalazi u prvom bloku od kraja lanca.

Za većinu korisnika bitcoin protokola, jedna potvrda je sasvim dovoljna da bi transakcija bila prihvaćena. No, neki sustavi zahtijevaju veću razinu sigurnosti i traže više potvrda prije nego transakciju prihvate kao valjanu.

blok chainKada je blok 236 dodan u blok-lanac, taj blok je najnoviji i kreće stvaranje bloka 237. Nakon što je blok 237 dodan u blok-lanac, tada se transakcija T nalazi u drugom bloku od kraja lanca i kažemo da ima “dvije potvrde”. Kad u blok-lanac bude dodan blok 238, tada ćemo reći da transakcija T ima “tri potvrde”, i tako dalje.

Obzirom da stvaranje bloka traje otprilike 10 minuta, onda i dobivanje svake sljedeće potvrde traje otprilike 10 minuta. Prethodno smo izračunali da je vrijeme do prve potvrde između 10 i 20 minuta. Dakle, vrijeme do druge potvrde je 20-30 minuta, vrijeme do treće potvrde je 30-40 minuta i tako dalje.

Većina sustava smatra da je transakcija valjana kada ima tri potvrde, dakle nakon 30-40 minuta. Najsigurniji sustavi koji se štite i od najmanje vjerojatnih napada na blok-lanac smatraju da je transakcija valjana kada ima šest potvrda, dakle nakon 60-70 minuta.

Važno je ponovno napomenuti da je za veliku većinu korisnika bitcoin protokola sasvim dovoljna jedna potvrda da se transakcija smatra valjanom (dakle, 10-20 minuta čekanja). U povijesti bitcoin protokola nije bilo primjera u kojem transakcija koja je dobila prvu potvrdu nije dobila drugu ili treću ili neku narednu potvrdu. Inzistiranje na trećoj ili šestoj potvrdi ima smisla za institucije kao što su bitcoin burze i bitcoin trgovine koje barataju velikom količinom bitcoina. Za sve ostale korisnike zahtijevanje više od jedne potvrde nema praktičnog smisla.