Što je UBIKchain?
UBIK stremi postati bitan faktor razvoja blockchain tehnologije i kriptovaluta u Hrvatskoj i regiji. Da bismo to zaista bili smatramo da treba voditi primjerom. Upravo iz tog razloga odlučili smo pokrenuti internu inicijativu korištenja blockchain tehnologije za upravljanje udrugom. Postojalo je nekoliko prijašnjih inicijativa (Lisinski mreža) kada smo nominirali te izabrali novi upravni odbor UBIK-a glasanjem putem blockchaina, te UBIKchain smatramo logičkim nastavkom.
UBIKchain je blockchain koji će UBIK koristiti kao glasačku infrastrukturu oko: financija udruge, podržavanja i organizacije eventova, izbor Upravnog Odbora i drugo. Cilj je dogfooding, tj. korištenje tehnologije koju sami zagovaramo kao udruga, kao i transparentnost prema članovima i široj javnosti.
Osim glasanja i transparentnosti cilj je korisititi UBIKchain i kao reputacijski mehanizam, te se oslanjamo da će članstvo UBIK-a aktivno doprinijeti ne samo kroz korištenje nego i prijedloge nadogradnje odnosno poboljšanja i slično.
UBIKchain je blockchain baziran na Substrate frameworku.
Video verzija ovog uvoda dostupna je ovdje.
Što je Substrate?
Video uvod u Substrate na HR jeziku je dostupan ovdje
Substrate je podloga za izgradnju blockchaina koja dolazi s bazom podataka, tx queue-om, konsenzusom, produkcijom blokova, i mrežnim povezivanjem node-ova. Također dolazi s vlastitim ekosustavom modula (budući da je Substrate građen u Rust jeziku, moduli su zapravo Cargo crate paketi) po imenu FRAME, koji sadrži pallets, individualne module veoma specifičnih i izoliranih mogućnosti. U daljnjem tekstu nazivamo ih modulima.
Ti moduli čine osnovu plug and play sustava na kojem je moguća gradnja vlasitog blockchaina u Substrate-u: Substrate je podloga, a moduli se jednostavno dodaju na podlogu kako bi se dobio blockchain po želji.
Moduli
UBIKchain sadrži sljedeće module:
Balances
za nativnu valutu lanca (UBIK) i praćenje stanja računa
Identity
za registraciju identiteta na lancu
Vesting
za postupno otpuštanje iznosa na neki račun
Utility
za grupirane transackije (batch
)
Treasury
za kolekciju feejeva i glasanje oko dodjela glasovne moći (UBIK tokena) određenim članovima
Aura
za sekvencijalnu proizvodnju blokova po PoA metodi
Collective
+ Democracy
za Upravni Odbor (Council)
Polls
za glasanje o temama
Slijede detaljnjija objašnjenja uključenih modula.
Balances
Modul koji dolazi s Substrate frameworkom i omogućuje praćenje stanja računa, osnovne funkcije potrebne za funkcioniranje kriptovaluta poput slanja i primanja, itd.
UBIK tokeni su nativna valuta UBIKchaina, te predstavljaju financijsku i []glasovnu moć](#democracy) članova.
Utility
Utility modul dodan je da bi bilo moguće slati više transakcija istovremeno (u batchu). Jedan batch
poziv može sadržavati više poziva na druge module.
Npr. slanje UBIK tokena iz blagajne na lancu (Treasury) na više destinacija - praktični primjer korištenja je mjesečna evaluacija aktivnosti članova i nagrađivanje istih u jednom pozivu. Svaka se transakcija u batchu svejedno izvršava posebno, ali jedan poziv je dovoljan da ih se sve izvrši automatski.
Vesting
Vesting omogućava postepeno slanje UBIK tokena.
Npr., novi član se pridruži udruzi, i za godišnju uplatu garantira mu se 100 UBIK tokena (iznos nije finalan) tokom te godine. Vestano slanje od godinu dana omogućava da taj član ima više glasovne moći čim je dulje u udruzi, te da pri kraju svog članstva ima najviše glasovne moći, što bi člana moglo ohrabriti da obnovi članstvo za novih 100 UBIKa koji se otpuštaju dodatnih godinu dana.
Identity
Omogućuje registraciju podataka iz stvarnog svijeta (ime, mail, social media profili) i povezivanje istih s on-chain računom. Pomaže pri identifikaciji aktora i slanju sredstava. Svaki član biti će primoran registrirati svoj identitet na lancu, a registrar (entitet koji validira identitete) će biti sam Upravni Odbor. Nakon validacije, kraj računa se pojavljuje zelena kvačica koja nestaje u slučaju promjene bilo kojeg polja u identitetu, i validacija od strane registrara se mora ponoviti.
Registrar može verificirati više članova odjednom koristeći batch
iz Utility.
Treasury
Svaka interakcija s lancem ima cijenu koja varira ovisno o težini interakcije (veličina u bajtovima + kompleksnost egzekucije u CPU ciklusima). Taj se trošak (tx fee) plaća bez obzira na to je li transackija bila uspješna ili ne. Tx fee se šalje u Blagajnu (Treasury).
Jednom mjesečno, UO će pokrenuti postupak mintanja novih UBIK tokena u određenoj visini (npr 10 * broj članova - iznos nije finalan). Taj iznos i iznos skupljenih tx fees će se u potpunosti distribuirati na sljedeće adrese prema sljedećim omjerima (omjerni nisu finalni):
- 50% validatorima, ovisno o broju blokova koje su proizveli
- 20% članovima prema tipu on-chain aktivnosti u kojima su sudjelovali
- 30% članovima prema angažmanu i aktivnosti u udruzi (subjektivni dojam upravnog odbora)
Također, ukoliko UBIK kao udruga primi donaciju od nekog člana na bankovni račun, taj će član dobiti proporcionalnu količinu vestanih UBIK tokena. Npr. donacija od 200kn može donijeti 20 UBIK tokena poslovnom subjektu ili 40 UBIK tokena privatnom (omjer nije finalan).
Svaki korisnik UBIKchaina može predložiti slanje određenog iznosa na određeni račun putem Treasury Proposal. Ta akcija zahtijeva depozit. UO (vidi Collective može odobriti ili odbiti prijedlog. Odbijeni prijedlozi spaljuju depozit, prihvaćeni ga refundiraju. Svaki korisnik također može predložiti Tip (napojnicu) - prikladno za manje nagrade. Treća metoda financiranja iz Blagajne je Bounty - specificirani zadatak kojem se određuje curator, osoba koja upravlja izvršenjem tog zadatka i nalazi te evaluira izvršitelja.
Više o načinima korištenja UBIKchain blagajne u zasebnom postu.
Aura
Aura je Proof-of-Authority metoda proizvodnje blokova. Kod Aura-e se od seta predefiniranih validatora očekuje proizvodnja bloka kada je na njima red. Ako propuste priliku za proizvodnju bloka, sljedeći validator na listi preuzima. Vrijeme prozivodnje blokova na Auri dakle nije linearno ni predvidivo, ali nije ni primjetno sporije od ostalih blockchaina - Ethereumu je vrijeme bloka cca 15s, dok je na Substrate lancima cca 6s. Čak i uz dva promašena bloka, izvršenje transakcije na Aura Substrate lancu jedva je primjetno sporije od one na Ethereumu.
Svi članovi UBIKa imaju pravo biti validatori. Upravni odbor ima mogućnost odobrenja novih validatora. Validatori se nagrađuju u UBIK tokenima na bazi proprocionalne uspješnosti. Time članovi koji ne samo aktivno sudjeluju kao članovi udruge već i kao održavatelji infrastrukture imaju najveće pravo glasa u udruzi.
Collective
Collective omogućuje formiranje grupa korisnika. Grupe mogu imati posebne ovlasti i svojstva, npr. Upravni Odbor, tehnički komitet, članovi udruge itd. Collective omogućuje i da se definira omjer grupe kod određenih potrebnih akcija. Npr. za dodavanje člana u listu validatora može biti dovoljno samo 50% članova upravnog odbora, a za isplatu UBIK tokena jednom mjesečno putem Blagajne može se zahtijevati potvrda od 90% članova UO.
Democracy
Democracy je modul za glasanje. Postoje tri tijela glasanja: javnost, UO, i TC (tehnički komitet).
Javnost su svi računi koji imaju UBIK tokene. UO je upravni odbor udruge. TC je skup tehnički kompetentnih i aktivnih korisnika koji su istovremeno i validatori. Obično će to biti podskup UO-a koje nominira sam UO.
Javnost ima pravo predlaganja referenduma. Javni referendumi su skloni statusu-quo i trebaju većinu DA glasova da prođu. Čim je veća izlaznost, tim se taj omjer više približava jednostavnoj većini (50/50).
Referendumi koje predloži UO prvo moraju biti Motion (prijedlog) kojeg kreira jedan član UO-a a ostali članovi ga podržavaju ili odbijaju. Motion postaje Referendum kad je dovoljno podržan. Referendumi koji su kreirani preko UO Motiona skloni su prolazu ako su jednoglasno podržani kao Motion te trebaju većinu NE glasova da NE prođu. Čim je veća izlaznost, tim se taj omjer više približava jednostavnoj većini (50/50). Ako Motion UOa nije jednoglasno podržan od svih članova, referendum će biti tipa jednostavne većine (50/50). Jedina mogućnost TC-a je da ubrza neki Referendum - to je korisno ako se radi o nekim bugovima koje treba brzo ispeglati ili drugim vrstama hitnih referenduma.
Referendumi mogu biti:
- promjene nekih parametara lanca (max broj validatora)
- izbacivanje nekih članova ili dodavanje novih u određeni Kolektiv
- forkless upgrade (vidi dolje)
- i drugo
Za predlaganje referenduma potreban je depozit u UBIK tokenima. Ako se referendum odbije, depozit se spaljuje. Ako referendum prođe, depozit se refundira. Na taj se način sustav štiti od čestih i nevaljalih ili potencijalno malicioznih prijedloga.
Forkless Upgrade i Origin
Svaki Substrate lanac ima mogućnost nadogradnje bez forkanja (potrebe preuzimanja i instaliranja nove verzije programa).
Video objašnjenje (ENG) ovdje.
To je moguće zbog dvostruke kompilacije runtime-a, tj. funkcije za izvršavanje blokova. Runtime se kompajlira jednom kao Rust program, i jednom kao Wasm blob. Wasm je komprimirani, binarni, portabilni oblik instrukcija koji se sprema na samom lancu. Kada neki node (program koji se spaja na blockchain i/ili validira blokove) primjeti da je Wasm koji je na lancu novije verzije od runtime-a kojeg ima u svom nativnog kodu, prebacuje se na egzekuciju Wasm-a kojeg preuzima s lanca. Jedina prednost nadogradnje samog programa je manji dobitak na performansama (nativni kod je uvijek brži od Wasm-a), ali korisnici ovime mogu ostaviti svoje node-ove bez nadzora na dulje periode bez straha od forka.
Runtime Upgrade ove vrste može učiniti samo root origin. Origin je izvor transakcije. Root origin je "Administrator" lanca. Postoji Sudo
modul koji omogućava direktnu administraciju lanca od strane jednog računa, no svaki Substrate lanac ima i drugi root origin - Javnost, tj. korisnike s tokenima. Većinska odluka javnosti ekvivalent je root pozivu, pa su time sami članovi lanca ujedno i kolektivni administrator lanca.
Stoga, da bi se izvršio runtime upgrade, proces je sljedeći:
- Kompajlira se novi Wasm blob.
- Ako UO predlaže nadogradnju: kreira se Motion i Wasm datoteka se šalje na lanac ako UO predlaže nadogradnju. Nakon podrške od drugih članova UOa, postaje referendum.
- Ako javnost predlaže nadogradnju: kreira se Referendum i Wasm datoteka se šalje na lanac.
- Počinje glasanje oko referenduma.
- Ako referendum prođe, Wasm blob će automatski postati aktivan na određenom bloku. Daljnje akcije nisu potrebne.
Polls
Polls je modul posebno razvijen za UBIK koji omogućuje predlaganje anketa i glasanje na istima.
Za kreiranje ankete potreban je depozit. Ankete je moguće prijaviti (Report) i ako anketu prijavi cijeli UO ili više od 30% članova, depozit se spaljuje. U protivnom, depozit se vraća nakon završetka ankete.
Vestani UBIK tokeni (tokeni s odgodom otpuštanja) NISU važeći za glasanje u anketama.
Za samo glasanje nije potreban depozit i UBIK tokeni kojima se glasa ostaju likvidni. Rezultat u momentu zatvaranja ankete zbraja non-vestana stanja na računima koji su glasali - promjene stanja prije završetka ankete nemaju efekt. Ankete se rezolviraju jednostavnom većinom: ako se u anketi radi o DA/NE opciji, većina prevladava. Ako se radi o popisu prioriteta, prioritet se određuje prema količini glasova na pojedinoj opciji. Računi uvijek glasaju "punim novčanikom" - parcijalno glasanje nije moguće. U slučaju da neki korisnik to zaista želi, može poslati dio UBIK tokena na zasebnu adresu i glasati s nje za neku drugu opciju.
Sudjelovanje u Pollovima kao i sudjelovanje u drugim akcijama na lancu (glasanje na referendumima) su glavni način "zarađivanja" UBIK tokena i povećanja individualne glasačke moći.