Blockchain tehnologija - Pametni ugovori

Izvor: SIS Wiki
Skoči na: orijentacija, traži

Temu rezervirao: Marko Peranović

Opis: U ovom će se radu istražiti i primjerom potkrijepiti djelotvornost blockchain tehnologije i njenog udjela u današnjem svijetu kriptovaluta.


Sadržaj

Blockchain

Blockchain je tehnologija ugrubo distribuirana baza podataka u kojoj su sadržani svi zapisi transakcija ili digitalnih „događaja“ koji su bili izvršeni i podijeljeni među sudionicima mreže. Svaka se nova transakcija u tom opsežnom zapisu koji se naziva „ledger“ verificira konsenzusom većine sudionika u sustavu. Ključna je stvar kod blockhaina ta da se informacije jednom zapisane više ne mogu obrisati te je tako u blockchainu zapisana svaka jedinstvena transakcija ikad napravljena. Najpoznatija je „kreacija“ blockchain tehnologije Bitcoin. Najpoznatija kripovaluta današnjice koja je omogućila stvaranje ogromnog tržišta kriptovaluta čija se vrijednost danas izražava u milijardama. Mnogi utjecajni poduzetnici današnjice smatraju kako je izum blockchaina ravan parnom stroju ili motoru. Predviđaju također kako će se na blockchainu temeljiti sve transakcije, od velikih poslovnih akvizicija pa sve do kupovine povrća u trgovini.

Današnji je digitalni svijet baziran na povjerenju, odnosno vanjskoj stranci koja će autorizirati svaku online transakciju ili zahtjev. Ovakav je pristup riskantan jer ukoliko je mreža povjerenja centralizirana, postoje veliki rizici manipulacije, hakiranja i generalnog kompromitiranja osjetljivih podataka. Upravo ovaj problem rješava blockchain tehnologija. Njenom bi se prisutnošću svaka online transakcija bilježila i odobravala od strane svih sudionika konsenzusom. Dakle, decentralizirani i distribuirani konsenzus i anonimnost koja je zagarantirana svim strankama koje sudjeljuju su temeljne prednosti blockchain tehnologije.

Valja razlikovati javne i privatne blockchainove:

Javni blockchain

1. Svatko može zapisivati podatke u zapise transakcija, bez dozvole ikakvog autoriteta

2. Svatko može čitati podatke iz zapisa transakcija, bez dozvole ikakvog autoriteta

Privatni blockchain

1. Limitiran broj članova može zapisivati nove podatke u zapise transakcija

2. Dozvola za čitanje je podložna modifikacijama

Privatna blockchain mreža je takva gdje su sudionici znani i pouzdani. Primjerice, industrijske grupe, grupe kompanija koje su u vlasništvu glavne nadsjedajuće kompanije.


Veliki problem za korisnike blockchain tehnologije je neshvatljivost i apstraktnost blockchaina. Za potrebe ilustracije valja si predočiti blockchain kao običnu datoteku, odnosno podatkovnu strukturu. Primjerice: baze podataka (redovi, stupci, tablice), tekstualne datoteke, slike, liste ,itd, no najsličnija usporedba blockchaina jest ona s bazom podataka. Ključna informacija o blockchainu jest da je to lanac povezanih blockova te se svaki block referira na svoj prethodni. U tom slučaju kada se vrši rudarenje (verifikacija blockova) i ukoliko se jedan block pogrešno izrudari, svi sljedeći se isto smatraju netočnima te je potrebno ponovno izvršiti rudarenje. Proces rudarenja je proces rješavanja kompleksnih matematičkih problema za provjeru hash-ova (digitalni otisak) svakog blocka.


Block

Svaki block u blockchainu predstavlja jedan odsjek transakcija i sadrži dva ključna dijela :


Sadržaj – primjerice u bitcoinu, sadržaj bi bio bitcoin transakcije i nagrada za one koji rudare bitcoin

Zaglavlje – sadrži podatke o blocku. U bitcoinu, zaglavlje uključuje tehničku informaciju o blocku, referencu na prijašnji block i hash (digitalni otisak) sadržaja trenutnog blocka


Blockchain-diagrams-02.jpg


Problem može nastati ako se više korisnika blockchain mreže nađe u situaciji da svi stvaraju sljedeći block u isto vrijeme i tako svaki od njih ima svoju „verziju“ blocka (block 1a, block1b, block 1c). Kako odrediti koji je ispravan block? Koji od njih je validan? U tom se slučaju primjenjuje „pravilo najdužeg lanca“. U suštini to znači da ukoliko se odabere jedan od kreiranih blokova i provjeri se njegova težina, odnosno na koliko se sljedećih blockova taj odabrani veže. U tom se slučaju prolazi kroz permutacije dok se ne naiđe na „najteži“, odnosno block koji nudi najviše moguće spajanja sljedećih blokova.

Blok1.PNG

Na gore navedenoj slici dolazi do konflikta kod blocka 80 te tako imamo tri različita nastavka tog blocka (block 81a, block 81b, block 81c). Potrebno je provjeriti ispravnost blockova.


Blok2.PNG

Uzima se prvi block te se provjerava njegova težina i mogućnost nadovezivanja ostalih na njega. U ovom slučaju se provjerava 81a block


Blok3.PNG


Provedenim premutacijama kroz sve blockove ustanovljeno je kako block 81b nudi najviše moguće sljedećih blockova te je time njegova težina najveća i on se odabire kao validan block.


Pametni ugovori

Blockchain tehnologija je ispoljila zanimljiv slučaj korištenja, a to je pametni ugovor. Pametni ugovori su ugrubo rečeno, kompjuterski programi koji mogu automatski izvršiti sve klauzule i uvjete ugovora. Kada se uvjeti pametnog ugovora između dvije stranke izvrše, automatski se izvršava isplata po naloženim uvjetima u ugovoru na transparentan način.


Implementacija pametnog ugovora

Uspostaviti sporazum

1. Više stranaka identificira priliku za kooperaciju i definira željene ishode

2. Sporazumi mogu uključivati poslovne procese, zamjene imovine, transfere prava i više

Postaviti uvjete

1. Pametne ugovore mogu pokrenuti stranke ili uko se zadovolje određeni uvjeti, primjerice : indikatori na financijskom tržištu, prirodne nepogode, događaji popraćeni GPS-om

2. Vremenska ograničenja mogu diktirati pokretanje pametnih ugovora za blagdane, i vjerske događaje

Kodirati poslovnu logiku

1. Kompjutorski program napisan na takav način da se automatski izvrši kada su uvjeti zadovoljeni

Enkripcija i Blockchain tehnologija

1. Kada se u blockchain iteraciji dosegne konsenzus prilikom autentikacije i verifikacije, u block se upisuje pametan ugovor

2. Kod se izvršava, a ishodi se verificiraju i spremaju

Mrežna ažuriranja

1. Nakon što se pametni ugovor izvrši, sva računala na mreži ažuriraju svoje transakcijske zapise da bi prikazali novo stanje

2. Nakon što se zapis zapiše u blockchain, on se ne može mijenjati

Programska implementacija na ethereum platformi

Solidity (Remix IDE)

Solidity je programski jezik visoke razine namijenjen implementaciji pametnih ugovora. Preuzeo je pojedinosti C++-a, Pythona i JavaScript-a i dizajniran je za Ethereum Virtual Machine. Solidity je pisan statički, podržava nasljeđivanje, biblioteke i kompleksne tipove podataka. Moguće je izraditi ugovore za glasanje, crowdfunding, aukcije, digitalne novčanike i još puno toga.

Remix je web IDE za programski jezik solidity koji omogućava izradu i primjenu pametnih ugovora. Koristi se za :

1. Izradu pametnih ugovora

2. Debagiranje izvršenja pametnih ugovora

3. Provjera stanja već implementiranih pametnih ugovora

4. Debagiranje već provedene transakcije

5. Analiza koda napravljenog u solidity-ju da se smanji količina grešaka u kodu


Remix.PNG

Gornja slika prikazuje sučelje Remix-a u web browseru

Metamask

Metamask je plugin za Google Chrome koji služi korisnicima da im omogući dostupnost decentraliziranih aplikacija (dApps). Prije je korištenje tih aplikacija bilo veoma zahtjevno, no Metamask pruža korisnicima da direktno preko browsera koriste dApps.


Metamask.PNG

Slika iznad prikazuje sučelje plugin-a u web browseru

Implementacijski dio

Implementacijski dio će prikazati kako se pomoću Remix IDE-a i Metamask plugina kreira vlastiti token, te kako se s njime vrše transakcije preko Metamask plugina.

Za početak moramo kompajlirati kod na Remix IDE-u. U kodu moramo definirati naziv, simbol i količinu inicijalne ponude tokena. Također, moramo definirati i osnovne računske funkcije za dodavanje/oduzimanje vrijednosti u/iz wallet/a (funkcija transfera) te ostale popratne funkcije za validaciju transakcije.

Isjecakprvi.PNG

Gornja slika prikazuje isječak koda koji se odnosi na početni dio kreiranja tokena u remix-u. Ključna riječ pragma na samom početku definira set instrukcija kako bi kompajler trebao tretirati kod. Contract možemo promatrati kao klasu u ostalim programskim jezicima. Kao i klasa, contract sadrži svoje funkcije i podatke.

Nadalje, u pluginu Metamask imamo opciju "buy" koja nas prenosi na ether faucet, gdje jednostavnim klikom miša na svoj Metamask wallet transferiramo ether po principu : jedan klik = jedan ether

Faucet.PNG

U sekciji "transactions" je u hash obliku zapisan svaki klik, odnosno svaka transakcija na naš wallet.

U remix-u moramo kompajlirati kod i u sekciji run krerirati zahtjev za kreiranje tokena i slanje istoga na naš wallet.


Adresa.PNG


Klikom na gumb "Create" se šalje zahtjev te naš Metamask plugin otvara sučelje sa obavijestima tražeći našu povratnu informaciju o pristiglom zahtjevu. Pita nas želimo li prihvatiti ili odbiti navedeni zahtjev.


Create.PNG


Nakon što se zahtjev prikaže u "pending" obliku na našem Metamask pluginu, klikom na zahtjev se otvara se stranica našeg testnog networka (Ropsten test network) unutar kojeg djelujemo i čekamo da netko izrudari naš token.


Mined.PNG


Kopiramo adresu koja piše u hash obliku pod "To: " te u našem Metamask pluginu kliknemo na Add Token i zalijepimo adresu. Metamask automatski prepoznaje ime i simbol kopiranog tokena (MCT)


Tokenown.PNG


Ukoliko želimo kreirani token poslati na drugi račun, unutar opcije "send" kopiramo adresu računa, zalijepimo ju u obrazac i unesemo količinu tokena koju želimo poslati


Slanjenadrugi.PNG


Otvara nam se sučelje gdje ponovo moramo mi osobno potvrditi tijek transakcije (reset, submit, reject)


Poslano.PNG


Na Ropsten test networku možemo pratiti tijek transakcije (vrijeme slanja, količina, itd.)


Dolazi.PNG


Alati korišteni

1. Remix- Soldity IDE (https://ethereum.github.io/browser-solidity/#optimize=false&version=soljson-v0.4.19+commit.c4cbbb05.js)

2. Metamask- Google Chrome plugin


Literatura

1. Crosby M. i sur. (2015): BlockChain Technology Sutardja Center for Entrepreneurship & Technology

2. Lewis A. (2015): A Gentle Introduction To Blockchain Technology BraveNewCoin

3. Chamber of Digital Commerce (2016): Smart Contracts: 12 Use Cases for Business & Beyond

4. Solidity - Pametni ugovori (dostupno 04.02.2018) http://solidity.readthedocs.io/en/develop/introduction-to-smart-contracts.html

5. Solidity - programski jezik(dostupno 04.02.2018) https://solidity.readthedocs.io/en/develop/

6. TheMerkle.com - Metamask (dostupno 04.02.2018) https://themerkle.com/what-is-metamask/

7. Coindesk.com - Blockchain (dostupno 04.02.2018) https://www.coindesk.com/information/what-is-blockchain-technology/

Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima