5.Blockchain klijenti i rad s podatcima
Blockchain Klijenti
Opis
Blockchain klijent je korisnički softver za:
Generiranje privatnih ključeva
Interakciju s blockchain mrežom
Značajke
Klijenti se razlikuju po mogućnostima, ali općenito omogućuju:
Generiranje privatnih ključeva i pripadajućih adresa
Prikaz stanja tokena uz adresu
Slanje transakcija u mrežu
Instalacijom klijenta, uređaj postaje full ili light node.
Klijenti bazirani na Bitcoin klijentu
Funkcionalnosti
Omogućuju slanje RPC poziva prema blockchainu za interakciju s mrežom.
Interakcija može biti s:
Glavnom mrežom
Testnom mrežom (ukoliko postoji za određeni blockchain)
Sinkronizacija
Nakon instalacije full node klijenta:
Sinkronizacija s mrežom preuzima podatke o drugim čvorovima i blokovima.
Sinkronizacija može zahtijevati više stotina GB podataka i traje satima.
Upravljačke funkcije klijenta
U radu
Dok je klijent aktivan, preuzima nove blokove i sinkroniziran je s mrežom.
Ako se klijent ugasi, pohranjuje stanje mreže u trenutku gašenja:
Pri ponovnom pokretanju potrebno je preuzeti nove podatke nastale u međuvremenu kako bi se vidjelo aktualno stanje adrese.
Bez sinkronizacije nije moguće slati transakcije.
Instalacija Bitcoin Klijenta
Preuzimanje
Full node klijent za Bitcoin preuzima se s bitcoin.org i dostupan je za većinu relevantnih okruženja.
Mape datoteka
Tijekom instalacije bitcoin-qt (Bitcoin Core) stvaraju se:
Podatkovna mapa: sadrži podatke samog blockchain, lokacija se može odabrati pri instalaciji, po defaultu u korisničkom profilu.
Instalacijska mapa: sadrži izvršne datoteke za pokretanje klijenta.
Interfejs Klijenta
GUI i CLI
Wallet ima:
GUI (grafičko) sučelje
CLI (naredbeni redak) sučelje
Funkcionalnost CLI
Omogućava poziv raznih metoda i pristup dodatnim informacijama.
Koristi REST ili RPC API za pozivanje metoda i dohvat podataka.
Programski pristup blockchainu
RPC API
Moguće programski pristupati blockchainu, dohvaćati i upisivati podatke:
Informacije o sudionicima i stanju blockchaina.
RPC API može se pozivati unutar GUI-a putem konzole bitcoin-qta.
Pokretanje bez GUI-a
Moguće pokrenuti bitcoind.exe bez pokretanja GUI klijenta, omogućujući RPC API.
Pristup putem programskih jezika koji imaju podršku za bitcoind RPC server.
Testna Mreža - Testnet
Uzorak i funkcionalnost
Većina blockchainova nudi testne mreže za testiranje funkcionalnosti.
Glavna mreža se naziva mainnet.
Sadržaj testnet mape gotovo je identičan mainnet mapi.
Mapa podataka testnet
Mape blocks i chainstate sadrže sve podatkovne blokove i informacije o blockchainu.
Veličina testnet lanca može biti oko 90GB, a vrijeme preuzimanja otprilike 15 sati.
Pokretanje Klijenta na Testnetu
Metode
Testnet i mainnet se pristupa iz istog klijenta:
Moguće pokrenuti klijentsku aplikaciju s –testnet parametrom.
Alternativno, dodanjem datoteke bitcoin.conf u podatkovnu mapu s linijom testnet=1.
Faucet
Funkcionalnosti
Faucet web servisi omogućuju nabavu male količine tokena, obično za testnet.
Bitcoin ima nekoliko fauceta za nabavu tBTC tokena, koji nemaju vrijednost u mainnet mreži.
Transakcije u Wallet
Proces
Da bismo poslali transakciju iz fauceta, nabavimo adresu iz svog walleta i koristimo je u faucetu kao odredište.
Preporučuje se stvaranje nove adrese za svaku transakciju, ali je moguće koristiti i postojeće.
Status transakcije
Transakcija ostaje u statusu pending sve dok nije uključena u blok na blockchainu. Nakon postizanja potrebnog broja potvrda (npr. 6 za bitcoine), korisnik može raspolagati iznosom.
Transakcije - Inputs i Outputs
Bitne komponente
Svaka transakcija sastoji se od inputa i outputa:
Input: informacija s koje adrese je uzet iznos.
Output: adresa na koju je iznos poslan.
UTXO (Unspent Transaction Output) može se koristiti kao input za buduće transakcije.
Upis Podataka na Blockchain
Proces
Upis podataka zahtijeva stvaranje transakcije koristeći četiri važne metode:
createrawtransaction: stvara transakciju.
fundrawtransaction: dodaje potrebne inpute.
signrawtransactionwithwallet: potpisuje transakciju privatnim ključem iz walleta.
sendrawtransaction: objavljuje transakciju mreži.
Primjer
U postupku upisa, trebaju se dostaviti ispravni txid, amount, i dodavati inpute gdje je potrebno.