Knyga „Creating Solidity smart contracts for the Ethereum blockchain. Praktinis vadovas“

Knyga „Creating Solidity smart contracts for the Ethereum blockchain. Praktinis vadovas“
Jau daugiau nei metus dirbau prie knygos „Solidity Smart Contracts for the Ethereum Blockchain kūrimas. Praktinis vadovas“, ir dabar šis darbas baigtas ir knyga išleista ir prieinama litrais.

Tikiuosi, kad mano knyga padės jums greitai pradėti kurti Solidity išmaniuosius kontaktus ir platinamus DApps, skirtus Ethereum blokų grandinei. Jį sudaro 12 pamokų su praktinėmis užduotimis. Jas baigęs skaitytojas galės susikurti savo vietinius Ethereum mazgus, skelbti išmaniąsias sutartis ir iškviesti jų metodus, keistis duomenimis tarp realaus pasaulio ir išmaniųjų sutarčių naudodamasis orakulais, dirbti su Rinkeby bandomuoju derinimo tinklu.

Knyga skirta visiems, kurie domisi pažangiomis technologijomis blokų grandinių srityje ir nori greitai įgyti žinių, leidžiančių dirbti įdomų ir perspektyvų darbą.

Žemiau rasite turinį ir pirmąjį knygos skyrių (taip pat apie Litrų yra knygos fragmentų). Tikiuosi sulaukti atsiliepimų, pastabų ir pasiūlymų. Į visa tai pasistengsiu atsižvelgti rengdama kitą knygos leidimą.

TurinysįvedimasMūsų knyga skirta tiems, kurie nori ne tik perprasti Ethereum blockchain principus, bet ir įgyti praktinių įgūdžių kuriant paskirstytas DApps Solidity programavimo kalba šiam tinklui.

Šią knygą geriau ne tik skaityti, bet ir dirbti su ja, atliekant pamokose aprašytas praktines užduotis. Norėdami dirbti, jums reikės vietinio kompiuterio, virtualaus arba debesies serverio su įdiegta Debian arba Ubuntu OS. Taip pat galite naudoti Raspberry Pi daugybei užduočių atlikti.

Pirmoje pamokoje Apžvelgsime Ethereum blokų grandinės veikimo principus ir pagrindinę terminiją, taip pat pakalbėsime apie tai, kur ši blokų grandinė gali būti naudojama.

Tikslas antra pamoka — sukurti privatų Ethereum blokų grandinės mazgą tolesniam darbui per šį kursą Ubuntu ir Debian serveryje. Apžvelgsime pagrindinių paslaugų diegimo ypatybes, tokias kaip geth, kuris užtikrina mūsų blokų grandinės mazgo veikimą, taip pat spiečiaus decentralizuoto duomenų saugojimo demoną.

Trečia pamoka išmokys eksperimentuoti su Ethereum nebrangiame Raspberry Pi mikrokompiuteryje. Įdiegsite Rasberian operacinę sistemą (OS) Raspberry Pi, „Geth“ paslaugų programą, kuri maitina blokų grandinės mazgą, ir „Swarm“ decentralizuotą duomenų saugojimo demoną.

Ketvirta pamoka skirta sąskaitoms ir kriptovaliutų vienetams Ethereum tinkle, taip pat būdų pervesti lėšas iš vienos sąskaitos į kitą iš Geth konsolės. Sužinosite, kaip susikurti sąskaitas, inicijuoti lėšų pervedimo operacijas, gauti operacijos būseną ir kvitą.

Penktoje pamokoje Susipažinsite su išmaniosiomis sutartimis Ethereum tinkle ir sužinosite apie jų vykdymą Ethereum virtualioje mašinoje.

Sukursite ir paskelbsite savo pirmąją išmaniąją sutartį privačiame Ethereum tinkle ir išmoksite iškviesti jo funkcijas. Norėdami tai padaryti, naudosite Remix Solidity IDE. Taip pat sužinosite, kaip įdiegti ir naudoti „solc“ paketų kompiliatorių.
Taip pat pakalbėsime apie vadinamąją dvejetainę programos sąsają (ABI) ir išmokysime ja naudotis.

Šešta pamoka skirta kurti JavaScript scenarijus, kuriuose veikia Node.js, ir atlikti operacijas su Solidity išmaniosiomis sutartimis.

Įdiegsite Node.js Ubuntu, Debian ir Rasberian OS, rašysite scenarijus, kad paskelbtumėte išmaniąją sutartį Ethereum vietiniame tinkle ir iškviesite jo funkcijas.

Be to, sužinosite, kaip pervesti lėšas tarp įprastų sąskaitų naudojant scenarijus, taip pat įskaityti jas į išmaniąsias sutartis.

Septintoje pamokoje Sužinosite, kaip įdiegti ir naudoti „Truffle“ sistemą, populiarią tarp „Solidity“ išmaniųjų sutarčių kūrėjų. Sužinosite, kaip sukurti „JavaScript“ scenarijus, iškviečiančius sutarties funkcijas, naudodami „trumo sutarties“ modulį, ir išbandyti savo išmaniąją sutartį naudodami „Truffle“.

Aštunta pamoka skirta Solidity duomenų tipams. Rašysite išmaniąsias sutartis, kurios veikia su tokiais duomenų tipais kaip pasirašyti ir nepasirašyti sveikieji skaičiai, pasirašyti skaičiai, eilutės, adresai, sudėtingi kintamieji, masyvai, sąrašai, struktūros ir žodynai.

Devintoje pamokoje Būsite vienu žingsniu arčiau išmaniųjų „Ethereum“ tinklo sutarčių kūrimo. Sužinosite, kaip skelbti sutartis naudojant Truffle privačiame Geth tinkle, taip pat Rinkeby testnete. Išmaniosios sutarties derinimas Rinkeby tinkle yra labai naudingas prieš paskelbiant ją pagrindiniame tinkle – ten beveik viskas tikra, bet nemokamai.

Pamokos metu sukursite Rinkeby bandomąjį tinklo mazgą, finansuosite jį lėšomis ir paskelbsite išmaniąją sutartį.

pamoka 10 skirta Ethereum Swarm paskirstytai duomenų saugyklai. Naudodami paskirstytą saugyklą sutaupysite daug duomenų saugodami Ethereum blokų grandinėje.

Šioje pamokoje sukursite vietinę Swarm saugyklą, rašysite ir skaitysite failų ir katalogų, kuriuose yra failų, operacijas. Toliau išmoksite dirbti su viešuoju „Swarm“ šliuzu, rašyti scenarijus norint pasiekti „Swarm“ iš Node.js, taip pat kaip naudotis „Perl Net::Ethereum::Swarm“ moduliu.

11 pamokos tikslas - išmokti dirbti su Solidity išmaniosiomis sutartimis, naudojant populiarią Python programavimo kalbą ir Web3.py sistemą. Įdiegsite sistemą, rašysite scenarijus, kad sudarytumėte ir paskelbtumėte išmaniąją sutartį, ir iškviesite jos funkcijas. Tokiu atveju Web3.py bus naudojama tiek atskirai, tiek kartu su integruota Truffle kūrimo aplinka.

12 pamokoje išmoksite perkelti duomenis tarp išmaniųjų sutarčių ir realaus pasaulio naudojant orakulus. Tai bus naudinga norint gauti duomenis iš interneto svetainių, daiktų interneto įrenginių, įvairių įrenginių ir jutiklių bei siųsti duomenis iš išmaniųjų sutarčių į šiuos įrenginius. Praktinėje pamokos dalyje sukursite orakulą ir išmaniąją sutartį, kuri iš Rusijos Federacijos centrinio banko svetainės gaus dabartinį USD ir rublių kursą.

1 pamoka. Trumpai apie blockchain ir Ethereum tinkląPamokos tikslas: susipažinti su Ethereum blokų grandinės veikimo principais, jos taikymo sritimis ir pagrindine terminija.
Praktinės užduotys: neaprašytas šioje pamokoje.

Vargu ar šiandien yra programinės įrangos kūrėjas, kuris nieko nebūtų girdėjęs apie blockchain technologiją (Blockchain), kriptovaliutas (Cryptocurrency arba Crypto Currency), Bitcoin (Bitcoin), pradinį monetų siūlymą (ICO, Initial coin offering), išmaniąsias sutartis (Smart Contract), taip pat kitos sąvokos ir terminai, susiję su blokų grandine.

Blockchain technologija atveria naujas rinkas ir sukuria darbo vietų programuotojams. Jei suprantate visas kriptovaliutų technologijų ir išmaniųjų kontraktų technologijų subtilybes, tuomet jums neturėtų kilti problemų pritaikant šias žinias praktikoje.

Reikia pasakyti, kad yra daug spekuliacijų dėl kriptovaliutų ir blokų grandinių. Nuošalyje paliksime diskusijas apie kriptovaliutų kursų pokyčius, piramidžių kūrimą, kriptovaliutų teisės aktų subtilybes ir kt. Mokymo kurse daugiausia dėmesio skirsime Ethereum blokų grandinės išmaniųjų sutarčių (Ethereum, Ether) taikymo techniniams aspektams ir vadinamųjų decentralizuotų programų (Distributed Application, DApp) kūrimui.

Kas yra „blockchain“

Blockchain (Block Chain) yra duomenų blokų, tam tikru būdu sujungtų vienas su kitu, grandinė. Grandinės pradžioje yra pirmasis blokas, kuris vadinamas pirminiu (genezės bloku) arba genezės bloku. Po jo seka antrasis, po to trečias ir pan.

Visi šie duomenų blokai automatiškai dubliuojami daugelyje blokų grandinės tinklo mazgų. Tai užtikrina decentralizuotą blokų grandinės duomenų saugojimą.
Blockchain sistemą galite įsivaizduoti kaip daugybę mazgų (fizinių ar virtualių serverių), sujungtų tinkle ir atkartojančių visus duomenų blokų grandinės pakeitimus. Tai tarsi milžiniškas kelių serverių kompiuteris, o tokio kompiuterio mazgai (serveriai) gali būti išsibarstę po visą pasaulį. Ir jūs taip pat galite pridėti savo kompiuterį prie „blockchain“ tinklo.

Paskirstyta duomenų bazė

Blockchain gali būti laikoma paskirstyta duomenų baze, kuri yra atkartojama visuose blokų grandinės tinklo mazguose. Teoriškai blokų grandinė veiks tol, kol veiks bent vienas mazgas, kuriame saugomi visi blokų grandinės blokai.

Paskirstytų duomenų registras

„Blockchain“ gali būti laikoma paskirstyta duomenų ir operacijų (sandorių) knyga. Kitas tokio registro pavadinimas yra knyga.

Duomenys gali būti įtraukti į paskirstytą knygą, tačiau jų negalima keisti ar ištrinti. Ši galimybė visų pirma pasiekiama naudojant kriptografinius algoritmus, specialius algoritmus blokams pridėti prie grandinės ir decentralizuotą duomenų saugojimą.

Pridedant blokus ir atliekant operacijas (operacijas), naudojami privatūs ir viešieji raktai. Jie riboja „blockchain“ naudotojus, suteikdami jiems prieigą tik prie savo duomenų blokų.

Sandoriai

Blockchain informaciją apie operacijas (operacijas) kaupia blokuose. Tuo pačiu metu senų, jau įvykdytų operacijų negalima atšaukti ar pakeisti. Naujos operacijos saugomos naujuose, pridėtuose blokuose.

Tokiu būdu visa operacijų istorija gali būti įrašyta nepakitusi blokų grandinėje. Todėl blokų grandinė gali būti naudojama, pavyzdžiui, norint saugiai saugoti banko operacijas, autorių teisių informaciją, nuosavybės savininkų pasikeitimų istoriją ir kt.

Ethereum blokų grandinėje yra vadinamosios sistemos būsenos. Vykdant operacijas, būsena pasikeičia iš pradinės būsenos į dabartinę. Sandoriai įrašomi blokais.

Viešos ir privačios blokų grandinės

Čia reikia pažymėti, kad viskas, kas pasakyta, galioja tik vadinamiesiems viešiesiems blokų grandinės tinklams, kurių negali kontroliuoti joks fizinis ar juridinis asmuo, valstybinė agentūra ar vyriausybė.
Vadinamieji privatūs blokų grandinės tinklai yra visiškai kontroliuojami jų kūrėjų, ir ten viskas įmanoma, pavyzdžiui, visiškai pakeisti visus grandinės blokus.

Praktiniai blokų grandinės pritaikymai

Kuo gali būti naudinga blokų grandinė?

Trumpai tariant, blokų grandinė leidžia saugiai atlikti sandorius (sandorius) tarp žmonių ar įmonių, kurios nepasitiki viena kita. Blokų grandinėje įrašyti duomenys (operacijos, asmens duomenys, dokumentai, pažymos, sutartys, sąskaitos ir kt.) po įrašymo negali būti suklastoti ar pakeisti. Todėl remiantis blokų grandine galima sukurti, pavyzdžiui, patikimus paskirstytus įvairių rūšių dokumentų registrus.

Žinoma, jūs žinote, kad kriptovaliutų sistemos kuriamos blokų grandinių pagrindu, skirtų pakeisti įprastus popierinius pinigus. Popieriniai pinigai dar vadinami fiat (iš Fiat Money).
Blockchain užtikrina blokuose įrašytų operacijų saugojimą ir nekintamumą, todėl ją galima panaudoti kuriant kriptovaliutų sistemas. Jame yra visa kriptovaliutų lėšų pervedimo tarp skirtingų vartotojų (sąskaitų) istorija, galima sekti bet kokią operaciją.

Nors operacijos kriptovaliutų sistemose gali būti anoniminės, kriptovaliutos išėmimas ir keitimas į fiat pinigus dažniausiai atskleidžia kriptovaliutos turto savininko tapatybę.

Vadinamosios išmaniosios sutartys, kurios yra Ethereum tinkle veikianti programinė įranga, leidžia automatizuoti sandorių sudarymo ir jų įgyvendinimo stebėjimo procesą. Tai ypač efektyvu, jei už operaciją atsiskaitoma Ether kriptovaliuta.

Ethereum blockchain ir Ethereum išmaniosios sutartys, parašytos Solidity programavimo kalba, gali būti naudojamos, pavyzdžiui, šiose srityse:

  • alternatyva dokumentų tvirtinimui notaro;
  • nekilnojamojo turto objektų registro ir informacijos apie sandorius su nekilnojamojo turto objektais saugojimas;
  • autorių teisių informacijos apie intelektinę nuosavybę (knygų, vaizdų, muzikos kūrinių ir kt.) saugojimas;
  • nepriklausomų balsavimo sistemų kūrimas;
  • finansai ir bankininkystė;
  • logistika tarptautiniu mastu, sekanti prekių judėjimą;
  • asmens duomenų saugojimas kaip analogas asmens tapatybės kortelių sistemai;
  • saugūs sandoriai komercinėje srityje;
  • saugoti medicininių tyrimų rezultatus, taip pat paskirtų procedūrų istoriją

Problemos su blockchain

Bet, žinoma, ne viskas taip paprasta, kaip gali atrodyti!

Kyla problemų tikrinant duomenis prieš įtraukiant juos į blokų grandinę (pavyzdžiui, ar jie netikri?), problemų su sistemos ir taikomosios programinės įrangos, naudojamos darbui su blokų grandine, saugumu, problemų dėl galimybės naudoti socialinės inžinerijos metodus prieigai pavogti. į kriptovaliutų pinigines ir pan. .P.

Vėlgi, jei kalbame ne apie viešą blokų grandinę, kurios mazgai yra išsibarstę po visą pasaulį, o apie privačią blokų grandinę, priklausančią asmeniui ar organizacijai, tai pasitikėjimo lygis čia nebus aukštesnis už pasitikėjimo lygį. šiame asmenyje ar šioje organizacijoje.

Taip pat reikėtų atsižvelgti į tai, kad blokų grandinėje įrašyti duomenys tampa prieinami visiems. Šia prasme „blockchain“ (ypač viešoji) nėra tinkama saugoti konfidencialią informaciją. Tačiau tai, kad informacijos apie blokų grandinę pakeisti negalima, gali padėti užkirsti kelią įvairioms nesąžiningoms veikloms arba ją ištirti.

Ethereum decentralizuotos programos bus patogios, jei už jų naudojimą mokėsite kriptovaliuta. Kuo daugiau žmonių turi kriptovaliutą arba nori ją įsigyti, tuo populiaresni taps DApps ir išmaniosios sutartys.

Įprastos blokų grandinės problemos, trukdančios ją praktiškai pritaikyti, yra ribotas greitis, kuriuo galima pridėti naujų blokų, ir santykinai didelė operacijų kaina. Tačiau technologijos šioje srityje aktyviai vystosi, ir yra vilčių, kad laikui bėgant techninės problemos bus išspręstos.

Kita problema yra ta, kad išmaniosios sutartys Ethereum blokų grandinėje veikia izoliuotoje virtualių mašinų aplinkoje ir neturi prieigos prie realaus pasaulio duomenų. Visų pirma, išmanioji sutarties programa pati negali nuskaityti duomenų iš svetainių ar bet kokių fizinių įrenginių (daviklių, kontaktų ir pan.), taip pat negali išvesti duomenų į jokius išorinius įrenginius. Šią problemą ir jos sprendimo būdus aptarsime pamokoje, skirtoje vadinamiesiems Orakulams – išmaniųjų sutarčių informaciniams tarpininkams.

Taip pat yra teisinių apribojimų. Pavyzdžiui, kai kuriose šalyse draudžiama naudoti kriptovaliutą kaip mokėjimo priemonę, tačiau galite ją turėti kaip tam tikrą skaitmeninį turtą, pavyzdžiui, vertybinius popierius. Tokį turtą galima pirkti ir parduoti biržoje. Bet kokiu atveju, kurdami projektą, kuris veiktų su kriptovaliutomis, turite susipažinti su šalies, kurios jurisdikcijai priklauso jūsų projektas, teisės aktais.

Kaip susidaro blokų grandinės grandinė

Kaip jau minėjome, „blockchain“ yra paprasta duomenų blokų grandinė. Pirmiausia suformuojamas pirmasis šios grandinės blokas, tada prie jo pridedamas antrasis ir pan. Manoma, kad operacijų duomenys saugomi blokuose ir pridedami prie naujausio bloko.

Fig. 1.1 parodėme paprasčiausią blokų sekos versiją, kur pirmasis blokas nurodo kitą.

Knyga „Creating Solidity smart contracts for the Ethereum blockchain. Praktinis vadovas“
Ryžiai. 1.1. Paprasta blokų seka

Tačiau naudojant šią parinktį labai lengva sugadinti bet kurio grandinės bloko turinį, nes blokuose nėra jokios informacijos, apsaugančios nuo pakeitimų. Atsižvelgiant į tai, kad blokų grandinė yra skirta naudoti žmonėms ir įmonėms, tarp kurių nėra pasitikėjimo, galime daryti išvadą, kad toks duomenų saugojimo būdas blokų grandinei netinka.

Pradėkime apsaugoti kaladėles nuo padirbinėjimo. Pirmajame etape kiekvieną bloką bandysime apsaugoti kontroline suma (1.2 pav.).

Knyga „Creating Solidity smart contracts for the Ethereum blockchain. Praktinis vadovas“
Ryžiai. 1.2. Šių blokų apsaugos pridėjimas su kontroline suma

Dabar užpuolikas negali tiesiog pakeisti bloko, nes jame yra bloko duomenų kontrolinė suma. Patikrinus kontrolinę sumą bus matyti, kad duomenys buvo pakeisti.

Norėdami apskaičiuoti kontrolinę sumą, galite naudoti vieną iš maišos funkcijų, tokių kaip MD-5, SHA-1, SHA-256 ir kt. Maišos funkcijos apskaičiuoja reikšmę (pavyzdžiui, pastovaus ilgio teksto eilutę), atlikdamos negrįžtamas operacijas su duomenų bloku. Veiksmai priklauso nuo maišos funkcijos tipo.

Net jei duomenų bloko turinys šiek tiek pasikeis, maišos reikšmė taip pat pasikeis. Analizuojant maišos funkcijos reikšmę, neįmanoma atkurti duomenų bloko, kuriam ji buvo apskaičiuota.

Ar tokios apsaugos pakaks? Deja, ne.

Šioje schemoje kontrolinė suma (maišos funkcija) apsaugo tik atskirus blokus, bet ne visą blokų grandinę. Žinodamas maišos funkcijos skaičiavimo algoritmą, užpuolikas gali lengvai pakeisti bloko turinį. Be to, niekas netrukdys jam išimti blokų iš grandinės ar pridėti naujų.

Norėdami apsaugoti visą grandinę kaip visumą, kiekviename bloke kartu su duomenimis galite įrašyti ir ankstesnio bloko duomenų maišą (1.3 pav.).

Knyga „Creating Solidity smart contracts for the Ethereum blockchain. Praktinis vadovas“
Ryžiai. 1.3. Pridėkite ankstesnio bloko maišą prie duomenų bloko

Šioje schemoje, norint pakeisti bloką, reikia perskaičiuoti visų paskesnių blokų maišos funkcijas. Atrodytų, kame problema?

Tikrose blokų grandinėse papildomai sukuriami dirbtiniai sunkumai naujų blokų pridėjimui – naudojami daug skaičiavimo resursų reikalaujantys algoritmai. Atsižvelgiant į tai, kad norint pakeisti bloką, reikia perskaičiuoti ne tik šį bloką, bet ir visus vėlesnius, tai padaryti bus labai sunku.

Taip pat prisiminkime, kad blockchain duomenys yra saugomi (dubliuojami) daugybėje tinklo mazgų, t.y. Naudojama decentralizuota saugykla. Ir dėl to daug sunkiau padirbti bloką, nes reikia atlikti visų tinklo mazgų pakeitimus.

Kadangi blokuose saugoma informacija apie ankstesnį bloką, galima patikrinti visų grandinės blokų turinį.

Ethereum blokų grandinė

Ethereum blokų grandinė yra platforma, kurioje galima kurti paskirstytas DApps. Kitaip nei kitose platformose, Ethereum leidžia naudoti vadinamąsias išmaniąsias sutartis (smart contracts), parašytas Solidity programavimo kalba.

Šią platformą 2013 metais sukūrė Vitalikas Buterinas, „Bitcoin Magazine“ įkūrėjas, ir pradėjo veikti 2015 m. Viskas, ką mokysimės ar darysime savo mokymo kurse, yra konkrečiai susiję su Ethereum blokų grandinės ir Solidity išmaniosiomis sutartimis.

Kasyba arba kaip kuriami blokai

Kasyba yra gana sudėtingas ir daug išteklių reikalaujantis procesas, kai į blokų grandinės grandinę pridedami nauji blokai, o ne „kriptovaliutų kasimas“. Kasyba užtikrina blokų grandinės funkcionalumą, nes būtent šis procesas yra atsakingas už operacijų įtraukimą į Ethereum blokų grandinę.

Žmonės ir organizacijos, dalyvaujančios pridedant blokus, vadinamos kalnakasiais.
Miner mazguose veikianti programinė įranga bando surasti paskutinio bloko maišos parametrą, vadinamą Nonce, kad gautų konkrečią tinklo nurodytą maišos reikšmę. „Ethash“ maišos algoritmas, naudojamas „Ethereum“, leidžia gauti Nonce reikšmę tik atliekant nuoseklią paiešką.

Jei kasybos mazgas randa teisingą Nonce reikšmę, tai yra vadinamasis darbo įrodymas (PoW, Proof-of-work). Tokiu atveju, jei blokas pridedamas prie Ethereum tinklo, kalnakasys gauna tam tikrą atlygį tinklo valiuta - Ether. Rašymo metu atlygis yra 5 eteris, tačiau laikui bėgant jis bus sumažintas.

Taigi „Ethereum“ kalnakasiai užtikrina tinklo veikimą pridėdami blokų ir už tai gauna kriptovaliutos pinigus. Internete rasite daug informacijos apie kalnakasius ir kasybą, tačiau daugiausia dėmesio skirsime Solidity kontraktų ir DApps kūrimui Ethereum tinkle.

Pamokos santrauka

Pirmoje pamokoje susipažinote su blokų grandine ir sužinojote, kad tai yra specialiai sukomponuota blokų seka. Anksčiau įrašytų blokų turinio keisti negalima, nes tam reikėtų perskaičiuoti visus vėlesnius blokus daugelyje tinklo mazgų, o tam reikia daug išteklių ir laiko.

„Blockchain“ gali būti naudojama operacijų rezultatams saugoti. Jo pagrindinis tikslas – organizuoti saugius sandorius tarp šalių (asmenų ir organizacijų), tarp kurių nėra pasitikėjimo. Sužinojote, kuriose konkrečiose verslo srityse ir kokiose srityse galima naudoti „Ethereum blockchain“ ir „Solidity“ išmaniąsias sutartis. Tai bankininkystės sektorius, nuosavybės teisių registravimas, dokumentai ir kt.

Taip pat sužinojote, kad naudojant blokų grandinę gali kilti įvairių problemų. Tai į blokų grandinę įtrauktos informacijos tikrinimo problemos, blokų grandinės greitis, operacijų kaina, duomenų mainų tarp išmaniųjų sutarčių ir realaus pasaulio problema, taip pat galimos užpuolikų atakos, kuriomis siekiama pavogti kriptovaliutų lėšas iš vartotojų paskyrų. .

Taip pat trumpai kalbėjome apie kasybą kaip naujų blokų įtraukimo į blokų grandinę procesą. Kasyba yra būtina norint užbaigti sandorius. Tie, kurie užsiima kasyba, užtikrina blokų grandinės veikimą ir už tai gauna atlygį kriptovaliuta.

2 pamoka. Darbo aplinkos paruošimas Ubuntu ir Debian OSOperacinės sistemos pasirinkimas
Reikiamų komunalinių paslaugų įdiegimas
„Geth“ ir „Swarm“ diegimas „Ubuntu“.
Geth ir Swarm diegimas Debian'e
Preliminarus pasirengimas
Atsisiunčiamas „Go“ platinimas
Aplinkos kintamųjų nustatymas
Tikrinama „Go“ versija
„Get“ ir „Swarm“ diegimas
Privačios blokų grandinės kūrimas
Paruošiamas genesis.json failas
Sukurkite katalogą darbui
Sukurti paskyrą
Pradedame mazgo inicijavimą
Mazgo paleidimo parinktys
Prisijunkite prie mūsų mazgo
Kasybos valdymas ir balanso patikrinimas
„Geth“ konsolės išjungimas
Pamokos santrauka

3 pamoka. Darbo aplinkos paruošimas naudojant Raspberry Pi 3Raspberry Pi 3 paruošimas darbui
Rasberian diegimas
Atnaujinimų diegimas
SSH prieigos įjungimas
Statinio IP adreso nustatymas
Reikiamų komunalinių paslaugų įdiegimas
„Go“ diegimas
Atsisiunčiamas „Go“ platinimas
Aplinkos kintamųjų nustatymas
Tikrinama „Go“ versija
„Get“ ir „Swarm“ diegimas
Privačios blokų grandinės kūrimas
Sąskaitos ir balanso tikrinimas
Pamokos santrauka

4 pamoka. Sąskaitos ir lėšų pervedimas tarp sąskaitųPeržiūrėkite ir pridėkite paskyras
Peržiūrėkite paskyrų sąrašą
Paskyros pridėjimas
gauti paskyros komandų parinktis
Paskyros slaptažodžiai
Kriptovaliuta Ethereum
Ethereum valiutos vienetai
Mes nustatome dabartinį savo sąskaitų likutį
Perveskite lėšas iš vienos sąskaitos į kitą
Metodas eth.sendTransaction
Peržiūrėkite operacijos būseną
Sandorio kvitas
Pamokos santrauka

5 pamoka. Pirmosios sutarties paskelbimasIšmaniosios sutartys Ethereum
Protingas sutarties vykdymas
Ethereum virtuali mašina
Integruota kūrimo aplinka Remix Solidity IDE
Veikia kompiliacija
Sutarčių funkcijų skambinimas
Sutarties paskelbimas privačiame tinkle
Gauname ABI apibrėžimą ir sutarties dvejetainį kodą
Sutarties paskelbimas
Tikrinama sutarties paskelbimo operacijos būsena
Sutarčių funkcijų skambinimas
Paketinis kompiliatorius solc
Solc diegimas Ubuntu
Solc diegimas Debian'e
HelloSol sutarties sudarymas
Sutarties paskelbimas
Solc diegimas Rasberian
Pamokos santrauka

6 pamoka. Išmaniosios sutartys ir Node.jsNode.js diegimas
Diegimas Ubuntu
Diegimas Debian'e
Įdiegti ir paleisti Ganache-cli
Web3 diegimas
Diegiant solc
„Node.js“ diegimas „Rasberian“.
Scenarijus, kad gautumėte paskyrų sąrašą konsolėje
Išmaniosios sutarties paskelbimo scenarijus
Paleiskite ir gaukite parametrus
Paleidimo parinkčių gavimas
Sutarčių sudarymas
Paskyros atblokavimas
Įkeliamas ABI ir sutarties dvejetainis kodas
Reikiamo dujų kiekio įvertinimas
Sukurkite objektą ir pradėkite skelbti sutartį
Vykdomas sutarties publikavimo scenarijus
Išmaniųjų kontraktų funkcijų skambinimas
Ar galima atnaujinti paskelbtą išmaniąją sutartį?
Darbas su Web3 1.0.x versija
Sąskaitų sąrašo gavimas
Sutarties paskelbimas
Sutarčių funkcijų skambinimas
Perveskite lėšas iš vienos sąskaitos į kitą
Perveskite lėšas į sutarties sąskaitą
„HelloSol“ išmaniosios sutarties atnaujinimas
Sukurkite scenarijų, kad peržiūrėtumėte savo sąskaitos likutį
Pridėkite funkcijos getBalance iškvietimą į scenarijų call_contract_get_promise.js
Papildome išmaniosios sutarties sąskaitą
Pamokos santrauka

7 pamoka: Triufelių įvadasTriufelio diegimas
Sukurkite HelloSol projektą
Projekto katalogo ir failų kūrimas
Sutarčių katalogas
Katalogų perkėlimas
Katalogo testas
truffle-config.js failą
HelloSol sutarties sudarymas
Pradėkite skelbti sutartį
„HelloSol“ sutarties funkcijų skambinimas triufelio raginimu
HelloSol sutarties funkcijų iškvietimas iš JavaScript scenarijaus, kuriame veikia Node.js
Triufelio sutarties modulio montavimas
Sutarties funkcijų getValue ir getString iškvietimas
Sutarties funkcijų setValue ir setString iškvietimas
Sutarties keitimas ir pakartotinis paskelbimas
Darbas su Web3 1.0.x versija
„HelloSol“ išmaniosios sutarties pakeitimai
Sutarties metodų iškvietimo scenarijai
Testavimas triufelyje
Kietumo testas
JavaScript testas
Pamokos santrauka

8 pamoka. Tvirtumo duomenų tipaiDuomenų tipų mokymosi sutartis
Būlio duomenų tipai
Nežymėti sveikieji skaičiai ir pažymėti sveikieji skaičiai
Fiksuotų taškų numeriai
adresas
Sudėtingų tipų kintamieji
Fiksuoto dydžio masyvai
Dinaminiai masyvai
Išvardijimas
Konstrukcijos
Žodynų kartografavimas
Pamokos santrauka

9 pamoka. Sutarčių perkėlimas į privatų tinklą ir į Rinkeby tinklą„Truffle“ sutarties paskelbimas privačiam „Geth“ tinklui
Privataus tinklo mazgo paruošimas
Darbo sutarties ruošimas
Sutarties sudarymas ir perkėlimas į „Truffle“ tinklą
Pradedama vietinio tinklo perkėlimo geth
Triufelių artefaktų gavimas
„Truffle“ sutarties paskelbimas „Rinkeby testnet“.
Geto mazgo paruošimas darbui su Rinkeby
Mazgų sinchronizavimas
Paskyrų pridėjimas
Rinkeby paskyros papildymas eteriu
Pradedamas sutarties perkėlimas į Rinkeby tinklą
Sutarčių informacijos peržiūra Rinkeby tinkle
Triufelių konsolė, skirta Rinkeby tinklui
Lengvesnis būdas iškviesti sutarties funkcijas
Sutarties metodų iškvietimas naudojant Node.js
Perveskite lėšas tarp sąskaitų „Rinkby“ „Truffle“ pulte
Pamokos santrauka

10 pamoka. Ethereum Swarm decentralizuota duomenų saugyklaKaip veikia Ethereum Swarm?
Swarm diegimas ir paleidimas
Operacijos su failais ir katalogais
Failo įkėlimas į Ethereum Swarm
Failo skaitymas iš Ethereum Swarm
Peržiūrėkite įkelto failo aprašą
Įkeliami katalogai su pakatalogiais
Failo skaitymas iš atsisiųsto katalogo
Naudojant viešąjį Swarm vartus
Prieiga prie Swarm naudojant Node.js scenarijus
Perl Net::Ethereum::Swarm modulis
„Net::Ethereum::Swarm“ modulio įdiegimas
Duomenų rašymas ir skaitymas
Pamokos santrauka

11 pamoka. Web3.py sistema, skirta darbui su Ethereum programoje PythonWeb3.py diegimas
Būtinų paketų atnaujinimas ir įdiegimas
Easysolc modulio montavimas
Sutarties paskelbimas naudojant Web3.py
Sutarčių sudarymas
Prisijungimas prie teikėjo
Vykdykite sutarties paskelbimą
Sutarties adreso ir abi išsaugojimas faile
Vykdomas sutarties publikavimo scenarijus
Skambinimo sutarčių metodai
Sutarties adreso ir abipusio skaitymas iš JSON failo
Prisijungimas prie teikėjo
Sutarties objekto kūrimas
Skambinimo sutarčių metodai
Triufelis ir Web3.py
Pamokos santrauka

12 pamoka. OrakulaiAr išmanioji sutartis gali pasitikėti išorinio pasaulio duomenimis?
„Oracles“ kaip „blockchain“ informacijos tarpininkai
Duomenų šaltinis
Kodas, rodantis duomenis iš šaltinio
Oracle, skirtas įrašyti valiutos kursą blokų grandinėje
USDRateOracle sutartis
Valiutos kurso atnaujinimas išmaniojoje sutartyje
Web Socket Provider naudojimas
Laukiama RateUpdate įvykio
RateUpdate įvykio tvarkymas
Duomenų atnaujinimo inicijavimas išmaniojoje sutartyje
Pamokos santrauka

Šaltinis: www.habr.com

Добавить комментарий