
Rohkem kui aasta töötasin raamatu „Solidity nutilepingute loomine Ethereum blockchainis. Praktiline juhend” kallal, ja nüüd on see töö lõpetatud ning raamat .
Loodan, et minu raamat aitab kiiresti alustada Solidity nutilepingute ja jaotatud rakenduste DApp loomisega Ethereum blockchainis. See koosneb 12st õlessonast praktiliste ülesannetega. Nende täitmise kaudu suudab lugeja luua oma kohalikud Ethereum sõlmed, avaldada nutilepingud ja kutsuda üles nende meetodeid, vahetada andmeid reaalse maailma ja nutilepingute vahel oraklite abil, töötada Rinkeby testimisvõrguga.
Raamat on suunatud kõigile, kes on huvitatud kaasaegsetest tehnoloogiatest blockchainide valdkonnas ja soovivad kiiresti omandada teadmisi, mis võimaldavad tegeleda huvitava ja perspektiivika tööga.
Allpool leiate raamatu sisukorra ja esimese peatüki (ka Litresis Meie raamat on mõeldud neile, kes soovivad mitte ainult mõista Ethereum blockchaini tööpõhimõtteid, vaid ka omandada praktilisi oskusi jaotatud rakenduste DApp loomisel Solidity programmeerimiskeeles selle võrgu jaoks.
SisukordSissejuhatusSeda raamatut on parem mitte lihtsalt lugeda, vaid töötada sellega, täites õppetundides kirjeldatud praktilisi ülesandeid. Tööks on vajalik kohalik arvuti, virtuaalne või pilveserver, millel on installitud Debian või Ubuntu operatsioonisüsteem. Samuti saab paljusid ülesandeid täita Raspberry Pi abil.
Esimeses õppetunnis
vaatame Ethereum blockchaini tööpõhimõtteid ja peamist terminoloogiat, samuti räägime sellest, kus seda blockchaini kasutada. Teise õppetunni
Eesmärk eesmärk on luua privaatne Ethereum blockchaini sõlm kursuse raames edasiseks tööks Ubuntu ja Debian serveris. Vaatame põhivahendite, nagu geth, mis tagab meie blockchaini sõlme töö, paigaldamise eripära, samuti detsentraliseeritud andmehoidla swarm deemonit. Kolmas õppetund
Третий урок õpetab teid eksperimenteerima Ethereumiga odaval mikrokontrolleril Raspberry Pi. Te installite Raspberry Pi-le operatsioonisüsteemi (OS) Rasberian, Gethi utiliidi, mis võimaldab blokeeringu sõlme töötamist, samuti hajutatud andmehoidla Swarmi demot.
Neljas õppetund on pühendatud kontodele ja krüptovaluutadele Ethereumis ning meetoditele, kuidas kanda vahendeid ühelt kontolt teisele Gethi konsoolis. Õpite looma kontosid, algatama rahakandu tehinguid, saama tehingu staatust ja selle kviitungeid.
Viiendas õppetunnis tutvute nutilepingutega Ethereumis ja saate teada, kuidas need täidetakse Ethereum virtuaalmasina poolt.
Loote ja avaldate oma esimese nutilepingu privaatvõrgus Ethereumis ning õpite kutsuma välja selle funktsioone. Selleks kasutate Remix Solidity IDE arenduskeskkonda. Lisaks õpite installima ja kasutama pakendi kompilaatorit solc.
Samuti räägime nii nimetatud rakenduse binaarsest liidesest (Application Binary Interface, ABI) ja õpime, kuidas seda kasutada.
Kuues õppetund on pühendatud JavaScripti skriptide loomisele, mis töötavad Node.js all ja täidavad operatsioone Solidity nutilepingutega.
Te installite Node.js OS-is Ubuntu, Debian ja Rasberian, kirjutate skripte, et avaldada nutileping kohalikes Ethereum võrgus ja kutsuda välja selle funktsioone.
Lisaks õpite, kuidas skriptide abil kanda vahendeid tavakontode vahel ning arvestada need nutilepingute kontodele.
Seitsmendas õppetunnis õpite installima ja kasutama populaarset arendajate seas Solidity nutilepingute integreeritud keskkonda Truffle. Õpite looma JavaScripti skripte, mis kutsuvad lepingute funktsioone välja truffle-contract mooduli abil, samuti testite oma nutilepingut Truffle vahenditega.
Kaheksas õppetund on pühendatud Solidity andmetüüpidele. Kirjutate nutilepingud, mis töötavad selliste andmetüüpidega nagu alla- ja üleülevaate täisarvud, allkirjaga numbrid, stringid, aadressid, keeruliste tüüpide muutujad, massiivid, loendid, struktuurid ja sõnastikud.
Üheksandas õppetunnis Te lähendate ennast veel ühe sammu võrra nutilepingute loomiseks Ethereum põhivõrgus. Õpite avaldama lepinguid Truffle'i abil Gethi privaatses võrgus ja Rinkeby testvõrgus. Nutilepingu silumine Rinkeby võrgus on väga kasulik enne selle avaldamist põhivõrgus - seal on kõik peaaegu päris, kuid tasuta.
Kursuse käigus loote Rinkeby testvõrgu sõlme, täidate seda vahenditega ja avaldate nutilepingut.
Tund 10 on pühendatud jaotatud andmesalvestustele Ethereum Swarm. Jaotatud salvestuste kasutamine aitab teil vähendada suuri andmemahukust Ethereum plokkides.
Selles tunnis loote kohaliku Swarm salvestuse, viite läbi failide ja kaustade kirjutamise ja lugemise operatsioone. Edasi õpite töötama Swarm'i avaliku värava kaudu, kirjutate skripte Swarm'ile pöördumiseks Node.js kaudu ning kasutate Perl moodulit Net::Ethereum::Swarm.
Tunni 11 eesmärk on omandada oskused nutilepingute Solidity kasutamiseks populaarse programmeerimiskeele Python ja Web3.py raamistikuga. Paigaldada selle raamistik, kirjutada skripte nutilepingute kompileerimiseks ja avaldamiseks ning nende funktsioonide kutsumiseks. Web3.py-d kasutatakse nii iseseisvalt kui ka koos integreeritud arenduskeskkonnaga Truffle.
Tunnis 12 õpite edastama andmeid nutilepingute ja reaalse maailma vahel orakulite abil. See on vajalik andmete saamiseks veebisaitidelt, asjade interneti (IoT) seadmetelt, erinevatelt instrumentidelt ja sensoritelt ning andmete saatmiseks nutilepingutest nendele seadmetele. Tunni praktilises osas loote orakli ja nutilepingu, mis saab teavet USD ja rubla vahetuskurssidest Venemaa Keskpanga veebisaidi kaudu.
Tund 1. Lühidalt plokiahelast ja Ethereum võrgustÕppe eesmärk: tutvuda Ethereum plokiahela tööpõhimõtetega, selle rakendusaladega ja põhiterminoloogiaga.
Praktilised ülesanded: selles tunnis ei ole ette nähtud.
Täna on raske leida tarkvaraarendajat (SO), kes poleks kuulnud plokiahela (Blockchain) tehnoloogiast, krüptovaluutadest (Cryptocurrency või Crypto Currency), bitcoine (Bitcoin), esmane müük (ICO, Initial Coin Offering), nutilepingutest (Smart Contract) ning muudest mõistetest ja terminoloogiast, mis on seotud plokiahelaga.
Plokiahela tehnoloogia avab uusi turge ja loob töökohti programmeerijatele. Kui omandate kõik krüptovaluutatehnoloogiate ja nutilepingute tehnoloogiate nüansid, ei tohiks teil nende teadmiste praktikas rakendamisel probleeme olla.
Tuleb öelda, et krüptovaluutade ja plokiahelate ümber on palju spekulatsioone. Jätame kõrvale arutlused krüptovaluutade kursimuutuste, piramidide loomise ja krüptovaluutade seadusandlikkuse nüansside üle. Meie õpikursusel keskendume peamiselt Ethereum'i (eth, eeter) plokiahela nutilepingute tehnilise rakendamise aspektidele ja nn detsentraliseeritud rakenduste (Distributed Application, DApp) arendamisele.
Mis on plokiahel
Plokiahel (Blockchain, Block Chain) on andmeplokkide ahel, mis on omavahel teatud viisil seotud. Ahela alguses asub esimene plokk, mida nimetatakse algplokiks (genesis block) või geneesi plokiks. Selle järel järgneb teine, siis kolmas ja nii edasi.
Kõik need andmeplokid replitseeritakse automaatselt paljudes plokiahela võrgu sõlmedes. Nii tagatakse plokiahela andmete detsentraliseeritud ladustamine.
Saate ette kujutada plokiahela süsteemi kui suurt hulka sõlmi (füüsilisi või virtuaalseid servereid), mis on ühendatud võrku ja replitseerivad kõik muudatused andmeplokkide ahelas. See on nagu hiiglaslik mitme serveriga arvuti, kus sellise arvuti sõlmed (serverid) võivad olla üle kogu maailma. Ka teie võite lisada oma arvuti plokiahela võrku.
Detsentraliseeritud andmebaas
Plokiahelat võib ette kujutada kui detsentraliseeritud andmebaasi, mis replitseeritakse kõigisse plokiahela võrgu sõlmedesse. Teoorias töötab plokiahel seni, kuni ükski sõlm, mis salvestab kõik plokiahela plokid, töötab.
Detsentraliseeritud andmeregister
Plokiahelat võib pidada ka detsentraliseeritud andmeregistriks ja tehingute (transaktsioonide) registriks. Sellise registri teine nimetus on raamatupidamine.
Jaotatud registrisse saab andmeid lisada, kuid neid ei saa muuta ega kustutada. Selline võimalus puudub, muu hulgas, tänu krüptograafiliste algoritmide, spetsiaalsete plokkide lisamise algoritmide ja detsentraliseeritud andmete salvestamise kasutamisele.
Plokkide lisamise ja toimingute (tehingute) täitmise ajal kasutatakse privaatvõtmeid ja avalikke võtmeid. Need piiravad plokiahela kasutajaid, andes neile juurdepääsu ainult oma andmeplokkidele.
Tehingud
Plokiahel salvestab teavet toimingute (tehingute) kohta plokkides. Samal ajal ei saa vanu, juba tehtud tehinguid tagasi pöörata ega muuta. Uued tehingud salvestatakse uusi, lisatud plokkidesse.
Seega saab plokiahelas salvestada muutumatul kujul kogu tehingute ajaloo. Seetõttu saab plokiahelat kasutada näiteks usaldusväärseks pangatehingute, autoriõiguse andmete ja kinnisvaraarenduse omanike ajaloo salvestamiseks jne.
Ethereum'i plokiahel sisaldab nn süsteemi olekuid. Tehingute toimumisel muutub olek algsest praeguseks. Tehingud salvestatakse plokkidesse.
Avalikud ja privaatseid plokiahelad
Siin tuleb märkida, et kõik eelnev kehtib ainult nn avalike plokiahelate jaoks, mida ei saa kontrollida üksikute füüsiliste või juriidiliste isikute, riigiasutuste ega valitsuste poolt.
Nii öeldud privaatsetes plokiahelates on nende loojate täielik kontroll, ja seal on võimalik kõik, näiteks kogu plokkide ahela täielik asendamine.
Praktilised rakendused plokiahela jaoks
Kuidas võib plokiahel olla kasulik?
Lühidalt, plokiahel võimaldab turvaliselt teostada tehinguid (kokkuleppeid) osapoolte vahel, kes ei usalda üksteist. Plokiahelasse salvestatud andmeid (tehingud, isikuandmed, dokumendid, tõendid, lepingud, saated jne) ei saa salvestamise järel võltsida ega asendada. Seetõttu saab plokiahela põhjal luua näiteks usaldusväärseid jagatud registrit igasuguste dokumentide jaoks.
Loomulikult teate, et plokiahelate baasil luuakse krüptovaluutasüsteeme, mille eesmärk on asendada tavalised paberrahad. Paberrahad on tuntud ka kui fiat-raha (Fiat Money).
Plokiahel tagab tehingute salvestamise ja muutumatuse, mis on kinnitatud blokkides, mistõttu saab seda kasutada krüptovaluutasüsteemide loomiseks. See sisaldab kogu ajalugu krüptoressursside edastamisest erinevate kasutajate (kontode) vahel, samas on iga tehing jälgitav.
Kuigi krüptovaluutasüsteemide sees võivad tehingud olla anonüümsed, toob krüptovaluuta väljavõtmine ja selle vahetamine fiat-raha tavaliselt kaasa krüptovaluuta aktiivide omaniku isiku avalikuks tuleku.
Nii-öelda nutilepingud, mis on Ethereumis töötav tarkvara, võimaldavad automatiseerida tehingute sõlmimise protsessi ja nende täitmise kontrolli. See on eriti tõhus, kui tehingu eest makstakse krüptovaluuta Ether (eeter) abil.
Ethereum plokiahel ja Ethereumis nutilepingud, mis on kirjutatud programmeerimiskeeles Solidity, võivad leida kasutust näiteks järgmistes valdkondades:
- alternatiiv notariseeritud dokumentide jaoks;
- kinnisvaraobjektide registri ja tehingute andmete hoidmine;
- intellektuaalomandi õiguste (raamatud, pildid, muusikateosed jne) andmete säilitamine;
- isevalitsemise süsteemide loomine;
- rahandus ja pangandustegevus;
- logistika rahvusvahelises mastaabis, kaubavoogude jälgimine;
- isikuandmete hoidmine isikutunnistuste süsteemi analoogina;
- turvalised tehingud äritegevuses;
- meditsiiniliste uuringute tulemuste ning määratud protseduuride ajaloo hoidmine.
Plokiahela probleemid
Kuid loomulikult pole kõik nii lihtne, nagu võiks arvata!
On probleeme andmete valideerimisega enne nende lisamist plokiahelasse (näiteks kas need on ehtsad?), samal ajal on probleeme süsteemi- ja rakendustarkvara turvalisusega, millega töötatakse plokiahela alusel, samuti probleemid seoses sotsiaalse inseneritehnika meetodite kasutamisega krüptovaluutakottide juurdepääsu varguseks jne.
Kui rääkida privaatsetest plokiahelatest, mis kuuluvad isikule või organisatsioonile, siis usaldusväärsuse tase ei ületa usaldusväärsuse taset sellele isikule või organisatsioonile endale.
Samuti tuleb arvestada, et plokiahelas salvestatud andmed on kõigile kättesaadavad. Seega ei sobi plokiahel (eriti avalik) konfidentsiaalse teabe säilitamiseks. Kuid tõsiasi, et plokiahela teavet ei saa muuta, võib aidata ennetada või uurida eri tüüpi pettusi.
Ethereum'i detsentraliseeritud rakendused on mugavad, kui nende kasutamise eest makstakse krüptorahaga. Mida rohkem inimesi omab krüptoraha või on valmis seda ostma, seda populaarsemaks muutuvad DApp rakendused ja nutilepingud.
Plokiahela üldiste probleemide hulgas, mis takistavad selle praktilist rakendamist, võib mainida uute plokkide lisamise piiratud kiirus ja suhteliselt kõrged tehingutasud. Kuid selles valdkonnas arendatakse tehnoloogiat aktiivselt ja on lootust, et tehnilised probleemid lahenevad ajaga.
Teine probleem seisneb selles, et Ethereum'i plokiahela nutilepingud töötavad virtuaalmasinate isoleeritud keskkonnas ning neil ei ole juurdepääsu reaalse maailma andmetele. Eelkõige ei saa nutilepingu programm lugeda andmeid veebilehtedelt ega mistahes füüsilistelt seadmetelt (sensorid, kontaktid jne) ning ei saa edastada andmeid välistele seadmetele. Seda probleemi ja võimalikke lahendusi arutame tunnis, mis on pühendatud nn Oraaklitele - nutilepingute teabevahendajatele.
Samuti on õigusaktides piiratust. Mõnes riigis, näiteks, on keelatud kasutada krüptorahaga maksmist, kuid selle omamine on lubatud kui digitaalset varatüüpi, sarnaselt väärtpaberitega. Selliseid varasid saab osta ja müüa börsil. Igal juhul tuleb krüptorahadega töötavate projektide loomisel tutvuda selle riigi seadustega, mille jurisdiktsiooni alla teie projekt kuulub.
Kuidas plokiahela ahel koostatakse
Nagu juba mainitud, on plokiahel lihtne andmeplokkide ahel. Esmalt moodustatakse selle ahela esimene plokk, seejärel lisatakse sellele teine ja nii edasi. Eeldatakse, et tehingute andmed salvestatakse plokkidesse ja lisatakse kõige viimasesse plokki.
Joonisel 1.1 oleme näidanud lihtsaimat plokkide järjestuse varianti, kus esimene plokk viitab järgmisele.

Joonis 1.1. Lihtne plokkide järjestus
Sellisel juhul on aga väga lihtne ükskõik millise ahela ploki sisu võltsida, kuna plokid ei sisalda mingit teavet muudatuste kaitsmiseks. Arvestades, et plokiahel on mõeldud inimestele ja ettevõtetele, kelle vahel pole usaldust, võib järeldada, et selline andmete salvestamise viis plokiahela jaoks ei sobi.
Hakkame plokke võltsimise eest kaitsma. Esimeses etapis proovime kaitsta iga ploki kontrollsummaga (joonis 1.2).

Joonis 1.2. Lisame plokkide andmete kaitseks kontrollsummat
Nüüd ei saa ründaja lihtsalt plokki muuta, kuna see sisaldab ploki andmete kontrollsummat. Kontrollsummade kontrollimine näitab, et andmed on muutunud.
Kontrollsummade arvutamiseks võib kasutada ühte hash-funktsiooni, näiteks MD-5, SHA-1, SHA-256 jne. Hash-funktsioonid arvutavad mingi väärtuse (nt konstantse pikkusega tekstirea) ploki andmete üle pöördumatute operatsioonide läbiviimise tulemusena. Operatsioonid sõltuvad hash-funktsiooni tüübist.
Isegi ploki andmete sisu väikse muutuse korral muutub ka hash-funktsiooni väärtus. Analüüsides hash-funktsiooni väärtust, ei ole võimalik taastada ploki andmeid, mille jaoks see arvutati.
Kas selline kaitse oleks piisav? Kahjuks mitte.
Selles skeemis kaitseb kontrollsumma (hash-funktsioon) ainult üksikuid plokke, kuid mitte kogu plokkide ahelat. Teades hash-funktsiooni arvutamise algoritmi, saab ründaja kergesti muuta ploki sisu. Samuti ei takista miski tal plokkide ahelast eemaldamist või uute lisamist.
Kogu ahela kaitsmiseks tervikuna võib iga plokis koos andmetega salvestada ka eelmise ploki hash'i (joonis 1.3).

Joonis 1.3. Lisame ploki andmetesse eelmise ploki hash'i
Selles skeemis, et muuta mõnda plokki, tuleb ümber arvutada kõikide järgnevaid plokkide hash-funktsioonid. Tundub ju, et mis siin siis probleemi on?
Reaalsetes plokiahelates on lisaks loodud kunstlikud raskused uute plokkide lisamiseks — kasutatakse algoritme, mis nõuavad palju arvutusressursse. Arvestades, et ploki muutmiseks tuleb ümber arvutada mitte ainult see plokk, vaid kõik järgnevad, on selle tegemine äärmiselt keeruline.
Peame meeles, et plokiahela andmed salvestatakse (duplitakse) arvukatel võrgusõlmedel, st kasutatakse detsentraliseeritud salvestamist. See muudab ploki valeandmise oluliselt keerulisemaks, kuna muudatused tuleb teha kõigis võrgusõlmedes.
Kuna plokid sisaldavad teavet eelmise ploki kohta, on võimalik kontrollida kõigi plokkide ketti sisu.
Ethereum plokiahel
Ethereum plokiahel on platvorm, millel saab luua jagatud rakendusi DApp. Erinevalt teistest platvormidest võimaldab Ethereum kasutada nn nutikaid lepinguid (smart contracts), mis on kirjutatud programmeerimiskeeles Solidity.
See platvorm loodi 2013. aastal Vitalik Buterini poolt, kes on Bitcoin Magazine asutaja, ja käivitati 2015. aastal. Kõik, mida me meie õpikursusel uurime või teeme, on seotud just Ethereum plokiahela ja Solidity nutikate lepingutega.
Kaevandamine ehk kuidas plokid tekivad
Kaevandamine (mining) on üsna keeruline ja ressursimahukas protsess, millega lisatakse uusi plokke plokiahela ketti, mitte ei „kaevandata krüptorahasid“. Kaevandamine tagab plokiahela toimimise, kuna just see protsess vastutab tehingute lisamise eest Ethereum plokiahelasse.
Inimesi ja organisatsioone, kes lisavad plokke, nimetatakse kaevandajateks (miners).
Kaevandajate sõlmedes töötav tarkvara (SO) püüab välja mõelda viimase ploki jaoks hash-kandjat nimega Nonce, et saada teatud väärtus hash-funktsioonist, mis on määratud võrgus. Ethashi hash-algoritm, mida Ethereumis kasutatakse, võimaldab saada Nonce'i väärtuse ainult järjestikuste katsete kaudu.
Kui kaevuri sõlm on leidnud õige Nonce'i väärtuse, on see nn töö tõend (PoW, Proof-of-Work). Sel juhul, kui blokk lisatakse Ethereum'i võrku, saab kaevur teatud tasu võrgu valuutas — Eetris. Meie raamatu koostamise ajal on tasu 5 Eetrit, kuid aja jooksul see väheneb.
Nii et Ethereum'i kaevurid tagavad võrgutööd, lisades bloke ja saavad selle eest krüptorahaga tasu. Internetist leiate hulgaliselt teavet kaevurite ja kaevandamise kohta, kuid meie keskendume Solidity lepingute loomisele ja detsentraliseeritud rakendustele DApp Ethereum'i võrgus.
Tunni kokkuvõte
Esimesel tunnil tutvusite plokiahelaga ja õppisite, et see on erilise viisil koostatud plokkide järjestus. Varem salvestatud plokkide sisu ei saa muuta, kuna selleks tuleb ümber arvutada kõik järgnevad plokid paljude võrgu sõlmede tõttu, mida on vaja suure hulga ressursside ja ajaga.
Plokiahelat saab kasutada tehingute teostamise tulemuste salvestamiseks. Selle peamine eesmärk on turvaliste tehingute korraldamine isikute (inimeste ja organisatsioonide) vahel, kelle vahel ei ole usaldust. Te õppisite, millisel konkreetsel äri valdkonnas ja millistes sfäärides saab kasutada Ethereum'i plokiahelat ja Solidity nutikaid lepinguid. Need on pangandussektor, omandiõiguse registrimine, dokumentide jne.
Te õppisite ka, et plokiahela kasutamisel võivad tekkida mitmesugused probleemid. Need on teabe verifitseerimise probleemid, mis lisatakse plokiahelasse, plokiahela töö kiirus, tehingute maksumus, andmevahetuse probleemid nutikad lepingute ja reaalse maailma vahel, samuti potentsiaalsed rünnakud kurjategijate poolt, mille eesmärk on varastada krüptovaluutat kasutajate kontodelt.
Lisaks rääkisime lühidalt kaevandamisest kui protsessist, millega lisatakse uusi plokke plokiahelale. Kaevandamine on vajalik tehingute teostamiseks. Need, kes tegelevad kaevandamisega, tagavad plokiahela toimimise ja saavad selle eest krüptorahaga tasu.
Tund 2. Töö keskkonna ettevalmistamine OS Ubuntu ja DebianisOperatsioonisüsteemi valik
Vajalikud utiliidid
Gethi ja Swarmi installimine Ubuntu's
Gethi ja Swarmi installimine Debianis
Eeltingimused
Laadimist Go distributiivist
Keskkonnamuutujate seadistamine
Go versiooni kontrollimine
Geth ja Swarm installimine
Loome privaatse plokiahela
Готовим файл genesis.json
Loome töökausta
Loome konto
Alustame sõlmimise initsialiseerimist
Sõlme käivitamise parameetrid
Ühendume meie sõlmiga
Kaevandamise haldamine ja saldo kontrollimine
Gethi kylgkonna sulgemine
Tunni kokkuvõte
Õppetund 3. Töö keskkonna seadistamine Raspberry Pi 3-lRaspberry Pi 3 ettevalmistamine tööks
Rasberian'i installimine
Uuenduste installimine
SSH juurdepääsu lubamine
Staatilise IP aadressi seadistamine
Vajalikud utiliidid
Go paigaldamine
Laadimist Go distributiivist
Keskkonnamuutujate seadistamine
Go versiooni kontrollimine
Geth ja Swarm installimine
Loome privaatse plokiahela
Konto ja saldo kontrollimine
Tunni kokkuvõte
Õppetund 4. Kontod ja vahendite ülevõtmine kontode vahelKontode vaatamine ja lisamine
Kontode nimekirja vaatamine
Konto lisamine
Gethi konto käskude parameetrid
Konto paroolid
Krüptoraha Ethereumis
Ethereum rahalised ühikud
Määrame meie kontode hetkesaldo
Vahendite ülevõtmine ühelt kontolt teisele
Method eth.sendTransaction
Tehingu oleku vaatamine
Tehingu kuitants
Tunni kokkuvõte
Õppetund 5. Esimese lepingu avaldamineNutilepingud Ethereumis
Nutilepingu täitmine
Ethereum virtuaalne masin
Integreeritud arenduskeskkond Remix Solidity IDE
Kompileerimise käivitamine
Lepingu funktsioonide kutsumine
Lepingu avaldamine privaatvõrgus
Saame ABI ja lepingu binaarkoodi määratlemise
Lepingu avaldamine
Lepingu avaldamise tehingu oleku kontrollimine
Lepingu funktsioonide kutsumine
Solc paketi kompilaator
Solc installimine Ubuntu-s
Solc installimine Debianis
HelloSol lepingu kompileerimine
Lepingu avaldamine
Solc installimine Rasberianil
Tunni kokkuvõte
Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Installatsioon Ubuntu-s
Installatsioon Debianis
Ganache-cli installimine ja käivitamine
Web3 installimine
Solc installimine
Node.js installimine Rasberianil
Skript konto nimekirja saamiseks konsolis
Skript nutilepingu avaldamiseks
Käivitamine ja parameetrite saamine
Käivitamise parameetrite saamine
Lepingu kompileerimine
Konto avamine
ABI ja lepingu binaarkoodi laadimine
Nõutava gaasikoguse hindamine
Objekti loomine ja lepingu avaldamise käivitamine
Lepingu avaldamise skripti käivitamine
Nutilepingu funktsioonide kutsumine
Kas avaldatud nutilepingut on võimalik uuendada
Töö Web3 versiooniga 1.0.x
Saame kontode nimekirja
Lepingu avaldamine
Lepingu funktsioonide kutsumine
Vahendite ülevõtmine ühelt kontolt teisele
Vahendite ülevõtmine lepingu kontole
Uuendame nutilepingut HelloSol
Loome skripti konto saldo vaatamiseks
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Täiendame nutilepingu kontot
Tunni kokkuvõte
Õppetund 7. Sissejuhatus Truffle'iTruffle'i installimine
Loome projekti HelloSol
Projekti kausta ja failide loomine
Kataloog contracts
Migratsioonide kataloog
Testikataloog
Файл truffle-config.js
HelloSol lepingu kompileerimine
Lepingu avaldamise käivitamine
HelloSol lepingu funktsioonide kutsumine Truffle'i kutsel
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Truffle-contract mooduli installimine
GetValue ja getString funktsioonide kutsumine
SetValue ja setString funktsioonide kutsumine
Lepingu muutmine ja uuesti avaldamine
Töö Web3 versiooniga 1.0.x
Teeme muudatusi HelloSol nutika lepingu
Lepingu meetodite kutsumise skriptid
Testimine Truffles
Test Solidity's
Test JavaScriptis
Tunni kokkuvõte
Tund 8. Solidity andmetüübidLepingu andmetüüpide uurimiseks
Loogilised andmetüübid
Ilma märkideta ja märgiga täisarvud
Kindla koma numbrid
Aadress
Komplekssete tüüpide muutujad
Fikseeritud suurusega massiivid
Dünaamilised massiivid
Loetelu
Struktuurid
Mapping sõnastikud
Tunni kokkuvõte
Tund 9. Lepingu migratsioon privaatsesse võrku ja Rinkeby võrkuLepingu avaldamine Truffle'ist Gethi privaatsesse võrku
Privaatahela sõlme ettevalmistamine
Lepingu ettevalmistamine töötamiseks
Lepingu kompileerimine ja migratsioon Truffle'i võrku
Migratsiooni käivitamine kohalikus geth võrgus
Truffle artefaktide kaevandamine
Lepingu avaldamine Truffle'ist Rinkeby testvõrgus
Gethi sõlme ettevalmistamine Rinkebyga töötamiseks
Sõlme sünkroniseerimine
Kontode lisamine
Rinkeby konto täiendamine etheriga
Lepingu migratsiooni käivitamine Rinkeby võrgus
Lepingu teabe vaatamine Rinkeby võrgus
Truffle'i konsool Rinkeby võrgu jaoks
Lihtsam viis lepingu funktsioonide kutsumiseks
Вызов методов контракта при помощи Node.js
Rahade ülekandmine kontode vahel Rinkbyt Truffle'i konsoolis
Tunni kokkuvõte
Tund 10. Decentraliseeritud andmete salvestamine Ethereum SwarmKuidas Ethereum Swarm töötab
Swarm'i installimine ja käivitamine
Failide ja kataloogidega töötamine
Faili üleslaadimine Ethereum Swarm
Faili lugemine Ethereum Swarm'ist
Laaditud faili manifeste vaatamine
Kataloogide üleslaadimine alamkataloogidega
Faili lugemine üleslaaditud kataloogist
Avaliku Swarm'i värava kasutamine
Обращение к Swarm из скриптов Node.js
Perl moodul Net::Ethereum::Swarm
Net::Ethereum::Swarm mooduli installimine
Andmete kirjutamine ja lugemine
Tunni kokkuvõte
Tund 11. Web3.py raamistik Ethereumiga töötamiseks PythonisWeb3.py installimine
Vaikimisi pakettide uuendamine ja installimine
Easysolc mooduli installimine
Lepingu avaldamine Web3.py abil
Lepingu kompileerimine
Pakkujale ühendamine
Lepingu avaldamise teostamine
Lepingu aadressi ja ABI salvestamine faili
Lepingu avaldamise skripti käivitamine
Lepingu meetodite kutsumine
Lepingu aadressi ja ABI lugemine JSON failist
Pakkujale ühendamine
Lepingu objekti loomine
Lepingu meetodite kutsumine
Truffle ja Web3.py
Tunni kokkuvõte
Tund 12. OraaklidKas nutikokkulepe võib usaldada andmeid välismaailmast
Oraaklid kui plokiahela teabe vahendajad
Andmete allikas
Kood andmete esitamiseks allikast
Oraakel vahetuskursi salvestamiseks plokiahelasse
USDRateOracle leping
Vahetuskursi värskendamine nutilepingus
Web Socket pakkuja kasutamine
RateUpdate sündmuse ooteaeg
RateUpdate sündmuse töötlemine
Andmete värskendamine nutilepingus
Tunni kokkuvõte
Allikas: habr.com
