Cartea „Crearea contractelor inteligente Solidity pentru blockchain-ul Ethereum. Ghid practic”

Cartea „Crearea contractelor inteligente Solidity pentru blockchain-ul Ethereum. Ghid practic”
Timp de peste un an, am lucrat la cartea „Crearea smart contractelor Solidity pentru blockchain-ul Ethereum. Ghid practic”, iar acum această lucrare este finalizată, iar cartea a fost publicată și este disponibilă pe Litres.

Sper ca cartea mea să ajute la inițierea rapidă în crearea smart contractelor Solidity și a aplicațiilor distribuite DApp pentru blockchain-ul Ethereum. Aceasta este compusă din 12 lecții cu exerciții practice. După finalizarea lor, cititorul va putea crea propriile noduri locale Ethereum, publica smart contracte și apela metodele acestora, schimba date între lumea reală și smart contracte prin intermediul oracle-urilor, și lucra cu rețeaua de testare Rinkeby.

Cartea este destinată tuturor celor interesați de tehnologii avansate în domeniul blockchain-ului și care doresc să obțină rapid cunoștințe pentru a se angaja într-o muncă interesantă și promițătoare.

Mai jos veți găsi cuprinsul și primul capitol al cărții (de asemenea pe Litres sunt disponibile fragmentele cărții). Sper să primesc feedback, observații și sugestii. Toate acestea le voi lua în considerare la pregătirea următoarei ediții a cărții.

CuprinsIntroducereCartea noastră este destinată celor care doresc nu doar să înțeleagă principiile de funcționare ale blockchain-ului Ethereum, ci și să obțină abilități practice în crearea aplicațiilor distribuite DApp în limbajul de programare Solidity pentru această rețea.

Această carte este mai bine să nu fie doar citită, ci să lucrați cu ea, realizând exercițiile practice descrise în lecții. Pentru a lucra, veți avea nevoie de un computer local, un server virtual sau în cloud cu sistemul de operare Debian sau Ubuntu instalat. De asemenea, pentru realizarea multor exerciții, puteți folosi Raspberry Pi.

În prima lecție vom analiza principiile de funcționare ale blockchain-ului Ethereum și terminologia de bază, precum și vom discuta despre unde poate fi utilizat acest blockchain.

Scop a doua lecție — să creați un nod al blockchain-ului privat Ethereum pentru a continua lucrul în cadrul acestui curs pe serverul Ubuntu și Debian. Vom examina particularitățile instalării utilitarelor de bază, cum ar fi geth, care asigură funcționarea nodului nostru de blockchain, precum și demnul de stocare descentralizată swarm.

A treia lecție te va învăța cum să efectuezi experimente cu Ethereum pe un microcomputer Raspberry Pi ieftin. Vei instala sistemul de operare (OS) Raspberian pe Raspberry Pi, utilitarul Geth, care asigură funcționarea unui nod blockchain, precum și daemonul de stocare descentralizată Swarm.

Cursul patru este dedicat conturilor și unităților de criptomonedă din rețeaua Ethereum, precum și modurilor de a transfera fonduri de la un cont la altul din consola Geth. Vei învăța cum să creezi conturi, să inițiezi tranzacții de transfer de fonduri, să obții starea unei tranzacții și chitanța acesteia.

În cea de-a cincea lecție te vei familiariza cu contractele inteligente din rețeaua Ethereum și vei învăța despre execuția acestora de către mașina virtuală Ethereum.

Vei crea și publica în rețeaua privată Ethereum primul tău contract inteligent și vei învăța cum să îi apelezi funcțiile. Pentru aceasta, vei utiliza mediul de dezvoltare Remix Solidity IDE. În plus, vei învăța cum să instalezi și să folosești compilatorul de pachete solc.
De asemenea, îți vom prezenta așa-numitul interface binar de aplicație Application Binary Interface (ABI) și te vom învăța să îl folosești.

Cea de-a șasea lecție este dedicată creării scripturilor JavaScript care rulează sub Node.js și efectuează operațiuni cu contractele inteligente Solidity.

Vei instala Node.js pe OS Ubuntu, Debian și Raspberian, vei scrie scripturi pentru publicarea contractului inteligent în rețeaua locală Ethereum și pentru apelarea funcțiilor sale.

În plus, vei învăța să transferi fonduri între conturile obișnuite folosind scripturi, precum și să le alimentezi în conturile contractelor inteligente.

În cea de-a șaptea lecție vei învăța cum să instalezi și să folosești mediu integrat Truffle, popular printre dezvoltatorii de contracte inteligente Solidity. Vei învăța să creezi scripturi JavaScript care apelează funcțiile contractelor folosind modulul truffle-contract, precum și să testezi contractul tău inteligent cu ajutorul Truffle.

Cea de-a opta lecție se concentrează asupra tipurilor de date Solidity. Vei scrie contracte inteligente care lucrează cu tipuri de date precum întregi semnați și nesemnați, numere cu semn, stringuri, adrese, variabile de tip complex, matrice, enumerări, structuri și dicționare.

În cea de-a noua lecție Veți fi cu un pas mai aproape de crearea de contracte inteligente pentru rețeaua principală Ethereum. Veți învăța să publicați contracte prin Truffle în rețeaua privată Geth, precum și în rețeaua de testare Rinkeby. Debbugingul contractului inteligent în rețeaua Rinkeby este foarte util înainte de publicarea în rețeaua principală - acolo aproape totul este real, dar gratuit.

În cadrul lecției, veți crea un nod în rețeaua de testare Rinkeby, veți adăuga fonduri și veți publica un contract inteligent.

Lecția 10 se concentrează pe stocările de date distribuite Ethereum Swarm. Folosind stocările distribuite, economisiți costurile de stocare a volumelor mari de date în blockchain-ul Ethereum.

În cadrul acestei lecții veți crea un depozit local Swarm, veți efectua operațiuni de scriere și citire a fișierelor, precum și a directoarelor cu fișiere. Apoi veți învăța să lucrați cu un gateway public Swarm, veți scrie scripturi pentru a accesa Swarm din Node.js și, de asemenea, cu modulul Perl Net::Ethereum::Swarm.

Obiectivul lecției 11 este să învățați să lucrați cu contractele inteligente Solidity folosind popularul limbaj de programare Python și cadrul Web3.py. Veți instala acest cadru, veți scrie scripturi pentru compilarea și publicarea contractului inteligent, precum și pentru apelarea funcțiilor acestuia. Web3.py va fi utilizat atât singur, cât și împreună cu mediul de dezvoltare integrat Truffle.

La lecția 12 veți învăța să transferați date între contractele inteligente și lumea reală folosind oracole. Acest lucru vă va fi util pentru a obține date de pe site-uri web, dispozitive IoT, diferite instrumente și senzori, și pentru a trimite date din contractele inteligente către aceste dispozitive. În partea practică a lecției, veți crea un oracol și un contract inteligent care obține rata actuală de schimb USD la ruble de pe site-ul BNM.

Lecția 1. Scurt istoric despre blockchain și rețeaua EthereumObiectivul lecției: a se familiariza cu principiile de funcționare ale blockchain-ului Ethereum, domeniile de aplicare și terminologia de bază.
Exerciții practice: nu sunt prevăzute în această lecție.

Rareori astăzi există un dezvoltator de software (SO) care să nu fi auzit nimic despre tehnologia blockchain, criptomonede (Cryptocurrency sau Crypto Currency), bitcoin, oferte inițiale de monede (ICO, Initial coin offering), contracte inteligente (Smart Contract), precum și alte concepte și termeni relevanți pentru blockchain.

Tehnologia blockchain deschide noi piețe și creează locuri de muncă pentru programatori. Dacă vei stăpâni toate subtilitățile tehnologiilor criptomonedelor și ale contractelor inteligente, nu ar trebui să întâmpini probleme în aplicarea acestor cunoștințe în practică.

Trebuie spus că în jurul criptomonedelor și al blockchain-urilor circulă multe speculații. Vom lăsa deoparte discuțiile despre fluctuațiile cursurilor criptomonedelor, despre crearea piramidelor, despre subtilitățile legislației criptomonedelor etc. În cursul nostru de învățare, ne vom concentra în principal pe aspectele tehnice ale aplicării contractelor inteligente blockchain Ethereum (ether, ETH) și dezvoltarea așa-numitelor aplicații descentralizate (Distributed Application, DApp).

Ce este blockchain-ul

Blockchain (Blockchain, Block Chain) este o serie de blocuri de date, legate între ele într-un anumit mod. La începutul acestei serii se află primul bloc, cunoscut sub numele de blocul inițial (genesis block) sau blocul genezei. În urma acestuia se află al doilea, apoi al treilea și așa mai departe.

Toate aceste blocuri de date sunt duplicate automat pe numeroase noduri ale rețelei blockchain. Astfel, se asigură stocarea descentralizată a datelor blockchain-ului.
Îți poți imagina sistemul blockchain ca un număr mare de noduri (servere fizice sau virtuale) conectate într-o rețea și replicând toate schimbările din seria de blocuri de date. Este ca un computer multi-server uriaș, iar nodurile acestui computer (servere) pot fi dispersate în toată lumea. Și tu poți adăuga computerul tău la rețeaua blockchain.

Bază de date distribuită

Blockchain-ul poate fi imaginat ca o bază de date distribuită, replicată pe toate nodurile rețelei blockchain. În teorie, blockchain-ul va funcționa atâta vreme cât va exista cel puțin un nod care stochează toate blocurile blockchain-ului.

Registru distribuit de date

Blockchain-ul poate fi descris ca un registru distribuit de date și operațiuni (tranzacții). O altă denumire pentru acest registru este cartea de conturi.

Înregistrările distribuite pot fi adăugate, dar nu pot fi modificate sau șterse. Această imposibilitate este realizată, printre altele, prin aplicarea algoritmilor criptografici, algoritmilor speciali de adăugare a blocurilor în lanț și stocării decentralizate a datelor.

Atunci când se adaugă blocuri și se efectuează operațiuni (tranzacții), sunt utilizate chei private și publice. Acestea limitează utilizatorii blockchain-ului, oferindu-le acces doar la blocurile lor de date.

Tranzacții

Blockchain-ul stochează informații despre operațiuni (tranzacții) în blocuri. În acest context, tranzacțiile vechi, deja efectuate, nu pot fi anulate sau modificate. Tranzacțiile noi sunt stocate în blocuri noi, adăugate.

Astfel, în blockchain poate fi înregistrată, într-o formă nemodificată, întreaga istorie a tranzacțiilor. De aceea, blockchain-ul poate fi utilizat, de exemplu, pentru stocarea sigură a operațiunilor bancare, informațiilor despre drepturile de autor, istoria modificărilor proprietarilor bunurilor imobiliare etc.

Blockchain-ul Ethereum conține așa-numitele stări ale sistemului. Pe măsură ce tranzacțiile se desfășoară, starea se modifică de la inițială la actuală. Tranzacțiile sunt înregistrate în blocuri.

Blockchain-uri publice și private

Aici trebuie menționat că tot ce s-a spus este adevărat doar pentru așa-numitele rețele publice de blockchain, care nu pot fi controlate de entități fizice sau juridice, agenții guvernamentale sau guverne.
Așa-numitele rețele private de blockchain sunt sub control total al creatorilor lor și totul este posibil acolo, de exemplu, înlocuirea completă a tuturor blocurilor din lanț.

Aplicații practice ale blockchain-ului

Pentru ce poate fi util blockchain-ul?

Pe scurt, blockchain-ul permite efectuarea operațiunilor (tranzacțiilor) într-un mod sigur între persoane sau companii care nu au încredere una în cealaltă. Datele înregistrate în blockchain (tranzacții, date personale, documente, certificate, contracte, facturi etc.) nu pot fi falsificate sau înlocuite după ce au fost înregistrate. De aceea, pe baza blockchain-ului se pot crea, de exemplu, registre distribuite de încredere pentru diverse tipuri de documente.

Desigur, știți că pe baza blockchain-urilor se creează sisteme de criptomonedă destinate să înlocuiească banii tradiționali. Banii tradiționali sunt denumiți și fiat (de la Fiat Money).
Blockchain-ul asigură stocarea și imuabilitatea tranzacțiilor înregistrate în blocuri, motiv pentru care poate fi utilizat pentru crearea sistemelor de criptomonedă. Acesta conține întreaga istorie a transferurilor de fonduri cripto între diferiți utilizatori (conturi), astfel încât fiecare operațiune poate fi urmărită.

Deși operațiunile din cadrul sistemelor de criptomonedă pot fi anonyme, retragerea criptomonedei și schimbul acesteia pe bani fiat duc de obicei la desfășurarea identității posesorului activului de criptomonedă.

Așa-numitele contracte inteligente, care sunt software ce funcționează pe rețeaua Ethereum, permit automatizarea procesului de încheiere a acordurilor și controlul executării acestora. Acest lucru este deosebit de eficient atunci când plata pentru tranzacție se face în criptomonedă Ether.

Blockchain-ul Ethereum și contractele inteligente Ethereum, scrise în limbajul de programare Solidity, pot fi utilizate, de exemplu, în următoarele domenii:

  • alternative la notarizarea documentelor;
  • stocarea registrului obiectelor imobiliare și a informațiilor despre tranzacțiile cu obiecte imobiliare;
  • stocarea informațiilor despre drepturile de autor pentru obiectele de proprietate intelectuală (cărți, imagini, lucrări muzicale etc.);
  • crearea sistemelor de votare independente;
  • domeniul financiar și bancar;
  • logistica la scară internațională, urmărirea mișcărilor de mărfuri;
  • stocarea datelor personale ca alternativă la sistemele de identificare;
  • transacții sigure în domeniul comercial;
  • stocarea rezultatelor examinării medicale, precum și a istoricului procedurilor prescrise.

Problemele cu blockchain-ul

Dar, desigur, nu totul este atât de simplu pe cât ar putea părea!

Există probleme cu verificarea datelor înainte de a fi adăugate în blockchain (de exemplu, nu sunt ele false?), probleme de securitate în software-ul de sistem și aplicație utilizat pentru a lucra cu blockchain-ul, probleme cu posibilitatea utilizării metodelor de inginerie socială pentru a fura accesul la portofelele de criptomonedă etc.

Din nou, dacă vorbim despre un blockchain privat, deținut de o persoană sau o organizație, nivelul de încredere aici nu va fi mai mare decât nivelul de încredere în acea persoană sau organizație.

De asemenea, trebuie să ținem cont de faptul că datele înregistrate în blockchain devin accesibile pentru toată lumea. În acest sens, blockchain-ul (în special cel public) nu este potrivit pentru stocarea informațiilor confidențiale. Totuși, faptul că informația din blockchain nu poate fi modificată poate ajuta la prevenirea sau investigarea diferitelor tipuri de fraude.

Aplicațiile descentralizate Ethereum vor fi convenabile dacă utilizarea lor se face pe baza criptomonedelor. Cu cât mai mulți oameni dețin criptomonede sau sunt dispuși să le achiziționeze, cu atât aplicațiile DApp și contractele inteligente vor câștiga mai multă popularitate.

Printre problemele comune ale blockchain-ului care îngreunează aplicarea sa practică se numără viteza limitată de adăugare a noilor blocuri și costul relativ ridicat al tranzacțiilor. Totuși, tehnologiile din acest domeniu se dezvoltă activ și există speranțe că problemele tehnice vor fi rezolvate în timp.

O altă problemă este că contractele inteligente ale blockchain-ului Ethereum funcționează într-un mediu izolat al mașinilor virtuale și nu au acces la date din lumea reală. În special, programul contractului inteligent nu poate citi singur date de pe site-uri sau de la dispozitive fizice (senzori, contacte etc.) și de asemenea nu poate trimite date către dispozitive externe. Această problemă și metodele de rezolvare a ei vor fi discutate în cadrul lecției dedicate așa-numitelor Oracle - intermediari informaționali pentru contractele inteligente.

Există, de asemenea, limitări legislative. În unele țări, de exemplu, utilizarea criptomonedei ca instrument de plată este interzisă, dar este permisă deținerea acesteia ca un activ digital, similar cu titlurile de valoare. Aceste active pot fi cumpărate și vândute pe burse. În orice caz, atunci când creați un proiect care lucrează cu criptomonede, este necesar să vă familiarizați cu legislația țării în care proiectul dumneavoastră este supus jurisdicției.

Cum se formează lanțul blockchain

Așa cum am menționat, blockchain-ul reprezintă un șir simplu de blocuri de date. Mai întâi se formează primul bloc din acest șir, apoi la acesta se adaugă al doilea și așa mai departe. Se presupune că datele tranzacțiilor sunt stocate în blocuri și sunt adăugate în cel mai recent bloc.

În figura 1.1 am arătat cea mai simplă variantă a secvenței de blocuri, unde primul bloc se referă la următorul.

Cartea „Crearea contractelor inteligente Solidity pentru blockchain-ul Ethereum. Ghid practic”
Figura 1.1. Secvența simplă a blocurilor

În această variantă, însă, este foarte ușor să falsifici conținutul oricărui bloc din șir, deoarece blocurile nu conțin informații pentru a proteja împotriva modificărilor. Având în vedere că blockchain-ul este destinat utilizării de către persoane și companii între care nu există încredere, se poate concluziona că această metodă de stocare a datelor nu este potrivită pentru blockchain.

Să ne ocupăm de protecția blocurilor împotriva falsificării. În prima etapă, vom încerca să protejăm fiecare bloc cu un cod de verificare (figura 1.2).

Cartea „Crearea contractelor inteligente Solidity pentru blockchain-ul Ethereum. Ghid practic”
Figura 1.2. Adăugăm protecția datelor blocurilor cu un cod de verificare

Acum, un atacator nu poate modifica pur și simplu un bloc, deoarece acesta conține codul de verificare al datelor blocului. Verificarea codului de verificare va arăta că datele au fost modificate.

Pentru a calcula codul de verificare, se poate utiliza una dintre funcțiile de hash, cum ar fi MD-5, SHA-1, SHA-256 etc. Funcțiile de hash calculează o anumită valoare (de exemplu, sub formă de șir de text de lungime fixă) în urma executării unor operațiuni ireversibile asupra blocului de date. Operațiunile depind de tipul funcției de hash.

Chiar și o mică modificare a conținutului blocului de date va schimba valoarea funcției de hash. Analizând valoarea funcției de hash, nu este posibil să se reconstituie blocul de date pentru care aceasta a fost calculată.

Va fi suficientă o astfel de protecție? Din păcate, nu.

În acest sistem, codul de verificare (funcția de hash) protejează doar blocurile individuale, dar nu întreaga secvență de blocuri. Știind algoritmul de calcul al funcției de hash, un atacator poate schimba cu ușurință conținutul unui bloc. De asemenea, nimic nu îl va împiedica să șteargă blocuri din lanț sau să adauge altele noi.

Pentru a proteja întreaga secvență în ansamblu, se poate stoca în fiecare bloc, împreună cu datele, și hash-ul datelor blocului precedent (figura 1.3).

Cartea „Crearea contractelor inteligente Solidity pentru blockchain-ul Ethereum. Ghid practic”
Figura 1.3. Adăugăm în blocul de date hash-ul blocului anterior

În acest sistem, pentru a modifica un bloc, trebuie să recalculăm funcțiile hash ale tuturor blocurilor următoare. Ar părea că nu e o problemă, nu?

În blockchain-urile reale, au fost create dificultăți artificiale suplimentare pentru a adăuga noi blocuri — se folosesc algoritmi care necesită multe resurse de calcul. Având în vedere că pentru a efectua modificări în bloc trebuie să recalculezi nu doar acel bloc, ci toate cele următoare, va fi extrem de complicat.

De asemenea, să ne amintim că datele blockchain-ului sunt stocate (duplicate) pe numeroase noduri ale rețelei, adică se utilizează stocarea descentralizată. Aceasta complică considerabil falsificarea unui bloc, deoarece modificările trebuie efectuate pe toate nodurile rețelei.

Știind că blocurile păstrează informații despre blocul anterior, putem verifica conținutul tuturor blocurilor din lanț.

Blockchain-ul Ethereum

Blockchain-ul Ethereum este o platformă pe care se pot crea aplicații distribuite DApp. Spre deosebire de alte platforme, Ethereum permite utilizarea așa-numitelor contracte inteligente (smart contracts), scrise în limbajul de programare Solidity.

Această platformă a fost creată în 2013 de Vitalik Buterin, fondatorul revistei Bitcoin Magazine și a fost lansată în 2015. Tot ce vom studia sau face în cursul nostru de învățare se referă exact la blockchain-ul Ethereum și la contractele inteligente Solidity.

Mineritul sau cum se creează blocuri

Mineritul (mining) este un proces destul de complex și consumator de resurse pentru adăugarea de blocuri noi în cadrul blockchain-ului, nu doar «extragerea criptomonedelor». Mineritul asigură funcționarea blockchain-ului, deoarece acest proces este responsabil pentru adăugarea tranzacțiilor în blockchain-ul Ethereum.

Persoanele și organizațiile care se ocupă cu adăugarea de blocuri sunt numite mineri (miner).
Software-ul (SO) care funcționează pe nodurile minerilor încearcă să găsească pentru ultimul bloc un parametru de hash numit Nonce, astfel încât să obțină o valoare specifică a funcției hash, determinată de rețea. Algoritmul de hash Ethash, utilizat în Ethereum, permite obținerea valorii Nonce doar prin încercări successive.

Dacă nodul minerului a găsit un nonce corect, aceasta este cunoscută sub numele de dovadă a muncii (PoW, Proof-of-work). În acest caz, dacă blocul va fi adăugat în rețeaua Ethereum, minerul primește o recompensă în moneda rețelei — Ether. La momentul redactării acestei cărți, recompensa este de 5 Ether, însă în timp aceasta va fi redusă.

Astfel, minerii Ethereum asigură funcționarea rețelei prin adăugarea de blocuri și primesc în schimb bani în criptomonedă. Pe internet veți găsi multe informații despre mineri și minerit, iar noi ne vom concentra pe crearea de contracte Solidity și aplicații descentralizate DApp în rețeaua Ethereum.

Rezumatul lecției

În prima lecție, v-ați familiarizat cu blockchain-ul și ați aflat că acesta reprezintă o secvență de blocuri compusă într-un mod special. Conținutul blocurilor înregistrate anterior nu poate fi modificat, deoarece pentru aceasta ar fi necesară recalcularea tuturor blocurilor ulterioare pe multe noduri din rețea, ceea ce necesită foarte multe resurse și timp.

Blockchain-ul poate fi utilizat pentru a păstra rezultatele tranzacțiilor. Scopul său principal este organizarea unui executare sigură a tranzacțiilor între părți (persoane și organizații) între care nu există încredere. Ați aflat în ce domenii specifice ale afacerii și în ce sfere poate fi utilizat blockchain-ul Ethereum și contractele inteligente Solidity. Acestea includ sectorul bancar, înregistrarea drepturilor de proprietate, documente etc.

De asemenea, ați aflat că utilizarea blockchain-ului poate prezenta diverse probleme. Acestea includ probleme de verificare a informațiilor adăugate în blockchain, viteza de funcționare a acestuia, costul tranzacțiilor, problema schimbului de date între contractele inteligente și lumea reală, precum și atacuri potențiale ale răufăcătorilor care vizează furtul fondurilor criptomonedelor din conturile utilizatorilor.

De asemenea, am prezentat pe scurt mineritul ca proces de adăugare a noilor blocuri în blockchain. Mineritul este necesar pentru execuția tranzacțiilor. Cei care se ocupă cu mineritul asigură funcționarea blockchain-ului și primesc în schimb recompense în criptomonedă.

Lecția 2. Pregătirea mediului de lucru în sistemele de operare Ubuntu și DebianAlegerea sistemului de operare
Instalarea utilitarilor necesare
Instalarea Geth și Swarm pe Ubuntu
Instalarea Geth și Swarm pe Debian
Pregătirea preliminară
Încărcarea distribuției Go
Configurarea variabilelor de mediu
Verificarea versiunii Go
Instalarea Geth și Swarm
Creăm un blockchain privat
Готовим файл genesis.json
Creăm un director pentru muncă
Creăm un cont
Inițializăm nodul
Parametrii de pornire ai nodului
Ne conectăm la nodul nostru
Gestionarea mineritului și verificarea soldului
Închiderea consolei Geth
Rezumatul lecției

Lecția 3. Pregătirea mediului de lucru pe Raspberry Pi 3Pregătirea Raspberry Pi 3 pentru muncă
Instalarea Rasberian
Instalarea actualizărilor
Activarea accesului SSH
Setarea unei adrese IP statice
Instalarea utilitarilor necesare
Instalarea Go
Încărcarea distribuției Go
Configurarea variabilelor de mediu
Verificarea versiunii Go
Instalarea Geth și Swarm
Creăm un blockchain privat
Verificarea contului și a soldului
Rezumatul lecției

Lecția 4. Conturi și transferul de fonduri între conturiVizualizarea și adăugarea conturilor
Vizualizarea listei de conturi
Adăugarea unui cont
Parametrii comenzii geth account
Parolele conturilor
Criptomoneda în Ethereum
Unitățile monetare Ethereum
Determinarea soldului curent al conturilor noastre
Transferul de fonduri de la un cont la altul
Metoda eth.sendTransaction
Vizualizarea stării tranzacției
Chitanța tranzacției
Rezumatul lecției

Lecția 5. Publicarea primului contractContracte inteligente în Ethereum
Executarea contractului inteligent
Mașina virtuală Ethereum
Mediul de dezvoltare integrat Remix Solidity IDE
Pornirea compilării
Apelarea funcțiilor contractului
Publicarea contractului în rețeaua privată
Obținem definiția ABI și codul binar al contractului
Publicarea contractului
Verificarea stării tranzacției de publicare a contractului
Apelarea funcțiilor contractului
Compilatorul de pachete solc
Instalarea solc în Ubuntu
Instalarea solc în Debian
Compilarea contractului HelloSol
Publicarea contractului
Instalarea solc pe Rasberian
Rezumatul lecției

Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Instalarea în Ubuntu
Instalarea în Debian
Instalarea și pornirea Ganache-cli
Instalarea Web3
Instalarea solc
Instalarea Node.js pe Rasberian
Script pentru obținerea listei de conturi în consolă
Script pentru publicarea contractului inteligent
Pornirea și obținerea parametrilor
Obținerea parametrilor de pornire
Compilarea contractului
Deblocarea contului
Încărcarea ABI și a codului binar al contractului
Estimarea cantității necesare de gaz
Crearea obiectului și pornirea publicării contractului
Pornirea scriptului de publicare a contractului
Apelarea funcțiilor contractului inteligent
Este posibilă actualizarea contractului inteligent publicat
Lucrul cu Web3 versiunea 1.0.x
Obținem lista conturilor
Publicarea contractului
Apelarea funcțiilor contractului
Transferul de fonduri de la un cont la altul
Transfer de fonduri către contul contractului
Actualizăm contractul inteligent HelloSol
Creăm un script pentru vizualizarea soldului contului
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Reîncărcăm contul contractului inteligent
Rezumatul lecției

Lecția 7. Introducere în TruffleInstalarea Truffle
Creăm proiectul HelloSol
Crearea directorului și fișierelor proiectului
Director contracts
Catalogul migrations
Catalogul test
Файл truffle-config.js
Compilarea contractului HelloSol
Lansarea publicației contractului
Apelarea funcțiilor contractului HelloSol în invitația Truffle
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Instalarea modulului truffle-contract
Apelarea funcțiilor contractului getValue și getString
Apelarea funcțiilor contractului setValue și setString
Modificarea contractului și republicarea
Lucrul cu Web3 versiunea 1.0.x
Facem modificări în smart contractul HelloSol
Scripturi pentru apelarea metodelor contractului
Testarea în Truffle
Test pe Solidity
Test pe JavaScript
Rezumatul lecției

Lecția 8. Tipuri de date SolidityContract pentru studierea tipurilor de date
Tipuri de date logice
Numere întregi fără semn și întregi cu semn
Numere cu virgulă mobilă
Adresa
Variabile de tipuri complexe
Matrice fixe
Matrice dinamice
Enumerare
Structuri
Dicționare mapping
Rezumatul lecției

Lecția 9. Migrarea contractelor în rețea privată și în rețeaua RinkebyPublicarea contractului din Truffle în rețeaua privată Geth
Pregătirea nodului în rețeaua privată
Pregătirea contractului pentru funcționare
Compilarea și migrarea contractului în rețeaua Truffle
Lansarea migrației în rețeaua locală geth
Extracție artefacte Truffle
Publicarea contractului din Truffle în rețeaua de testare Rinkeby
Pregătirea nodului Geth pentru funcționarea cu Rinkeby
Sincronizarea nodului
Adăugarea conturilor
Umplerea contului Rinkeby cu ether
Lansarea migrației contractului în rețeaua Rinkeby
Vizualizarea informațiilor despre contract în rețeaua Rinkeby
Consola Truffle pentru rețeaua Rinkeby
O modalitate mai simplă de a apela funcțiile contractului
Вызов методов контракта при помощи Node.js
Transfer de fonduri între conturi în consola Truffle pentru Rinkeby
Rezumatul lecției

Lecția 10. Stocare descentralizată de date Ethereum SwarmCum funcționează Ethereum Swarm
Instalarea și lansarea Swarm
Operațiuni cu fișiere și directoare
Încărcarea unui fișier în Ethereum Swarm
Citirea unui fișier din Ethereum Swarm
Vizualizarea manifestului fișierului încărcat
Încărcarea directoarelor cu subdirectoare
Citirea unui fișier din directorul încărcat
Utilizarea unui gateway public Swarm
Обращение к Swarm из скриптов Node.js
Modulul Perl Net::Ethereum::Swarm
Instalarea modulului Net::Ethereum::Swarm
Scrierea și citirea datelor
Rezumatul lecției

Lecția 11. Cadru Web3.py pentru interacțiunea cu Ethereum pe PythonInstalarea Web3.py
Actualizarea și instalarea pachetelor necesare
Instalarea modulului easysolc
Publicarea contractului cu Web3.py
Compilarea contractului
Conectarea la furnizor
Executarea publicării contractului
Salvarea adresei contractului și ABI în fișier
Pornirea scriptului de publicare a contractului
Apelarea metodelor contractului
Citirea adresei și ABI-ului contractului din fișierul JSON
Conectarea la furnizor
Crearea obiectului contractului
Apelarea metodelor contractului
Truffle și Web3.py
Rezumatul lecției

Lecția 12. OraclePoate un smart contract avea încredere în datele din lumea exterioară
Oracle ca intermediari informaționali pentru blockchain
Sursa de date
Cod pentru reprezentarea datelor din sursă
Oracle pentru înregistrarea cursului de schimb în blockchain
Contract USDRateOracle
Actualizarea cursului de schimb în smart contract
Utilizarea furnizorului Web Socket
Așteptând evenimentul RateUpdate
Gestionarea evenimentului RateUpdate
Inițierea actualizării datelor în smart contract
Rezumatul lecției

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster