Raamat “Creating Solidity smart contracts for the Ethereum blockchain. Praktiline juhend"

Raamat “Creating Solidity smart contracts for the Ethereum blockchain. Praktiline juhend"
Rohkem kui aasta olen tegelenud raamatuga “Solidity Smart Contracts for the Ethereum Blockchain. Praktiline juhend" ja nüüd on see töö valmis ja raamat avaldatud ja saadaval liitrites.

Loodan, et minu raamat aitab teil kiiresti alustada Solidity nutikate kontaktide ja hajutatud DAppide loomist Ethereumi plokiahela jaoks. See koosneb 12 õppetunnist koos praktiliste ülesannetega. Pärast nende täitmist saab lugeja luua oma kohalikud Ethereumi sõlmed, avaldada nutikaid lepinguid ja kutsuda nende meetodeid, vahetada andmeid pärismaailma ja nutikate lepingute vahel oraaklite abil ning töötada Rinkeby testsilumisvõrguga.

Raamat on suunatud kõigile, kes tunnevad huvi plokiahelate valdkonna kõrgtehnoloogiate vastu ning soovivad kiiresti omandada teadmisi, mis võimaldavad teha huvitavat ja paljutõotavat tööd.

Altpoolt leiate sisukorra ja raamatu esimese peatüki (ka liitrit raamatu fragmendid on saadaval). Loodan saada tagasisidet, kommentaare ja ettepanekuid. Seda kõike püüan ka raamatu järgmise väljaande ettevalmistamisel arvesse võtta.

SisukordSissejuhatusMeie raamat on mõeldud neile, kes soovivad mitte ainult mõista Ethereumi plokiahela põhimõtteid, vaid omandada ka praktilisi oskusi selle võrgu jaoks Solidity programmeerimiskeeles hajutatud DApp-ide loomisel.

Parem on seda raamatut mitte ainult lugeda, vaid sellega töötada, täites tundides kirjeldatud praktilisi ülesandeid. Töötamiseks vajate kohalikku arvutit, virtuaalset või pilveserverit, kuhu on installitud Debian või Ubuntu OS. Raspberry Pi-d saate kasutada ka paljude ülesannete täitmiseks.

Esimesel õppetunnil Vaatame Ethereumi plokiahela tööpõhimõtteid ja põhiterminoloogiat ning räägime ka sellest, kus seda plokiahelat kasutada saab.

Eesmärk teine ​​õppetund — looge privaatne Ethereumi plokiahela sõlm, et jätkata selle kursuse raames Ubuntu ja Debiani serveris töötamiseks. Vaatleme põhiutiliitide installimise funktsioone, nagu geth, mis tagab meie plokiahela sõlme töö, aga ka sülemi detsentraliseeritud andmesalvestusdeemoni.

Kolmas õppetund õpetab teile, kuidas Ethereumiga odavas Raspberry Pi mikroarvutis katsetada. Installite Rasberiani operatsioonisüsteemi (OS) Raspberry Pi-le, Gethi utiliidile, mis toidab plokiahela sõlme, ja Swarmi detsentraliseeritud andmesalvestusdeemonile.

Neljas õppetund on pühendatud kontodele ja krüptovaluutaüksustele Ethereumi võrgus, samuti võimalustele kanda Gethi konsoolilt raha ühelt kontolt teisele. Saate teada, kuidas luua kontosid, algatada rahaülekande tehinguid ning hankida tehingu olekut ja kviitungit.

Viiendas tunnis Tutvud nutikate lepingutega Ethereumi võrgus ja saad teada nende täitmisest Ethereumi virtuaalmasina poolt.

Loote ja avaldate oma esimese nutika lepingu Ethereumi privaatvõrgus ning õpite selle funktsioone kutsuma. Selleks kasutate Remix Solidity IDE-d. Samuti saate teada, kuidas installida ja kasutada solc partiikompilaatorit.
Räägime ka niinimetatud rakenduse binaarliidest (ABI) ja õpetame seda kasutama.

Kuues õppetund on pühendatud Node.js-i käitavate JavaScripti skriptide loomisele ja Solidity nutikate lepingutega toimingute tegemisele.

Installite Node.js'i Ubuntu, Debiani ja Rasberiani OS-i, kirjutate skripte nutika lepingu avaldamiseks Ethereumi kohtvõrgus ja kutsute selle funktsioone.

Lisaks saate teada, kuidas skripte kasutades tavakontode vahel raha üle kanda, samuti nutikate lepingute kontodele krediteerida.

Seitsmendas õppetunnis Õpid, kuidas installida ja kasutada raamistikku Truffle, mis on Solidity nutikate lepingute arendajate seas populaarne. Saate teada, kuidas luua JavaScripti skripte, mis kutsuvad lepingufunktsioone, kasutades trühvlilepingu moodulit, ja testida oma nutikat lepingut Truffle'i abil.

Kaheksas õppetund pühendatud Solidity andmetüüpidele. Kirjutate nutikaid lepinguid, mis töötavad selliste andmetüüpidega nagu allkirjastatud ja märgita täisarvud, allkirjastatud numbrid, stringid, aadressid, keerukad muutujad, massiivid, loendid, struktuurid ja sõnastikud.

Üheksandas õppetunnis Olete sammu võrra lähemal Ethereumi põhivõrgu nutikate lepingute loomisele. Saate teada, kuidas avaldada lepinguid Truffle'i abil nii Gethi privaatvõrgus kui ka Rinkeby testvõrgus. Nutika lepingu silumine Rinkeby võrgus on väga kasulik enne selle põhivõrgus avaldamist - seal on peaaegu kõik päris, kuid tasuta.

Õppetunni raames loote Rinkeby testvõrgu sõlme, rahastate seda rahaliste vahenditega ja avaldate nutika lepingu.

10. õppetund pühendatud Ethereum Swarmi hajutatud andmesalvestusele. Hajutatud salvestusruumi kasutades säästate suurte andmemahtude salvestamiselt Ethereumi plokiahelasse.

Selles õpetuses saate luua kohaliku Swarmi salvestusruumi, kirjutada ja lugeda faile ja failikatalooge. Järgmisena saate teada, kuidas töötada avaliku Swarmi lüüsiga, kirjutada skripte Swarmile juurdepääsuks Node.js-ist ning kasutada moodulit Perl Net::Ethereum::Swarm.

Tunni eesmärk 11 — oskama töötada Solidity nutikate lepingutega, kasutades populaarset Pythoni programmeerimiskeelt ja raamistikku Web3.py. Installite raamistiku, kirjutate nutika lepingu koostamiseks ja avaldamiseks skripte ning helistate selle funktsioonidele. Sel juhul kasutatakse Web3.py-d nii iseseisvalt kui ka koos Truffle'i integreeritud arenduskeskkonnaga.

12. õppetunnis õpid edastama andmeid nutikate lepingute ja reaalse maailma vahel oraaklite abil. See on kasulik andmete vastuvõtmiseks veebisaitidelt, asjade Interneti-seadmetelt, erinevatelt seadmetelt ja anduritelt ning nutilepingute andmete saatmiseks nendesse seadmetesse. Tunni praktilises osas loote oraakli ja nutika lepingu, mis saab Vene Föderatsiooni Keskpanga veebisaidilt kehtiva USD ja rubla vahelise kursi.

Õppetund 1. Lühidalt plokiahelast ja Ethereumi võrgustTunni eesmärk: tutvuda Ethereumi plokiahela tööpõhimõtete, selle rakendusvaldkondade ja põhiterminoloogiaga.
Praktilised ülesanded: ei sisaldu selles õppetükis.

Vaevalt leidub tänapäeval tarkvaraarendajat, kes poleks midagi kuulnud plokiahela tehnoloogiast (Blockchain), krüptovaluutadest (Cryptocurrency või Crypto Currency), Bitcoinist (Bitcoin), esmasest mündipakkumisest (ICO, Initial coin offering), nutikatest lepingutest (Smart Contract), samuti muid plokiahelaga seotud mõisteid ja termineid.

Plokiahela tehnoloogia avab uusi turge ja loob programmeerijatele töökohti. Kui mõistate kõiki krüptovaluutatehnoloogiate ja nutikate lepingute tehnoloogiate keerukust, ei tohiks teil tekkida probleeme nende teadmiste praktikas rakendamisega.

Peab ütlema, et krüptovaluutade ja plokiahelate ümber käib palju spekulatsioone. Jätame kõrvale arutelud krüptovaluutakursside muutumisest, püramiidide loomisest, krüptoraha seadusandluse keerukusest jne. Oma koolitusel keskendume peamiselt Ethereumi plokiahela nutikate lepingute (Ethereum, Ether) rakendamise tehnilistele aspektidele ja nn detsentraliseeritud rakenduste (Distributed Application, DApp) arendamisele.

Mis on plokiahel

Blockchain (Block Chain) on andmeplokkide ahel, mis on üksteisega teatud viisil ühendatud. Ahela alguses on esimene plokk, mida nimetatakse primaarseks plokiks (geneesiplokiks) või geneesiplokiks. Sellele järgneb teine, siis kolmas ja nii edasi.

Kõik need andmeplokid dubleeritakse automaatselt paljudes plokiahela võrgu sõlmedes. See tagab plokiahela andmete detsentraliseeritud salvestamise.
Plokiahela süsteemist võib mõelda kui suurest arvust võrku ühendatud sõlmedest (füüsilised või virtuaalsed serverid), mis kordavad kõiki andmeplokkide ahela muudatusi. See on nagu hiiglaslik mitme serveriga arvuti ja sellise arvuti sõlmed (serverid) võivad olla üle maailma laiali. Ja ka sina saad lisada oma arvuti plokiahela võrku.

Hajutatud andmebaas

Plokiahelat võib pidada hajutatud andmebaasiks, mida kopeeritakse kõigis plokiahela võrgu sõlmedes. Teoreetiliselt töötab plokiahel seni, kuni töötab vähemalt üks sõlm, mis salvestab kõik plokiahela plokid.

Hajutatud andmete register

Plokiahelat võib pidada andmete ja toimingute (tehingute) hajutatud pearaamatuks. Sellise registri teine ​​nimi on pearaamat.

Andmeid saab hajutatud pearaamatusse lisada, kuid neid ei saa muuta ega kustutada. See võimatus saavutatakse eelkõige krüptoalgoritmide, ahelasse plokkide lisamise spetsiaalsete algoritmide ja detsentraliseeritud andmete salvestamise abil.

Plokkide lisamisel ja toimingute (tehingute) sooritamisel kasutatakse privaat- ja avalikke võtmeid. Nad piiravad plokiahela kasutajaid, andes neile juurdepääsu ainult nende enda andmeplokkidele.

Tehingud

Blockchain salvestab informatsiooni toimingute (tehingute) kohta plokkides. Samas ei saa vanu, juba sooritatud tehinguid tagasi pöörata ega muuta. Uued tehingud salvestatakse uutesse lisatud plokkidesse.

Nii saab kogu tehinguajaloo muutumatul kujul plokiahelasse salvestada. Seetõttu saab plokiahelat kasutada näiteks pangatehingute, autoriõiguste info, kinnisvaraomanike muudatuste ajaloo jms turvaliseks salvestamiseks.

Ethereumi plokiahel sisaldab niinimetatud süsteemi olekuid. Tehingute sooritamisel muutub olek algolekust praegusesse olekusse. Tehingud registreeritakse plokkidena.

Avalikud ja privaatsed plokiahelad

Siinkohal tuleb märkida, et kõik öeldu kehtib ainult nn avalike plokiahela võrgustike kohta, mida ei saa kontrollida ükski füüsiline ega juriidiline isik, valitsusasutus ega valitsus.
Niinimetatud privaatsed plokiahela võrgud on nende loojate täieliku kontrolli all ja seal on kõik võimalik, näiteks ahela kõigi plokkide täielik väljavahetamine.

Plokiahela praktilised rakendused

Milleks võib plokiahel olla kasulik?

Lühidalt, plokiahel võimaldab turvaliselt sooritada tehinguid (tehinguid) inimeste või ettevõtete vahel, kes üksteist ei usalda. Plokiahelas salvestatud andmeid (tehingud, isikuandmed, dokumendid, tõendid, lepingud, arved jne) ei saa pärast salvestamist võltsida ega asendada. Seetõttu on plokiahela põhjal võimalik luua näiteks usaldusväärseid hajutatud registreid erinevat tüüpi dokumentidest.

Muidugi teate, et krüptovaluutasüsteeme luuakse plokiahelate baasil, mis on mõeldud asendama tavalist paberraha. Paberraha nimetatakse ka fiatiks (Fiat Moneyst).
Blockchain tagab plokkides salvestatud tehingute talletamise ja muutumatuse, mistõttu saab seda kasutada krüptovaluutasüsteemide loomiseks. See sisaldab kogu krüptoraha ülekandmise ajalugu erinevate kasutajate (kontode) vahel ja kõiki toiminguid saab jälgida.

Kuigi tehingud krüptovaluutasüsteemides võivad olla anonüümsed, toob krüptoraha väljavõtmine ja fiat-raha vastu vahetamine tavaliselt kaasa krüptovaluuta vara omaniku isiku paljastamise.

Nn nutikad lepingud, mis on Ethereumi võrgus töötav tarkvara, võimaldavad automatiseerida tehingute sõlmimise protsessi ja jälgida nende täitmist. See on eriti tõhus, kui tehingu eest tasutakse Etheri krüptovaluutaga.

Solidity programmeerimiskeeles kirjutatud Ethereumi plokiahela ja Ethereumi nutilepinguid saab kasutada näiteks järgmistes valdkondades:

  • alternatiiv dokumentide notariaalsele kinnitamisele;
  • kinnisvaraobjektide registri ja kinnisvaraobjektidega tehingute kohta teabe hoidmine;
  • intellektuaalomandi (raamatud, pildid, muusikateosed jne) autoriõiguse teabe säilitamine;
  • sõltumatute hääletussüsteemide loomine;
  • rahandus ja pangandus;
  • logistika rahvusvahelises mastaabis, kaupade liikumise jälgimine;
  • isikuandmete säilitamine analoogina isikutunnistuse süsteemile;
  • turvalised tehingud ärivaldkonnas;
  • arstliku läbivaatuse tulemuste, samuti ettenähtud protseduuride ajaloo säilitamine

Probleemid plokiahelaga

Kuid loomulikult pole kõik nii lihtne, kui võib tunduda!

Probleeme on andmete kontrollimisega enne nende lisamist plokiahelasse (näiteks, kas need on võltsitud?), probleeme plokiahelaga töötamiseks kasutatava süsteemi ja rakendustarkvara turvalisusega, probleeme juurdepääsu varastamiseks sotsiaalse manipuleerimise meetodite kasutamise võimalusega. krüptoraha rahakottidesse jne .P.

Jällegi, kui me ei räägi avalikust plokiahelast, mille sõlmed on üle maailma laiali, vaid privaatsest plokiahelast, mis kuulub inimesele või organisatsioonile, siis ei saa siin usalduse tase olla kõrgem kui usalduse tase. selles isikus või organisatsioonis.

Arvestada tuleks ka sellega, et plokiahelas salvestatud andmed muutuvad kõigile kättesaadavaks. Selles mõttes ei sobi plokiahel (eriti avalik) konfidentsiaalse teabe salvestamiseks. Asjaolu, et plokiahelas olevat teavet ei saa muuta, võib aga aidata ära hoida või uurida erinevat tüüpi pettusi.

Ethereumi detsentraliseeritud rakendused on mugavad, kui maksate nende kasutamise eest krüptovaluutaga. Mida rohkem inimesi omab krüptovaluutat või on valmis seda ostma, seda populaarsemaks muutuvad DApp-id ja nutikad lepingud.

Levinud probleemid plokiahelaga, mis takistavad selle praktilist rakendamist, on uute plokkide lisamise piiratud kiirus ja tehingute suhteliselt kõrge hind. Kuid tehnoloogia selles valdkonnas areneb aktiivselt ja on lootust, et tehnilised probleemid saavad aja jooksul lahenduse.

Teine probleem on see, et Ethereumi plokiahela nutikad lepingud töötavad virtuaalmasinate eraldatud keskkonnas ja neil puudub juurdepääs reaalmaailma andmetele. Eelkõige ei saa nutikas lepinguprogramm ise lugeda andmeid saitidelt või mis tahes füüsilistest seadmetest (sensorid, kontaktid jne) ega saa andmeid väljastada ka välistele seadmetele. Seda probleemi ja selle lahendamise viise käsitleme õppetunnis, mis on pühendatud nn Oraaklitele – nutikate lepingute infovahendajatele.

Samuti on seadusega kehtestatud piirangud. Mõnes riigis on näiteks krüptovaluuta kasutamine maksevahendina keelatud, kuid võite omada seda teatud tüüpi digitaalse varana, nagu väärtpabereid. Selliseid varasid saab börsil osta ja müüa. Igal juhul peate krüptorahadega töötava projekti loomisel tutvuma selle riigi seadusandlusega, mille jurisdiktsiooni alla teie projekt kuulub.

Kuidas plokiahela kett moodustub

Nagu me juba ütlesime, on plokiahel lihtne andmeplokkide ahel. Esiteks moodustatakse selle ahela esimene plokk, seejärel lisatakse sellele teine ​​jne. Eeldatakse, et tehinguandmed salvestatakse plokkidena ja lisatakse kõige uuemasse plokki.

Joonisel fig. 1.1 näitasime plokkide jada lihtsaimat versiooni, kus esimene plokk viitab järgmisele.

Raamat “Creating Solidity smart contracts for the Ethereum blockchain. Praktiline juhend"
Riis. 1.1. Lihtne plokkide jada

Selle valikuga on aga väga lihtne ahela mis tahes ploki sisu rikkuda, kuna plokid ei sisalda muudatuste eest kaitsvat teavet. Arvestades, et plokiahel on mõeldud kasutamiseks inimestele ja ettevõtetele, kelle vahel puudub usaldus, võime järeldada, et selline andmete salvestamise meetod ei sobi plokiahelale.

Alustame klotside kaitsmist võltsimise eest. Esimeses etapis proovime iga plokki kaitsta kontrollsummaga (joonis 1.2).

Raamat “Creating Solidity smart contracts for the Ethereum blockchain. Praktiline juhend"
Riis. 1.2. Nendele plokkidele kaitse lisamine kontrollsummaga

Nüüd ei saa ründaja lihtsalt plokki muuta, kuna see sisaldab ploki andmete kontrollsummat. Kontrollsumma kontrollimine näitab, et andmeid on muudetud.

Kontrollsumma arvutamiseks võite kasutada ühte räsifunktsioonidest, nagu MD-5, SHA-1, SHA-256 jne. Räsifunktsioonid arvutavad väärtuse (näiteks püsiva pikkusega tekstistringi), sooritades andmeplokil pöördumatuid toiminguid. Toimingud sõltuvad räsifunktsiooni tüübist.

Isegi kui andmeploki sisu veidi muutub, muutub ka räsiväärtus. Räsifunktsiooni väärtust analüüsides on võimatu rekonstrueerida andmeplokki, mille jaoks see arvutati.

Kas sellisest kaitsest piisab? Kahjuks ei.

Selles skeemis kaitseb kontrollsumma (räsifunktsioon) ainult üksikuid plokke, kuid mitte kogu plokiahelat. Teades räsifunktsiooni arvutamise algoritmi, saab ründaja hõlpsasti ploki sisu asendada. Samuti ei takista miski teda ketist klotse eemaldamast või uusi lisamast.

Kogu ahela kui terviku kaitsmiseks võite igasse plokki salvestada koos andmetega ka eelmise ploki andmete räsi (joonis 1.3).

Raamat “Creating Solidity smart contracts for the Ethereum blockchain. Praktiline juhend"
Riis. 1.3. Lisage andmeplokki eelmise ploki räsi

Selles skeemis peate ploki muutmiseks ümber arvutama kõigi järgnevate plokkide räsifunktsioonid. Näib, milles probleem?

Päris plokiahelates luuakse täiendavalt kunstlikud raskused uute plokkide lisamiseks – kasutatakse palju arvutusressursse nõudvaid algoritme. Arvestades, et plokis muudatuste tegemiseks peate ümber arvutama mitte ainult selle ühe ploki, vaid ka kõik järgnevad, on seda äärmiselt keeruline teha.

Meenutagem ka seda, et plokiahela andmeid hoitakse (dubleeritakse) arvukates võrgusõlmedes, s.t. Kasutatakse detsentraliseeritud salvestusruumi. Ja see muudab ploki võltsimise palju keerulisemaks, sest muudatused tuleb teha kõigis võrgusõlmedes.

Kuna plokid salvestavad infot eelmise ploki kohta, siis on võimalik kontrollida kõikide ahelas olevate plokkide sisu.

Ethereumi plokiahel

Ethereumi plokiahel on platvorm, millel saab luua hajutatud DApp-e. Erinevalt teistest platvormidest võimaldab Ethereum kasutada nn nutikaid lepinguid (smart contracts), mis on kirjutatud Solidity programmeerimiskeeles.

Selle platvormi lõi 2013. aastal Bitcoin Magazine'i asutaja Vitalik Buterin ja see käivitati 2015. aastal. Kõik, mida me oma koolitusel uurime või teeme, on seotud konkreetselt Ethereumi plokiahela ja Solidity nutikate lepingutega.

Kaevandamine ehk kuidas plokke luuakse

Kaevandamine on üsna keeruline ja ressursimahukas protsess uute plokkide lisamiseks plokiahela ahelasse, mitte aga üldse "krüptoraha kaevandamine". Kaevandamine tagab plokiahela funktsionaalsuse, sest just see protsess vastutab tehingute lisamise eest Ethereumi plokiahelasse.

Plokkide lisamisega seotud inimesi ja organisatsioone nimetatakse kaevuriteks.
Kaevurite sõlmedes töötav tarkvara püüab leida viimase ploki jaoks räsiparameetri nimega Nonce, et saada võrgu poolt määratud konkreetne räsiväärtus. Ethereumis kasutatav Ethashi räsimise algoritm võimaldab teil saada Nonce'i väärtuse ainult järjestikuotsingu kaudu.

Kui kaevandussõlm leiab õige Nonce väärtuse, siis on see nn töötõend (PoW, Proof-of-work). Sel juhul, kui Ethereumi võrku lisatakse plokk, saab kaevandaja teatud tasu võrgu valuutas - Ether. Artikli kirjutamise ajal on tasu 5 eetrit, kuid aja jooksul seda vähendatakse.

Seega tagavad Ethereumi kaevurid plokkide lisamisega võrgu toimimise ja saavad selle eest krüptoraha. Internetis on palju teavet kaevurite ja kaevandamise kohta, kuid keskendume Solidity lepingute ja DApp-ide loomisele Ethereumi võrgus.

Tunni kokkuvõte

Esimeses tunnis tutvusite plokiahelaga ja saite teada, et see on spetsiaalselt koostatud plokkide jada. Varem salvestatud plokkide sisu ei saa muuta, kuna see nõuaks paljudes võrgusõlmedes kõigi järgnevate plokkide ümberarvutamist, mis nõuab palju ressursse ja aega.

Blockchaini saab kasutada tehingute tulemuste salvestamiseks. Selle põhieesmärk on korraldada turvalisi tehinguid osapoolte (isikute ja organisatsioonide) vahel, kelle vahel puudub usaldus. Sa õppisid, millistes konkreetsetes ärivaldkondades ja millistes valdkondades saab Ethereumi plokiahelat ja Solidity nutikaid lepinguid kasutada. See on pangandussektor, omandiõiguste, dokumentide jne registreerimine.

Samuti õppisite, et plokiahela kasutamisel võib tekkida erinevaid probleeme. Need on plokiahelasse lisatud teabe kontrollimise probleemid, plokiahela kiirus, tehingute maksumus, nutikate lepingute ja reaalse maailma vahelise andmevahetuse probleem, aga ka potentsiaalsed ründajate rünnakud, mille eesmärk on varastada kasutajakontodelt krüptovaluuta vahendeid. .

Samuti rääkisime põgusalt kaevandamisest kui uute plokkide plokiahelasse lisamise protsessist. Kaevandamine on vajalik tehingute sooritamiseks. Kaevandamisega tegelejad tagavad plokiahela toimimise ja saavad selle eest tasu krüptovaluutas.

Õppetund 2. Töökeskkonna ettevalmistamine Ubuntu ja Debian OS-isOperatsioonisüsteemi valimine
Vajalike kommunaalteenuste paigaldamine
Gethi ja Swarmi installimine Ubuntule
Gethi ja Swarmi installimine Debiani
Esialgne ettevalmistus
Go distributsiooni allalaadimine
Keskkonnamuutujate seadistamine
Go versiooni kontrollimine
Gethi ja Swarmi installimine
Privaatse plokiahela loomine
Faili genesis.json ettevalmistamine
Looge töö jaoks kataloog
Kontot looma
Sõlme lähtestamise alustamine
Sõlme käivitamise valikud
Ühendage meie sõlmega
Kaevandamise juhtimine ja bilansi kontroll
Gethi konsooli väljalülitamine
Tunni kokkuvõte

3. tund. Raspberry Pi 3 töökeskkonna ettevalmistamineRaspberry Pi 3 ettevalmistamine tööks
Rasberiani installimine
Värskenduste installimine
SSH-juurdepääsu lubamine
Staatilise IP-aadressi määramine
Vajalike kommunaalteenuste paigaldamine
Go installimine
Go distributsiooni allalaadimine
Keskkonnamuutujate seadistamine
Go versiooni kontrollimine
Gethi ja Swarmi installimine
Privaatse plokiahela loomine
Konto ja saldo kontrollimine
Tunni kokkuvõte

Tund 4. Kontod ja raha ülekandmine kontode vahelVaadake ja lisage kontosid
Vaadake kontode loendit
Konto lisamine
geth konto käsusuvandid
Konto paroolid
Krüptovaluuta Ethereumis
Ethereumi valuutaühikud
Määrame oma kontode jooksva saldo
Kandke raha ühelt kontolt teisele
eth.sendTehingumeetod
Vaadake tehingu olekut
Tehingu kviitung
Tunni kokkuvõte

Õppetund 5. Esimese lepingu avaldamineNutikad lepingud Ethereumis
Lepingu tark täitmine
Ethereumi virtuaalne masin
Integreeritud arenduskeskkond Remix Solidity IDE
Jooksev kompilatsioon
Lepingufunktsioonide helistamine
Lepingu avaldamine eravõrgus
ABI definitsiooni ja lepingu binaarkoodi hankimine
Lepingu avaldamine
Lepingu avaldamise tehingu oleku kontrollimine
Lepingufunktsioonide helistamine
Partiikompilaator solc
Solci installimine Ubuntule
Solci installimine Debiani
HelloSoli lepingu koostamine
Lepingu avaldamine
Solci installimine Rasberiani
Tunni kokkuvõte

Õppetund 6. Nutikad lepingud ja Node.jsNode.js installimine
Paigaldamine Ubuntule
Installimine Debianile
Ganache-cli installimine ja käivitamine
Web3 installimine
Solci paigaldamine
Node.js installimine Rasberiani
Skript, et saada konsoolis kontode loend
Skript nutika lepingu avaldamiseks
Käivitage ja hankige parameetrid
Käivitamisvalikute hankimine
Lepingu koostamine
Konto deblokeerimine
ABI ja lepingu binaarkoodi laadimine
Vajaliku gaasikoguse hindamine
Looge objekt ja alustage lepingu avaldamist
Lepingu avaldamise skripti käitamine
Nutikate lepingute funktsioonide helistamine
Kas avaldatud nutilepingut on võimalik uuendada?
Töötamine Web3 versiooniga 1.0.x
Kontode loendi hankimine
Lepingu avaldamine
Lepingufunktsioonide helistamine
Kandke raha ühelt kontolt teisele
Kandke raha lepingukontole
HelloSoli nutilepingu värskendamine
Looge oma konto saldo vaatamiseks skript
Lisage skripti call_contract_get_promise.js väljakutse funktsioonile getBalance
Täiendame nutika lepingu kontot
Tunni kokkuvõte

Tund 7. Sissejuhatus trühvlisseTrühvli paigaldamine
Looge HelloSoli projekt
Projekti kataloogi ja failide loomine
Lepingute kataloog
Kataloogide migratsioonid
Kataloogi test
truffle-config.js faili
HelloSoli lepingu koostamine
Alustage lepingu avaldamist
HelloSoli lepingufunktsioonide helistamine trühvliviips
HelloSoli lepingufunktsioonide kutsumine JavaScripti skriptist, milles töötab Node.js
Trühvlilepingu mooduli paigaldamine
Lepingu funktsioonide getValue ja getString kutsumine
Lepingufunktsioonide setValue ja setString kutsumine
Lepingu muutmine ja uuesti avaldamine
Töötamine Web3 versiooniga 1.0.x
HelloSoli nutilepingus muudatuste tegemine
Skriptid lepingumeetodite kutsumiseks
Testimine trühvlis
Tahkeduse test
JavaScripti test
Tunni kokkuvõte

Õppetund 8. Solidity andmetüübidLeping andmetüüpide õppimiseks
Boole'i ​​andmetüübid
Märgita täisarvud ja märgiga täisarvud
Fikseeritud punktide numbrid
Aadress
Kompleksset tüüpi muutujad
Fikseeritud suurusega massiivid
Dünaamilised massiivid
Loendamine
Konstruktsioonid
Sõnaraamatute kaardistamine
Tunni kokkuvõte

Õppetund 9. Lepingute migreerimine privaatvõrku ja Rinkeby võrkuLepingu avaldamine Truffle'ilt Gethi privaatvõrku
Privaatvõrgusõlme ettevalmistamine
Töölepingu koostamine
Lepingu koostamine ja üleviimine Truffle'i võrku
Kohaliku võrgu migratsiooni gethi käivitamine
Trühvli esemete hankimine
Lepingu avaldamine Truffle'ilt Rinkeby testvõrku
Gethi sõlme ettevalmistamine Rinkebyga töötamiseks
Sõlmede sünkroonimine
Kontode lisamine
Rinkeby konto täiendamine eetriga
Lepingu migratsiooni käivitamine Rinkeby võrku
Lepingu teabe vaatamine Rinkeby võrgus
Trühvli konsool Rinkeby võrgu jaoks
Lihtsam viis lepingufunktsioonide kutsumiseks
Lepingumeetodite kutsumine Node.js-i abil
Kandke raha üle Rinkby jaoks Truffle'i konsoolis kontode vahel
Tunni kokkuvõte

10. õppetund. Ethereum Swarmi detsentraliseeritud andmesalvestusKuidas Ethereum Swarm töötab?
Swarmi installimine ja käivitamine
Toimingud failide ja kataloogidega
Faili üleslaadimine Ethereum Swarmi
Faili lugemine Ethereum Swarmist
Vaadake üleslaaditud faili manifesti
Kataloogide laadimine alamkataloogidega
Faili lugemine allalaaditud kataloogist
Kasutades avalikku Swarmi lüüsi
Juurdepääs Swarmile Node.js skriptidest
Perl Net::Ethereum::Swarm moodul
Net::Ethereum::Swarm mooduli installimine
Andmete kirjutamine ja lugemine
Tunni kokkuvõte

Õppetund 11. Web3.py raamistik Pythonis Ethereumiga töötamiseksWeb3.py installimine
Vajalike pakettide värskendamine ja installimine
Easysolci mooduli paigaldamine
Lepingu avaldamine Web3.py abil
Lepingu koostamine
Ühenduse loomine teenusepakkujaga
Teostage lepingu avaldamine
Lepingu aadressi ja abi salvestamine faili
Lepingu avaldamise skripti käitamine
Lepingumeetoditele helistamine
Lepingu aadressi ja abi lugemine JSON-failist
Ühenduse loomine teenusepakkujaga
Lepinguobjekti loomine
Lepingumeetoditele helistamine
Trühvlid ja Web3.py
Tunni kokkuvõte

Õppetund 12. OraaklidKas nutikas leping saab usaldada välismaailma andmeid?
Oracles kui plokiahela teabe vahendajad
Andmeallikas
Kood, mis esindab andmeid allikast
Oracle vahetuskursi salvestamiseks plokiahelas
USDRateOracle'i leping
Vahetuskursi värskendamine nutikas lepingus
Web Socket Provideri kasutamine
RateUpdate'i sündmuse ootamine
RateUpdate'i sündmuse käsitlemine
Nutilepingus andmete uuendamise algatamine
Tunni kokkuvõte

Allikas: www.habr.com

Lisa kommentaar