Grāmata “Creating Solidity smart contracts for the Ethereum blockchain. Praktiskais ceļvedis"

Grāmata “Creating Solidity smart contracts for the Ethereum blockchain. Praktiskais ceļvedis"
Jau vairāk nekā gadu strādāju pie grāmatas “Creating Solidity Smart Contracts for the Ethereum Blockchain. Praktiskā rokasgrāmata", un tagad šis darbs ir pabeigts, un grāmata publicēts un pieejams litros.

Es ceru, ka mana grāmata palīdzēs jums ātri sākt veidot Solidity viedos kontaktus un izplatītos DApps Ethereum blokķēdei. Tas sastāv no 12 nodarbībām ar praktiskiem uzdevumiem. Pabeidzot tos, lasītājs varēs izveidot savus lokālos Ethereum mezglus, publicēt viedos līgumus un izsaukt to metodes, apmainīties ar datiem starp reālo pasauli un viedajiem līgumiem, izmantojot orākulus, kā arī strādāt ar Rinkeby testa atkļūdošanas tīklu.

Grāmata ir adresēta ikvienam, kurš interesējas par progresīvām tehnoloģijām blokķēdes jomā un vēlas ātri iegūt zināšanas, kas ļaus iesaistīties interesantā un perspektīvā darbā.

Zemāk jūs atradīsiet satura rādītāju un grāmatas pirmo nodaļu (arī par Litri ir pieejami grāmatas fragmenti). Ceru saņemt atsauksmes, komentārus un ieteikumus. To visu centīšos ņemt vērā, gatavojot nākamo grāmatas izdevumu.

SaturaIevadsMūsu grāmata ir paredzēta tiem, kuri vēlas ne tikai izprast Ethereum blokķēdes principus, bet arī iegūt praktiskas iemaņas izplatīto DApp izveidē Solidity programmēšanas valodā šim tīklam.

Šo grāmatu labāk ne tikai lasīt, bet ar to strādāt, veicot nodarbībās aprakstītos praktiskos uzdevumus. Lai strādātu, jums būs nepieciešams lokālais dators, virtuālais vai mākoņa serveris ar instalētu Debian vai Ubuntu OS. Varat arī izmantot Raspberry Pi, lai veiktu daudzus uzdevumus.

Pirmajā nodarbībā Apskatīsim Ethereum blokķēdes darbības principus un pamata terminoloģiju, kā arī runāsim par to, kur šo blokķēdi var izmantot.

mērķis otrā nodarbība — izveidojiet privātu Ethereum blokķēdes mezglu turpmākam darbam šajā kursā Ubuntu un Debian serverī. Apskatīsim pamata utilītu instalēšanas iespējas, piemēram, geth, kas nodrošina mūsu blokķēdes mezgla darbību, kā arī swarm decentralizēto datu glabāšanas dēmonu.

Trešā nodarbība iemācīs eksperimentēt ar Ethereum lētā Raspberry Pi mikrodatorā. Jūs instalēsit Rasberian operētājsistēmu (OS) Raspberry Pi, Geth utilītprogrammā, kas darbina blokķēdes mezglu, un Swarm decentralizēto datu glabāšanas dēmonu.

Ceturtā nodarbība ir veltīta kontiem un kriptovalūtas vienībām Ethereum tīklā, kā arī veidiem, kā pārskaitīt līdzekļus no viena konta uz citu no Geth konsoles. Jūs uzzināsiet, kā izveidot kontus, iniciēt līdzekļu pārskaitījuma darījumus un iegūt darījuma statusu un kvīti.

Piektajā nodarbībā Jūs iepazīsities ar viedajiem līgumiem Ethereum tīklā un uzzināsiet par to izpildi ar Ethereum virtuālo mašīnu.

Jūs izveidosit un publicēsit savu pirmo viedo līgumu Ethereum privātajā tīklā un uzzināsit, kā izsaukt tā funkcijas. Lai to izdarītu, izmantosiet Remix Solidity IDE. Jūs arī uzzināsit, kā instalēt un lietot solc partijas kompilatoru.
Mēs arī runāsim par tā saukto Application Binary Interface (ABI) un iemācīsim to lietot.

Sestā nodarbība ir paredzēts JavaScript skriptu izveidei, kurā darbojas Node.js, un darbību veikšanai ar Solidity viedajiem līgumiem.

Jūs instalēsit Node.js uz Ubuntu, Debian un Rasberian OS, rakstīsit skriptus, lai Ethereum lokālajā tīklā publicētu viedo līgumu, un izsauksiet tā funkcijas.

Turklāt jūs uzzināsiet, kā pārskaitīt līdzekļus starp parastajiem kontiem, izmantojot skriptus, kā arī ieskaitīt tos viedo līgumu kontos.

Septītajā nodarbībā Jūs uzzināsit, kā instalēt un izmantot Solidity viedo līgumu izstrādātāju iecienīto Truffle ietvaru. Jūs uzzināsit, kā izveidot JavaScript skriptus, kas izsauc līguma funkcijas, izmantojot moduli trifele-līgums, un pārbaudīt viedo līgumu, izmantojot Truffle.

Astotā nodarbība veltīts Solidity datu tipiem. Jūs rakstīsit viedos līgumus, kas strādā ar tādiem datu tipiem kā parakstīti un neparakstīti veseli skaitļi, parakstītie skaitļi, virknes, adreses, sarežģīti mainīgie, masīvi, uzskaitījumi, struktūras un vārdnīcas.

Devītajā nodarbībā Jūs būsiet soli tuvāk viedo līgumu izveidei Ethereum tīklam. Jūs uzzināsiet, kā publicēt līgumus, izmantojot Truffle Geth privātajā tīklā, kā arī Rinkeby testnetā. Viedā līguma atkļūdošana Rinkeby tīklā ir ļoti noderīga pirms tā publicēšanas galvenajā tīklā - tur gandrīz viss ir īsts, bet bez maksas.

Nodarbības ietvaros jūs izveidosiet Rinkeby testa tīkla mezglu, finansēsiet to ar līdzekļiem un publicēsiet viedo līgumu.

nodarbība 10 veltīts Ethereum Swarm izplatītajai datu glabāšanai. Izmantojot sadalīto krātuvi, jūs ietaupāt lielu datu apjomu uzglabāšanu Ethereum blokķēdē.

Šajā apmācībā jūs izveidosit lokālo Swarm krātuvi, rakstīsit un lasīsiet darbības ar failiem un failu direktorijiem. Tālāk jūs uzzināsiet, kā strādāt ar publisko Swarm vārteju, rakstīt skriptus, lai piekļūtu Swarm no Node.js, kā arī izmantot Perl Net::Ethereum::Swarm moduli.

Nodarbības 11. mērķis — apgūt darbu ar Solidity viedajiem līgumiem, izmantojot populāro Python programmēšanas valodu un Web3.py ietvaru. Jūs instalēsit ietvaru, rakstīsit skriptus, lai apkopotu un publicētu viedo līgumu, kā arī izsauktu tā funkcijas. Šajā gadījumā Web3.py tiks izmantots gan atsevišķi, gan kopā ar Truffle integrēto izstrādes vidi.

12. nodarbībā jūs iemācīsities pārsūtīt datus starp viedajiem līgumiem un reālo pasauli, izmantojot orākulus. Tas jums noderēs, lai saņemtu datus no tīmekļa vietnēm, IoT ierīcēm, dažādām ierīcēm un sensoriem un nosūtītu datus no viedlīgumiem uz šīm ierīcēm. Nodarbības praktiskajā daļā jūs izveidosiet orākulu un viedo līgumu, kas saņem pašreizējo valūtas kursu starp USD un rubļiem no Krievijas Federācijas Centrālās bankas vietnes.

Nodarbība 1. Īsi par blokķēdi un Ethereum tīkluNodarbības mērķis: iepazīties ar Ethereum blokķēdes darbības principiem, tās pielietojuma jomām un pamata terminoloģiju.
Praktiskie uzdevumi: nav iekļauts šajā nodarbībā.

Diez vai mūsdienās ir programmatūras izstrādātājs, kurš neko nebūtu dzirdējis par blokķēdes tehnoloģiju (Blockchain), kriptovalūtām (kriptovalūta vai kriptovalūta), Bitcoin (Bitcoin), sākotnējo monētu piedāvājumu (ICO, Initial coin offering), viedajiem līgumiem (Smart Contract), kā arī citi jēdzieni un termini, kas saistīti ar blokķēdi.

Blockchain tehnoloģija paver jaunus tirgus un rada darba vietas programmētājiem. Ja jūs saprotat visas kriptovalūtas tehnoloģiju un viedo līgumu tehnoloģiju sarežģītības, jums nevajadzētu rasties problēmām, pielietojot šīs zināšanas praksē.

Jāsaka, ka par kriptovalūtām un blokķēdēm ir daudz spekulāciju. Atstāsim malā diskusijas par kriptovalūtu kursu izmaiņām, piramīdu veidošanu, kriptovalūtu likumdošanas smalkumiem utt. Mūsu apmācību kursā mēs galvenokārt pievērsīsimies Ethereum blokķēdes viedo līgumu (Ethereum, Ether) pielietošanas tehniskajiem aspektiem un tā saukto decentralizēto lietojumprogrammu (Distributed Application, DApp) izstrādei.

Kas ir blokķēde

Blockchain (Block Chain) ir datu bloku ķēde, kas noteiktā veidā ir savienoti viens ar otru. Ķēdes sākumā ir pirmais bloks, ko sauc par primāro bloku (ģenēzes bloku) vai ģenēzes bloku. Tam seko otrais, tad trešais un tā tālāk.

Visi šie datu bloki tiek automātiski dublēti daudzos blokķēdes tīkla mezglos. Tas nodrošina blokķēdes datu decentralizētu uzglabāšanu.
Jūs varat domāt par blokķēdes sistēmu kā lielu skaitu mezglu (fizisku vai virtuālu serveru), kas savienoti tīklā un atkārto visas izmaiņas datu bloku ķēdē. Šis ir kā milzu daudzserveru dators, un šāda datora mezgli (serveri) var būt izkaisīti pa visu pasauli. Un arī jūs varat pievienot savu datoru blokķēdes tīklam.

Izplatītā datu bāze

Blokķēdi var uzskatīt par izplatītu datu bāzi, kas tiek replicēta visos blokķēdes tīkla mezglos. Teorētiski blokķēde darbosies tik ilgi, kamēr darbosies vismaz viens mezgls, kurā tiks glabāti visi blokķēdes bloki.

Izplatīto datu reģistrs

Blockchain var uzskatīt par sadalītu datu un operāciju (darījumu) virsgrāmatu. Vēl viens šāda reģistra nosaukums ir virsgrāmata.

Datus var pievienot sadalītai virsgrāmatai, taču tos nevar mainīt vai dzēst. Šī neiespējamība tiek panākta, jo īpaši izmantojot kriptogrāfijas algoritmus, īpašus algoritmus bloku pievienošanai ķēdei un decentralizētu datu glabāšanu.

Pievienojot blokus un veicot darbības (transakcijas), tiek izmantotas privātās un publiskās atslēgas. Tie ierobežo blokķēdes lietotājus, dodot viņiem piekļuvi tikai saviem datu blokiem.

Darījumi

Blockchain glabā informāciju par operācijām (transakcijām) blokos. Tajā pašā laikā vecos, jau pabeigtos darījumus nevar atsaukt vai mainīt. Jaunie darījumi tiek saglabāti jaunos, pievienotajos blokos.

Tādā veidā visu darījumu vēsturi blokķēdē var ierakstīt nemainītā veidā. Tāpēc blokķēdi var izmantot, piemēram, lai droši uzglabātu bankas darījumus, informāciju par autortiesībām, īpašumu īpašnieku izmaiņu vēsturi u.c.

Ethereum blokķēde satur tā sauktos sistēmas stāvokļus. Kad tiek izpildīti darījumi, stāvoklis mainās no sākotnējā stāvokļa uz pašreizējo stāvokli. Darījumi tiek ierakstīti blokos.

Publiskās un privātās blokķēdes

Šeit jāpiebilst, ka viss teiktais attiecas tikai uz tā sauktajiem publiskajiem blokķēžu tīkliem, kurus nevar kontrolēt neviena fiziska vai juridiska persona, valsts aģentūra vai valdība.
Tā sauktie privātie blokķēžu tīkli ir pilnīgā to veidotāju kontrolē, un tur ir iespējams jebkas, piemēram, pilnīga visu ķēdes bloku nomaiņa.

Blokķēdes praktiskie pielietojumi

Kam blokķēde var būt noderīga?

Īsāk sakot, blokķēde ļauj droši veikt darījumus (darījumus) starp cilvēkiem vai uzņēmumiem, kuri neuzticas viens otram. Blokķēdē ierakstītos datus (darījumus, personas datus, dokumentus, sertifikātus, līgumus, rēķinus utt.) pēc ierakstīšanas nevar viltot vai aizstāt. Tāpēc, pamatojoties uz blokķēdi, ir iespējams izveidot, piemēram, uzticamus izplatītus dažāda veida dokumentu reģistrus.

Protams, jūs zināt, ka kriptovalūtu sistēmas tiek veidotas uz blokķēžu bāzes, kas paredzētas parastās papīra naudas aizstāšanai. Papīra naudu sauc arī par fiat (no Fiat Money).
Blockchain nodrošina blokos ierakstīto darījumu uzglabāšanu un nemainīgumu, tāpēc to var izmantot kriptovalūtu sistēmu izveidei. Tajā ir visa kriptovalūtu pārsūtīšanas vēsture starp dažādiem lietotājiem (kontiem), un jebkurai darbībai var izsekot.

Lai gan darījumi kriptovalūtu sistēmās var būt anonīmi, kriptovalūtas izņemšana un maiņa pret fiat naudu parasti atklāj kriptovalūtas aktīva īpašnieka identitāti.

Tā sauktie viedie līgumi, kas ir programmatūra, kas darbojas Ethereum tīklā, ļauj automatizēt darījumu noslēgšanas procesu un uzraudzīt to izpildi. Tas ir īpaši efektīvi, ja maksājums par darījumu tiek veikts, izmantojot Ether kriptovalūtu.

Solidity programmēšanas valodā rakstītos Ethereum blokķēdes un Ethereum viedos līgumus var izmantot, piemēram, šādās jomās:

  • alternatīva dokumentu notariālai apstiprināšanai;
  • nekustamā īpašuma objektu reģistra un informācijas par darījumiem ar nekustamā īpašuma objektiem uzglabāšana;
  • autortiesību informācijas glabāšana par intelektuālo īpašumu (grāmatas, attēli, mūzikas darbi utt.);
  • neatkarīgu balsošanas sistēmu izveide;
  • finanses un banku darbība;
  • loģistika starptautiskā mērogā, preču kustības izsekošana;
  • personas datu glabāšana kā analogs identitātes karšu sistēmai;
  • droši darījumi komerciālajā jomā;
  • medicīnisko pārbaužu rezultātu, kā arī noteikto procedūru vēstures uzglabāšanu

Problēmas ar blokķēdi

Bet, protams, ne viss ir tik vienkārši, kā varētu šķist!

Ir problēmas ar datu pārbaudi pirms to pievienošanas blokķēdei (piemēram, vai tie ir viltoti?), problēmas ar sistēmas un lietojumprogrammatūras drošību, ko izmanto darbam ar blokķēdi, problēmas ar iespēju izmantot sociālās inženierijas metodes, lai nozagtu piekļuvi. uz kriptovalūtas makiem utt. .P.

Atkal, ja mēs nerunājam par publisku blokķēdi, kuras mezgli ir izkaisīti pa visu pasauli, bet gan par privātu blokķēdi, kas pieder personai vai organizācijai, tad uzticības līmenis šeit nebūs augstāks par uzticības līmeni. šajā personā vai organizācijā.

Tāpat jāņem vērā, ka blokķēdē ierakstītie dati kļūst pieejami ikvienam. Šajā ziņā blokķēde (īpaši publiska) nav piemērota konfidenciālas informācijas glabāšanai. Tomēr fakts, ka informāciju par blokķēdi nevar mainīt, var palīdzēt novērst vai izmeklēt dažāda veida krāpnieciskas darbības.

Ethereum decentralizētās aplikācijas būs ērtas, ja par to lietošanu maksāsiet ar kriptovalūtu. Jo vairāk cilvēku, kuriem pieder kriptovalūta vai kuri vēlas to iegādāties, jo populārāki kļūs DApps un viedie līgumi.

Biežākās blokķēdes problēmas, kas kavē tās praktisko pielietojumu, ir ierobežotais ātrums, ar kādu var pievienot jaunus blokus, un salīdzinoši augstās darījumu izmaksas. Taču tehnoloģijas šajā jomā aktīvi attīstās, un ir cerības, ka tehniskās problēmas ar laiku tiks atrisinātas.

Vēl viena problēma ir tā, ka viedie līgumi Ethereum blokķēdē darbojas izolētā virtuālo mašīnu vidē un tiem nav piekļuves reālās pasaules datiem. Jo īpaši viedā līguma programma pati nevar nolasīt datus no vietnēm vai fiziskām ierīcēm (sensoriem, kontaktiem utt.), Kā arī nevar izvadīt datus uz ārējām ierīcēm. Šo problēmu un tās risināšanas veidus apspriedīsim nodarbībā, kas veltīta tā sauktajiem Orākuliem – viedo līgumu informācijas starpniekiem.

Ir arī juridiski ierobežojumi. Dažās valstīs, piemēram, ir aizliegts izmantot kriptovalūtu kā maksāšanas līdzekli, taču jūs varat to iegūt kā sava veida digitālo aktīvu, piemēram, vērtspapīrus. Šādus aktīvus var pirkt un pārdot biržā. Jebkurā gadījumā, veidojot projektu, kas darbojas ar kriptovalūtām, jums ir jāiepazīstas ar tās valsts tiesību aktiem, kuras jurisdikcijā ir jūsu projekts.

Kā veidojas blokķēdes ķēde

Kā jau teicām, blokķēde ir vienkārša datu bloku ķēde. Pirmkārt, tiek izveidots pirmais šīs ķēdes bloks, pēc tam tiek pievienots otrais utt. Tiek pieņemts, ka darījumu dati tiek glabāti blokos un tiek pievienoti jaunākajam blokam.

Attēlā 1.1 mēs parādījām vienkāršāko bloku secības versiju, kur pirmais bloks attiecas uz nākamo.

Grāmata “Creating Solidity smart contracts for the Ethereum blockchain. Praktiskais ceļvedis"
Rīsi. 1.1. Vienkārša bloku secība

Tomēr, izmantojot šo opciju, ir ļoti viegli mainīt jebkura ķēdes bloka saturu, jo bloki nesatur nekādu informāciju, kas aizsargātu pret izmaiņām. Ņemot vērā, ka blokķēde ir paredzēta lietošanai cilvēkiem un uzņēmumiem, starp kuriem nav uzticības, varam secināt, ka šī datu glabāšanas metode blokķēdei nav piemērota.

Sāksim aizsargāt blokus no viltošanas. Pirmajā posmā katru bloku mēģināsim aizsargāt ar kontrolsummu (1.2. att.).

Grāmata “Creating Solidity smart contracts for the Ethereum blockchain. Praktiskais ceļvedis"
Rīsi. 1.2. Aizsardzības pievienošana šiem blokiem ar kontrolsummu

Tagad uzbrucējs nevar vienkārši mainīt bloku, jo tajā ir bloka datu kontrolsumma. Pārbaudot kontrolsummu, tiks parādīts, ka dati ir mainīti.

Lai aprēķinātu kontrolsummu, varat izmantot kādu no jaukšanas funkcijām, piemēram, MD-5, SHA-1, SHA-256 utt. Jaucējfunkcijas aprēķina vērtību (piemēram, nemainīga garuma teksta virkni), veicot neatgriezeniskas darbības ar datu bloku. Darbības ir atkarīgas no jaucējfunkcijas veida.

Pat ja nedaudz mainās datu bloka saturs, mainīsies arī jaucējvērtība. Analizējot jaucējfunkcijas vērtību, nav iespējams rekonstruēt datu bloku, kuram tā tika aprēķināta.

Vai ar šādu aizsardzību pietiks? Diemžēl nē.

Šajā shēmā kontrolsumma (jaukšanas funkcija) aizsargā tikai atsevišķus blokus, bet ne visu blokķēdi. Zinot jaucējfunkcijas aprēķināšanas algoritmu, uzbrucējs var viegli nomainīt bloka saturu. Tāpat nekas netraucēs viņam noņemt blokus no ķēdes vai pievienot jaunus.

Lai aizsargātu visu ķēdi kopumā, katrā blokā kopā ar datiem var saglabāt arī iepriekšējā bloka datu jauktu (1.3. att.).

Grāmata “Creating Solidity smart contracts for the Ethereum blockchain. Praktiskais ceļvedis"
Rīsi. 1.3. Pievienojiet datu blokam iepriekšējā bloka jaucējkodu

Šajā shēmā, lai mainītu bloku, ir jāpārrēķina visu nākamo bloku jaucējfunkcijas. Šķiet, kāda ir problēma?

Reālajās blokķēdēs papildus tiek radītas mākslīgas grūtības jaunu bloku pievienošanai — tiek izmantoti algoritmi, kas prasa lielus skaitļošanas resursus. Ņemot vērā, ka, lai veiktu izmaiņas blokā, jums ir jāpārrēķina ne tikai šis bloks, bet arī visi nākamie, tas būs ārkārtīgi grūti izdarāms.

Atcerēsimies arī to, ka blokķēdes dati tiek glabāti (dublēti) daudzos tīkla mezglos, t.i. Tiek izmantota decentralizēta uzglabāšana. Un tas padara bloka viltošanu daudz grūtāku, jo izmaiņas ir jāveic visos tīkla mezglos.

Tā kā bloki glabā informāciju par iepriekšējo bloku, ir iespējams pārbaudīt visu ķēdes bloku saturu.

Ethereum blokķēde

Ethereum blokķēde ir platforma, kurā var izveidot izplatītas DApps. Atšķirībā no citām platformām Ethereum ļauj izmantot tā sauktos viedos līgumus (viedos līgumus), kas rakstīti Solidity programmēšanas valodā.

Šo platformu 2013. gadā izveidoja Vitalik Buterin, Bitcoin Magazine dibinātājs, un tā tika uzsākta 2015. gadā. Viss, ko mēs mācīsimies vai darīsim savā apmācību kursā, ir īpaši saistīts ar Ethereum blokķēdes un Solidity viedajiem līgumiem.

Kalnrūpniecība jeb bloku izveide

Kalnrūpniecība ir diezgan sarežģīts un resursietilpīgs process jaunu bloku pievienošanai blokķēdes ķēdei, nevis “kriptovalūtas ieguve”. Mining nodrošina blokķēdes funkcionalitāti, jo tieši šis process ir atbildīgs par darījumu pievienošanu Ethereum blokķēdei.

Personas un organizācijas, kas iesaistītas bloku pievienošanā, sauc par kalnračiem.
Programmatūra, kas darbojas kalnraču mezglos, mēģina atrast jaukšanas parametru ar nosaukumu Nonce pēdējam blokam, lai iegūtu konkrētu tīkla norādīto jaukšanas vērtību. Programmā Ethereum izmantotais Ethash jaukšanas algoritms ļauj iegūt Nonce vērtību tikai ar secīgu meklēšanu.

Ja kalnraču mezgls atrod pareizo Nonce vērtību, tas ir tā sauktais darba pierādījums (PoW, Proof-of-work). Šajā gadījumā, ja Ethereum tīklam tiek pievienots bloks, kalnracis saņem noteiktu atlīdzību tīkla valūtā - Ether. Rakstīšanas laikā atlīdzība ir 5 ētera, taču laika gaitā tas tiks samazināts.

Tādējādi Ethereum kalnrači nodrošina tīkla darbību, pievienojot blokus, un par to saņem kriptovalūtas naudu. Internetā ir daudz informācijas par kalnračiem un ieguvi, taču mēs koncentrēsimies uz Solidity līgumu un DApps izveidi Ethereum tīklā.

Nodarbības kopsavilkums

Pirmajā nodarbībā iepazinies ar blokķēdi un uzzināji, ka tā ir īpaši sacerēta bloku secība. Iepriekš ierakstīto bloku saturu nevar mainīt, jo tas prasītu visu nākamo bloku pārrēķinu daudzos tīkla mezglos, kas prasa daudz resursu un laika.

Blockchain var izmantot, lai saglabātu darījumu rezultātus. Tās galvenais mērķis ir organizēt drošus darījumus starp pusēm (personām un organizācijām), starp kurām nav uzticības. Jūs uzzinājāt, kurās konkrētās uzņēmējdarbības jomās un kādās jomās var izmantot Ethereum blokķēdes un Solidity viedos līgumus. Tas ir banku sektors, īpašuma tiesību, dokumentu reģistrēšana utt.

Jūs arī uzzinājāt, ka, izmantojot blokķēdi, var rasties dažādas problēmas. Tās ir blokķēdei pievienotās informācijas pārbaudes problēmas, blokķēdes ātrums, darījumu izmaksas, datu apmaiņas problēma starp viedlīgumiem un reālo pasauli, kā arī iespējamie uzbrucēju uzbrukumi, kuru mērķis ir nozagt kriptovalūtas līdzekļus no lietotāju kontiem. .

Mēs arī īsi runājām par ieguvi kā jaunu bloku pievienošanas procesu blokķēdei. Darījumu pabeigšanai ir nepieciešama ieguve. Ieguvē iesaistītie nodrošina blokķēdes darbību un par to saņem atlīdzību kriptovalūtā.

2. nodarbība. Darba vides sagatavošana Ubuntu un Debian OSOperētājsistēmas izvēle
Nepieciešamo utilītu instalēšana
Geth un Swarm instalēšana Ubuntu
Geth un Swarm instalēšana uz Debian
Iepriekšēja sagatavošana
Go izplatīšanas lejupielāde
Vides mainīgo iestatīšana
Pārbauda Go versiju
Geth un Swarm instalēšana
Privātas blokķēdes izveide
Notiek faila genesis.json sagatavošana
Izveidojiet direktoriju darbam
Izveidot kontu
Tiek sākta mezgla inicializācija
Mezgla palaišanas opcijas
Izveidojiet savienojumu ar mūsu mezglu
Kalnrūpniecības vadība un bilances pārbaude
Geth konsoles izslēgšana
Nodarbības kopsavilkums

3. nodarbība. Darba vides sagatavošana Raspberry Pi 3Raspberry Pi 3 sagatavošana darbam
Rasberian instalēšana
Atjauninājumu instalēšana
SSH piekļuves iespējošana
Statiskās IP adreses iestatīšana
Nepieciešamo utilītu instalēšana
Go instalēšana
Go izplatīšanas lejupielāde
Vides mainīgo iestatīšana
Pārbauda Go versiju
Geth un Swarm instalēšana
Privātas blokķēdes izveide
Jūsu konta un bilances pārbaude
Nodarbības kopsavilkums

4. nodarbība. Konti un līdzekļu pārskaitīšana starp kontiemSkatīt un pievienot kontus
Skatiet kontu sarakstu
Konta pievienošana
geth konta komandu opcijas
Konta paroles
Kriptovalūta Ethereum
Ethereum valūtas vienības
Mēs nosakām pašreizējo kontu atlikumu
Pārskaitiet līdzekļus no viena konta uz citu
eth.sendTransakciju metode
Skatīt darījuma statusu
Darījuma kvīts
Nodarbības kopsavilkums

5. nodarbība. Pirmā līguma publicēšanaViedie līgumi Ethereum
Gudra līguma izpilde
Ethereum virtuālā mašīna
Integrēta izstrādes vide Remix Solidity IDE
Darbojas kompilācija
Līguma funkciju izsaukšana
Līguma publicēšana privātajā tīklā
ABI definīcijas un līguma binārā koda iegūšana
Līguma publicēšana
Līguma publicēšanas darījuma statusa pārbaude
Līguma funkciju izsaukšana
Pakešu kompilators solc
Solc instalēšana Ubuntu
Solc instalēšana vietnē Debian
HelloSol līguma sastādīšana
Līguma publicēšana
Solc instalēšana vietnē Rasberian
Nodarbības kopsavilkums

6. nodarbība. Viedie līgumi un Node.jsNode.js instalēšana
Instalēšana Ubuntu
Instalēšana uz Debian
Ganache-cli instalēšana un palaišana
Web3 instalēšana
Solc instalēšana
Node.js instalēšana vietnē Rasberian
Skripts, lai iegūtu kontu sarakstu konsolē
Skripts viedā līguma publicēšanai
Palaidiet un iegūstiet parametrus
Palaišanas opciju iegūšana
Līgumu sastādīšana
Jūsu konta atbloķēšana
Notiek ABI un līguma binārā koda ielāde
Nepieciešamā gāzes daudzuma novērtēšana
Izveidojiet objektu un sāciet publicēt līgumu
Līguma publicēšanas skripta izpilde
Viedo līgumu funkciju izsaukšana
Vai ir iespējams atjaunināt publicēto viedo līgumu?
Darbs ar Web3 versiju 1.0.x
Kontu saraksta iegūšana
Līguma publicēšana
Līguma funkciju izsaukšana
Pārskaitiet līdzekļus no viena konta uz citu
Pārskaitīt līdzekļus uz līguma kontu
HelloSol viedā līguma atjaunināšana
Izveidojiet skriptu, lai skatītu sava konta atlikumu
Pievienojiet funkcijas getBalance izsaukumu skriptam call_contract_get_promise.js
Mēs papildinām viedā līguma kontu
Nodarbības kopsavilkums

7. nodarbība. Ievads trifelēTrifeles instalēšana
Izveidojiet HelloSol projektu
Projekta direktorija un failu izveide
Līgumu katalogs
Kataloga migrācija
Direktoriju pārbaude
truffle-config.js failu
HelloSol līguma sastādīšana
Sāciet publicēt līgumu
HelloSol līguma funkciju izsaukšana trifeļu uzvednē
HelloSol līguma funkciju izsaukšana no JavaScript skripta, kurā darbojas Node.js
Trifeles līguma moduļa uzstādīšana
Līguma funkciju getValue un getString izsaukšana
Līguma funkciju setValue un setString izsaukšana
Līguma grozīšana un atkārtota publicēšana
Darbs ar Web3 versiju 1.0.x
Izmaiņu veikšana HelloSol viedajā līgumā
Skripti līguma metožu izsaukšanai
Testēšana trifelē
Stingrības pārbaude
JavaScript tests
Nodarbības kopsavilkums

8. nodarbība. Soliditātes datu veidiLīgums par datu tipu apguvi
Būla datu veidi
Neparakstīti veseli skaitļi un veseli skaitļi ar parakstu
Fiksētie punktu numuri
adrese
Sarežģītu veidu mainīgie
Fiksēta izmēra masīvi
Dinamiskie masīvi
Pārsūtīšana
Struktūras
Vārdnīcu kartēšana
Nodarbības kopsavilkums

9. nodarbība. Līgumu migrēšana uz privāto tīklu un Rinkeby tīkluLīguma publicēšana no Truffle uz privāto Geth tīklu
Privātā tīkla mezgla sagatavošana
Darba līguma sagatavošana
Līguma apkopošana un migrēšana uz Truffle tīklu
Vietējā tīkla migrācijas sākšana geth
Trifeļu artefaktu iegūšana
Līguma publicēšana no Truffle uz Rinkeby testnet
Geth mezgla sagatavošana darbam ar Rinkeby
Mezglu sinhronizācija
Kontu pievienošana
Rinkeby konta papildināšana ar ēteri
Tiek uzsākta līguma migrācija uz Rinkeby tīklu
Līguma informācijas skatīšana Rinkeby tīklā
Trifeles konsole Rinkeby tīklam
Vienkāršāks veids, kā izsaukt līguma funkcijas
Līguma metožu izsaukšana, izmantojot Node.js
Pārsūtiet līdzekļus starp kontiem Truffle konsolē Rinkby
Nodarbības kopsavilkums

10. nodarbība. Ethereum Swarm decentralizēta datu glabāšanaKā darbojas Ethereum Swarm?
Swarm instalēšana un palaišana
Darbības ar failiem un direktorijiem
Faila augšupielāde Ethereum Swarm
Faila lasīšana no Ethereum Swarm
Skatiet augšupielādētā faila manifestu
Notiek direktoriju ielāde ar apakšdirektorijiem
Faila lasīšana no lejupielādētā direktorija
Izmantojot publisko Swarm vārteju
Piekļuve Swarm no Node.js skriptiem
Perl Net::Ethereum::Swarm modulis
Net::Ethereum::Swarm moduļa instalēšana
Datu rakstīšana un lasīšana
Nodarbības kopsavilkums

11. nodarbība. Web3.py ietvars darbam ar Ethereum programmā PythonWeb3.py instalēšana
Nepieciešamo pakotņu atjaunināšana un instalēšana
Easysolc moduļa uzstādīšana
Līguma publicēšana, izmantojot Web3.py
Līgumu sastādīšana
Savienojuma izveide ar pakalpojumu sniedzēju
Izpildīt līguma publicēšanu
Līguma adreses un abi saglabāšana failā
Līguma publicēšanas skripta izpilde
Zvanu līguma metodes
Līguma adreses un abi nolasīšana no JSON faila
Savienojuma izveide ar pakalpojumu sniedzēju
Līguma objekta izveide
Zvanu līguma metodes
Trifele un Web3.py
Nodarbības kopsavilkums

12. nodarbība. OrākuliVai viedais līgums var uzticēties datiem no ārpasaules?
Orākulu kā blokķēdes informācijas starpnieki
Datu avots
Kods, lai attēlotu datus no avota
Oracle valūtas maiņas kursa reģistrēšanai blokķēdē
USDRateOracle līgums
Valūtas kursa atjaunināšana viedajā līgumā
Izmantojot Web Socket Provider
Gaida RateUpdate notikumu
RateUpdate notikuma apstrāde
Datu atjaunināšanas iniciēšana viedā līgumā
Nodarbības kopsavilkums

Avots: www.habr.com

Pievieno komentāru