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

Knjiga “Stvaranje pametnih ugovora Solidity za Ethereum blockchain. Praktični vodič"
Više od godinu dana radim na knjizi “Creating Solidity Smart Contracts for the Ethereum Blockchain. Praktični vodič", a sada je ovo djelo završeno i knjiga objavljeno i dostupno u Litersu.

Nadam se da će vam moja knjiga pomoći da brzo počnete stvarati Solidity pametne kontakte i distribuirane DApps za Ethereum blockchain. Sastoji se od 12 lekcija s praktičnim zadacima. Nakon što ih ispuni, čitatelj će moći kreirati vlastite lokalne Ethereum čvorove, objaviti pametne ugovore i pozvati njihove metode, razmjenjivati ​​podatke između stvarnog svijeta i pametnih ugovora pomoću orakula te raditi s Rinkeby testnom mrežom za otklanjanje pogrešaka.

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

Ispod ćete pronaći sadržaj i prvo poglavlje knjige (također na Litrese dostupni su fragmenti knjige). Nadam se da ću dobiti povratne informacije, komentare i sugestije. Sve ću to nastojati uzeti u obzir pri pripremi sljedećeg izdanja knjige.

pregled sadržajaUvodNaša je knjiga namijenjena onima koji žele ne samo razumjeti principe Ethereum blockchaina, već i steći praktične vještine u stvaranju distribuiranih DApp-ova u programskom jeziku Solidity za ovu mrežu.

Bolje je ne samo čitati ovu knjigu, već i raditi s njom, obavljajući praktične zadatke opisane u lekcijama. Za rad će vam trebati lokalno računalo, virtualni ili cloud poslužitelj s instaliranim Debian ili Ubuntu OS-om. Također možete koristiti Raspberry Pi za obavljanje mnogih zadataka.

Na prvom satu Pogledat ćemo principe rada Ethereum blockchaina i osnovnu terminologiju, a također ćemo govoriti o tome gdje se ovaj blockchain može koristiti.

Cilj druga lekcija — izradite privatni Ethereum blockchain čvor za daljnji rad u okviru ovog tečaja na Ubuntu i Debian poslužitelju. Pogledat ćemo značajke instaliranja osnovnih uslužnih programa, kao što je geth, koji osigurava rad našeg blockchain čvora, kao i demon decentralizirane pohrane podataka roja.

Treća lekcija će vas naučiti kako eksperimentirati s Ethereumom na jeftinom Raspberry Pi mikroračunalu. Instalirat ćete operativni sustav (OS) Rasberian na Raspberry Pi, uslužni program Geth koji pokreće blockchain čvor i demon za decentraliziranu pohranu podataka Swarm.

Lekcija četiri posvećena je računima i jedinicama kriptovaluta na Ethereum mreži, kao i načinima prijenosa sredstava s jednog računa na drugi s Geth konzole. Naučit ćete kako kreirati račune, pokrenuti transakcije prijenosa sredstava i dobiti status transakcije i potvrdu.

U petoj lekciji Upoznat ćete se s pametnim ugovorima na Ethereum mreži i učiti o njihovom izvršavanju od strane Ethereum virtualnog stroja.

Napravit ćete i objaviti svoj prvi pametni ugovor na Ethereum privatnoj mreži i naučiti kako pozvati njegove funkcije. Da biste to učinili, upotrijebit ćete Remix Solidity IDE. Također ćete naučiti kako instalirati i koristiti solc batch kompajler.
Također ćemo govoriti o tzv. Application Binary Interface (ABI) te vas naučiti kako ga koristiti.

Šesta lekcija posvećen je stvaranju JavaScript skripti koje pokreću Node.js i obavljanju operacija sa Solidity pametnim ugovorima.

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

Osim toga, naučit ćete kako prenijeti sredstva između redovnih računa pomoću skripti, kao i kako ih kreditirati na pametne ugovorne račune.

U sedmoj lekciji Naučit ćete kako instalirati i koristiti okvir Truffle, popularan među programerima Solidity pametnih ugovora. Naučit ćete kako izraditi JavaScript skripte koje pozivaju funkcije ugovora pomoću modula truffle-contract i testirati svoj pametni ugovor pomoću Trufflea.

Osma lekcija posvećen tipovima podataka Solidity. Napisat ćete pametne ugovore koji rade s tipovima podataka kao što su predpisani i nepredpisani cijeli brojevi, predpisani brojevi, nizovi, adrese, složene varijable, nizovi, enumeracije, strukture i rječnici.

U devetoj lekciji Bit ćete korak bliže stvaranju pametnih ugovora za Ethereum mainnet. Naučit ćete kako objaviti ugovore koristeći Truffle na Geth privatnoj mreži, kao i na Rinkeby testnetu. Otklanjanje pogrešaka pametnog ugovora na mreži Rinkeby vrlo je korisno prije objave na glavnoj mreži - tamo je gotovo sve stvarno, ali besplatno.

Kao dio lekcije, izradit ćete Rinkeby testni mrežni čvor, financirati ga sredstvima i objaviti pametni ugovor.

Lekcija 10 posvećen Ethereum Swarm distribuiranoj pohrani podataka. Korištenjem distribuirane pohrane štedite na pohranjivanju velikih količina podataka na Ethereum blockchain.

U ovom ćete vodiču stvoriti lokalnu Swarm pohranu, operacije pisanja i čitanja na datotekama i direktorije datoteka. Zatim ćete naučiti kako raditi s javnim Swarm pristupnikom, pisati skripte za pristup Swarmu iz Node.js, kao i koristiti Perl Net::Ethereum::Swarm modul.

Cilj lekcije 11 — ovladati radom sa Solidity pametnim ugovorima koristeći popularni programski jezik Python i okvir Web3.py. Instalirat ćete okvir, napisati skripte za kompajliranje i objavljivanje pametnog ugovora i pozvati njegove funkcije. U ovom slučaju, Web3.py koristit će se samostalno i u kombinaciji s Truffle integriranim razvojnim okruženjem.

U lekciji 12 naučit ćete prenositi podatke između pametnih ugovora i stvarnog svijeta pomoću orakula. Ovo će vam biti korisno za primanje podataka s web stranica, IoT uređaja, raznih uređaja i senzora te slanje podataka iz pametnih ugovora na te uređaje. U praktičnom dijelu lekcije izradit ćete proročište i pametni ugovor koji prima trenutni tečaj između USD i rublja s web stranice Središnje banke Ruske Federacije.

Lekcija 1. Ukratko o blockchainu i Ethereum mrežiSvrha lekcije: upoznati se s principima rada Ethereum blockchaina, područjima njegove primjene i osnovnom terminologijom.
Praktični zadaci: nije uključeno u ovu lekciju.

Teško da danas postoji programer softvera koji nije čuo ništa o blockchain tehnologiji (Blockchain), kriptovalutama (Cryptocurrency ili Crypto Currency), Bitcoinu (Bitcoin), početnoj ponudi novčića (ICO, Initial coin offering), pametnim ugovorima (Smart Contract), kao i druge pojmove i pojmove vezane uz blockchain.

Blockchain tehnologija otvara nova tržišta i stvara radna mjesta za programere. Ako razumijete sve zamršenosti tehnologija kriptovaluta i tehnologija pametnih ugovora, tada ne biste trebali imati problema s primjenom ovog znanja u praksi.

Mora se reći da se puno špekulira oko kriptovaluta i blockchaina. Ostavit ćemo po strani rasprave o promjenama tečaja kriptovaluta, stvaranju piramida, zamršenosti zakonodavstva o kriptovalutama itd. U našem tečaju obuke fokusirat ćemo se uglavnom na tehničke aspekte korištenja pametnih ugovora na Ethereum blockchainu i razvoju takozvanih decentraliziranih aplikacija (DApps).

Što je blockchain

Blockchain (Block Chain) je lanac podatkovnih blokova međusobno povezanih na određeni način. Na početku lanca nalazi se prvi blok koji se naziva primarni blok (blok geneze) ili blok geneze. Slijedi drugi, pa treći i tako dalje.

Svi ti podatkovni blokovi automatski se dupliciraju na brojnim čvorovima blockchain mreže. To osigurava decentraliziranu pohranu blockchain podataka.
Možete zamisliti blockchain sustav kao veliki broj čvorova (fizičkih ili virtualnih poslužitelja) povezanih u mrežu i replicirajući sve promjene u lancu podatkovnih blokova. Ovo je poput ogromnog računala s više poslužitelja, a čvorovi takvog računala (poslužitelja) mogu biti raštrkani po cijelom svijetu. A i vi možete dodati svoje računalo u blockchain mrežu.

Distribuirana baza podataka

Blockchain se može zamisliti kao distribuirana baza podataka koja se replicira preko svih čvorova blockchain mreže. U teoriji, blockchain će biti operativan sve dok barem jedan čvor radi, pohranjujući sve blokove blockchaina.

Distribuirani registar podataka

Blockchain se može smatrati distribuiranom knjigom podataka i operacija (transakcija). Drugi naziv za takav registar je knjiga.

Podaci se mogu dodavati u distribuiranu knjigu, ali se ne mogu mijenjati ili brisati. Ta se nemogućnost postiže, posebice, korištenjem kriptografskih algoritama, posebnih algoritama za dodavanje blokova u lanac i decentralizirane pohrane podataka.

Prilikom dodavanja blokova i izvođenja operacija (transakcija) koriste se privatni i javni ključevi. Oni ograničavaju korisnike blockchaina dajući im pristup samo svojim blokovima podataka.

Transakcije

Blockchain pohranjuje informacije o operacijama (transakcijama) u blokove. Istodobno, stare, već dovršene transakcije ne mogu se vratiti ili promijeniti. Nove transakcije pohranjuju se u nove, dodane blokove.

Na taj se način cijela povijest transakcija može nepromijenjeno zabilježiti na blockchainu. Stoga se blockchain može koristiti, primjerice, za sigurno pohranjivanje bankovnih transakcija, podataka o autorskim pravima, povijesti promjena vlasnika imovine itd.

Ethereum blockchain sadrži takozvana stanja sustava. Kako se transakcije izvršavaju, stanje se mijenja iz početnog stanja u trenutno stanje. Transakcije se bilježe u blokovima.

Javni i privatni blockchaini

Ovdje treba napomenuti da sve rečeno vrijedi samo za tzv. javne blockchain mreže, koje ne mogu kontrolirati bilo koje fizičke ili pravne osobe, državna agencija ili vlada.
Takozvane privatne blockchain mreže pod punom su kontrolom svojih kreatora i tamo je sve moguće, primjerice potpuna zamjena svih blokova lanca.

Praktične primjene blockchaina

Za što blockchain može biti koristan?

Ukratko, blockchain vam omogućuje sigurno obavljanje transakcija (transakcija) između ljudi ili tvrtki koje ne vjeruju jedna drugoj. Podaci snimljeni u blockchainu (transakcije, osobni podaci, dokumenti, potvrde, ugovori, fakture itd.) ne mogu se krivotvoriti niti zamijeniti nakon snimanja. Stoga je na temelju blockchaina moguće kreirati, primjerice, pouzdane distribuirane registre raznih vrsta dokumenata.

Naravno, znate da se sustavi kriptovaluta stvaraju na temelju blockchaina, dizajniranih da zamijene obični papirnati novac. Papirnati novac se također naziva fiat (od Fiat Money).
Blockchain osigurava pohranjivanje i nepromjenjivost transakcija zabilježenih u blokovima, zbog čega se može koristiti za stvaranje sustava kriptovaluta. Sadrži cjelokupnu povijest prijenosa kripto sredstava između različitih korisnika (računa), a svaku operaciju je moguće pratiti.

Iako transakcije unutar sustava kriptovaluta mogu biti anonimne, povlačenje kriptovalute i njezina zamjena za fiat novac obično rezultira otkrivanjem identiteta vlasnika imovine kriptovalute.

Takozvani pametni ugovori, koji su softver koji radi na Ethereum mreži, omogućuju vam automatizaciju procesa sklapanja transakcija i praćenje njihove provedbe. Ovo je posebno učinkovito ako se plaćanje transakcije vrši pomoću kriptovalute Ether.

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

  • alternativa ovjeri dokumenata kod javnog bilježnika;
  • pohranjivanje očevidnika nekretnina i podataka o prometu nekretninama;
  • pohranjivanje podataka o autorskim pravima na intelektualno vlasništvo (knjige, slike, glazbena djela itd.);
  • stvaranje nezavisnih glasačkih sustava;
  • financije i bankarstvo;
  • logistika na međunarodnoj razini, praćenje kretanja robe;
  • pohranjivanje osobnih podataka kao analogno sustavu osobnih iskaznica;
  • sigurne transakcije u komercijalnom području;
  • pohranjivanje rezultata liječničkih pregleda, kao i povijesti propisanih postupaka

Problemi s blockchainom

Ali, naravno, nije sve tako jednostavno kao što se čini!

Postoje problemi s provjerom podataka prije dodavanja u blockchain (na primjer, jesu li lažni?), problemi sa sigurnošću sustava i aplikacijskog softvera koji se koristi za rad s blockchainom, problemi s mogućnošću korištenja metoda društvenog inženjeringa za krađu pristupa na novčanike za kriptovalute itd. .P.

Opet, ako ne govorimo o javnom blockchainu, čiji su čvorovi raštrkani po cijelom svijetu, već o privatnom blockchainu koji pripada osobi ili organizaciji, tada razina povjerenja ovdje neće biti viša od razine povjerenja u ovoj osobi ili ovoj organizaciji.

Također treba uzeti u obzir da podaci zabilježeni u blockchainu postaju dostupni svima. U tom smislu blockchain (osobito javni) nije prikladan za pohranjivanje povjerljivih informacija. Međutim, činjenica da se podaci na blockchainu ne mogu mijenjati može pomoći u sprječavanju ili istraživanju raznih vrsta prijevarnih aktivnosti.

Ethereum decentralizirane aplikacije bit će zgodne ako njihovu upotrebu plaćate kriptovalutom. Što više ljudi posjeduje kriptovalutu ili ju je voljno kupiti, to će DApps i pametni ugovori postati popularniji.

Uobičajeni problemi s blockchainom koji ometaju njegovu praktičnu primjenu uključuju ograničenu brzinu dodavanja novih blokova i relativno visoke troškove transakcija. Ali tehnologija se u ovom području aktivno razvija i postoje nade da će se tehnički problemi s vremenom riješiti.

Drugi problem je što pametni ugovori na Ethereum blockchainu rade u izoliranom okruženju virtualnih strojeva i nemaju pristup podacima iz stvarnog svijeta. Konkretno, program za pametne ugovore ne može sam čitati podatke sa stranica ili bilo kojih fizičkih uređaja (senzora, kontakata itd.), a također ne može ispisivati ​​podatke bilo kojim vanjskim uređajima. O ovom problemu i načinima njegovog rješavanja raspravljat ćemo u lekciji posvećenoj takozvanim Oraclima – informacijskim posrednicima pametnih ugovora.

Postoje i zakonska ograničenja. U nekim zemljama, na primjer, zabranjeno je koristiti kriptovalutu kao sredstvo plaćanja, ali je možete posjedovati kao neku vrstu digitalne imovine, poput vrijednosnih papira. Takva se imovina može kupiti i prodati na burzi. U svakom slučaju, kada kreirate projekt koji radi s kriptovalutama, morate se upoznati sa zakonodavstvom zemlje pod čijom je jurisdikcijom vaš projekt.

Kako nastaje blockchain lanac

Kao što smo već rekli, blockchain je jednostavan lanac blokova podataka. Prvo se formira prvi blok ovog lanca, zatim mu se dodaje drugi i tako dalje. Pretpostavlja se da su podaci o transakciji pohranjeni u blokovima i dodaju se najnovijem bloku.

Na sl. 1.1 pokazali smo najjednostavniju verziju niza blokova, gdje se prvi blok odnosi na sljedeći.

Knjiga “Stvaranje pametnih ugovora Solidity za Ethereum blockchain. Praktični vodič"
Riža. 1.1. Jednostavan niz blokova

S ovom opcijom, međutim, vrlo je lako petljati sa sadržajem bilo kojeg bloka u lancu, budući da blokovi ne sadrže nikakve podatke za zaštitu od promjena. S obzirom da je blockchain namijenjen osobama i tvrtkama među kojima ne postoji povjerenje, možemo zaključiti da ovaj način pohrane podataka nije prikladan za blockchain.

Počnimo štititi blokove od krivotvorenja. U prvoj fazi pokušat ćemo zaštititi svaki blok kontrolnim zbrojem (slika 1.2).

Knjiga “Stvaranje pametnih ugovora Solidity za Ethereum blockchain. Praktični vodič"
Riža. 1.2. Dodavanje zaštite za ove blokove s kontrolnim zbrojem

Sada napadač ne može jednostavno promijeniti blok, budući da sadrži kontrolni zbroj podataka bloka. Provjera kontrolnog zbroja pokazat će da su podaci promijenjeni.

Za izračun kontrolnog zbroja možete koristiti jednu od funkcija raspršivanja kao što su MD-5, SHA-1, SHA-256 itd. Funkcije raspršivanja izračunavaju vrijednost (na primjer, tekstualni niz konstantne duljine) izvođenjem nepovratnih operacija na bloku podataka. Operacije ovise o vrsti hash funkcije.

Čak i ako se sadržaj podatkovnog bloka malo promijeni, hash vrijednost će se također promijeniti. Analizom vrijednosti hash funkcije nemoguće je rekonstruirati blok podataka za koji je ona izračunata.

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

U ovoj shemi, kontrolni zbroj (funkcija raspršivanja) štiti samo pojedinačne blokove, ali ne i cijeli lanac blokova. Poznavajući algoritam za izračun hash funkcije, napadač može lako zamijeniti sadržaj bloka. Također, ništa ga neće spriječiti da uklanja blokove iz lanca ili dodaje nove.

Kako biste zaštitili cijeli lanac kao cjelinu, možete u svaki blok, zajedno s podacima, pohraniti i hash podataka iz prethodnog bloka (Slika 1.3).

Knjiga “Stvaranje pametnih ugovora Solidity za Ethereum blockchain. Praktični vodič"
Riža. 1.3. Dodajte hash prethodnog bloka u blok podataka

U ovoj shemi, da biste promijenili blok, trebate ponovno izračunati hash funkcije svih sljedećih blokova. Čini se, u čemu je problem?

U pravim lancima blokova dodatno se stvaraju umjetne poteškoće za dodavanje novih blokova - koriste se algoritmi koji zahtijevaju puno računalnih resursa. Uzimajući u obzir da za izmjene bloka morate ponovno izračunati ne samo ovaj blok, već i sve sljedeće, to će biti iznimno teško učiniti.

Podsjetimo se također da se blockchain podaci pohranjuju (dupliciraju) na brojnim mrežnim čvorovima, tj. Koristi se decentralizirana pohrana. A ovo znatno otežava lažiranje bloka, jer promjene se moraju izvršiti na svim mrežnim čvorovima.

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

Ethereum blockchain

Ethereum blockchain je platforma na kojoj se mogu kreirati distribuirane DApps. Za razliku od drugih platformi, Ethereum omogućuje korištenje takozvanih pametnih ugovora (smart contracts), napisanih u programskom jeziku Solidity.

Ovu platformu kreirao je 2013. godine Vitalik Buterin, osnivač časopisa Bitcoin Magazine, a pokrenuta je 2015. godine. Sve što ćemo proučavati ili raditi na našem tečaju posebno se odnosi na Ethereum blockchain i Solidity pametne ugovore.

Rudarstvo ili kako se stvaraju blokovi

Rudarenje je prilično složen i resursno intenzivan proces dodavanja novih blokova u lanac blockchaina, a uopće nije "rudarenje kriptovalute". Rudarstvo osigurava funkcionalnost blockchaina, jer upravo je ovaj proces odgovoran za dodavanje transakcija u Ethereum blockchain.

Ljudi i organizacije uključeni u dodavanje blokova nazivaju se rudari.
Softver koji radi na čvorovima rudara pokušava pronaći parametar raspršivanja pod nazivom Nonce za posljednji blok kako bi dobio određenu vrijednost raspršivanja koju je odredila mreža. Ethash algoritam za raspršivanje koji se koristi u Ethereumu omogućuje vam da dobijete Nonce vrijednost samo putem sekvencijalnog pretraživanja.

Ako rudarski čvor pronađe ispravnu Nonce vrijednost, onda je to takozvani dokaz rada (PoW, Proof-of-work). U tom slučaju, ako se blok doda Ethereum mreži, rudar dobiva određenu nagradu u valuti mreže - Ether. U vrijeme pisanja, nagrada je 5 Ethera, ali će se s vremenom smanjiti.

Dakle, rudari Ethereuma osiguravaju rad mreže dodavanjem blokova i za to dobivaju novac u kriptovaluti. Na internetu postoji mnogo informacija o rudarima i rudarenju, ali mi ćemo se usredotočiti na stvaranje Solidity ugovora i DApps na Ethereum mreži.

Sažetak lekcije

U prvoj lekciji ste se upoznali s blockchainom i naučili da je to posebno sastavljen niz blokova. Sadržaj prethodno snimljenih blokova ne može se mijenjati, jer bi to zahtijevalo ponovno izračunavanje svih sljedećih blokova na mnogim mrežnim čvorovima, što zahtijeva puno resursa i vremena.

Blockchain se može koristiti za pohranjivanje rezultata transakcija. Glavna mu je svrha organizirati sigurne transakcije između strana (osoba i organizacija) među kojima ne postoji povjerenje. Naučili ste u kojim područjima poslovanja iu kojim područjima se mogu koristiti Ethereum blockchain i Solidity pametni ugovori. To je bankarski sektor, uknjižba vlasničkih prava, dokumenata itd.

Također ste naučili da se prilikom korištenja blockchaina mogu pojaviti različiti problemi. To su problemi provjere informacija dodanih u blockchain, brzina blockchaina, trošak transakcija, problem razmjene podataka između pametnih ugovora i stvarnog svijeta, kao i potencijalni napadi napadača s ciljem krađe sredstava u kriptovalutama s korisničkih računa. .

Također smo ukratko govorili o rudarenju kao procesu dodavanja novih blokova u blockchain. Rudarstvo je neophodno za dovršetak transakcija. Oni koji se bave rudarenjem osiguravaju funkcioniranje blockchaina i za to dobivaju nagradu u kriptovaluti.

Lekcija 2. Priprema radnog okruženja u Ubuntu i Debian OS-uOdabir operacijskog sustava
Instaliranje potrebnih uslužnih programa
Instaliranje Getha i Swarma na Ubuntu
Instaliranje Getha i Swarma na Debian
Preliminarna priprema
Preuzimanje Go distribucije
Postavljanje varijabli okoline
Provjera Go verzije
Instaliranje Getha i Swarma
Stvaranje privatnog blockchaina
Priprema genesis.json datoteke
Napravite imenik za rad
Stvorite račun
Pokretanje inicijalizacije čvora
Mogućnosti pokretanja čvora
Spojite se na naš čvor
Upravljanje rudarenjem i provjera stanja
Gašenje Geth konzole
Sažetak lekcije

Lekcija 3. Priprema radnog okruženja na Raspberry Pi 3Priprema Raspberry Pi 3 za rad
Instaliranje Rasberiana
Instaliranje ažuriranja
Omogućavanje SSH pristupa
Postavljanje statičke IP adrese
Instaliranje potrebnih uslužnih programa
Instaliranje Go
Preuzimanje Go distribucije
Postavljanje varijabli okoline
Provjera Go verzije
Instaliranje Getha i Swarma
Stvaranje privatnog blockchaina
Provjera računa i stanja
Sažetak lekcije

Lekcija 4. Računi i prijenos sredstava između računaPregledajte i dodajte račune
Pogledajte popis računa
Dodavanje računa
opcije naredbe geth računa
Lozinke računa
Kriptovaluta u Ethereumu
Valutne jedinice Ethereum
Utvrđujemo trenutno stanje naših računa
Prijenos sredstava s jednog računa na drugi
eth.sendTransaction metoda
Pregled statusa transakcije
Potvrda o transakciji
Sažetak lekcije

Lekcija 5. Objavljivanje vašeg prvog ugovoraPametni ugovori u Ethereumu
Pametno izvršenje ugovora
Ethereum virtualni stroj
Integrirano razvojno okruženje Remix Solidity IDE
Pokretanje kompilacije
Pozivanje ugovornih funkcija
Objava ugovora na privatnoj mreži
Dobivanje ABI definicije i binarnog koda ugovora
Objava ugovora
Provjera statusa transakcije objave ugovora
Pozivanje ugovornih funkcija
Skupni kompajler solc
Instaliranje solc-a na Ubuntu
Instaliranje solc-a na Debian
Sastavljanje HelloSol ugovora
Objava ugovora
Instaliranje solc-a na Rasberian
Sažetak lekcije

Lekcija 6. Pametni ugovori i Node.jsInstalacija Node.js
Instalacija na Ubuntu
Instalacija na Debian
Instaliranje i pokretanje Ganache-cli
Web3 instalacija
Instalacija solc
Instaliranje Node.js na Rasberian
Skripta za dobivanje popisa računa u konzoli
Skripta za objavu pametnog ugovora
Pokreni i dohvati parametre
Dobivanje mogućnosti pokretanja
Sastavljanje ugovora
Deblokiranje vašeg računa
Učitavanje ABI i ugovornog binarnog koda
Procjena potrebne količine plina
Stvorite objekt i počnite objavljivati ​​ugovor
Pokretanje skripte za objavljivanje ugovora
Pozivanje funkcija pametnog ugovora
Je li moguće ažurirati objavljeni pametni ugovor?
Rad s Web3 verzijom 1.0.x
Dobivanje popisa računa
Objava ugovora
Pozivanje ugovornih funkcija
Prijenos sredstava s jednog računa na drugi
Prijenos sredstava na ugovorni račun
Ažuriranje HelloSol pametnog ugovora
Izradite skriptu za pregled stanja računa
Dodajte poziv funkciji getBalance u skriptu call_contract_get_promise.js
Nadopunjavamo račun pametnog ugovora
Sažetak lekcije

Lekcija 7. Uvod u tartufeInstaliranje Trufflea
Napravite HelloSol projekt
Stvaranje projektnog imenika i datoteka
Imenik ugovora
Migracije kataloga
Test imenika
datoteka truffle-config.js
Sastavljanje HelloSol ugovora
Počnite objavljivati ​​ugovor
Pozivanje HelloSol ugovornih funkcija u Tartufovom odzivniku
Pozivanje HelloSol ugovornih funkcija iz JavaScript skripte koja pokreće Node.js
Instalacija modula ugovora o tartufima
Pozivanje ugovornih funkcija getValue i getString
Pozivanje ugovornih funkcija setValue i setString
Izmjena ugovora i ponovno objavljivanje
Rad s Web3 verzijom 1.0.x
Izmjene HelloSol pametnog ugovora
Skripte za pozivanje ugovornih metoda
Testiranje u Tartufu
Ispitivanje čvrstoće
JavaScript test
Sažetak lekcije

Lekcija 8. Vrste podataka o čvrstoćiUgovor za učenje tipova podataka
Booleovi tipovi podataka
Cijeli brojevi bez predznaka i cijeli brojevi s predznakom
Brojevi fiksne točke
adresa
Varijable složenih tipova
Nizovi fiksne veličine
Dinamički nizovi
Nabrajanje
Strukture
Mapiranje rječnika
Sažetak lekcije

Lekcija 9. Migracija ugovora na privatnu mrežu i na Rinkeby mrežuObjavljivanje ugovora iz Trufflea privatnoj Geth mreži
Priprema privatnog mrežnog čvora
Priprema ugovora o djelu
Sastavljanje i migracija ugovora na Tartuf mrežu
Pokretanje migracije lokalne mreže geth
Dobivanje artefakata tartufa
Objavljivanje ugovora s Trufflea na Rinkeby testnet
Priprema Geth čvora za rad s Rinkebyjem
Sinkronizacija čvorova
Dodavanje računa
Dopuna vašeg Rinkeby računa etherom
Pokretanje ugovorne migracije na Rinkeby mrežu
Pregled informacija o ugovoru na mreži Rinkeby
Truffle konzola za Rinkeby Network
Lakši način pozivanja ugovornih funkcija
Pozivanje ugovornih metoda pomoću Node.js
Prijenos sredstava između računa u konzoli Truffle za Rinkby
Sažetak lekcije

Lekcija 10. Decentralizirana pohrana podataka Ethereum SwarmKako radi Ethereum Swarm?
Instalacija i pokretanje Swarma
Operacije s datotekama i imenicima
Prijenos datoteke u Ethereum Swarm
Čitanje datoteke iz Ethereum Swarma
Pogledajte manifest učitane datoteke
Učitavanje direktorija s poddirektorijima
Čitanje datoteke iz preuzetog imenika
Korištenje javnog Swarm pristupnika
Pristup Swarmu iz Node.js skripti
Perl Net::Ethereum::Swarm modul
Instalacija Net::Ethereum::Swarm modula
Zapisivanje i čitanje podataka
Sažetak lekcije

Lekcija 11. Web3.py okvir za rad s Ethereumom u PythonuInstaliranje Web3.py
Ažuriranje i instaliranje potrebnih paketa
Instalacija easysolc modula
Objavljivanje ugovora pomoću Web3.py
Sastavljanje ugovora
Povezivanje s davateljem usluga
Izvršite objavu ugovora
Spremanje adrese ugovora i abi u datoteku
Pokretanje skripte za objavljivanje ugovora
Metode pozivanja ugovora
Čitanje adrese i abi ugovora iz JSON datoteke
Povezivanje s davateljem usluga
Stvaranje objekta ugovora
Metode pozivanja ugovora
Tartuf i Web3.py
Sažetak lekcije

Lekcija 12. ProročanstvaMože li pametni ugovor vjerovati podacima iz vanjskog svijeta?
Oracle kao blockchain informacijski posrednici
Izvor podataka
Kod za predstavljanje podataka iz izvora
Oracle za bilježenje tečaja u blockchainu
USDRateOracle ugovor
Ažuriranje tečaja u pametnom ugovoru
Korištenje Web Socket Providera
Čeka se događaj RateUpdate
Rukovanje događajem RateUpdate
Pokretanje ažuriranja podataka u pametnom ugovoru
Sažetak lekcije

Izvor: www.habr.com

Dodajte komentar