Knjiga »Ustvarjanje pametnih pogodb Solidity za verigo blokov Ethereum. Praktični vodnik"

Knjiga »Ustvarjanje pametnih pogodb Solidity za verigo blokov Ethereum. Praktični vodnik"
Več kot eno leto delam na knjigi »Ustvarjanje pametnih pogodb Solidity za Ethereum Blockchain. Praktični vodnik", zdaj pa je to delo končano in knjiga objavljeno in na voljo v Litrih.

Upam, da vam bo moja knjiga pomagala hitro začeti ustvarjati pametne stike Solidity in distribuirane DApps za verigo blokov Ethereum. Sestavljen je iz 12 lekcij s praktičnimi nalogami. Ko jih izpolni, bo bralec lahko ustvaril lastna lokalna vozlišča Ethereum, objavil pametne pogodbe in klical njihove metode, izmenjal podatke med resničnim svetom in pametnimi pogodbami z uporabo oraklov ter delal z omrežjem za odpravljanje napak Rinkeby.

Knjiga je namenjena vsem, ki jih zanimajo napredne tehnologije na področju veriženja blokov in si želijo hitro pridobiti znanje, ki jim omogoča zanimivo in obetavno delo.

Spodaj najdete kazalo in prvo poglavje knjige (tudi na Litrese fragmenti knjige so na voljo). Upam, da bom prejel povratne informacije, komentarje in predloge. Vse to bom skušal upoštevati pri pripravi naslednje izdaje knjige.

KazaloPredstavitevNaša knjiga je namenjena tistim, ki želijo ne le razumeti načela blokovne verige Ethereum, ampak tudi pridobiti praktične veščine pri ustvarjanju porazdeljenih DApps v programskem jeziku Solidity za to omrežje.

Bolje je, da te knjige ne samo preberete, ampak z njo delate in izvajate praktične naloge, opisane v lekcijah. Za delo boste potrebovali lokalni računalnik, virtualni strežnik ali strežnik v oblaku z nameščenim operacijskim sistemom Debian ali Ubuntu. Za izvajanje številnih nalog lahko uporabite tudi Raspberry Pi.

Na prvi lekciji Ogledali si bomo principe delovanja verige blokov Ethereum in osnovno terminologijo ter govorili tudi o tem, kje se ta veriga blokov lahko uporablja.

Cilj druga lekcija — ustvarite zasebno vozlišče verige blokov Ethereum za nadaljnje delo v tem tečaju na strežniku Ubuntu in Debian. Ogledali si bomo značilnosti namestitve osnovnih pripomočkov, kot je geth, ki zagotavlja delovanje našega vozlišča blockchain, pa tudi demon decentraliziranega shranjevanja podatkov roja.

Tretja lekcija vas bo naučil, kako eksperimentirati z Ethereumom na poceni mikroračunalniku Raspberry Pi. Na Raspberry Pi boste namestili operacijski sistem (OS) Rasberian, pripomoček Geth, ki poganja vozlišče blockchain, in demon za decentralizirano shranjevanje podatkov Swarm.

Četrta lekcija je namenjen računom in enotam kriptovalut v omrežju Ethereum ter načinom prenosa sredstev z enega računa na drugega s konzole Geth. Naučili se boste ustvariti račune, sprožiti transakcije prenosa sredstev ter pridobiti status transakcije in potrdilo.

V peti lekciji Seznanili se boste s pametnimi pogodbami v omrežju Ethereum in spoznali njihovo izvajanje na virtualnem stroju Ethereum.

Ustvarili in objavili boste svojo prvo pametno pogodbo v zasebnem omrežju Ethereum in se naučili klicati njegove funkcije. Če želite to narediti, boste uporabili Remix Solidity IDE. Naučili se boste tudi, kako namestiti in uporabljati paketni prevajalnik solc.
Govorili bomo tudi o tako imenovanem aplikacijskem binarnem vmesniku (ABI) in vas naučili, kako ga uporabljati.

Šesta lekcija je namenjen ustvarjanju skriptov JavaScript, ki izvajajo Node.js, in izvajanju operacij s pametnimi pogodbami Solidity.

Node.js boste namestili na Ubuntu, Debian in Rasberian OS, napisali skripte za objavo pametne pogodbe v lokalnem omrežju Ethereum in poklicali njene funkcije.

Poleg tega se boste naučili prenašati sredstva med rednimi računi s pomočjo skriptov in jih pripisati računom pametnih pogodb.

V sedmi lekciji Naučili se boste, kako namestiti in uporabljati okvir Truffle, priljubljen med razvijalci pametnih pogodb Solidity. Naučili se boste, kako ustvariti skripte JavaScript, ki kličejo pogodbene funkcije z uporabo modula truffle-contract, in preizkusiti svojo pametno pogodbo z uporabo programa Truffle.

Osma lekcija namenjen podatkovnim tipom Solidity. Napisali boste pametne pogodbe, ki delujejo s tipi podatkov, kot so predznačena in nepredznačena cela števila, predpisana števila, nizi, naslovi, kompleksne spremenljivke, polja, oštevilčenja, strukture in slovarji.

V deveti lekciji Korak bližje boste ustvarjanju pametnih pogodb za glavno omrežje Ethereum. Naučili se boste, kako objaviti pogodbe z uporabo programa Truffle v zasebnem omrežju Geth in v testnem omrežju Rinkeby. Odpravljanje napak v pametni pogodbi v omrežju Rinkeby je zelo koristno, preden jo objavite v glavnem omrežju - tam je skoraj vse resnično, vendar brezplačno.

Kot del lekcije boste ustvarili testno omrežno vozlišče Rinkeby, ga financirali s sredstvi in ​​objavili pametno pogodbo.

Lekcija 10 posvečen porazdeljenemu shranjevanju podatkov Ethereum Swarm. Z uporabo porazdeljenega pomnilnika prihranite pri shranjevanju velikih količin podatkov v verigi blokov Ethereum.

V tej vadnici boste ustvarili lokalno shrambo Swarm, pisali in brali operacije datotek in imenikov datotek. Nato se boste naučili delati z javnim prehodom Swarm, pisati skripte za dostop do Swarm iz Node.js in uporabljati modul Perl Net::Ethereum::Swarm.

Cilj lekcije 11 — obvladati delo s pametnimi pogodbami Solidity z uporabo priljubljenega programskega jezika Python in ogrodja Web3.py. Namestili boste ogrodje, napisali skripte za prevajanje in objavo pametne pogodbe ter poklicali njene funkcije. V tem primeru bo Web3.py uporabljen samostojno in v povezavi z integriranim razvojnim okoljem Truffle.

Pri lekciji 12 naučili se boste prenašati podatke med pametnimi pogodbami in resničnim svetom s pomočjo oraklov. To vam bo koristilo za prejemanje podatkov s spletnih mest, naprav IoT, različnih naprav in senzorjev ter pošiljanje podatkov iz pametnih pogodb v te naprave. V praktičnem delu lekcije boste ustvarili orakelj in pametno pogodbo, ki prejme trenutni menjalni tečaj med USD in rublji s spletne strani Centralne banke Ruske federacije.

Lekcija 1. Na kratko o blockchainu in omrežju EthereumNamen lekcije: se seznanijo s principi delovanja verige blokov Ethereum, področji uporabe in osnovno terminologijo.
Praktične naloge: ni vključeno v to lekcijo.

Danes skorajda ni razvijalca programske opreme, ki še ni slišal ničesar o tehnologiji veriženja blokov (Blockchain), kriptovalutah (Cryptocurrency ali Crypto Currency), Bitcoinu (Bitcoin), začetni ponudbi kovancev (ICO, Initial coin offering), pametnih pogodbah (Smart Contract), kot tudi druge koncepte in izraze, povezane z blockchainom.

Tehnologija veriženja blokov odpira nove trge in ustvarja delovna mesta za programerje. Če razumete vse zapletenosti tehnologij kriptovalut in tehnologij pametnih pogodb, potem ne bi smeli imeti težav pri uporabi tega znanja v praksi.

Povedati je treba, da se okoli kriptovalut in verig blokov veliko špekulira. Pustili bomo ob strani razprave o spremembah tečajev kriptovalut, ustvarjanju piramid, zapletenosti zakonodaje o kriptovalutah itd. Na našem izobraževanju se bomo osredotočili predvsem na tehnične vidike uporabe pametnih pogodb blokovne verige Ethereum (Ethereum, Ether) in razvoju tako imenovanih decentraliziranih aplikacij (Distributed Application, DApp).

Kaj je blockchain

Blockchain (Block Chain) je veriga podatkovnih blokov, ki so med seboj povezani na določen način. Na začetku verige je prvi blok, ki ga imenujemo primarni blok (genesis block) ali genesis block. Sledi drugi, tretji in tako naprej.

Vsi ti podatkovni bloki se samodejno podvojijo na številnih vozliščih omrežja blockchain. To zagotavlja decentralizirano shranjevanje podatkov blockchain.
Sistem blockchain si lahko predstavljate kot veliko število vozlišč (fizičnih ali virtualnih strežnikov), povezanih v omrežje in posnemajo vse spremembe v verigi podatkovnih blokov. To je kot ogromen večstrežniški računalnik, vozlišča takega računalnika (strežniki) pa so lahko razpršena po vsem svetu. In tudi vi lahko dodate svoj računalnik v omrežje blockchain.

Distribuirana baza podatkov

Verigo blokov si lahko predstavljamo kot porazdeljeno bazo podatkov, ki se replicira v vseh vozliščih omrežja blockchain. V teoriji bo veriga blokov delovala, dokler deluje vsaj eno vozlišče, ki shranjuje vse bloke verige blokov.

Distribuirani register podatkov

Blockchain si lahko predstavljamo kot porazdeljeno knjigo podatkov in operacij (transakcij). Drugo ime za tak register je knjiga.

Podatke je mogoče dodati v porazdeljeno knjigo, vendar jih ni mogoče spremeniti ali izbrisati. To nezmožnost dosežemo predvsem z uporabo kriptografskih algoritmov, posebnih algoritmov za dodajanje blokov v verigo in decentraliziranega shranjevanja podatkov.

Pri dodajanju blokov in izvajanju operacij (transakcij) se uporabljata zasebni in javni ključ. Uporabnike verige blokov omejujejo tako, da jim omogočijo dostop samo do lastnih blokov podatkov.

Posel

Blockchain hrani informacije o operacijah (transakcijah) v blokih. Hkrati starih, že opravljenih transakcij ni mogoče vrniti ali spremeniti. Nove transakcije so shranjene v novih, dodanih blokih.

Na ta način se lahko celotna zgodovina transakcij nespremenjena zabeleži v verigi blokov. Zato se lahko blockchain uporablja na primer za varno shranjevanje bančnih transakcij, informacij o avtorskih pravicah, zgodovine sprememb lastnikov nepremičnin itd.

Ethereum blockchain vsebuje tako imenovana sistemska stanja. Ko se transakcije izvajajo, se stanje spremeni iz začetnega v trenutno stanje. Transakcije se beležijo v blokih.

Javne in zasebne verige blokov

Pri tem velja poudariti, da vse povedano velja samo za tako imenovana javna blockchain omrežja, ki jih ne more nadzorovati noben posameznik ali pravna oseba, vladna agencija ali vlada.
Tako imenovana zasebna omrežja blockchain so pod popolnim nadzorom njihovih ustvarjalcev in tam je vse mogoče, na primer popolna zamenjava vseh blokov verige.

Praktične aplikacije blockchaina

Za kaj je lahko blockchain uporaben?

Skratka, blockchain vam omogoča varno izvajanje transakcij (transakcij) med ljudmi ali podjetji, ki si ne zaupajo. Podatkov, zapisanih v blockchainu (transakcije, osebni podatki, dokumenti, potrdila, pogodbe, računi itd.), po zapisu ni mogoče ponarediti ali zamenjati. Zato je na podlagi blockchaina mogoče ustvariti na primer zaupanja vredne porazdeljene registre različnih vrst dokumentov.

Seveda veste, da sistemi kriptovalut nastajajo na podlagi verig blokov, ki so namenjeni nadomestitvi običajnega papirnatega denarja. Papirni denar imenujemo tudi fiat (iz Fiat Money).
Blockchain zagotavlja shranjevanje in nespremenljivost transakcij, zapisanih v blokih, zato se lahko uporablja za ustvarjanje sistemov kriptovalut. Vsebuje celotno zgodovino prenosa kripto sredstev med različnimi uporabniki (računi), katerikoli operaciji pa je mogoče slediti.

Čeprav so transakcije znotraj sistemov kriptovalut lahko anonimne, dvig kriptovalute in njena zamenjava za fiat denar običajno povzroči razkritje identitete lastnika sredstva kriptovalute.

Tako imenovane pametne pogodbe, ki so programska oprema, ki deluje v omrežju Ethereum, omogočajo avtomatizacijo procesa sklepanja transakcij in spremljanje njihovega izvajanja. To je še posebej učinkovito, če se plačilo transakcije izvede s kriptovaluto Ether.

Ethereum blockchain in pametne pogodbe Ethereum, napisane v programskem jeziku Solidity, se lahko uporabljajo na primer na naslednjih področjih:

  • alternativa notarski overitvi dokumentov;
  • hramba registra nepremičnin in podatkov o prometu z nepremičninami;
  • shranjevanje informacij o avtorskih pravicah za intelektualno lastnino (knjige, slike, glasbena dela itd.);
  • oblikovanje neodvisnih volilnih sistemov;
  • finance in bančništvo;
  • logistika v mednarodnem merilu, sledenje gibanja blaga;
  • shranjevanje osebnih podatkov kot analog sistemu osebnih izkaznic;
  • varne transakcije na komercialnem področju;
  • shranjevanje izvidov zdravniških pregledov, kakor tudi zgodovine predpisanih posegov

Težave z blockchainom

Seveda pa ni vse tako preprosto, kot se morda zdi!

Obstajajo težave s preverjanjem podatkov pred dodajanjem v verigo blokov (ali so na primer lažni?), težave z varnostjo sistemske in aplikacijske programske opreme, ki se uporablja za delo z verigo blokov, težave z možnostjo uporabe metod socialnega inženiringa za krajo dostopa. v denarnice za kriptovalute itd. .P.

Še enkrat, če ne govorimo o javni verigi blokov, katere vozlišča so razpršena po vsem svetu, ampak o zasebni verigi blokov, ki pripada osebi ali organizaciji, potem stopnja zaupanja tukaj ne bo višja od stopnje zaupanja v tej osebi ali tej organizaciji.

Upoštevati je treba tudi, da so podatki, zapisani v blockchainu, dostopni vsem. V tem smislu blockchain (zlasti javni) ni primeren za shranjevanje zaupnih informacij. Vendar pa lahko dejstvo, da informacij o verigi blokov ni mogoče spremeniti, pomaga preprečiti ali raziskati različne vrste goljufivih dejavnosti.

Decentralizirane aplikacije Ethereum bodo priročne, če njihovo uporabo plačate s kriptovaluto. Več ljudi, ki imajo v lasti kriptovaluto ali so jo pripravljeni kupiti, bolj priljubljene bodo postale DApps in pametne pogodbe.

Pogoste težave z verigo blokov, ki ovirajo njeno praktično uporabo, vključujejo omejeno hitrost dodajanja novih blokov in razmeroma visoke stroške transakcij. Toda tehnologija na tem področju se aktivno razvija in obstaja upanje, da bodo tehnične težave sčasoma odpravljene.

Druga težava je, da pametne pogodbe na blokovni verigi Ethereum delujejo v izoliranem okolju virtualnih strojev in nimajo dostopa do podatkov iz resničnega sveta. Zlasti program za pametne pogodbe ne more sam brati podatkov s spletnih mest ali katere koli fizične naprave (senzorji, stiki itd.) in tudi ne more oddati podatkov nobeni zunanji napravi. O tem problemu in načinih njegovega reševanja bomo razpravljali v lekciji, posvečeni tako imenovanim oraklom - informacijskim posrednikom pametnih pogodb.

Obstajajo tudi zakonske omejitve. V nekaterih državah je na primer prepovedana uporaba kriptovalute kot plačilnega sredstva, vendar jo lahko posedujete kot nekakšno digitalno sredstvo, kot so vrednostni papirji. Takšna sredstva je mogoče kupiti in prodati na borzi. V vsakem primeru se morate pri ustvarjanju projekta, ki deluje s kriptovalutami, seznaniti z zakonodajo države, pod jurisdikcijo katere spada vaš projekt.

Kako nastane veriga blockchain

Kot smo že povedali, je blockchain preprosta veriga podatkovnih blokov. Najprej se oblikuje prvi blok te verige, nato se mu doda drugi in tako naprej. Podatki o transakcijah naj bi bili shranjeni v blokih in so dodani najnovejšemu bloku.

Na sl. 1.1 smo prikazali najpreprostejšo različico zaporedja blokov, kjer se prvi blok nanaša na naslednjega.

Knjiga »Ustvarjanje pametnih pogodb Solidity za verigo blokov Ethereum. Praktični vodnik"
riž. 1.1. Preprosto zaporedje blokov

S to možnostjo pa je zelo enostavno posegati v vsebino katerega koli bloka v verigi, saj bloki ne vsebujejo nobenih informacij za zaščito pred spremembami. Glede na to, da je blockchain namenjen ljudem in podjetjem, med katerimi ni zaupanja, lahko sklepamo, da ta način shranjevanja podatkov ni primeren za blockchain.

Začnimo zaščititi bloke pred ponarejanjem. Na prvi stopnji bomo poskušali zaščititi vsak blok s kontrolno vsoto (slika 1.2).

Knjiga »Ustvarjanje pametnih pogodb Solidity za verigo blokov Ethereum. Praktični vodnik"
riž. 1.2. Dodajanje zaščite za te bloke s kontrolno vsoto

Zdaj napadalec ne more preprosto spremeniti bloka, saj vsebuje kontrolno vsoto podatkov bloka. Preverjanje kontrolne vsote bo pokazalo, da so bili podatki spremenjeni.

Za izračun kontrolne vsote lahko uporabite eno od funkcij zgoščevanja, kot so MD-5, SHA-1, SHA-256 itd. Zgoščevalne funkcije izračunajo vrednost (na primer besedilni niz konstantne dolžine) z izvajanjem nepovratnih operacij na bloku podatkov. Operacije so odvisne od vrste zgoščevalne funkcije.

Tudi če se vsebina podatkovnega bloka nekoliko spremeni, se bo spremenila tudi zgoščena vrednost. Z analizo vrednosti zgoščevalne funkcije je nemogoče rekonstruirati podatkovni blok, za katerega je bila izračunana.

Bo takšna zaščita zadostna? Žal ne.

V tej shemi kontrolna vsota (zgoščevalna funkcija) ščiti samo posamezne bloke, ne pa celotne verige blokov. S poznavanjem algoritma za izračun zgoščevalne funkcije lahko napadalec zlahka zamenja vsebino bloka. Prav tako mu nič ne bo preprečilo, da bi odstranil bloke iz verige ali dodal nove.

Če želite zaščititi celotno verigo kot celoto, lahko v vsak blok skupaj s podatki shranite tudi zgoščeno vrednost podatkov iz prejšnjega bloka (slika 1.3).

Knjiga »Ustvarjanje pametnih pogodb Solidity za verigo blokov Ethereum. Praktični vodnik"
riž. 1.3. V podatkovni blok dodajte zgoščeno vrednost prejšnjega bloka

V tej shemi morate za spremembo bloka znova izračunati zgoščevalne funkcije vseh naslednjih blokov. Zdi se, v čem je problem?

V pravih verigah blokov se dodatno ustvarjajo umetne težave pri dodajanju novih blokov – uporabljajo se algoritmi, ki zahtevajo veliko računalniških virov. Glede na to, da morate za spremembo bloka preračunati ne samo ta blok, ampak vse naslednje, bo to zelo težko narediti.

Spomnimo se tudi, da so podatki blockchaina shranjeni (podvojeni) na številnih omrežnih vozliščih, tj. Uporablja se decentralizirano shranjevanje. In zaradi tega je veliko težje ponarediti blok, ker spremembe je treba izvesti v vseh omrežnih vozliščih.

Ker bloki hranijo podatke o prejšnjem bloku, je možno preveriti vsebino vseh blokov v verigi.

Ethereum blockchain

Ethereum blockchain je platforma, na kateri je mogoče ustvariti distribuirane DApps. Za razliko od drugih platform Ethereum omogoča uporabo tako imenovanih pametnih pogodb (smart contracts), zapisanih v programskem jeziku Solidity.

To platformo je leta 2013 ustvaril Vitalik Buterin, ustanovitelj revije Bitcoin Magazine, začela pa se je leta 2015. Vse, kar bomo študirali ali počeli v našem tečaju usposabljanja, se nanaša posebej na pametne pogodbe Ethereum blockchain in Solidity.

Rudarjenje ali kako se ustvarijo bloki

Rudarjenje je precej zapleten in z viri zahteven proces dodajanja novih blokov v verigo blokov in sploh ne »rudarjenje kriptovalut«. Rudarjenje zagotavlja funkcionalnost blockchaina, saj prav ta proces je odgovoren za dodajanje transakcij v verigo blokov Ethereum.

Ljudje in organizacije, ki sodelujejo pri dodajanju blokov, se imenujejo rudarji.
Programska oprema, ki se izvaja na vozliščih rudarja, poskuša najti parameter zgoščevanja, imenovan Nonce, za zadnji blok, da dobi določeno vrednost zgoščevanja, ki jo določi omrežje. Algoritem zgoščevanja Ethash, ki se uporablja v Ethereumu, vam omogoča, da vrednost Nonce pridobite samo z zaporednim iskanjem.

Če rudarsko vozlišče najde pravilno vrednost Nonce, potem je to tako imenovano dokazilo o delu (PoW, Proof-of-work). V tem primeru, če je blok dodan v omrežje Ethereum, rudar prejme določeno nagrado v valuti omrežja - Ether. V času pisanja je nagrada 5 etrov, vendar se bo sčasoma zmanjšala.

Tako rudarji Ethereuma z dodajanjem blokov zagotavljajo delovanje omrežja in za to prejemajo denar v kriptovaluti. Na internetu boste našli veliko informacij o rudarjih in rudarjenju, vendar se bomo osredotočili na ustvarjanje pogodb Solidity in DApps v omrežju Ethereum.

Povzetek lekcije

V prvi lekciji ste se seznanili z blockchainom in izvedeli, da je to posebej sestavljeno zaporedje blokov. Vsebine predhodno posnetih blokov ni mogoče spreminjati, saj bi to zahtevalo preračunavanje vseh naslednjih blokov na številnih vozliščih omrežja, kar zahteva veliko sredstev in časa.

Blockchain se lahko uporablja za shranjevanje rezultatov transakcij. Njegov glavni namen je organizirati varne transakcije med strankami (osebami in organizacijami), med katerimi ni zaupanja. Izvedeli ste, na katerih specifičnih področjih poslovanja in na katerih področjih se lahko uporabljajo pametne pogodbe Ethereum blockchain in Solidity. To je bančni sektor, registracija lastninskih pravic, dokumentov itd.

Izvedeli ste tudi, da se pri uporabi blockchaina lahko pojavijo različne težave. To so težave pri preverjanju informacij, dodanih v blockchain, hitrost blockchaina, stroški transakcij, problem izmenjave podatkov med pametnimi pogodbami in realnim svetom ter morebitni napadi napadalcev, katerih cilj je kraja sredstev v kriptovalutah iz uporabniških računov. .

Na kratko smo spregovorili tudi o rudarjenju kot procesu dodajanja novih blokov v verigo blokov. Rudarstvo je potrebno za dokončanje transakcij. Tisti, ki se ukvarjajo z rudarjenjem, zagotavljajo delovanje blockchaina in za to prejmejo nagrado v kriptovaluti.

Lekcija 2. Priprava delovnega okolja v Ubuntu in Debian OSIzbira operacijskega sistema
Namestitev potrebnih pripomočkov
Namestitev Geth in Swarm na Ubuntu
Namestitev Geth in Swarm na Debian
Predhodna priprava
Prenos distribucije Go
Nastavitev spremenljivk okolja
Preverjanje različice Go
Namestitev Geth in Swarm
Ustvarjanje zasebne verige blokov
Priprava datoteke genesis.json
Ustvarite imenik za delo
Ustvari račun
Zagon inicializacije vozlišča
Možnosti zagona vozlišča
Povežite se z našim vozliščem
Upravljanje rudarjenja in preverjanje stanja
Zaustavitev konzole Geth
Povzetek lekcije

Lekcija 3. Priprava delovnega okolja na Raspberry Pi 3Priprava Raspberry Pi 3 za delo
Namestitev Rasberiana
Nameščanje posodobitev
Omogočanje dostopa SSH
Nastavitev statičnega naslova IP
Namestitev potrebnih pripomočkov
Namestitev Go
Prenos distribucije Go
Nastavitev spremenljivk okolja
Preverjanje različice Go
Namestitev Geth in Swarm
Ustvarjanje zasebne verige blokov
Preverjanje vašega računa in stanja
Povzetek lekcije

Lekcija 4. Računi in prenos sredstev med računiOgled in dodajanje računov
Oglejte si seznam računov
Dodajanje računa
možnosti ukaza geth account
Gesla za račune
Kriptovaluta v Ethereumu
Valutne enote Ethereum
Ugotavljamo trenutno stanje na naših računih
Prenos sredstev z enega računa na drugega
metoda eth.sendTransaction
Oglejte si stanje transakcije
Potrdilo o transakciji
Povzetek lekcije

Lekcija 5. Objava vaše prve pogodbePametne pogodbe v Ethereumu
Pametna izvedba pogodbe
Virtualni stroj Ethereum
Integrirano razvojno okolje Remix Solidity IDE
Teče kompilacija
Klicanje pogodbenih funkcij
Objava pogodbe na zasebnem omrežju
Pridobivanje definicije ABI in binarne kode pogodbe
Objava pogodbe
Preverjanje stanja transakcije objave pogodbe
Klicanje pogodbenih funkcij
Paketni prevajalnik solc
Namestitev solc na Ubuntu
Namestitev solc na Debian
Sestavljanje pogodbe HelloSol
Objava pogodbe
Namestitev solc na Rasberian
Povzetek lekcije

Lekcija 6. Pametne pogodbe in Node.jsNamestitev Node.js
Namestitev na Ubuntu
Namestitev na Debian
Namestitev in zagon Ganache-cli
Namestitev Web3
Namestitev solc
Namestitev Node.js na Rasberian
Skript za pridobitev seznama računov v konzoli
Skripta za objavo pametne pogodbe
Zaženite in pridobite parametre
Pridobivanje možnosti zagona
Sestava pogodbe
Odblokiranje vašega računa
Nalaganje ABI in pogodbene binarne kode
Ocena potrebne količine plina
Ustvarite predmet in začnite objavljati pogodbo
Izvajanje skripta za objavo pogodbe
Klicanje funkcij pametne pogodbe
Ali je mogoče posodobiti objavljeno pametno pogodbo?
Delo z različico Web3 1.0.x
Pridobivanje seznama računov
Objava pogodbe
Klicanje pogodbenih funkcij
Prenos sredstev z enega računa na drugega
Prenesite sredstva na pogodbeni račun
Posodabljanje pametne pogodbe HelloSol
Ustvarite skript za ogled stanja na računu
V skript call_contract_get_promise.js dodajte klic funkcije getBalance
Napolnimo račun pametne pogodbe
Povzetek lekcije

Lekcija 7. Uvod v tartufeNamestitev programa Truffle
Ustvarite projekt HelloSol
Ustvarjanje projektnega imenika in datotek
Imenik pogodb
Migracije katalogov
Imeniški test
datoteka truffle-config.js
Sestavljanje pogodbe HelloSol
Začnite objavljati pogodbo
Klicanje pogodbenih funkcij HelloSol v pozivu Truffle
Klicanje pogodbenih funkcij HelloSol iz skripta JavaScript, ki izvaja Node.js
Namestitev pogodbenega modula tartufov
Klicanje pogodbenih funkcij getValue in getString
Klicanje pogodbenih funkcij setValue in setString
Sprememba pogodbe in ponovna objava
Delo z različico Web3 1.0.x
Spremembe pametne pogodbe HelloSol
Skripte za klic pogodbenih metod
Testiranje v Tartufu
Test trdnosti
JavaScript test
Povzetek lekcije

Lekcija 8. Podatkovni tipi SolidityPogodba za učenje tipov podatkov
Logični podatkovni tipi
Cela števila brez predznaka in cela števila s predznakom
Številke s fiksno točko
naslov
Spremenljivke kompleksnih tipov
Nizi fiksne velikosti
Dinamični nizi
Naštevanje
Strukture
Preslikava slovarjev
Povzetek lekcije

Lekcija 9. Selitev pogodb v zasebno omrežje in v omrežje RinkebyObjava pogodbe iz Truffla v zasebno omrežje Geth
Priprava vozlišča zasebnega omrežja
Priprava pogodbe za delo
Sestavljanje in selitev pogodbe v omrežje Truffle
Začetek selitve lokalnega omrežja geth
Pridobivanje artefaktov tartufov
Objava pogodbe iz podjetja Truffle v testno mrežo Rinkeby
Priprava vozlišča Geth za delo z Rinkebyjem
Sinhronizacija vozlišča
Dodajanje računov
Polnjenje računa Rinkeby z etherjem
Zagon pogodbene migracije v omrežje Rinkeby
Ogled pogodbenih informacij v omrežju Rinkeby
Konzola Truffle za omrežje Rinkeby
Lažji način za klic pogodbenih funkcij
Klicanje pogodbenih metod z uporabo Node.js
Prenašajte sredstva med računi v konzoli Truffle za Rinkby
Povzetek lekcije

Lekcija 10. Decentralizirano shranjevanje podatkov Ethereum SwarmKako deluje Ethereum Swarm?
Namestitev in zagon Swarma
Operacije z datotekami in imeniki
Nalaganje datoteke v Ethereum Swarm
Branje datoteke iz Ethereum Swarm
Oglejte si manifest naložene datoteke
Nalaganje imenikov s podimeniki
Branje datoteke iz prenesenega imenika
Uporaba javnega prehoda Swarm
Dostop do Swarm iz skriptov Node.js
Modul Perl Net::Ethereum::Swarm
Namestitev modula Net::Ethereum::Swarm
Pisanje in branje podatkov
Povzetek lekcije

Lekcija 11. Ogrodje Web3.py za delo z Ethereumom v PythonuNamestitev Web3.py
Posodobitev in namestitev potrebnih paketov
Namestitev modula easysolc
Objava pogodbe z uporabo Web3.py
Sestava pogodbe
Povezovanje s ponudnikom
Izvedite objavo pogodbe
Shranjevanje pogodbenega naslova in abi v datoteko
Izvajanje skripta za objavo pogodbe
Metode klicne pogodbe
Branje naslova in abi pogodbe iz datoteke JSON
Povezovanje s ponudnikom
Ustvarjanje pogodbenega predmeta
Metode klicne pogodbe
Tartuf in Web3.py
Povzetek lekcije

Lekcija 12. OrakljiAli lahko pametna pogodba zaupa podatkom iz zunanjega sveta?
Orakli kot informacijski posredniki verige blokov
Vir podatkov
Koda za predstavitev podatkov iz vira
Oracle za beleženje menjalnega tečaja v verigi blokov
Pogodba USDRateOracle
Posodabljanje tečaja v pametni pogodbi
Uporaba ponudnika spletnih vtičnic
Čakanje na dogodek RateUpdate
Obravnava dogodka RateUpdate
Začetek posodobitve podatkov v pametni pogodbi
Povzetek lekcije

Vir: www.habr.com

Dodaj komentar