Saturday, March 22, 2014

Transakcije (prvi dio)


Koristan alat za istraživanje transakcija je blockchain.


Pomoću transakcija troše se bitcoini te one tvore srž bitcoin protokola. Transakcije se referenciraju na jednu ili više prethodnih transakcija te prenose određeni iznos bitcoina s jednog vlasnika na drugog.
Slika 1: primjer bitcoin transakcija
 
Transakcija A šalje transakciji C 100 bitcoina (jedan ulaz transakcije C referencira se na izlaz transakcije A). Transakcija C generira 50 bitcoina (drugi ulaz transakcije C referencira se na transakciju B, coinbase transakciju, pomoću koje se generiraju novi bitcoini i dodjeljuju korisicima). U ovom trenutku transakcija C ima na raspolaganju 150 bitcoina, 100 preko transakcije A i 50 preko transakcije B. C transakcija šalje transakciji D 101 bitcoin. Budući da se iznos u transakciji mora potrošiti u cijelosti (kao novčanica) transakcija C ima dva izlaza. Jedan na koji se referencira transakcija D pomoću kojeg joj se dodjeljuje 101 bitcoin i drugi pomoću kojeg transakcija C dobiva nazad ostatak bitcoina (49).

Format transakcija

Transakcije (tx) su skupovi ulaza i izlaza. Ulazi i izlazi su podatkovne strukture koje osim podataka sadrže i instrukcije što napraviti s tim podacima. Transakcije su usko vezane uz script, bitcoinov skriptni jezik u kojem su pisane.
Općeniti format transakcije je:


Polje
Opis
Veličina
Version no.
Verzija protokola. Trenutačno 1.
4 bajta
In-counter
Broj ulaza. Pozitivni cijeli broj.
1-9 bajtova
List of inputs
Popis svih ulaza u transakciju. Prvi ulaz u prvu transakciju u bloku naziva se coinbase.
Broj ulaza
Out-counter
Broj izlaza. Pozitivni cijeli broj.
1-9 bajtova
List of outputs
Popis izlaza iz transakcije.
Broj izlaza
lock-time
Niz brojeva mnjih od 0xFFFFFFFF. Visina blokova ili vremenska oznaka kad se tx izvrši.
4 bajta

 

Pojednostavljeni primjer transakcije s jednim ulazom i jednim izlazom (sve adrese izražene su u heksadecimalnom formatu umjesto u Base58Check formatu). Ulaz ove transakcije prima 10 BTC-a iz izlaza broj 0 transakcije f5d8e... te ih zatim šalje na adresu 40437...

Ulaz:
Prethodna tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
Indeks: 0
scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501

Izlaz:
Vrijednost: 1000000000
ScriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFY OP_CHECKSIG

Ulaz

Ulaz se referencira na izlaz prethodne transakcije. Transakcije može imati jedan ili više ulaza. Prethodna tx je hash prethodne transakcije. Indeks je brojčana oznaka izlaza iz kojeg se uzimaju bitcoini. ScriptSig je bitcoin skripta koja prima dva parametra: potpis sadašnjeg vlasnika bitcoina i javni ključ (ne adresu) idućeg vlasnika te služi za verifikaciju.

Izlaz

Izlaz sadrži upute za slanje bitcoina. Vrijednost je iznos u satoshijima (stomilijuntim dijelovima bitcoina) koje ova transakcija prenosi. ScriptPubKey je bitcoin skripta koja za parametar prima adresu (ne javni ključ) idućeg vlasnika i služi za verifikaciju. Ako adresa s koje se šalje sadrži više bitcona nego što se želi poslati, cijeli se iznos s te adrese potroši pa se ostatak bitcoina vrati na nju. Na transakciju se može platit naknada onome tko prvi verificira blok u kojem se ona nalazi.

No comments:

Post a Comment