Sunday, November 1, 2015

Vrste potpisa bitcoin transakcija


Bitcoin transakcije sastoje se od ulaza i izlaza. Ulazi sadrže reference na izlaze prethodnih transakcija koji su pod kontrolom korisnika te skripte za svaki ulaz koje omogućuju trošenje sredstava s prethodnih transakcija. Izlazi šalju vrijednosti iz trenutačne transakcije na adrese drugih korisnika.
Kada se bitcoin transakcija potpisuje, moguće je potpisati razne kombinacije ulaza i izlaza. Postoje tri moguće vrste potpisa, tzv. sighash_all, sighash_none te sighash_single. Uz to, uz svaki od tri tipa može ići dodatan modifikator anyonecanpay.

SIGHASH_ALL


Sighash_all najčešća je vrsta potpisa kod koje se potpisuju svi ulazi i izlazi iz transakcije. Ovaj način potpisivanja štiti cijelu transakciju od mogućih promjena.

SIGHASH_NONE


Ovaj način potpisivanja transakcije potpisuje sve ulaze, ali niti jedan izlaz što omogućuje bilokome da odredi kuda će se poslati satoshiji iz transakcije.

SIGHASH_SINGLE


Kod ovakvog se načina potpisivanja potpisuje se točno jedan izlaz čiji indeks odgovara ulazu specificiranom parametrom. Dakle, potpisuje se samo jedan ulaz i izlaz. Ostali se izlazi potpisuju samo djelomično (može im se promijeniti broj u nizu, engl. Sequence number). Takva transakcija omogućue drugim korisnicima da dodaju vlastite izlaze u nju.


Ovaj tip potpisa ne bi smio imati više ulaza nego izlaza, no Bitcoin protokol to ne zabranjuje. Ako se specificira ulaz koji nema pripadajući izlaz, nepostojećem će se izlazu pridijeliti hash 0x01.

SIGHASH_ANYONECANPAY

Ovaj modifikator znači da se potpisuje samo ulaz specificiran parametrom. Ostali korisnici mogu dodavati ulaze po želji.


To daje još tri mogućnosti potpisivanja transakcija.

SIGHASH_ALL SIGHASH_ANYONECANPAY


Potpisuje sve izlaze i samo jedan ulaz. Ovo omogućuje bilo kome da doda još ulaza u transakciju no ostali ne mogu promijeniti koliko će se satoshija poslati i na koju adresu.

SIGHASH_NONE SIGHASH_ANYONECANPAY


Potpisuje samo jedan ulaz te niti jedan od izlaza. Omogućuje ostalima da dodaju ulaze i izlaze po želji, odnosno da potroše transakciju kako žele.

SIGHASH_SINGLE SIGHASH_ANYONECANPAY

 Potpisuje samo jedan ulazi i izlaz. Ostalima omogućuje proizvoljno dodavanje ulaza i izlaza.