Raamat "Solidity nutilepingute loomine Ethereum plokiahelas. Praktiline juhend"

Raamat "Solidity nutilepingute loomine Ethereum plokiahelas. Praktiline juhend"
Olen töötanud rohkem kui aasta raamatu «Solidity nutilepingute loomine Ethereum'i plokiahelas. Praktiline juhend» kallal ja nüüd on see töö lõpetatud, raamat on välja antud ja saadaval LitResis.

Loodan, et minu raamat aitab kiiresti alustada Solidity nutilepingute ja jaotatud rakenduste DApp loomist Ethereum'i plokiahelas. See koosneb 12 õppetunnist koos praktiliste ülesannetega. Need täites suudab lugeja luua oma kohalikke Ethereum'i sõlmi, avaldada nutilepinguid ja kutsuda neid meetodeid, vahetada andmeid reaalmaailma ja nutilepingute vahel oraklite abil, töötada Rinkeby testvõrgus.

Raamat on suunatud kõigile, kes tunnevad huvi plokiahela tipptasemel tehnoloogiate vastu ja soovivad kiiresti omandada teadmisi, mis võimaldavad tegeleda huvitava ja perspektiivika tööga.

Allpool leiate raamatu sisu ja esimese peatüki (ka LitResis on saadaval raamatu katked). Ootan tagasisidet, märkusi ja ettepanekuid. Kavatsen kõike seda arvesse võtta järgmise raamatu väljaande ettevalmistamisel.

SisukordSissejuhatusMeie raamat on mõeldud neile, kes soovivad mitte ainult mõista Ethereum'i plokiahela toimimise põhimõtteid, vaid ka omandada praktilisi oskusi ja luua sellel platvormil DApp-i rakendusi programmikeeles Solidity.

Seda raamatut ei tohiks lihtsalt lugeda, vaid temaga tuleb aktiivselt töötada, 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. Paljude ülesannete täitmiseks saab kasutada ka Raspberry Pi'd.

Esimeses õppetunnis käsitleme Ethereum'i plokiahela toimimise põhimõtteid ja peamist terminoloogiat ning räägime ka sellest, kus seda plokiahelat kasutada.

Eesmärk teises õppetunnis — luua privaatse Ethereum'i plokiahela sõlm, et edasi töötada käesoleva kursuse raames Ubuntu ja Debian serveris. Käsitleme peamiste utiliitide, nagu geth, installimise eripära, mis tagab meie plokiahela sõlme toimimise, samuti detsentraliseeritud andmesalvestuse deemonit swarm.

Kolmas õppetund õpetab teid katsetama Ethereumiga odava Raspberry Pi mikroarvuti abil. Paigaldate Raspberry Pi-le operatsioonisüsteemi (OS) Rasberian, Gethi utiliidi, mis võimaldab plokiahela sõlme tööle hakkamist, ja detsentraliseeritud andmehoidla Swarm deemonit.

Neljas õppetund on pühendatud kontodele ja krüptovaluutadele Ethereumis, samuti vahenditele, kuidas ülekandeid ühelt kontolt teisele Gethi konsoolist teha. Õpite looma kontosid, algatama rahaülekandeid, saama tehingu olekut ja selle kviitungit.

Viendal õppetunnil tutvute nutilepingutega Ethereumis ja saate teada, kuidas need töötavad Ethereum'i virtuaalses masinas.

Loote ja avaldate oma esimese nutilepingu privaatsetes Ethereumi võrkudes ning õpite, kuidas kutsuda selle funktsioone. Selleks kasutate Remix Solidity IDE arenduskeskkonda. Samuti õpite, kuidas paigaldada ja kasutada paketti solc.
Lisaks räägime nii nimetatud rakenduse binaarsest liidesest (ABI) ning õpetame, kuidas seda kasutada.

Kuues õppetund on JavaScript'i skriptide loomisele, mis töötavad Node.js-i all ja täidavad tegevusi Solidity nutilepingutega.

Sa installid Node.js Ubuntu, Debian ja Raspberry Pi operatsioonisüsteemides, kirjutad skripte nutilepingute avaldamiseks lokaliseeritud Ethereum võrgus ja nende funktsioonide kutsumiseks.

Lisaks õpid skriptide abil edastama vahendeid tavaliste kontode vahel ning neid nutilepingute kontodele üle kandma.

Seitsmendas tundis õpid paigaldama ja kasutama arendajate seas populaarset nutilepingute keskkonda Truffle. Õpid looma JavaScript'i skripte, mis kutsuvad lepingufunktsioone truffle-contract mooduli abil, samuti teed oma nutilepingu testimist Truffle'i vahenditega.

Kaheksas tund on pühendatud Solidity andmetüüpidele. Sa kirjutad nutilepingud, mis töötavad selliste andmetüüpidega nagu signeeritud ja signeerimata täisarvud, ujuv Radeon, stringid, aadressid, keerukate tüüpide muutujad, massiivid, loendid, struktuurid ja sõnastikud.

Üheksandas tunnis Te pürgisite veel ühe sammu lähemale nutilepingute loomisele Ethereum põhivõrgus. Õpite avaldama lepinguid Truffle abil Gethi privaatvõrgus ning Rinkeby testvõrgus. Nutilepingute silumine Rinkeby võrgus on väga kasulik enne lepingute avaldamist põhivõrgus — seal on kõik praktiliselt reaalne, aga tasuta.

Tunni raames loote Rinkeby testvõrgu sõlme, täidate seda vahenditega ja avaldate nutilepingut.

Tund 10 on pühendatud Ethereum Swarmi jaotatud andmesalvestustele. Jaotatud salvestuste kasutamine aitab teil säästa suuri andmemahte Ethereum plokiahelas.

Selle tunni raames loote kohalikku Swarmi salvestust, teostate failide ja kaustade lugemise ja kirjutamise toimingud. Edasi õpite, kuidas töötada avaliku Swarmi väravaga, kirjutate skripte Swarmile juurde pääsemiseks Node.js kaudu ning samuti Perl mooduli Net::Ethereum::Swarm abil.

Tunni eesmärk 11 — hallata smart-lepingute töötlust Solidity rakendades populaarset programmeerimiskeelt Python ja raamistikku Web3.py. Te installite selle raamistikku, kirjutate skripte smart-lepingute kompileerimiseks ja avaldamiseks ning nende funktsioonide kutsumiseks. Samuti kasutatakse Web3.py nii iseseisvalt kui ka koos integreeritud arenduskeskkonna Truffle'iga.

12. õppetund õpite edastama andmeid smart-lepingute ja reaalse maailma vahel oraaklite abil. See oskus on kasulik, et saada andmeid veebisaitidelt, asjade interneti (IoT) seadmetelt, erinevatelt instrumentidelt ja anduritelt ning edastada andmeid smart-lepingutest nende seadmete peale. Õppetunni praktilises osas loote oraakli ja smart-lepingu, mis saab värsket USD vahetuskurssi rubla suhtes Venemaa Pangast.

Õppetund 1. Lühidalt plokiahela ja Ethereum’i võrgu kohtaÕppetunni eesmärk: tutvuda Ethereum’i plokiahela tööpõhimõtetega, selle rakendusvaldkondadega ja põhiterminoloogiaga.
Praktilised ülesanded: selles õppetunnis ei ole ette nähtud.

Tänapäeval on raske leida tarkvaraarendajat, kes ei oleks kuulnud plokiahela (Blockchain) tehnoloogiast, krüptovaluutadest (Cryptocurrency või Crypto Currency), bitcoiinidest (Bitcoin), esialgsest müügist (ICO, Initial Coin Offering), nutilepingutest (Smart Contract) ning teistest mõistetest ja terminidest, mis on seotud plokiahnega.

Plokiahela tehnoloogia avab uusi turge ja loob töökohti programmeerijatele. Kui mõistate krüptovaluutade ja nutilepingute tehnoloogiaid, ei tohiks teil nende teadmiste rakendamisel probleeme olla.

On oluline märkida, et krüptovaluutade ja plokiahela ümber on palju spekulatsioone. Jätame kõrvale arutelud krüptovaluutade kursside muutuste, pyramidide loomise ja krüptovaluutade seadusandluse nüansside kohta. Meie õpikursusel keskendume peamiselt nutilepingute tehnilistele aspektidele Ethereum plokiahelas (Ethereum, Eeter) ja nn detsentraliseeritud rakenduste (Distributed Application, DApp) arendamisele.

Mis on plokiahel

Plokiahel (Blockchain, Block Chain) on andmete plokkide ahel, mis on omavahel teatud moel seotud. Ahela alguses asub esimene plokk, mida nimetatakse algplokiks (genesis block) või geneesi plokiks. Sellele järgneb teine, seejärel kolmas ja nii edasi.

Kõiki neid andmeplokke dubleeritakse automaatselt paljudes plokiahela võrgusõlmedes. Nii tagatakse plokiahela andmete detsentraliseeritud salvestamine.
Sa võid kujutada plokiahela süsteemi nagu suurt hulka sõlmi (füüsilisi või virtuaalseid servereid), mis on ühendatud võrku ja replikeerivad kõiki muudatusi andmeplokkide ahelas. See on nagu hiiglaslik multi-server arvuti, kus sellise arvuti sõlmed (serverid) võivad olla üle kogu maailma. Ja sina saad samuti oma arvuti plokiahela võrku lisada.

Jaotatud andmebaas

Plokiahelat saab esitada jaotatud andmebaasina, mis replikeeritakse kõigile plokiahela võrgusõlmedele. Teoorias, plokiahel töötaks seni, kuni töötab vähemalt üks sõlm, mis salvestab kõik plokiahela plokid.

Jaotatud andmete registri

Plokiahel võib mõista kui andmete ja tehingute (tehingute) jaotatud registrit. Selle registri teine nimetus on raamatupidamine.

Jaotatud registrisse saab andmeid lisada, kuid neid ei saa muuta ega kustutada. See on saavutatav osaliselt krüptograafiliste algoritmide, plokkide lisamise spetsiifiliste algoritmide ja andmete detsentraliseeritud salvestamise abil.

Plokkide lisamisel ja tehingute (tehingute) läbiviimisel kasutatakse erase ja avalikke võtmeid. Need piiravad plokiahela kasutajaid, andes neile juurdepääsu ainult oma andmeplokkidele.

Tehingud

Plokiahel salvestab teavet tehingute (tehingute) kohta plokkides. Samas ei saa vanu, juba teostatuid tehinguid tagasi pöörata ega muuta. Uued tehingud salvestatakse uutesse, lisatud plokkidesse.

Seega võib plokiahelas olla nende tehingute kogu ajalugu muutumatul kujul. Seetõttu saab plokiahelat kasutada näiteks usaldusväärseks pangatehingute, autoriõiguse andmete, kinnisvarade omanike muudatuste ajaloo jms salvestamiseks.

Ethereum'i plokiahel sisaldab nn süsteemi seisundeid. Tehingute sooritamisel muutub olek algsest kuni käesolevani. Tehingud registreeritakse plokkides.

Avalikud ja privaatsed plokiahelad

Siinkohal tuleb märkida, et kõik öeldu kehtib ainult nn avalike plokiahelate võrksüsteemide kohta, mida ei saa kontrollida üksikud füüsilised või juriidilised isikud, riigiasutused või valitsused.
Nn privaatsed plokiahelad on täielikult nende loojate kontrolli all, kus on võimalik teha kõike, näiteks asendada kogu plokikahel.

Plokiahela praktilised rakendused

Kuidas võib plokiahel kasulik olla?

Lühidalt öeldes võimaldab plokiahel turvaliselt teostada toiminguid (tehinguid) isikute või ettevõtete vahel, kes ei usalda teineteist. Plokiahelas registreeritud andmeid (tehingud, isikuandmed, dokumendid, tunnistused, lepingud, saatedokumendid jne) ei saa pärast salvestamist võltsida ega asendada. Seetõttu on plokiahela põhjal võimalik luua näiteks usaldusväärseid jaotatud registrite erinevaid dokumente.

Muidugi, te teate, et plokiahelate alusel luuakse krüptovaluuta süsteeme, mis on mõeldud asendama tavalisi paberraha. Paberraha nimetatakse ka fiatrahaks (Fiat Money).
Plokiahel tagab tehingute salvestamise ja muutumatuse, mis on salvestatud plokkides, seega saab seda kasutada krüptovaluuta süsteemide loomiseks. See sisaldab kogu ajaloo krüptoressursside edastamisest erinevate kasutajate (kontode) vahel, ning iga tehingut saab jälgida.

Kuigi krüptovaluuta süsteemide sees olevad tehingud võivad olla anonüümsed, toob krüptovaluuta väljavõtmine ja selle fiatrahaks vahetamine tavaliselt kaasa krüptovaluuta omaniku isiku avalikustamise.

Nii nimetatud nutikontrollid, mis on tarkvara, mis töötab Ethereum'i võrgus, võimaldavad automatiseerida tehingute sõlmimise protsessi ja nende täitmise jälgimist. See on eriti efektiivne, kui tehingu maksmine toimub Ether (eetri) krüptovaluutas.

Ethereum'i plokiahel ja Ethereum'i nutikontrollid, mis on kirjutatud Solidity programmeerimiskeeles, võivad olla näiteks kasutusel järgmistes valdkondades:

  • notariaadi asendaja dokumentide kinnitamiseks;
  • kinnisvara objektide registri ja tehingute andmete hoidmine;
  • intellektuaalomandi objektide autoriõiguste andmete hoidmine (raamatud, pildid, muusikateosed jne);
  • iseseisva häälte andmise süsteemide loomine;
  • rahanduse ja panganduse valdkond;
  • rahvusvaheline logistikategevus, kauba liikumise jälgimine;
  • isikuandmete säilitamine, analoogne isikut tõendavate dokumentidega;
  • turvalised tehingud kaubanduses;
  • meditsiiniliste uuringute tulemuste ja määratud protseduuride ajaloo säilitamine;

Probleemid plokiahelaga

Kuid, loomulikult, ei ole kõik nii lihtne, nagu võib tunduda!

Andmete valideerimisega, enne nende plokiahelasse lisamist, on probleeme (näiteks, kas need on ehtsad?), süsteemide ja rakendusprogrammi turvalisus, mis on plokiahelaga töötamiseks kasutusel, ning probleemid sotsiaalsete inseneritehnika meetodite kasutamise võimalusega, et varastada juurdepääs krüptoraha rahakottidele jne.

Kui tegemist ei ole avaliku plokiahelaga, mille sõlmed on laiali üle maailma, vaid isikliku või organisatsiooni plokiahelaga, siis ei ole usaldusväärsuse tase kõrgem kui isiku või organisatsiooni usaldusväärsuse tase.

Samuti tasub arvestada, et plokiahelasse salvestatud andmed muutuvad kergesti kättesaadavaks. Seetõttu ei sobi plokiahel (eriti avalik) konfidentsiaalsete andmete hoidmiseks. Siiski võib see, et teavet plokiahelas ei saa muuta, aidata ennetada või uurida erinevaid pettusi.

Ethereumile põhinevad detsentraliseeritud rakendused on mugavad, kui tasuda nende kasutamise eest krüptorahaga. Mida rohkem inimesi omab krüptoraha või on valmis seda ostma, seda populaarsemaks saavad DApp rakendused ja nutikad lepingud.

Blockchain'i praktilise rakendamise peamised probleemid hõlmavad piiratud uut bloki lisamise kiirusest ja suhteliselt kõrget tehingutasu. Kuid selles valdkonnas arenevad tehnoloogiad aktiivselt, ja on lootust, et tehnilised probleemid lahendatakse aja jooksul.

Veel üks probleem on see, et Ethereum'i plokiahela nutilepingud töötavad isoleeritud virtuaalmasinate keskkonnas, millel puudub juurdepääs reaalmaailma andmetele. Eelkõige ei saa nutilepingu programm ise andmeid lugeda veebisaitidelt ega mistahes füüsilistelt seadmetelt (andurid, kontaktid jne) ning ei saa saata andmeid välisseadmetele. Selle probleemi ja selle lahendamise viise arutame õppetunnis, mis käsitleb nn orakleid — nutilepingute informatiivseid vahendajaid.

Samuti on seadusandluses piiranguid. Mõnes riigis, näiteks keelatakse krüptovaluuta kasutamine maksevahendina, kuid selle omamine on lubatud kui digitaalne vara, sarnane väärtpaberitega. Selliseid varasid saab osta ja müüa börsil. Igatahes on krüptovaluutadega töötava projekti loomisel vajalik tutvuda selle riigi seadustega, mille all teie projekt tegutseb.

Kuidas moodustub plokiahel

Nagu oleme juba maininud, on plokiahel lihtne andmablokkide ahel. Alustatakse esimese bloki moodustamisega, seejärel lisatakse sellele teine ja nii edasi. Eeldatakse, et tehingute andmed salvestatakse blokkidesse ning lisatakse viimasele blokile.

Joonisel 1.1 oleme näidanud lihtsaimat blokiseeria järjekorda, kus esimene blokk viitab järgmisele.

Raamat "Solidity nutilepingute loomine Ethereum plokiahelas. Praktiline juhend"
Joonis 1.1. Lihtne blokiseeria

Kuid sellises variandis on väga lihtne manipulatsiooni kaudu igasuguste plokkide sisu võltsida, kuna plokid ei sisalda muud teavet, mis kaitseks muudatuste eest. Arvestades, et plokiahel on mõeldud inimestele ja ettevõtetele, kelle vahel ei ole usaldust, võib järeldada, et selline andmete salvestamise viis plokiahela jaoks ei sobi.

Hakkame kaitsma plokke võltsimise eest. Esimeses etapis proovime iga ploki kaitsta kontrollsumma (vt joonis 1.2) abil.

Raamat "Solidity nutilepingute loomine Ethereum plokiahelas. Praktiline juhend"
Joonis 1.2. Lisame plokkide andmete kaitseks kontrollsumma

Nüüd ei saa ründaja plokki lihtsalt muuta, kuna sellel on ploki andmete kontrollsumma. Kontrollsumma kontrollimine näitab, et andmed on muutunud.

Kontrollsumma arvutamiseks võib kasutada ühte hash-funktsiooni, nagu MD-5, SHA-1, SHA-256 jne. Hash-funktsioonid arvutavad mingisuguse väärtuse (näiteks fikseeritud pikkusega tekstirea), kasutades pöördumatuid operatsioone andmeplokiga. Operatsioonid sõltuvad hash-funktsiooni tüübist.

Isegi väikseima andmepaketi sisu muutumise korral muutub ka tema hash-funktsiooni väärtus. Analüüsides hash-funktsiooni väärtust, ei ole võimalik taastada andmepaketti, mille jaoks see arvutati.

Kas selline kaitse on piisav? Kahjuks ei.

Selles skeemis kaitseb kontrollsumma (hash-funktsioon) ainult üksikuid andmepakette, mitte kogu pakettide ahelat. Teades hash-funktsiooni arvutamise algoritmi, saab sissetungija hõlpsasti paketi sisu muuta. Samuti ei saa miski takistada tal eemaldamast ketti kuuluvaid pakette või lisamast uusi.

Kogu ahela kaitsmiseks saab igas pakendis koos andmetega hoida ka eelneva paketi hash'i (vt joonis 1.3).

Raamat "Solidity nutilepingute loomine Ethereum plokiahelas. Praktiline juhend"
Joonis 1.3. Lisame andmepaketti eelneva paketi hash'i

Selles skeemis, et muuta mõnda paketti, tuleb uuesti arvutada kõikide järgneva paketi hash-funktsioonid. Tundub, et mis probleem?

Tegelikult blockchainides on uute plokkide lisamiseks loodud kunstlikke raskusi — kasutatakse algoritme, mis nõuavad palju arvutusressursse. Arvestades, et ploki muutmiseks peab üle arvestama mitte ainult selle ploki, vaid ka kõik järgnevad, on seda äärmiselt keeruline teha.

Peame meeles, et blockchaini andmed on salvestatud (dubleeritud) arvukatesse võrgu sõlmedesse, st kasutatakse detsentraliseeritud salvestust. See muudab ploki valeandmete lisamise kordades keerulisemaks, kuna muudatused tuleb teha kõikides võrgu sõlmedes.

Kuna plokid hoiavad teavet eelmise ploki kohta, on võimalik kontrollida kogu ahela plokkide sisu.

Ethereum blockchain

Ethereum blockchain on platvorm, millel saab luua jaotatud 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, Bitcoin Magazine'i asutaja poolt, ja käivitatud 2015. aastal. Kõik, mida me uurime või teeme meie õpikursusel, on seotud Ethereum'i plokiahela ja Solidity nutilepingutega.

Kaevandamine või kuidas loodakse blokke

Kaevandamine (mining) on üsna keeruline ja ressursimahukas protsess, mille käigus lisatakse uusi blokke plokiahela ahelasse, mitte lihtsalt „krüptorahade kaevandamine“. Kaevandamine tagab plokiahela toimimise, kuna just see protsess vastutab tehingute lisamise eest Ethereum'i plokiahelasse.

Inimesi ja organisatsioone, kes lisavad blokke, nimetatakse kaevandajateks (miner).
Kaevandajate sõlmedes töötav tarkvara (SO) proovib viimane blokk esitada hash-parameteri, mida nimetatakse Nonce, et saavutada teatud väärtus hash-funktsioonis, nagu see on määratud võrgus. Ethereum'is kasutatav Ethash hash-algoritm võimaldab Nonce väärtust saada ainult järjestikuse testimise teel.

Kui kaevuri node leiab õige Nonce'i väärtuse, on see nn töö tõend (PoW, Proof-of-work). Sel juhul, kui plokk lisatakse Ethereum'i võrku, saab kaevur teatud tasu võrgu valuutas — Etheris. Meie raamatukirjutamise hetkel on tasu 5 Etherit, kuid aja jooksul väheneb see.

Seega tagavad Ethereum'i kaevurid võrgu toimimise, lisades plokke, ja saavad selle eest krüptovaluutat. Internetis leiate hulgaliselt teavet kaevurite ja kaevandamise kohta, kuid keskendume Solidity lepingute ja detsentraliseeritud rakenduste (DApp) loomisele Ethereum'i võrgus.

Tunni kokkuvõte

Esimesel tunnil tutvustasite plokiahelat ja õppisite, et see on erilise viisil koostatud plokkide järjekord. Varasemate plokkide sisu ei ole võimalik muuta, kuna selleks tuleks ümber arvutada kõik järgmised plokid paljudes võrgu nodes, mis nõuab väga palju ressursse ja aega.

Plokiahel võib rakendada tehingute täitmise tulemuste säilitamiseks. Selle peamine eesmärk on korraldada turvalist tehingute täitmist isikute (inimeste ja organisatsioonide) vahel, kelle vahel pole usaldust. Olete teada saanud, millistes ärivaldkondades ja millistes valdkondades saab kasutada plokiahelat Ethereum ja nutikaid lepinguid Solidity. Need on pangandussektor, omandiõiguste ja dokumentide registreerimine jne.

Olete samuti teada saanud, et plokiahela kasutamisel võivad tekkida erinevad probleemid. Need probleemid on seotud plokiahelasse lisatud teabe verifitseerimise, plokiahela töö kiirus, tehingute kulud, andmevahetus nutikate lepingute ja reaalse maailma vahel ning samuti potentsiaalsed rünnakud kurjategijatelt, mille eesmärk on varastada krüptovaluuta varasid kasutajate kontodelt.

Kohati rääkisime ka kaevandamisest kui protsessist, mille käigus lisatakse uusi plokke plokiahelasse. Kaevandamine on vajalik tehingute täitmiseks. Need, kes tegelevad kaevandamisega, tagavad plokiahela toimimise ja saavad selle eest tasu krüptovaluutas.

2. õppetund. Töökeskkonna ettevalmistamine Ubuntu ja Debian OS-isOperatsioonisüsteemi valimine
Vajalikud utiliidid
Gethi ja Swarmi installimine Ubuntu-s
Gethi ja Swarmi installimine Debianis
Eelnevad ettevalmistused
Go jaotuse allalaadimine
Keskkonna muutujate seadistamine
Go versiooni kontrollimine
Gethi ja Swarmi installimine
Loome privaatse plokiahela
Готовим файл genesis.json
Loome töökausta
Loome konto
Algatame sõlme
Sõlme käivitamise parameetrid
Ühendame oma sõlmega
Kaevandamise haldamine ja saldode kontrollimine
Gethi konsooli sulgemine
Tunni kokkuvõte

3. õppetund. Töökeskkonna ettevalmistamine Raspberry Pi 3-lRaspberry Pi 3 ettevalmistamine tööks
Rasberiani installimine
Uuenduste installimine
SSH juurdepääsu lubamine
Staatilise IP-aadressi seadistamine
Vajalikud utiliidid
Go installimine
Go jaotuse allalaadimine
Keskkonna muutujate seadistamine
Go versiooni kontrollimine
Gethi ja Swarmi installimine
Loome privaatse plokiahela
Konto ja saldo kontrollimine
Tunni kokkuvõte

4. õppetund. Kontod ja vahendite ülekandmine kontode vahelKontode vaatamine ja lisamine
Kontode loendi vaatamine
Konto lisamine
geth account käsu parameetrid
Konto paroolid
Krüptovaluutad Ethereumis
Ethereum’i rahandus
Kontode hetke saldo määramine
Vahendite ülekandmine ühelt kontolt teisele
meetod eth.sendTransaction
Tehingu oleku vaatamine
Tehingu kviitung
Tunni kokkuvõte

5. õppetund. Esimese nutilepingute avaldamineNutitelefonid Ethereumis
Nutilepingu täitmine
Ethereum Virtual Machine
Integratsioonikeskkond Remix Solidity IDE
Kompileerimise käivitamine
Kontraktiloome kutsumine
Kontrakti avaldamine privaatvõrgus
Saame ABI määratlemise ja kontrakti binaarkoodi
Kontrakti avaldamine
Kontrakti avaldamise tehingu staatuse kontrollimine
Kontraktiloome kutsumine
Pakettkompilaator solc
solc installimine Ubuntu-s
solc installimine Debianis
HelloSol kontrakti kompileerimine
Kontrakti 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
Nutilepingu avaldamise skript
Käivitamine ja parameetrite saamine
Käivitamise parameetrite saamine
Kompileerimine
Konto avamine
ABI ja kontrakti binaarkoodi laadimine
Vajaliku gaasi hindamine
Objekti loomine ja kontrakti avaldamise käivitamine
Kontraktiloome skripti käivitamine
Nutilepingu funktsioonide kutsumine
Kas avaldatud nutilepingut on võimalik uuendada
Web3 versiooniga 1.0.x töötamine
Saame konto nimekirja
Kontrakti avaldamine
Kontraktiloome kutsumine
Vahendite ülekandmine ühelt kontolt teisele
Funds transferring to contract account
Uuendame HelloSol nutilepingut
Loome skripti konto saldo vaatamiseks
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Täidame nutilepingu kontot
Tunni kokkuvõte

Tund 7. Sissejuhatus Truffle'iTruffle'i paigaldamine
Loome HelloSol projekti
Projekti katalooge ja faile loomine
Kataloog contracts
Kataloog migrations
Kataloog test
Файл truffle-config.js
HelloSol kontrakti kompileerimine
Lepingu avaldamise käivitamine
HelloSol nutilepingute funktsioonide kutsumine Truffle'i kutses
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
truffle-contract mooduli paigaldamine
Kutsume funktsioone getValue ja getString
Kutsume funktsioone setValue ja setString
Lepingu muutmine ja uuesti avaldamine
Web3 versiooniga 1.0.x töötamine
Teeme muudatused HelloSol nutilepingusse
Meetodite kutsumise skriptid
Testimine Truffle'is
Test Solidity's
Test JavaScript'is
Tunni kokkuvõte

Tund 8. Solidity andmetüübidLeping andmetüüpide uurimiseks
Loogilised andmetüübid
Ilma märgita ja signeeritud täisarvud
Fikseeritud komaga numbrid
Aadress
Komplekssete tüüpide muutujaid
Fikseeritud suurusega massiivid
Dünaamilised massiivid
Numbrilised loetelud
Struktuurid
Mapping-diktsioonärid
Tunni kokkuvõte

Tund 9. Lepingu migratsioon privaatsetesse võrkudesse ja Rinkeby võrkudeleLepingu avaldamine Truffle'ist privaatvõrku Geth
Privaatvõrgu sõlme ettevalmistamine
Lepingu ettevalmistamine töötamiseks
Lepingu kompileerimine ja migreerimine Truffle'i võrgus
Migratsiooni käivitamine Geth kohaliku võrku
Truffle'i artefaktide kaevandamine
Truffle'i lepingute avaldamine Rinkeby testvõrgus
Gethi sõlme ettevalmistamine Rinkeby'ga töötamiseks
Sõlme sünkroniseerimine
Konto lisamine
Rinkeby kontole etheeri lisamine
Lepingu migratsiooni käivitamine Rinkeby võrgus
Lepingu teabe vaatamine Rinkeby võrgus
Truffle'i konsool Rinkeby võrgus
Lihtsam viis lepingufunktsioonide kutsumiseks
Вызов методов контракта при помощи Node.js
Vahendite ülekandmine kontode vahel Truffle'i konsoolis Rinkeby jaoks
Tunni kokkuvõte

Tund 10. Decentraliseeritud andmesalvestus Ethereum SwarmKuidas Ethereum Swarm töötab
Swarm'i installimine ja käivitamine
Failide ja kataloogidega töötamine
Faili üleslaadimine Ethereum Swarm'i
Faili lugemine Ethereum Swarm'ist
Laaditud faili manfestiga tutvumine
Kataloogide ja alamkataloogide üleslaadimine
Faili lugemine üleslaaditud kataloogist
Avaliku Swarm'i värava kasutamine
Обращение к Swarm из скриптов Node.js
Perl'i moodul Net::Ethereum::Swarm
Mooduli Net::Ethereum::Swarm installimine
Andmete kirjutamine ja lugemine
Tunni kokkuvõte

Tund 11. Web3.py raamistik Ethereumiga PythonisWeb3.py installimine
Vajalikud paketid uuendamine ja installimine
Easysolc mooduli installimine
Lepingu avaldamine Web3.py abil
Kompileerimine
Ühendamine teenusepakkujaga
Lepingu avaldamise teostamine
Lepingu aadress ja abi faili salvestamine
Kontraktiloome skripti käivitamine
Lepingu meetodite kutsumine
Lepingu aadressi ja abi lugemine JSON-failist
Ühendamine teenusepakkujaga
Lepingu objekti loomine
Lepingu meetodite kutsumine
Truffle ja Web3.py
Tunni kokkuvõte

Õppeosa 12. OraaklidKas nutileping võib usaldada välismaailma andmeid
Oraaklid kui plokiahela teabe vahendajad
Andmeallikas
Kood andmete esitlemiseks allikast
Oraakel, et salvestada vahetuskursi plokiahelasse
Lepingu USDRateOracle
Vahetuskursi värskendamine nutilepingus
Web Socket'i pakkuja kasutamine
RateUpdate sündmust ootamine
RateUpdate sündmuse töötlemine
Andmete värskendamise algatamine nutilepingus
Tunni kokkuvõte

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster