Knjiga "Izrada pametnih ugovora Solidity za blockchain Ethereum. Praktični vodič"

Knjiga "Izrada pametnih ugovora Solidity za blockchain Ethereum. Praktični vodič"
Više od godinu dana radio sam na knjizi 'Izrada pametnih ugovora Solidity za Ethereum blockchain. Praktični vodič', i sada je ovaj rad završen, a knjiga izdana i dostupna na Litresu.

Nadam se da će moja knjiga pomoći da se brzo krenete u izradu pametnih ugovora Solidity i decentraliziranih aplikacija DApp za Ethereum blockchain. Sadrži 12 lekcija s praktičnim zadacima. Izvršavajući ih, čitatelj će moći kreirati vlastite lokalne čvorove Ethereum, objaviti pametne ugovore i pozivati njihove metode, razmjenjivati podatke između stvarnog svijeta i pametnih ugovora pomoću oracle-a, raditi s testnom debug mrežom Rinkeby.

Knjiga je namijenjena svima koji su zainteresirani za napredne tehnologije u području blockchaina i žele brzo steći znanja koja će im omogućiti zanimljiv i perspektivan rad.

Ispod ćete pronaći sadržaj i prvo poglavlje knjige (također na Litresu dostupni su izvadci iz knjige). Nadam se dobiti povratne informacije, primjedbe i prijedloge. Sve ću to pokušati uzeti u obzir prilikom pripreme sljedeće edicije knjige.

SadržajUvodNaša knjiga namijenjena je onima koji žele ne samo razumjeti principe rada Ethereum blockchaina, već i steći praktične vještine u izradi decentraliziranih aplikacija DApp na programskom jeziku Solidity za ovu mrežu.

Ovu knjigu je najbolje ne samo čitati, već raditi s njom, izvršavajući praktične zadatke opisane u lekcijama. Za rad će vam trebati lokalno računalo, virtualni ili oblačni poslužitelj s instaliranim Debian ili Ubuntu OS-om. Također, za mnoge zadatke možete koristiti Raspberry Pi.

U prvoj lekciji razmotrit ćemo principe rada Ethereum blockchaina i osnovnu terminologiju, kao i reći gdje se ovaj blockchain može koristiti.

Cilj druga lekcija – stvoriti čvor privatnog Ethereum blockchaina za daljnji rad u okviru ovog tečaja na Ubuntu i Debian poslužitelju. Razmotrit ćemo osobitosti instalacije osnovnih alata, poput geth-a, koji osigurava rad čvora našeg blockchaina, kao i demona decentraliziranog skladišta podataka swarm.

Treća lekcija naučit će vas kako provoditi eksperimente s Ethereumom na pristupačnom mikroračunalu Raspberry Pi. Instalirat ćete operacijski sustav (OS) Rasberian na Raspberry Pi, alat Geth koji omogućava rad blockchain čvora, kao i daemon za decentralizirano pohranjivanje podataka Swarm.

Četvrta lekcija posvećena je računima i jedinicama kriptovaluta u mreži Ethereum, kao i načinima prijenosa sredstava s jednog računa na drugi pomoću Geth konzole. Naučit ćete kako kreirati račune, inicirati transakcije prijenosa sredstava, dobiti stanje transakcije i njezin potvrdu.

Na petoj lekciji upoznat ćete se sa pametnim ugovorima u mreži Ethereum i naučit ćete o njihovom izvršavanju putem Ethereum virtualne mašine.

Stvorit ćete i objaviti u privatnoj mreži Ethereum svoj prvi pametan ugovor i naučit ćete kako pozivati njegove funkcije. Za to ćete koristiti razvojno okruženje Remix Solidity IDE. Osim toga, naučit ćete instalirati i koristiti paketni kompajler solc.
Također ćemo objasniti takozvani binarni sučelje aplikacije Application Binary Interface (ABI) i podučiti vas kako ga koristiti.

Šesta lekcija posvećena je stvaranju JavaScript skripti koje rade pod Node.js i izvršavaju operacije sa Solidity pametnim ugovorima.

Instalirat ćete Node.js na OS Ubuntu, Debian i Rasberian, napisati skripte za objavljivanje pametnog ugovora u lokalnoj mreži Ethereum i pozivati njegove funkcije.

Osim toga, naučit ćete kako prenositi sredstava između običnih računa pomoću skripti, kao i kako ih uplaćivati na račune pametnih ugovora.

Na sedmoj lekciji naučit ćete kako instalirati i koristiti popularno razvojno okruženje Truffle među programerima pametnih ugovora Solidity. Naučit ćete kako stvarati JavaScript skripte koje pozivaju funkcije ugovora pomoću truffle-contract modula, a također ćete testirati svoj pametni ugovor pomoću Truffle.

Osma lekcija posvećena je tipovima podataka u Solidity. Napisat ćete pametne ugovore koji rade s tipovima podataka kao što su potpuni i nepuni cijeli brojevi, brojevi s pomičnim zarezom, stringovi, adrese, varijable složenih tipova, nizovi, enumeracije, strukture i rječnici.

Na devetoj lekciji Približavate se još koraku do stvaranja pametnih ugovora za glavnu mrežu Ethereum. Naučit ćete kako objaviti ugovore pomoću Truffle na privatnoj mreži Geth, kao i na testnoj mreži Rinkeby. Debugging pametnog ugovora na mreži Rinkeby je vrlo koristan prije nego što ga objavite na glavnoj mreži — gotovo sve je stvarno, ali besplatno.

U okviru lekcije stvorit ćete čvor testne mreže Rinkeby, dopunit ćete ga sredstvima i objaviti pametni ugovor.

Lekcija 10 posvećena je distribuiranim skladištima podataka Ethereum Swarm. Korištenjem distribuiranih skladišta štedite na pohrani velikih količina podataka u blockchainu Ethereum.

U ovoj lekciji stvorit ćete lokalno skladište Swarm, izvršit ćete operacije pisanja i čitanja datoteka, kao i direktorija s datotekama. Sljedeće ćete naučiti kako raditi s javnim gateway-em Swarm, napisati skripte za pristup Swarm iz Node.js, kao i pomoću Perl modula Net::Ethereum::Swarm.

Cilj lekcije 11 je savladati rad sa pametnim ugovorima Solidity uz korištenje popularnog programskog jezika Python i frameworka Web3.py. Instalirat ćete ovaj framework, napisati skripte za kompilaciju i objavu pametnog ugovora, kao i za pozivanje njegovih funkcija. Pritom će Web3.py biti korišten samostalno, kao i zajedno s integriranim razvojnim okruženjem Truffle.

Na 12. lekciji naučit ćete kako prenositi podatke između pametnih ugovora i stvarnog svijeta pomoću oracle-a. To će vam biti korisno za dobivanje podataka s web stranica, uređaja interneta stvari (IoT), raznih instrumenata i senzora, i slanje podataka iz pametnih ugovora tim uređajima. U praktičnom dijelu lekcije stvorit ćete oracle i pametni ugovor koji dobiva aktualni tečaj USD u ruble s web stranice CBR.

Lekcija 1. Kratko o blockchainu i mreži EthereumCilj lekcije: upoznati se s principima rada blockchaina Ethereum, područjima njegove primjene i osnovnom terminologijom.
Praktične zadaće: u ovoj lekciji nisu predviđene.

Teško je danas pronaći softverskog developera koji nije čuo za tehnologiju blockchain, kriptovalute, bitcoine, inicijalnu ponudu kovanica (ICO), pametne ugovore, kao i druge pojmove i termine koji se odnose na blockchain.

Tehnologija blockchaina otvara nova tržišta i stvara radna mjesta za programere. Ako ovladate svim nijansama kriptovalutnih tehnologija i tehnologija pametnih ugovora, ne bi trebalo biti problema s primjenom tih znanja u praksi.

Trebalo bi napomenuti da oko kriptovaluta i blockchaina ima mnogih spekulacija. Ostavit ćemo po strani rasprave o promjenama tečajeva kriptovaluta, o stvaranju piramida, o nijansama kriptovalutne regulative itd. U našem tečaju fokusirat ćemo se prvenstveno na tehničke aspekte primjene pametnih ugovora blockchaina Ethereum (ethereum, ether) i razvoja takozvanih decentraliziranih aplikacija (Distributed Application, DApp).

Što je blockchain

Blockchain (Blockchain, Block Chain) predstavlja lanac blokova podataka, povezanih jedan s drugim određenim načinom. Na početku lanca nalazi se prvi blok, koji se naziva primarnim blokom (genesis block) ili blokom geneze. Iza njega slijedi drugi, pa treći i tako dalje.

Svi ti blokovi podataka automatski se dupliciraju na brojnim čvorovima blockchain mreže. Tako se osigurava decentralizirano pohranjivanje podataka blockchaina.
Možete zamisliti sustav blockchaina kao veliki broj čvorova (fizičkih ili virtualnih poslužitelja), povezanih u mrežu i replicirajućih sve promjene u lancu blokova podataka. To je poput golemog multi-poslužiteljskog računala, pri čemu se čvorovi tog računala (poslužitelji) mogu nalaziti širom svijeta. A i vi možete dodati svoj računar u mrežu blockchaina.

Distribuirana baza podataka

Blockchain se može zamisliti kao distribuirana baza podataka, replicirana na sve čvorove blockchain mreže. U teoriji, blockchain će raditi sve dok postoji barem jedan čvor koji pohranjuje sve blokove blockchaina.

Distribuirana knjiga podataka

Blockchain se može zamisliti kao ova distribuirana knjiga podataka i operacija (transakcija). Još jedno ime za ovu knjigu je glavna knjiga.

U distribuiranom registru moguće je dodavati podatke, ali ih nije moguće mijenjati ili brisati. Ova nemogućnost se postiže, između ostalog, primjenom kriptografskih algoritama, posebnih algoritama za dodavanje blokova u lanac i decentraliziranim pohranom podataka.

Prilikom dodavanja blokova i obavljanja operacija (transakcija) koriste se privatni i javni ključevi. Oni ograničavaju korisnike blockchaina, pružajući im pristup samo njihovim blokovima podataka.

Transakcije

Blockchain pohranjuje informacije o operacijama (transakcijama) unutar blokova. Pri tome, stare, već izvršene transakcije nije moguće vratiti ili izmijeniti. Nove transakcije se pohranjuju u nove, dodane blokove.

Tako u blockchainu može biti zabilježena u nepromijenjenom obliku cijela povijest transakcija. Zbog toga se blockchain može koristiti, na primjer, za sigurno pohranjivanje bankovnih operacija, informacija o autorskim pravima, povijest promjena vlasnika nekretnina itd.

Ethereum blockchain sadrži takozvane stanje sistema. Kako se transakcije izvršavaju, stanje se mijenja od početnog do trenutnog. Transakcije se zapisuju u blokove.

Javni i privatni blockchaini

Ovdje treba napomenuti da sve rečeno vrijedi samo za tzv. javne blockchain mreže, koje ne mogu biti kontrolirane od strane bilo kojih pojedinačnih fizičkih ili pravnih osoba, državnih tijela ili vlada.
Tzv. privatne blockchain mreže su pod potpunom kontrolom njihovih kreatora, i sve je moguće, na primjer, potpuno zamijeniti sve blokove lanaca.

Praktične primjene blockchaina

Za što može poslužiti blockchain?

Ukratko, blockchain omogućava sigurno provođenje operacija (transakcija) između osoba ili kompanija koje si ne vjeruju. Podaci zapisani u blockchainu (transakcije, osobni podaci, dokumenti, svjedočanstva, ugovori, otpremnice itd.) nije moguće falsificirati ili zamijeniti nakon snimanja. Zbog toga se na temelju blockchaina mogu stvarati, na primjer, pouzdani distribuirani registri raznih vrsta dokumenata.

Naravno, znate da se na temelju blockchaina stvaraju kriptovalutni sustavi, čija je svrha zamijeniti obične papirnate novčanice. Papirnate novčanice se također nazivaju fiat (od Fiat Money).
Blockchain osigurava pohranu i nepromjenjivost transakcija zabilježenih u blokovima, pa se može koristiti za stvaranje kriptovalutnih sustava. Sadrži cijelu povijest prijenosa kripto-sredstava između različitih korisnika (računa), pri čemu se bilo koja operacija može pratiti.

Iako operacije unutar kriptovalutnih sustava mogu biti anonimne, isplata kriptovalute i njezina zamjena za fiat novac obično dovode do otkrivanja identiteta vlasnika kriptovalutnog sredstva.

Takozvani pametni ugovori, koji predstavljaju softver koji radi na mreži Ethereum, omogućuju automatizaciju procesa sklapanja ugovora i kontrolu njihove provedbe. To je posebno učinkovito kada se plaćanje po ugovoru vrši kriptovalutom Ether (ether).

Ethereum blockchain i Ethereum pametni ugovori napisani na programskom jeziku Solidity mogu se koristiti, na primjer, u sljedećim područjima:

  • alternativa notarskom ovjerenju dokumenata;
  • pohrana registra nekretnina i podaci o transakcijama s nekretninama;
  • pohrana podataka o autorskim pravima na intelektualno vlasništvo (knjige, slike, glazbena djela itd.);
  • izrada sustava neovisnog glasovanja;
  • područje financija i bankarstva;
  • logistika na međunarodnoj razini, praćenje premještanja tereta;
  • pohrana osobnih podataka kao analog sustava identifikacijskih dokumenata;
  • sigurne transakcije u poslovnom sektoru;
  • pohrana rezultata medicinskih pregleda, kao i povijesti propisanih postupaka

Problemi s blockchainom

Ali, naravno, nije sve tako jednostavno kao što se može činiti!

Postoje problemi s verificiranjem podataka prije njihove dodavanja u blockchain (npr. jesu li lažni?), problemi sa sigurnošću sustavnog i aplikativnog softvera koji se koristi za rad s blockchainom, problemi s mogućnošću korištenja metoda socijalnog inženjeringa za krađu pristupa novčanicima s kriptovalutom itd.

Opet, ako se ne radi o javnom blockchainu čiji su čvorovi raspršeni širom sveta, već o privatnom blockchainu koji pripada osobi ili organizaciji, nivo poverenja ovde neće biti veći od nivoa poverenja prema toj osobi ili organizaciji.

Takođe treba imati na umu da podaci zapisani u blockchainu postaju dostupni svima. U tom smislu, blockchain (posebno javni) nije pogodan za čuvanje poverljivih informacija. Međutim, činjenica da se informacije u blockchainu ne mogu menjati može pomoći u sprečavanju ili istraživanju raznih vrsta prevara.

Decentralizovane aplikacije na Ethereum-u biće korisnije ukoliko se za njihovo korišćenje plaća kriptovalutom. Što više ljudi poseduje kriptovalutu ili je spremno da je kupi, to će DApp i pametni ugovori dobiti veću popularnost.

Među opštim problemima blockchain-a koji otežavaju njegovu praktičnu primenu mogu se pomenuti ograničena brzina dodavanja novih blokova i relativno visoki troškovi transakcija. No, tehnologije u ovoj oblasti se aktivno razvijaju i postoje nade da će se tehnički problemi s vremenom rešiti.

Još jedan problem je taj što pametni ugovori na Ethereum blockchainu rade u izolovanom okruženju virtuelnih mašina i nemaju pristup podacima iz stvarnog sveta. Naime, program pametnog ugovora ne može sam pročitati podatke sa veb sajtova ili bilo kojih fizičkih uređaja (senzori, kontakti itd.), niti može poslati podatke na bilo koje spoljne uređaje. Ovaj problem i načine njegovog rešenja ćemo raspraviti na času posvećenom takozvanim Oracle-ima — informativnim posrednicima pametnih ugovora.

Takođe postoje ograničenja u oblasti zakonodavstva. U nekim zemljama, na primer, zabranjuje se korišćenje kriptovalute kao sredstva plaćanja, ali se može posedovati kao neki digitalni asset, slično vrednosnim papirima. Takvi assets se mogu kupovati i prodavati na berzi. U svakom slučaju, prilikom kreiranja projekta koji radi sa kriptovalutama, potrebno je upoznati se sa zakonodavstvom zemlje čija jurisdikcija pokriva vaš projekat.

Kako se formira lanac blokova

Kao što smo već spomenuli, blok-lanac predstavlja jednostavni niz blokova podataka. Prvo se formira prvi blok ovog niza, zatim mu se pridružuje drugi i tako dalje. Pretpostavlja se da se podaci transakcija čuvaju u blokovima i dodaju u posljednji blok.

Na slici 1.1 prikazali smo najjednostavniju verziju sekvencijalnih blokova, gdje se prvi blok odnosi na sljedeći.

Knjiga "Izrada pametnih ugovora Solidity za blockchain Ethereum. Praktični vodič"
Slika 1.1. Jednostavna sekvenca blokova

U toj varijanti, međutim, vrlo je lako falsificirati sadržaj bilo kojeg bloka lanca, budući da blokovi ne sadrže nikakve informacije za zaštitu od promjena. S obzirom na to da je blok-lanac namijenjen korištenju ljudi i kompanija između kojih nema povjerenja, može se zaključiti da takav način čuvanja podataka nije prikladan za blok-lanac.

Pozabavimo se zaštitom blokova od falsifikacije. U prvoj fazi pokušat ćemo zaštititi svaki blok kontrolnom sumom (slika 1.2).

Knjiga "Izrada pametnih ugovora Solidity za blockchain Ethereum. Praktični vodič"
Slika 1.2. Dodavanje zaštite podacima blokova kontrolnom sumom

Sada zlonamjernik ne može jednostavno promijeniti blok, jer u njemu postoji kontrolna suma podataka bloka. Provjera kontrolne sume pokazat će da su podaci promijenjeni.

Za izračun kontrolne sume može se koristiti jedna od funkcija hashiranja, poput MD-5, SHA-1, SHA-256 itd. Hash funkcije izračunavaju neku vrijednost (na primjer, u obliku tekstualnog niza fiksne duljine) kao rezultat izvođenja nepovratnih operacija nad blokom podataka. Operacije ovise o vrsti hash funkcije.

Čak i uz malu promjenu sadržaja bloka podataka, vrijednost hash funkcije će se također promijeniti. Analizirajući vrijednost hash funkcije, nemoguće je rekonstruirati blok podataka za koji je izračunata.

Hoće li takva zaštita biti dovoljna? Nažalost, neće.

U ovoj shemi kontrolna suma (hash funkcija) štiti samo pojedinačne blokove, ali ne cijeli lanac blokova. Poznavajući algoritam izračunavanja hash funkcije, zlonamjernik može lako promijeniti sadržaj bloka. Također, ništa ne sprječava da izbaci blokove iz lanca ili doda nove.

Kako bismo zaštitili cijeli lanac u cjelini, možemo pohraniti u svakom bloku zajedno s podacima i hash podataka prethodnog bloka (slika 1.3).

Knjiga "Izrada pametnih ugovora Solidity za blockchain Ethereum. Praktični vodič"
Slika 1.3. Dodavanje hash-a prethodnog bloka u blok podataka

Da bi se u ovoj shemi izmijenio neki blok, potrebno je preračunati hash funkcije svih sljedećih blokova. Činilo bi se, koji je problem?

U stvarnim blockchain-ima dodatno su stvorene umjetne poteškoće za dodavanje novih blokova — koriste se algoritmi koji zahtijevaju mnogo računalnih resursa. S obzirom na to da je za promjene u bloku potrebno preračunati ne samo taj blok, već i sve sljedeće, vrlo će biti teško to učiniti.

Također se sjetimo da se podaci blockchaina pohranjuju (dupliciraju) na brojnim čvorovima mreže, tj. koristi se decentralizirana pohrana. To višestruko otežava krivotvorenje bloka, jer zahtijeva da se izmjene unesu na sve čvorove mreže.

Budući da blokovi pohranjuju informacije o prethodnom bloku, moguće je provjeriti sadržaj svih blokova lanaca.

Ethereum blockchain

Ethereum blockchain predstavlja platformu na kojoj se mogu stvarati distribuirane aplikacije DApp. Za razliku od drugih platformi, Ethereum omogućava korištenje tzv. pametnih ugovora (smart contracts) napisanih u programskom jeziku Solidity.

Ova platforma je stvorena 2013. godine od strane Vitalika Buterina, osnivača časopisa Bitcoin Magazine, i pokrenuta 2015. godine. Sve što ćemo proučavati ili raditi u našem obrazovnom tečaju odnosi se upravo na Ethereum blockchain i Solidity pametne ugovore.

Rudarenje ili kako se stvaraju blokovi

Rudarenje (mining) predstavlja prilično složen i resursno intenzivan proces dodavanja novih blokova u lanac blockchaina, a ne "ekstrakciju kriptovaluta". Rudarenje osigurava funkcionalnost blockchaina, jer je upravo ovaj proces odgovoran za dodavanje transakcija u Ethereum blockchain.

Ljudi i organizacije koji se bave dodavanjem blokova nazivaju se rudarima (miners).
Softver (SO) koji radi na čvorovima rudara pokušava pronaći za posljednji blok parametar hashiranja nazvan Nonce, kako bi se dobila određena vrijednost hash funkcije koju je odredila mreža. Hash algoritam Ethash, primijenjen u Ethereum-u, omogućuje dobivanje vrijednosti Nonce samo putem sekvencijalnog pretraživanja.

Ako je čvor rudara pronašao ispravnu vrijednost Nonce, to se naziva dokazom rada (PoW, Proof-of-work). U tom slučaju, ako se blok doda u Ethereum mrežu, rudar dobiva određenu nagradu u valuti mreže — Ether. U trenutku pripreme naše knjige nagrada iznosi 5 Ether, no s vremenom će se smanjivati.

Tako rudari Ethereuma osiguravaju rad mreže dodavanjem blokova i za to dobivaju kripto novac. Na internetu ćete pronaći obilje informacija o rudarima i rudarenju, a mi ćemo se usredotočiti na stvaranje Solidity ugovora i decentraliziranih aplikacija DApp u Ethereum mreži.

Zaključci lekcije

Na prvoj lekciji ste se upoznali s blockchainom i saznali da se radi o posebno sastavljenoj sekvenci blokova. Sadržaj ranije zabilježenih blokova nije moguće promijeniti, jer bi u tom slučaju bilo potrebno ponovo izračunati sve sljedeće blokove na mnogim čvorovima mreže, što bi zahtijevalo velike resurse i vrijeme.

Blockchain se može koristiti za pohranu rezultata izvršenja transakcija. Njegovo glavno namijenjenje je organizacija sigurnog izvršenja transakcija između strana (osoba i organizacija) između kojih nema povjerenja. Saznali ste u kojim se konkrentim poslovnim oblastima i sektorima može koristiti Ethereum blockchain i Solidity pametni ugovori. To su bankovni sektor, registracija vlasničkih prava, dokumenata itd.

Također ste saznali da se prilikom korištenja blockchaina mogu pojaviti razni problemi. To su problemi verifikacije informacija koje se dodaju u blockchain, brzina rada blockchaina, troškovi transakcija, problem razmjene podataka između pametnih ugovora i stvarnog svijeta, kao i potencijalni napadi zlonamjernih korisnika usmjereni na krađu kripto sredstava s korisničkih računa.

Također smo ukratko pričali o rudarenju kao procesu dodavanja novih blokova u blockchain. Rudarenje je potrebno za izvršenje transakcija. Oni koji se bave rudarenjem osiguravaju funkcionalnost blockchaina i za to dobivaju nagradu u kriptovaluti.

Lekcija 2. Priprema radnog okruženja u OS-u Ubuntu i DebianOdabir operativnog sustava
Instalacija potrebnih alata
Instalacija Getha i Swarma u Ubuntu
Instalacija Getha i Swarma u Debian
Pripremne radnje
Preuzimanje Go distribucije
Podešavanje varijabli okruženja
Provjera verzije Go
Instalacija Geth-a i Swarm-a
Kreiramo privatni blockchain
Готовим файл genesis.json
Kreiramo direktorij za rad
Kreiramo račun
Pokrećemo inicijalizaciju čvora
Parametri pokretanja čvora
Povezujemo se na naš čvor
Upravljanje rudarstvom i provjera stanja
Zatvaranje Geth konzole
Zaključci lekcije

Lekcija 3. Priprema radnog okruženja na Raspberry Pi 3Priprema Raspberry Pi 3 za rad
Instalacija Rasberiana
Instalacija ažuriranja
Omogućavanje SSH pristupa
Postavljanje statične IP adrese
Instalacija potrebnih alata
Instalacija Go
Preuzimanje Go distribucije
Podešavanje varijabli okruženja
Provjera verzije Go
Instalacija Geth-a i Swarm-a
Kreiramo privatni blockchain
Provjera računa i stanja
Zaključci lekcije

Lekcija 4. Računi i prijenos sredstava između računaPregled i dodavanje računa
Pregled liste računa
Dodavanje računa
Parametri komande geth account
Lozinke računa
Kriptovaluta u Ethereum-u
Novčane jedinice Ethereum-a
Određivanje trenutnog stanja naših računa
Prijenos sredstava s jednog računa na drugi
Metoda eth.sendTransaction
Pregled statusa transakcije
Potvrda transakcije
Zaključci lekcije

Lekcija 5. Objavljivanje prvog ugovoraPametni ugovori u Ethereum-u
Izvršavanje pametnog ugovora
Virtualna mašina Ethereum
Integrirano razvojno okruženje Remix Solidity IDE
Pokretanje kompilacije
Poziv funkcija ugovora
Objavljivanje ugovora u privatnoj mreži
Dobivanje definicije ABI i binarnog koda ugovora
Objavljivanje ugovora
Provjera statusa transakcije objave ugovora
Poziv funkcija ugovora
Pakirani kompilator solc
Instalacija solc u Ubuntu-u
Instalacija solc u Debian-u
Kompilacija ugovora HelloSol
Objavljivanje ugovora
Instalacija solc na Rasberian-u
Zaključci lekcije

Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Instalacija u Ubuntu-u
Instalacija u Debian-u
Instalacija i pokretanje Ganache-cli
Instalacija Web3
Instalacija solc
Instalacija Node.js na Rasberian-u
Skripta za dobivanje liste računa u konzoli
Skripta za objavljivanje pametnog ugovora
Pokretanje i dobivanje parametara
Dobivanje parametara pokretanja
Kompilacija ugovora
Otključavanje računa
Preuzimanje ABI i binarnog koda ugovora
Procjena potrebne količine plina
Kreiranje objekta i pokretanje objave ugovora
Pokretanje skripte za objavu ugovora
Poziv funkcija pametnog ugovora
Da li je moguće ažurirati objavljeni pametni ugovor
Rad s Web3 verzijom 1.0.x
Dobivanje liste računa
Objavljivanje ugovora
Poziv funkcija ugovora
Prijenos sredstava s jednog računa na drugi
Prijenos sredstava na račun ugovora
Ažuriranje pametnog ugovora HelloSol
Kreiranje skripte za pregled stanja računa
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Punjenje računa pametnog ugovora
Zaključci lekcije

Lekcija 7. Uvod u TruffleInstalacija Truffle-a
Kreiranje projekta HelloSol
Kreiranje direktorija i datoteka projekta
Direktorij contracts
Katalog migracija
Katalog test
Файл truffle-config.js
Kompilacija ugovora HelloSol
Pokretanje objave ugovora
Pozivanje funkcija ugovora HelloSol u Truffle pozivu
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Instalacija modula truffle-contract
Pozivanje funkcija ugovora getValue i getString
Pozivanje funkcija ugovora setValue i setString
Izmjena ugovora i ponovna objava
Rad s Web3 verzijom 1.0.x
Vršenje izmjena u pametnom ugovoru HelloSol
Skripte za pozivanje metoda ugovora
Testiranje u Truffle
Testiranje na Solidity
Testiranje na JavaScript
Zaključci lekcije

Lekcija 8. Tipovi podataka SolidityUgovor za učenje tipova podataka
Logički tipovi podataka
Nesigned i signed cijeli brojevi
Fiksno decimalni brojevi
Adresa
Promjenljive složenih tipova
Fiksno veličine nizovi
Dinamički nizovi
Popis
Strukture
Mappinzi
Zaključci lekcije

Lekcija 9. Migracija ugovora u privatnu mrežu i Rinkeby mrežuObjavljivanje ugovora iz Truffle u privatnu Geth mrežu
Priprema čvora privatne mreže
Priprema ugovora za rad
Kompilacija i migracija ugovora u Truffle mrežu
Pokretanje migracije u lokalnu geth mrežu
Skupljanje Truffle artefakata
Objavljivanje ugovora iz Truffle u testnoj Rinkeby mreži
Priprema Geth čvora za rad s Rinkeby
Sinhronizacija čvora
Dodavanje računa
Punoću Rinkeby računa eterom
Pokretanje migracije ugovora u Rinkeby mrežu
Pregled informacija o ugovoru u Rinkeby mreži
Truffle konzola za Rinkeby mrežu
Jednostavniji način pozivanja funkcija ugovora
Вызов методов контракта при помощи Node.js
Prenos sredstava između računa u Truffle konzoli za Rinkeby
Zaključci lekcije

Lekcija 10. Decentralizovano skladište podataka Ethereum SwarmKako radi Ethereum Swarm
Instalacija i pokretanje Swarm
Operacije s datotekama i katalogima
Učitavanje datoteke u Ethereum Swarm
Čitanje datoteke iz Ethereum Swarm
Pregled manifestacije učitane datoteke
Učitavanje katalogâ s podkatalogâ
Čitanje datoteke iz učitanog kataloga
Korišćenje javnog pristupnika Swarm
Обращение к Swarm из скриптов Node.js
Perl modul Net::Ethereum::Swarm
Instalacija modula Net::Ethereum::Swarm
Pisanje i čitanje podataka
Zaključci lekcije

Lekcija 11. Web3.py okvir za rad s Ethereum na PythonuInstalacija Web3.py
Ažuriranje i instalacija potrebnih paketa
Instalacija modula easysolc
Objavljivanje ugovora putem Web3.py
Kompilacija ugovora
Povezivanje s provajderom
Izvršenje objave ugovora
Spremanje adrese ugovora i ABI u datoteci
Pokretanje skripte za objavu ugovora
Pozivanje metoda ugovora
Čitanje adrese i ABI ugovora iz JSON datoteke
Povezivanje s provajderom
Kreiranje objekta ugovora
Pozivanje metoda ugovora
Truffle i Web3.py
Zaključci lekcije

Lekcija 12. OrakuliMože li pametni ugovor vjerovati podacima iz vanjskog svijeta
Orakuli kao informativni posrednici blockchaina
Izvor podataka
Kod za prikaz podataka iz izvora
Oracle za zapisivanje tečaja u blockchain
Ugovor USDRateOracle
Ažuriranje tečaja u pametnom ugovoru
Korištenje Web Socket davatelja
Čekanje na događaj RateUpdate
Obrada događaja RateUpdate
Iniciranje ažuriranja podataka u pametnom ugovoru
Zaključci lekcije

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster