Cartea „Crearea de contracte inteligente Solidity pentru blockchain-ul Ethereum. Ghid practic"

Cartea „Crearea de contracte inteligente Solidity pentru blockchain-ul Ethereum. Ghid practic"
De mai bine de un an lucrez la cartea „Crearea de contracte inteligente solide pentru Ethereum Blockchain. Ghid practic”, iar acum această lucrare este finalizată, iar cartea publicat și disponibil în litri.

Sper că cartea mea vă va ajuta să începeți rapid să creați contacte inteligente Solidity și DApps distribuite pentru blockchain-ul Ethereum. Constă din 12 lecții cu sarcini practice. După ce le-a finalizat, cititorul va putea să-și creeze propriile noduri locale Ethereum, să publice contracte inteligente și să apeleze metodele lor, să schimbe date între lumea reală și contractele inteligente folosind oracole și să lucreze cu rețeaua de depanare a testului Rinkeby.

Cartea se adresează tuturor celor care sunt interesați de tehnologiile avansate din domeniul blockchain-urilor și doresc să dobândească rapid cunoștințe care să le permită să facă o muncă interesantă și promițătoare.

Mai jos veți găsi cuprinsul și primul capitol al cărții (tot pe Litre sunt disponibile fragmente din carte). Sper să primesc feedback, comentarii și sugestii. Voi încerca să țin cont de toate acestea atunci când voi pregăti următoarea ediție a cărții.

CuprinsIntroducereCartea noastră este destinată celor care doresc nu numai să înțeleagă principiile blockchain-ului Ethereum, ci și să dobândească abilități practice în crearea DApp-urilor distribuite în limbajul de programare Solidity pentru această rețea.

Este mai bine nu doar să citiți această carte, ci să lucrați cu ea, îndeplinind sarcini practice descrise în lecții. Pentru a funcționa, veți avea nevoie de un computer local, un server virtual sau cloud cu sistemul de operare Debian sau Ubuntu instalat. De asemenea, puteți utiliza Raspberry Pi pentru a efectua multe sarcini.

La prima lecție Vom analiza principiile de funcționare ale blockchain-ului Ethereum și terminologia de bază și vom vorbi, de asemenea, despre unde poate fi utilizat acest blockchain.

Scop a doua lectie — creați un nod blockchain Ethereum privat pentru lucrări ulterioare în cadrul acestui curs pe un server Ubuntu și Debian. Ne vom uita la caracteristicile instalării utilităților de bază, cum ar fi geth, care asigură funcționarea nodului nostru blockchain, precum și a demonului de stocare a datelor descentralizată.

A treia lecție vă va învăța cum să experimentați cu Ethereum pe un microcomputer Raspberry Pi ieftin. Veți instala sistemul de operare (OS) Rasberian pe Raspberry Pi, utilitarul Geth care alimentează nodul blockchain și demonul de stocare de date descentralizat Swarm.

Lecția a patra este dedicat conturilor și unităților criptomonede din rețeaua Ethereum, precum și modalităților de transfer de fonduri dintr-un cont în altul din consola Geth. Veți învăța cum să creați conturi, să inițiați tranzacții de transfer de fonduri și să obțineți starea tranzacției și chitanța.

În a cincea lecție Veți face cunoștință cu contractele inteligente din rețeaua Ethereum și veți afla despre executarea lor de către mașina virtuală Ethereum.

Veți crea și publica primul dvs. contract inteligent în rețeaua privată Ethereum și veți afla cum să apelați funcțiile acestuia. Pentru a face acest lucru, veți folosi Remix Solidity IDE. De asemenea, veți învăța cum să instalați și să utilizați compilatorul batch solc.
De asemenea, vom vorbi despre așa-numita interfață binară a aplicației (ABI) și vă vom învăța cum să o utilizați.

A șasea lecție este dedicat creării de scripturi JavaScript care rulează Node.js și efectuării de operațiuni cu contracte inteligente Solidity.

Veți instala Node.js pe sistemul de operare Ubuntu, Debian și Rasberian, veți scrie scripturi pentru a publica un contract inteligent în rețeaua locală Ethereum și veți apela funcțiile acestuia.

În plus, veți învăța cum să transferați fonduri între conturi obișnuite folosind scripturi, precum și cum să le creditați în conturi de contract inteligente.

În a șaptea lecție Veți învăța cum să instalați și să utilizați cadrul Truffle, popular printre dezvoltatorii de contracte inteligente Solidity. Veți învăța cum să creați scripturi JavaScript care apelează funcții de contract utilizând modulul truffle-contract și să vă testați contractul inteligent folosind Truffle.

A opta lecție dedicat tipurilor de date Solidity. Veți scrie contracte inteligente care funcționează cu tipuri de date, cum ar fi numere întregi semnate și nesemnate, numere semnate, șiruri, adrese, variabile complexe, matrice, enumerații, structuri și dicționare.

În a noua lecție Veți fi cu un pas mai aproape de a crea contracte inteligente pentru rețeaua principală Ethereum. Veți învăța cum să publicați contracte folosind Truffle în rețeaua privată Geth, precum și pe testnetul Rinkeby. Depanarea unui contract inteligent pe rețeaua Rinkeby este foarte utilă înainte de a-l publica pe rețeaua principală - aproape totul este real acolo, dar gratuit.

Ca parte a lecției, veți crea un nod de rețea de testare Rinkeby, îl veți finanța cu fonduri și veți publica un contract inteligent.

Lectia 10 dedicat stocării de date distribuite Ethereum Swarm. Folosind stocarea distribuită, economisiți stocarea unor cantități mari de date pe blockchain-ul Ethereum.

În acest tutorial, veți crea o stocare Swarm locală, operațiuni de scriere și citire pe fișiere și directoare de fișiere. În continuare, veți învăța cum să lucrați cu gateway-ul public Swarm, să scrieți scripturi pentru a accesa Swarm din Node.js, precum și cum să utilizați modulul Perl Net::Ethereum::Swarm.

Obiectivul lecției 11 — stăpânește lucrul cu contracte inteligente Solidity folosind limbajul de programare popular Python și cadrul Web3.py. Veți instala cadrul, veți scrie scripturi pentru a compila și a publica contractul inteligent și veți apela funcțiile acestuia. În acest caz, Web3.py va fi folosit atât pe cont propriu, 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 primi date de pe site-uri web, dispozitive IoT, diverse dispozitive ș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 primește cursul de schimb curent între USD și ruble de pe site-ul Băncii Centrale a Federației Ruse.

Lecția 1. Pe scurt despre blockchain și rețeaua EthereumScopul lecției: familiarizați-vă cu principiile de funcționare ale blockchain-ului Ethereum, domeniile sale de aplicare și terminologia de bază.
Sarcini practice: nu sunt incluse în această lecție.

Nu există astăzi un dezvoltator de software care să nu fi auzit nimic despre tehnologia blockchain (Blockchain), criptomonede (Cryptocurrency sau Crypto Currency), Bitcoin (Bitcoin), oferta inițială de monede (ICO, Oferta inițială de monede), contracte inteligente (Smart Contract), precum și alte concepte și termeni legați de blockchain.

Tehnologia Blockchain deschide noi piețe și creează locuri de muncă pentru programatori. Dacă înțelegeți toate complexitățile tehnologiilor criptomonede și tehnologiilor smart contract, atunci nu ar trebui să aveți probleme în aplicarea acestor cunoștințe în practică.

Trebuie spus că există multe speculații în jurul criptomonedelor și blockchain-urilor. Vom lăsa deoparte discuțiile despre modificările ratelor criptomonedei, crearea piramidelor, complexitățile legislației criptomonedelor etc. În cursul nostru de formare ne vom concentra în principal pe aspectele tehnice ale utilizării contractelor inteligente pe blockchain-ul Ethereum și dezvoltării așa-numitelor aplicații descentralizate (DApps).

Ce este blockchain-ul

Blockchain (Block Chain) este un lanț de blocuri de date conectate între ele într-un anumit mod. La începutul lanțului se află primul bloc, care se numește bloc primar (bloc de geneză) sau bloc de geneză. Este urmat de al doilea, apoi de al treilea și așa mai departe.

Toate aceste blocuri de date sunt duplicate automat pe numeroase noduri ale rețelei blockchain. Acest lucru asigură stocarea descentralizată a datelor blockchain.
Vă puteți gândi la un sistem blockchain ca la un număr mare de noduri (servere fizice sau virtuale) conectate într-o rețea și care reproduc toate modificările din lanțul de blocuri de date. Acesta este ca un computer gigant multi-server, iar nodurile unui astfel de computer (servere) pot fi împrăștiate în toată lumea. Și și tu poți să-ți adaugi computerul la rețeaua blockchain.

Baza de date distribuită

Un blockchain poate fi gândit ca o bază de date distribuită care este replicată în toate nodurile rețelei blockchain. În teorie, blockchain-ul va fi operațional atâta timp cât funcționează cel puțin un nod, stocând toate blocurile blockchain-ului.

Registrul de date distribuit

Blockchain poate fi gândit ca un registru distribuit de date și operațiuni (tranzacții). Un alt nume pentru un astfel de registru este un registru.

Datele pot fi adăugate într-un registru distribuit, dar nu pot fi modificate sau șterse. Această imposibilitate se realizează, în special, prin utilizarea algoritmilor criptografici, algoritmi speciali pentru adăugarea de blocuri în lanț și stocarea descentralizată a datelor.

Când adăugați blocuri și efectuați operațiuni (tranzacții), sunt folosite cheile private și publice. Ei restricționează utilizatorii blockchain, oferindu-le doar acces la propriile lor blocuri de date.

Tranzacție

Blockchain stochează informații despre operațiuni (tranzacții) în blocuri. În același timp, tranzacțiile vechi, deja finalizate, nu pot fi anulate sau modificate. Tranzacțiile noi sunt stocate în blocuri noi, adăugate.

În acest fel, întregul istoric al tranzacțiilor poate fi înregistrat neschimbat pe blockchain. Prin urmare, blockchain poate fi folosit, de exemplu, pentru a stoca în siguranță tranzacții bancare, informații despre drepturile de autor, istoricul modificărilor proprietarilor de proprietăți etc.

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

Blockchain-uri publice și private

Trebuie remarcat aici că tot ceea ce s-a spus este adevărat doar pentru așa-numitele rețele publice blockchain, care nu pot fi controlate de nicio persoană fizică sau juridică, agenție guvernamentală sau guvern.
Așa-numitele rețele private blockchain sunt sub controlul deplin al creatorilor lor și orice este posibil acolo, de exemplu, o înlocuire completă a tuturor blocurilor lanțului.

Aplicații practice ale blockchain-ului

La ce poate fi util blockchain-ul?

Pe scurt, blockchain-ul vă permite să efectuați în siguranță tranzacții (tranzacții) între persoane sau companii care nu au încredere unele în altele. Datele înregistrate în blockchain (tranzacții, date personale, documente, certificate, contracte, facturi etc.) nu pot fi falsificate sau înlocuite după înregistrare. Prin urmare, pe baza blockchain-ului, este posibil să se creeze, de exemplu, registre distribuite de încredere ale diferitelor tipuri de documente.

Desigur, știți că sistemele de criptomonede sunt create pe baza blockchain-urilor, concepute pentru a înlocui banii de hârtie obișnuiți. Banii de hârtie se mai numesc și fiat (de la Fiat Money).
Blockchain asigură stocarea și imuabilitatea tranzacțiilor înregistrate în blocuri, motiv pentru care poate fi folosit pentru a crea sisteme de criptomonede. Conține întregul istoric al transferului de fonduri cripto între diferiți utilizatori (conturi), iar orice operațiune poate fi urmărită.

Deși tranzacțiile în cadrul sistemelor de criptomonede pot fi anonime, retragerea criptomonedei și schimbul acesteia cu bani fiat are ca rezultat, de obicei, dezvăluirea identității proprietarului activului criptomonedei.

Așa-numitele contracte inteligente, care sunt software care rulează pe rețeaua Ethereum, vă permit să automatizați procesul de încheiere a tranzacțiilor și să monitorizați implementarea acestora. Acest lucru este eficient mai ales dacă plata tranzacției este efectuată folosind criptomoneda Ether.

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

  • o alternativă la legalizarea documentelor;
  • stocarea unui registru al obiectelor imobiliare și informații despre tranzacțiile cu obiecte imobiliare;
  • stocarea informațiilor privind drepturile de autor privind proprietatea intelectuală (cărți, imagini, lucrări muzicale etc.);
  • crearea unor sisteme de vot independente;
  • Finanțe și Bănci;
  • logistica la scara internationala, urmarirea circulatiei marfurilor;
  • stocarea datelor cu caracter personal ca analog cu un sistem de carte de identitate;
  • tranzacții securizate în domeniul comercial;
  • stocarea rezultatelor examinărilor medicale, precum și istoricul procedurilor prescrise

Probleme cu blockchain

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

Există probleme cu verificarea datelor înainte de a le adăuga în blockchain (de exemplu, sunt false?), probleme cu securitatea sistemului și a software-ului aplicației folosite pentru a lucra cu blockchain, probleme cu posibilitatea utilizării metodelor de inginerie socială pentru a fura accesul la portofelele criptomonede etc. .P.

Din nou, dacă nu vorbim despre un blockchain public, ale cărui noduri sunt împrăștiate în toată lumea, ci despre un blockchain privat care aparține unei persoane sau organizații, atunci nivelul de încredere de aici nu va fi mai mare decât nivelul de încredere. în această persoană sau în această organizaţie.

De asemenea, trebuie luat în considerare faptul că datele înregistrate în blockchain devin disponibile pentru toată lumea. În acest sens, blockchain (în special public) nu este potrivit pentru stocarea informațiilor confidențiale. Cu toate acestea, faptul că informațiile despre blockchain nu pot fi modificate poate ajuta la prevenirea sau investigarea diferitelor tipuri de activități frauduloase.

Aplicațiile descentralizate Ethereum vor fi convenabile dacă plătiți pentru utilizarea lor cu criptomonede. Cu cât sunt mai mulți oameni care dețin criptomonede sau sunt dispuși să o achiziționeze, cu atât DApps și contractele inteligente vor deveni mai populare.

Problemele comune cu blockchain-ul care împiedică aplicarea sa practică includ viteza limitată cu care pot fi adăugate noi blocuri și costul relativ ridicat al tranzacțiilor. Dar tehnologia 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 pe blockchain-ul Ethereum funcționează într-un mediu izolat de mașini virtuale și nu au acces la date din lumea reală. În special, programul de contract inteligent nu poate citi în sine date de pe site-uri sau orice dispozitiv fizic (senzori, contacte etc.) și, de asemenea, nu poate transmite date către niciun dispozitiv extern. Vom discuta despre această problemă și modalități de a o rezolva într-o lecție dedicată așa-numitelor Oracole - intermediari de informații ai contractelor inteligente.

Există și restricții legale. În unele țări, de exemplu, este interzisă utilizarea criptomonedei ca mijloc de plată, dar o puteți deține ca un fel de activ digital, cum ar fi titlurile de valoare. Astfel de active pot fi cumpărate și vândute la bursă. În orice caz, atunci când creați un proiect care funcționează cu criptomonede, trebuie să vă familiarizați cu legislația țării sub a cărei jurisdicție se află proiectul dvs.

Cum se formează un lanț blockchain

După cum am spus deja, blockchain este un simplu lanț de blocuri de date. Mai întâi, se formează primul bloc al acestui lanț, apoi se adaugă al doilea și așa mai departe. Se presupune că datele tranzacțiilor sunt stocate în blocuri și sunt adăugate la cel mai recent bloc.

În fig. 1.1 am arătat cea mai simplă versiune a unei secvențe de blocuri, unde primul bloc se referă la următorul.

Cartea „Crearea de contracte inteligente Solidity pentru blockchain-ul Ethereum. Ghid practic"
Orez. 1.1. Secvență simplă de blocuri

Cu această opțiune, totuși, este foarte ușor să modificați conținutul oricărui bloc din lanț, deoarece blocurile nu conțin nicio informație pentru a proteja împotriva modificărilor. Având în vedere că blockchain-ul este destinat a fi folosit de persoane și companii între care nu există încredere, putem concluziona că această metodă de stocare a datelor nu este potrivită pentru blockchain.

Să începem să protejăm blocurile de contrafacere. În prima etapă, vom încerca să protejăm fiecare bloc cu o sumă de control (Fig. 1.2).

Cartea „Crearea de contracte inteligente Solidity pentru blockchain-ul Ethereum. Ghid practic"
Orez. 1.2. Adăugarea de protecție pentru aceste blocuri cu o sumă de control

Acum un atacator nu poate schimba pur și simplu blocul, deoarece conține suma de control a datelor blocului. Verificarea sumei de control va arăta că datele au fost modificate.

Pentru a calcula suma de control, puteți utiliza una dintre funcțiile hashing, cum ar fi MD-5, SHA-1, SHA-256 etc. Funcțiile hash calculează o valoare (de exemplu, un șir de text de lungime constantă) efectuând operații ireversibile pe un bloc de date. Operațiile depind de tipul funcției hash.

Chiar dacă conținutul blocului de date se modifică ușor, valoarea hash se va modifica și ea. Analizând valoarea funcției hash, este imposibil să se reconstituie blocul de date pentru care a fost calculat.

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

În această schemă, suma de control (funcția hash) protejează doar blocurile individuale, dar nu și întregul blockchain. Cunoscând algoritmul de calcul al funcției hash, un atacator poate înlocui cu ușurință conținutul unui bloc. De asemenea, nimic nu-l va împiedica să scoată blocuri din lanț sau să adauge altele noi.

Pentru a proteja întregul lanț în întregime, puteți stoca în fiecare bloc, împreună cu datele, și un hash al datelor din blocul anterior (Fig. 1.3).

Cartea „Crearea de contracte inteligente Solidity pentru blockchain-ul Ethereum. Ghid practic"
Orez. 1.3. Adăugați hash-ul blocului anterior la blocul de date

În această schemă, pentru a schimba un bloc, trebuie să recalculați funcțiile hash ale tuturor blocurilor ulterioare. S-ar părea, care este problema?

În blockchain-urile reale, se creează în plus dificultăți artificiale pentru adăugarea de noi blocuri - se folosesc algoritmi care necesită o mulțime de resurse de calcul. Având în vedere că pentru a face modificări la un bloc, trebuie să recalculați nu doar acest bloc, ci și pe toate blocurile ulterioare, acest lucru va fi extrem de dificil de făcut.

Să ne amintim, de asemenea, că datele blockchain sunt stocate (duplicate) pe numeroase noduri de rețea, de exemplu. Se folosește stocarea descentralizată. Și asta face mult mai dificilă contrafacerea unui bloc, pentru că trebuie făcute modificări la toate nodurile rețelei.

Deoarece blocurile stochează informații despre blocul anterior, este posibil să se verifice conținutul tuturor blocurilor din lanț.

Blockchain Ethereum

Blockchain-ul Ethereum este o platformă pe care pot fi create DApp-uri distribuite. 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 Bitcoin Magazine, și lansată în 2015. Tot ceea ce vom studia sau vom face în cursul nostru de formare se referă în mod specific la blockchain-ul Ethereum și a contractelor inteligente Solidity.

Exploatarea mineritului sau modul în care sunt create blocurile

Exploatarea mineritului este un proces destul de complex și consumatoare de resurse de adăugare de noi blocuri în lanțul blockchain și deloc „exploatarea criptomonedei”. Miningul asigură funcționalitatea blockchain-ului, deoarece acest proces este responsabil pentru adăugarea tranzacțiilor la blockchain-ul Ethereum.

Oamenii și organizațiile implicate în adăugarea de blocuri se numesc mineri.
Software-ul care rulează pe nodurile miner încearcă să găsească un parametru de hashing numit Nonce pentru ultimul bloc pentru a obține o anumită valoare hash specificată de rețea. Algoritmul de hashing Ethash utilizat în Ethereum vă permite să obțineți valoarea Nonce numai prin căutare secvențială.

Dacă nodul miner găsește valoarea Nonce corectă, atunci aceasta este așa-numita dovadă a muncii (PoW, Proof-of-work). În acest caz, dacă un bloc este adăugat în rețeaua Ethereum, minerul primește o anumită recompensă în moneda rețelei - Ether. La momentul scrierii, recompensa este 5 Ether, dar va fi redusă în timp.

Astfel, minerii Ethereum asigură funcționarea rețelei prin adăugarea de blocuri, și primesc bani criptomonede pentru asta. Există multe informații pe internet despre mineri și minerit, dar ne vom concentra pe crearea de contracte Solidity și DApp-uri în rețeaua Ethereum.

Rezumatul lecției

În prima lecție, v-ați familiarizat cu blockchain-ul și ați învățat că este o secvență special compusă de blocuri. Conținutul blocurilor înregistrate anterior nu poate fi modificat, deoarece aceasta ar necesita recalcularea tuturor blocurilor ulterioare pe multe noduri de rețea, ceea ce necesită o mulțime de resurse și timp.

Blockchain poate fi folosit pentru a stoca rezultatele tranzacțiilor. Scopul său principal este de a organiza tranzacții securizate între părți (persoane și organizații) între care nu există încredere. Ați învățat în ce domenii specifice de afaceri și în ce domenii pot fi folosite blockchain-ul Ethereum și contractele inteligente Solidity. Acesta este sectorul bancar, înregistrarea drepturilor de proprietate, documentele etc.

De asemenea, ați învățat că pot apărea diverse probleme atunci când utilizați blockchain. Acestea sunt probleme de verificare a informațiilor adăugate la blockchain, viteza blockchain-ului, costul tranzacțiilor, problema schimbului de date între contractele inteligente și lumea reală, precum și potențialele atacuri ale atacatorilor care vizează furtul de fonduri criptomonede din conturile utilizatorilor. .

De asemenea, am vorbit pe scurt despre minerit ca proces de adăugare de noi blocuri la blockchain. Mineritul este necesar pentru a finaliza tranzacțiile. Cei implicați în minerit asigură funcționarea blockchain-ului și primesc o recompensă în criptomonedă pentru asta.

Lecția 2. Pregătirea unui mediu de lucru în Ubuntu și Debian OSSelectarea unui sistem de operare
Instalarea utilitaților necesare
Instalarea Geth și Swarm pe Ubuntu
Instalarea Geth și Swarm pe Debian
ПредвР° рительнР° СЏ подготоваР°
Descărcarea distribuției Go
Setarea variabilelor de mediu
Se verifică versiunea Go
Instalarea Geth și Swarm
Crearea unui blockchain privat
Pregătirea fișierului genesis.json
Creați un director pentru muncă
Creați un cont
Pornirea inițializării nodului
Opțiuni de lansare a nodului
Conectați-vă la nodul nostru
Managementul minier și verificarea echilibrului
Închiderea consolei Geth
Rezumatul lecției

Lecția 3. Pregătirea mediului de lucru pe Raspberry Pi 3Pregătirea Raspberry Pi 3 pentru lucru
Instalarea Rasberian
Instalarea actualizărilor
Activarea accesului SSH
Setarea unei adrese IP statice
Instalarea utilitaților necesare
Instalarea Go
Descărcarea distribuției Go
Setarea variabilelor de mediu
Se verifică versiunea Go
Instalarea Geth și Swarm
Crearea unui blockchain privat
Verificarea contului și a soldului dvs
Rezumatul lecției

Lecția 4. Conturi și transferul de fonduri între conturiVizualizați și adăugați conturi
Vizualizați o listă de conturi
Adăugarea unui cont
opțiunile de comandă a contului geth
Parolele contului
Criptomonedă în Ethereum
Unități valutare Ethereum
Determinăm soldul curent al conturilor noastre
Transferați fonduri dintr-un cont în altul
metoda eth.sendTransaction
Vedeți starea tranzacției
Chitanța tranzacției
Rezumatul lecției

Lecția 5. Publicarea primului tău contractContracte inteligente în Ethereum
Execuție inteligentă a contractului
Mașină virtuală Ethereum
Mediu de dezvoltare integrat Remix Solidity IDE
Rularea compilației
Apelarea funcțiilor contractului
Publicarea unui contract pe o rețea privată
Obținerea definiției ABI și a codului binar al contractului
Publicarea contractului
Verificarea stării tranzacției de publicare a contractului
Apelarea funcțiilor contractului
Batch compilator solc
Instalarea solc pe Ubuntu
Instalarea solc pe Debian
Întocmirea contractului HelloSol
Publicarea contractului
Instalarea solc pe Rasberian
Rezumatul lecției

Lecția 6. Contracte inteligente și Node.jsInstalarea Node.js
Instalare pe Ubuntu
Instalare pe Debian
Instalarea și rularea Ganache-cli
Instalare Web3
Instalarea solc
Instalarea Node.js pe Rasberian
Script pentru a obține o listă de conturi în consolă
Script pentru publicarea unui contract inteligent
Lansați și obțineți parametri
Obținerea de opțiuni de lansare
Întocmirea contractului
Deblocarea contului dvs
Se încarcă codul binar ABI și contract
Estimarea cantității necesare de gaz
Creați un obiect și începeți să publicați un contract
Rularea scriptului de publicare a contractului
Apelarea funcțiilor smart contract
Este posibil să actualizați un contract inteligent publicat?
Lucrul cu Web3 versiunea 1.0.x
Obținerea unei liste de conturi
Publicarea contractului
Apelarea funcțiilor contractului
Transferați fonduri dintr-un cont în altul
Transferați fonduri în contul contractului
Actualizarea contractului inteligent HelloSol
Creați un script pentru a vedea soldul contului dvs
Adăugați un apel la funcția getBalance la scriptul call_contract_get_promise.js
Încărcăm contul de smart contract
Rezumatul lecției

Lecția 7. Introducere în TruffleInstalarea Truffle
Creați un proiect HelloSol
Crearea directorului de proiect și a fișierelor
Directorul de contracte
Migrari de catalog
Test de director
fișier truffle-config.js
Întocmirea contractului HelloSol
Începeți să publicați un contract
Apelarea funcțiilor contractului HelloSol într-un prompt Truffle
Apelarea funcțiilor contractuale HelloSol dintr-un script JavaScript care rulează Node.js
Instalarea modulului trufe-contract
Apelarea funcțiilor contractului getValue și getString
Apelarea funcțiilor contractuale setValue și setString
Modificarea contractului și republicarea
Lucrul cu Web3 versiunea 1.0.x
Efectuarea de modificări la contractul inteligent HelloSol
Scripturi pentru apelarea metodelor contractuale
Testare în trufe
Test de soliditate
Test JavaScript
Rezumatul lecției

Lecția 8. Tipuri de date de soliditateContract pentru învățarea tipurilor de date
Tipuri de date booleene
Întregi fără semn și numere întregi cu semn
Numerele cu punct fix
adresa
Variabile de tipuri complexe
Matrice de dimensiuni fixe
Matrice dinamice
Enumerare
Structuri
Cartografierea dicționarelor
Rezumatul lecției

Lecția 9. Migrarea contractelor către rețeaua privată și către rețeaua RinkebyPublicarea unui contract de la Truffle către rețeaua privată Geth
Pregătirea unui nod de rețea privată
Pregatirea unui contract de munca
Compilarea și migrarea unui contract în rețeaua Truffle
Se pornește migrarea rețelei locale geth
Obținerea de artefacte cu trufe
Publicarea unui contract de la Truffle la testnetul Rinkeby
Pregătirea unui nod Geth pentru a lucra cu Rinkeby
Sincronizarea nodurilor
Adăugarea conturilor
Încărcați contul Rinkeby cu eter
Se lansează migrarea contractului către rețeaua Rinkeby
Vizualizarea informațiilor contractului în rețeaua Rinkeby
Consola Truffle pentru Rețeaua Rinkeby
O modalitate mai simplă de a apela funcții contractuale
Apelarea metodelor de contract folosind Node.js
Transferați fonduri între conturi în consola Truffle pentru Rinkby
Rezumatul lecției

Lecția 10. Stocarea descentralizată a datelor Ethereum SwarmCum funcționează Ethereum Swarm?
Instalarea și lansarea Swarm
Operații cu fișiere și directoare
Încărcarea unui fișier în Ethereum Swarm
Citirea unui fișier din Ethereum Swarm
Vizualizați manifestul unui fișier încărcat
Se încarcă directoare cu subdirectoare
Citirea unui fișier dintr-un director descărcat
Folosind un gateway public Swarm
Accesarea Swarm din scripturile Node.js
Perl Net::Ethereum::Modul Swarm
Instalarea modulului Net::Ethereum::Swarm
Scrierea și citirea datelor
Rezumatul lecției

Lecția 11. Cadrul Web3.py pentru lucrul cu Ethereum în PythonInstalarea Web3.py
Actualizarea și instalarea pachetelor necesare
Instalarea modulului easysolc
Publicarea unui contract folosind Web3.py
Întocmirea contractului
Conectarea la un furnizor
Execut publicarea contractului
Salvarea adresei contractului și abi într-un fișier
Rularea scriptului de publicare a contractului
Apelarea metodelor de contract
Citirea adresei și abi unui contract dintr-un fișier JSON
Conectarea la un furnizor
Crearea unui obiect contract
Apelarea metodelor de contract
Truffle și Web3.py
Rezumatul lecției

Lecția 12. OracolePoate un contract inteligent să aibă încredere în datele din lumea exterioară?
Oracolele ca intermediari de informații blockchain
Sursă de date
Cod pentru a reprezenta datele din sursă
Oracle pentru înregistrarea cursului de schimb în blockchain
USDRateOracle Contract
Actualizarea cursului de schimb într-un contract inteligent
Utilizarea unui furnizor Web Socket
Se așteaptă evenimentul RateUpdate
Gestionarea evenimentului RateUpdate
Inițierea unei actualizări de date într-un contract inteligent
Rezumatul lecției

Sursa: www.habr.com

Adauga un comentariu