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

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

Nadam se da će vam moja knjiga pomoći da brzo počnete stvarati Solidity pametne kontakte i distribuirane DA aplikacije za Ethereum blockchain. Sastoji se od 12 časova sa praktičnim zadacima. Nakon što ih ispuni, čitatelj će moći kreirati vlastite lokalne Ethereum čvorove, objavljivati ​​pametne ugovore i pozivati ​​njihove metode, razmjenjivati ​​podatke između stvarnog svijeta i pametnih ugovora pomoću proročišta i raditi s Rinkeby test mrežom za otklanjanje grešaka.

Knjiga je namenjena svima koji su zainteresovani za napredne tehnologije u oblasti blockchaina i žele da brzo steknu znanja koja im omogućavaju da rade zanimljiv i obećavajući 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. Pokušat ću sve ovo uzeti u obzir prilikom pripreme sljedećeg izdanja knjige.

SadržajUvodNaša knjiga je namijenjena onima koji žele ne samo razumjeti principe Ethereum blockchaina, već i steći praktične vještine u kreiranju 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 server s instaliranim Debian ili Ubuntu OS-om. Raspberry Pi možete koristiti i za obavljanje mnogih zadataka.

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

Cilj druga lekcija — kreirajte privatni Ethereum blockchain čvor za daljnji rad u okviru ovog tečaja na Ubuntu i Debian serveru. Pogledaćemo karakteristike instaliranja osnovnih uslužnih programa, kao što je geth, koji obezbeđuje rad našeg blockchain čvora, kao i demona za decentralizovano skladištenje podataka roja.

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

Četvrta lekcija posvećen je računima i jedinicama kriptovaluta na Ethereum mreži, kao i načinima prijenosa sredstava s jednog računa na drugi sa Geth konzole. Naučit ćete kako kreirati račune, pokrenuti transakcije prijenosa sredstava i dobiti status transakcije i račun.

U petoj lekciji Upoznat ćete se sa pametnim ugovorima na Ethereum mreži i naučiti o njihovom izvršavanju od strane Ethereum virtualne mašine.

Napravit ćete i objaviti svoj prvi pametni ugovor na privatnoj mreži Ethereum i naučiti kako pozvati njegove funkcije. Da biste to učinili, koristit ćete Remix Solidity IDE. Također ćete naučiti kako instalirati i koristiti solc batch kompajler.
Takođe ćemo govoriti o takozvanom binarnom interfejsu aplikacije (ABI) i naučiti vas kako da ga koristite.

Šesta lekcija je posvećen kreiranju JavaScript skripti koje pokreću Node.js i izvođenju 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 prenositi sredstva između redovnih računa koristeći skripte, kao i kako ih kreditirati na račune pametnih ugovora.

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

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

U devetoj lekciji Bit ćete korak bliže kreiranju 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 grešaka u pametnom ugovoru na mreži Rinkeby vrlo je korisno prije objavljivanja na glavnoj mreži - tamo je gotovo sve stvarno, ali besplatno.

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

Lekcija 10 posvećena Ethereum Swarm distribuiranoj pohrani podataka. Koristeći distribuiranu pohranu, štedite na pohranjivanju velikih količina podataka na Ethereum blockchainu.

U ovom vodiču kreirat ćete lokalnu Swarm memoriju, operacije pisanja i čitanja datoteka i direktorija datoteka. Zatim ćete naučiti kako raditi sa javnim Swarm gateway-om, pisati skripte za pristup Swarm-u iz Node.js, kao i kako koristiti Perl Net::Ethereum::Swarm modul.

Cilj lekcije 11 — savladajte rad 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 će se koristiti samostalno iu kombinaciji sa Truffle integrisanim razvojnim okruženjem.

Na lekciji 12 naučićete da prenosite podatke između pametnih ugovora i stvarnog sveta koristeći proročišta. Ovo će vam biti korisno za primanje podataka sa 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 kreirat ćete proročište i pametni ugovor koji prima trenutni kurs između USD i rubalja sa web stranice Centralne banke Ruske Federacije.

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

Teško da postoji programer softvera danas koji nije čuo ništa o blockchain tehnologiji (Blockchain), kriptovalutama (Cryptocurrency ili Crypto Currency), Bitcoin (Bitcoin), inicijalnoj ponudi kovanica (ICO, Initial coin offering), pametnim ugovorima (Smart Contract), kao i druge koncepte i termine vezane za blockchain.

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

Mora se reći da se dosta špekulira oko kriptovaluta i blok lanaca. Ostavićemo po strani diskusije o promenama kurseva kriptovaluta, stvaranju piramida, zamršenosti zakona o kriptovalutama, itd. U našem kursu obuke fokusirat ćemo se uglavnom na tehničke aspekte primjene pametnih ugovora Ethereum blockchaina (Ethereum, Ether) i razvoj takozvanih decentraliziranih aplikacija (Distributed Application, DApp).

Što je blockchain

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

Svi ovi blokovi podataka se automatski dupliraju na brojnim čvorovima blockchain mreže. Ovo osigurava decentralizirano pohranjivanje blockchain podataka.
Možete zamisliti blockchain sistem kao veliki broj čvorova (fizičkih ili virtuelnih servera) povezanih u mrežu i replicirajući sve promjene u lancu blokova podataka. Ovo je poput ogromnog multi-server računara, a čvorovi takvog računara (serveri) mogu biti razbacani po cijelom svijetu. I vi također možete dodati svoj računar u blockchain mrežu.

Distributed Database

Blockchain se može smatrati distribuiranom bazom podataka koja se replicira na sve čvorove 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 dodati u distribuiranu knjigu, ali se ne mogu mijenjati ili brisati. Ova nemogućnost se postiže, posebno, upotrebom kriptografskih algoritama, posebnih algoritama za dodavanje blokova u lanac i decentralizovanog skladištenja podataka.

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

Transakcije

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

Na ovaj način, cjelokupna historija transakcija može biti zabilježena nepromijenjena na blockchainu. Stoga se blockchain može koristiti, na primjer, za sigurno pohranjivanje bankarskih transakcija, informacija o autorskim pravima, historije promjena vlasnika imovine itd.

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

Javni i privatni blockchains

Ovdje treba napomenuti da sve navedeno vrijedi samo za takozvane javne blockchain mreže, koje ne može kontrolirati nijedno fizičko ili pravno lice, vladina agencija ili vlada.
Takozvane privatne blockchain mreže su pod punom kontrolom svojih kreatora i tu je sve moguće, na primjer, potpuna zamjena svih blokova lanca.

Praktične primjene blockchaina

Za šta blockchain može biti koristan?

Ukratko, blockchain vam omogućava da bezbedno obavljate transakcije (transakcije) između ljudi ili kompanija koje ne veruju jedna drugoj. Podaci snimljeni u blockchain-u (transakcije, lični podaci, dokumenti, sertifikati, ugovori, fakture, itd.) ne mogu se krivotvoriti ili zamijeniti nakon snimanja. Stoga je na osnovu blockchaina moguće kreirati, na primjer, pouzdane distribuirane registre raznih vrsta dokumenata.

Naravno, znate da se sistemi kriptovalute stvaraju na bazi blockchaina, dizajniranih da zamijene običan papirni novac. Papirni novac se još naziva i fiat (od fiat Money).
Blockchain osigurava pohranu i nepromjenjivost transakcija snimljenih u blokovima, zbog čega se može koristiti za kreiranje sistema kriptovaluta. Sadrži cjelokupnu historiju prijenosa kripto sredstava između različitih korisnika (naloga), a svaka operacija se može pratiti.

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

Takozvani pametni ugovori, koji predstavljaju softver koji radi na Ethereum mreži, omogućavaju vam automatizaciju procesa zaključivanja transakcija i praćenja njihove implementacije. Ovo je posebno učinkovito ako se plaćanje za transakciju vrši korištenjem kriptovalute Ether.

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

  • alternativa za overu dokumenata;
  • čuvanje registra objekata nekretnina i podataka o prometu sa objektima nekretnina;
  • čuvanje podataka o autorskim pravima na intelektualnu svojinu (knjige, slike, muzička dela, itd.);
  • stvaranje nezavisnih sistema glasanja;
  • finansije i bankarstvo;
  • logistika na međunarodnom nivou, praćenje kretanja robe;
  • pohranjivanje osobnih podataka kao analogno sistemu osobnih kartica;
  • sigurne transakcije u komercijalnom polju;
  • čuvanje rezultata medicinskih pregleda, kao i istorije propisanih procedura

Problemi sa blockchainom

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

Postoje problemi s provjerom podataka prije dodavanja u blockchain (na primjer, da li su lažni?), problemi sa sigurnošću sistemskog i aplikativnog 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 kriptovaluta 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 nivo povjerenja ovdje neće biti veći 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 (posebno javni) nije pogodan za pohranjivanje povjerljivih informacija. Međutim, činjenica da se informacije o blockchainu ne mogu promijeniti može pomoći u sprječavanju ili istrazi različitih vrsta lažnih aktivnosti.

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

Uobičajeni problemi s blockchainom koji ometaju njegovu praktičnu primjenu uključuju ograničenu brzinu kojom se mogu dodati novi blokovi i relativno visoke cijene transakcija. Ali tehnologija u ovoj oblasti se aktivno razvija i postoje nade da će se tehnički problemi vremenom riješiti.

Drugi problem je što pametni ugovori na Ethereum blockchainu funkcionišu u izolovanom okruženju virtuelnih mašina i nemaju pristup podacima iz stvarnog sveta. Konkretno, program pametnih ugovora ne može sam čitati podatke sa lokacija ili bilo kojeg fizičkog uređaja (senzora, kontakata, itd.), a također ne može slati podatke na bilo koji vanjski uređaj. O ovom problemu i načinima za njegovo rješavanje razgovarat ćemo u lekciji posvećenoj takozvanim Oraclesima – informacionim posrednicima pametnih ugovora.

Postoje i zakonska ograničenja. U nekim zemljama, na primjer, zabranjeno je koristiti kriptovalutu kao sredstvo plaćanja, ali možete je posjedovati kao neku vrstu digitalne imovine, poput vrijednosnih papira. Takva imovina se može kupiti i prodati na berzi. U svakom slučaju, kada kreirate projekat koji radi sa kriptovalutama, potrebno je da se upoznate sa zakonodavstvom zemlje u čiju je nadležnost vaš projekat.

Kako se formira lanac blockchaina

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 da se dodaju najnovijem bloku.

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

Knjiga “Kreiranje Solidity pametnih ugovora za Ethereum blockchain. Praktični vodič"
Rice. 1.1. Jednostavan niz blokova

Sa ovom opcijom, međutim, vrlo je lako mijenjati sadržaj bilo kojeg bloka u lancu, budući da blokovi ne sadrže nikakve informacije za zaštitu od promjena. S obzirom da je blockchain namijenjen za korištenje od strane ljudi i kompanija između kojih ne postoji povjerenje, možemo zaključiti da ovaj način pohranjivanja podataka nije prikladan za blockchain.

Počnimo štititi blokove od krivotvorenja. U prvoj fazi pokušaćemo da zaštitimo svaki blok kontrolnom sumom (slika 1.2).

Knjiga “Kreiranje Solidity pametnih ugovora za Ethereum blockchain. Praktični vodič"
Rice. 1.2. Dodavanje zaštite za ove blokove sa kontrolnim zbrojem

Sada napadač ne može jednostavno promijeniti blok, jer sadrži kontrolni zbroj podataka bloka. Provjera kontrolne sume će pokazati da su podaci promijenjeni.

Da biste izračunali kontrolnu sumu, možete koristiti jednu od funkcija heširanja kao što su MD-5, SHA-1, SHA-256, itd. Hash funkcije izračunavaju vrijednost (na primjer, tekstualni niz konstantne dužine) izvodeći nepovratne operacije nad blokom podataka. Operacije zavise od tipa hash funkcije.

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

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

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

Da biste zaštitili cijeli lanac u cjelini, također možete pohraniti u svaki blok, zajedno s podacima, i hash podataka iz prethodnog bloka (slika 1.3).

Knjiga “Kreiranje Solidity pametnih ugovora za Ethereum blockchain. Praktični vodič"
Rice. 1.3. Dodajte heš prethodnog bloka u blok podataka

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

U stvarnim blockchain-ovima dodatno se stvaraju umjetne poteškoće za dodavanje novih blokova - koriste se algoritmi koji zahtijevaju mnogo računarskih resursa. S obzirom na to da da biste izvršili izmjene u bloku, morate ponovo izračunati ne samo ovaj blok, već i sve naredne, to će biti izuzetno teško izvodljivo.

Podsjetimo također da se blockchain podaci pohranjuju (dupliraju) na brojnim mrežnim čvorovima, tj. Koristi se decentralizovano skladištenje. I to znatno otežava lažiranje bloka, jer promjene se moraju izvršiti na svim mrežnim čvorovima.

Pošto 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 distribuirani DApps. Za razliku od drugih platformi, Ethereum dozvoljava korištenje takozvanih pametnih ugovora (pametnih ugovora), napisanih u programskom jeziku Solidity.

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

Rudarstvo ili kako se kreiraju blokovi

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

Ljudi i organizacije uključeni u dodavanje blokova zovu se rudari.
Softver koji radi na rudarskim čvorovima pokušava pronaći parametar heširanja pod nazivom Nonce za posljednji blok kako bi dobio specifičnu vrijednost heširanja koju je odredila mreža. Ethash algoritam heširanja koji se koristi u Ethereumu omogućava vam da dobijete vrijednost Nonce samo kroz sekvencijalno pretraživanje.

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

Tako rudari Ethereuma osiguravaju rad mreže dodavanjem blokova i za to primaju novac od kriptovalute. Na internetu ima puno informacija o rudarima i rudarenju, ali mi ćemo se fokusirati na kreiranje Solidity ugovora i DApp-ova na Ethereum mreži.

Sažetak lekcije

U prvoj lekciji ste se upoznali sa blockchainom i naučili da je to posebno sastavljena sekvenca blokova. Sadržaj prethodno snimljenih blokova ne može se mijenjati, jer bi to zahtijevalo ponovno izračunavanje svih narednih blokova na mnogim mrežnim čvorovima, što zahtijeva mnogo resursa i vremena.

Blockchain se može koristiti za pohranjivanje rezultata transakcija. Njegova glavna svrha je organiziranje sigurnih transakcija između strana (osoba i organizacija) između kojih ne postoji povjerenje. Naučili ste u kojim se specifičnim područjima poslovanja i u kojim područjima Ethereum blockchain i Solidity pametni ugovori mogu koristiti. Ovo je bankarski sektor, registracija imovinskih prava, dokumenta itd.

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

Također smo ukratko razgovarali o rudarenju kao procesu dodavanja novih blokova u blockchain. Mining je neophodan za završ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 operativnog sistema
Instaliranje potrebnih uslužnih programa
Instaliranje Getha i Swarma na Ubuntu
Instaliranje Getha i Swarma na Debian
Preliminarna priprema
Preuzimanje Go distribucije
Postavljanje varijabli okruženja
Provjeravam Go verziju
Instaliranje Getha i Swarma
Kreiranje privatnog blockchaina
Priprema genesis.json fajla
Kreirajte direktorij za rad
Kreirajte nalog
Pokretanje inicijalizacije čvora
Opcije pokretanja čvora
Povežite se na naš čvor
Upravljanje rudarstvom i provjera bilansa
Isključivanje Geth konzole
Sažetak lekcije

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

Lekcija 4. Računi i prijenos sredstava između računaPregledajte i dodajte račune
Pogledajte listu računa
Dodavanje naloga
opcije komande geth naloga
Lozinke naloga
Kriptovaluta u Ethereumu
Ethereum valutne jedinice
Određujemo trenutno stanje na našim računima
Prenesite sredstva sa jednog računa na drugi
eth.sendTransaction Method
Pogledajte status transakcije
Potvrda o transakciji
Sažetak lekcije

Lekcija 5. Objavljivanje vašeg prvog ugovoraPametni ugovori u Ethereumu
Pametno izvršenje ugovora
Ethereum virtuelna mašina
Integrirano razvojno okruženje Remix Solidity IDE
Pokretanje kompilacije
Pozivanje ugovornih funkcija
Objavljivanje ugovora na privatnoj mreži
Dobivanje ABI definicije i binarnog koda ugovora
Objava ugovora
Provjera statusa transakcije objave ugovora
Pozivanje ugovornih funkcija
Batch compiler 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.jsInstaliranje Node.js
Instalacija na Ubuntu
Instalacija na Debian
Instaliranje i pokretanje Ganache-cli-a
Web3 instalacija
Instaliranje solc
Instaliranje Node.js na Rasberian
Skripta za dobijanje liste naloga u konzoli
Skripta za objavljivanje pametnog ugovora
Pokrenite i dohvatite parametre
Dobivanje opcija za pokretanje
Sastavljanje ugovora
Otključavanje vašeg računa
Učitavanje ABI i ugovornog binarnog koda
Procjena potrebne količine plina
Kreirajte objekat i počnite objavljivati ​​ugovor
Pokretanje skripte za objavljivanje ugovora
Pozivanje funkcija pametnog ugovora
Da li je moguće ažurirati objavljeni pametni ugovor?
Rad sa Web3 verzijom 1.0.x
Dobivanje liste računa
Objava ugovora
Pozivanje ugovornih funkcija
Prenesite sredstva sa jednog računa na drugi
Prenesite sredstva na ugovorni račun
Ažuriranje HelloSol pametnog ugovora
Kreirajte skriptu da vidite stanje na vašem računu
Dodajte poziv funkciji getBalance skripti call_contract_get_promise.js
Dopunjavamo račun pametnog ugovora
Sažetak lekcije

Lekcija 7. Uvod u tartufInstaliranje Tartufa
Kreirajte HelloSol projekat
Kreiranje direktorija projekta i datoteka
Imenik ugovora
Migracije kataloga
Test imenika
truffle-config.js fajl
Sastavljanje HelloSol ugovora
Počnite objavljivati ​​ugovor
Pozivanje HelloSol ugovornih funkcija u Tartuf promptu
Pozivanje HelloSol ugovornih funkcija iz JavaScript skripte koja pokreće Node.js
Instaliranje modula tartufa ugovora
Pozivanje ugovornih funkcija getValue i getString
Pozivanje ugovornih funkcija setValue i setString
Izmjena ugovora i ponovno objavljivanje
Rad sa Web3 verzijom 1.0.x
Izmjena HelloSol pametnog ugovora
Skripte za pozivanje metoda ugovora
Testiranje u Tartufu
Test čvrstoće
JavaScript test
Sažetak lekcije

Lekcija 8. Tipovi podataka o čvrstoćiUgovor za učenje tipova podataka
Booleovski tipovi podataka
Neoznačeni cijeli brojevi i cijeli brojevi s predznakom
Brojevi fiksnih tačaka
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 od Tartufa na privatnu Geth mrežu
Priprema privatnog mrežnog čvora
Priprema ugovora o radu
Sastavljanje i migracija ugovora na Tartuffle mrežu
Pokretanje geth migracije lokalne mreže
Dobivanje artefakata od tartufa
Objavljivanje ugovora od Tartufa na Rinkeby testnetu
Priprema Geth čvora za rad sa Rinkebyjem
Sinhronizacija čvorova
Dodavanje naloga
Dopunite svoj Rinkeby račun eterom
Pokretanje migracije ugovora na Rinkeby mrežu
Pregled informacija o ugovoru na mreži Rinkeby
Konzola tartufa za mrežu Rinkeby
Lakši način za pozivanje funkcija ugovora
Pozivanje metoda ugovora koristeći Node.js
Prenesite sredstva između računa u konzoli Truffle za Rinkby
Sažetak lekcije

Lekcija 10. Ethereum Swarm decentralizirana pohrana podatakaKako funkcioniše Ethereum Swarm?
Instaliranje i pokretanje Swarma
Operacije sa datotekama i direktorijumima
Prijenos datoteke na Ethereum Swarm
Čitanje fajla iz Ethereum Swarma
Pogledajte manifest otpremljene datoteke
Učitavanje direktorija s poddirektorijumima
Čitanje datoteke iz preuzetog direktorija
Korištenje javnog Swarm gatewaya
Pristup Swarmu iz Node.js skripti
Perl Net::Ethereum::Swarm modul
Instaliranje Net::Ethereum::Swarm modula
Pisanje i čitanje podataka
Sažetak lekcije

Lekcija 11. Web3.py okvir za rad sa Ethereumom u PythonuInstaliranje Web3.py
Ažuriranje i instaliranje potrebnih paketa
Instalacija easysolc modula
Objavljivanje ugovora pomoću Web3.py
Sastavljanje ugovora
Povezivanje sa provajderom
Izvršiti objavu ugovora
Spremanje adrese ugovora i abi u datoteku
Pokretanje skripte za objavljivanje ugovora
Pozivanje metoda ugovora
Čitanje adrese i ABI ugovora iz JSON datoteke
Povezivanje sa provajderom
Kreiranje objekta ugovora
Pozivanje metoda ugovora
Tartuf i Web3.py
Sažetak lekcije

Lekcija 12. OraclesMože li pametni ugovor vjerovati podacima iz vanjskog svijeta?
Oracle kao blockchain informacioni posrednici
Izvor podataka
Kod za predstavljanje podataka iz izvora
Oracle za snimanje kursa u blockchain
USDRateOracle ugovor
Ažuriranje kursa u pametnom ugovoru
Korištenje dobavljača web socketa
Č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