Libri “Krijimi i kontratave inteligjente të soliditetit për zinxhirin e bllokut Ethereum. Udhëzues praktik"

Libri “Krijimi i kontratave inteligjente të soliditetit për zinxhirin e bllokut Ethereum. Udhëzues praktik"
Për më shumë se një vit kam punuar në librin “Creating Solidity Smart Contracts for the Ethereum Blockchain. Udhëzues praktik”, dhe tani kjo punë ka përfunduar, dhe libri botuar dhe disponueshme në Litra.

Shpresoj se libri im do t'ju ndihmojë të filloni shpejt të krijoni kontakte inteligjente Solidity dhe DApp të shpërndara për zinxhirin bllokues Ethereum. Ai përbëhet nga 12 mësime me detyra praktike. Pas përfundimit të tyre, lexuesi do të jetë në gjendje të krijojë nyjet e veta lokale Ethereum, të publikojë kontrata inteligjente dhe të thërrasë metodat e tyre, të shkëmbejë të dhëna midis botës reale dhe kontratave inteligjente duke përdorur orakull dhe të punojë me rrjetin e korrigjimit të testimit Rinkeby.

Libri i drejtohet kujtdo që është i interesuar për teknologjitë e avancuara në fushën e blockchain dhe dëshiron të fitojë shpejt njohuri që i lejojnë ata të angazhohen në punë interesante dhe premtuese.

Më poshtë do të gjeni tabelën e përmbajtjes dhe kapitullin e parë të librit (gjithashtu në vazhdim Litrese janë në dispozicion fragmente të librit). Shpresoj të marr komente, komente dhe sugjerime. Të gjitha këto do të përpiqem t'i marr parasysh gjatë përgatitjes së botimit të ardhshëm të librit.

PërmbajtjeParaqitjeLibri ynë është menduar për ata që duan jo vetëm të kuptojnë parimet e blockchain Ethereum, por edhe të fitojnë aftësi praktike në krijimin e DApp-ve të shpërndara në gjuhën e programimit Solidity për këtë rrjet.

Është më mirë jo vetëm ta lexoni këtë libër, por të punoni me të, duke kryer detyra praktike të përshkruara në mësime. Për të punuar, do t'ju duhet një kompjuter lokal, server virtual ose cloud me Debian ose Ubuntu OS të instaluar. Ju gjithashtu mund të përdorni Raspberry Pi për të kryer shumë detyra.

Në mësimin e parë Ne do të shikojmë parimet e funksionimit të blockchain Ethereum dhe terminologjinë bazë, dhe gjithashtu do të flasim se ku mund të përdoret ky blockchain.

Qëllim mësimi i dytë — krijoni një nyje private të blockchain Ethereum për punë të mëtejshme brenda këtij kursi në një server Ubuntu dhe Debian. Ne do të shikojmë veçoritë e instalimit të shërbimeve bazë, të tilla si geth, e cila siguron funksionimin e nyjës sonë të blockchain, si dhe demonin e ruajtjes së të dhënave të decentralizuar të tufës.

Mësimi i tretë do t'ju mësojë se si të eksperimentoni me Ethereum në një mikrokompjuter të lirë Raspberry Pi. Ju do të instaloni sistemin operativ Rasberian (OS) në Raspberry Pi, mjetin Geth që fuqizon nyjen e bllokut dhe demonin e ruajtjes së të dhënave të decentralizuara Swarm.

Mësimi i katërt i dedikohet llogarive dhe njësive të kriptomonedhave në rrjetin Ethereum, si dhe mënyrave për të transferuar fonde nga një llogari në tjetrën nga tastiera Geth. Do të mësoni se si të krijoni llogari, të filloni transaksionet e transferimit të fondeve dhe të merrni statusin e transaksionit dhe faturën.

Në mësimin e pestë Do të njiheni me kontratat inteligjente në rrjetin Ethereum dhe do të mësoni për ekzekutimin e tyre nga makina virtuale Ethereum.

Do të krijoni dhe publikoni kontratën tuaj të parë inteligjente në rrjetin privat Ethereum dhe do të mësoni se si t'i telefononi funksionet e tij. Për ta bërë këtë, do të përdorni Remix Solidity IDE. Do të mësoni gjithashtu se si të instaloni dhe përdorni përpiluesin e grupit solc.
Ne gjithashtu do të flasim për të ashtuquajturën Ndërfaqja Binare e Aplikimit (ABI) dhe do t'ju mësojmë se si ta përdorni atë.

Mësimi i gjashtë i dedikohet krijimit të skripteve JavaScript që ekzekutojnë Node.js dhe kryejnë operacione me kontrata inteligjente Solidity.

Do të instaloni Node.js në Ubuntu, Debian dhe Rasberian OS, do të shkruani skripta për të publikuar një kontratë inteligjente në rrjetin lokal Ethereum dhe do të telefononi funksionet e tij.

Përveç kësaj, do të mësoni se si të transferoni fonde midis llogarive të rregullta duke përdorur skriptet, si dhe t'i kreditoni ato në llogaritë e kontratave inteligjente.

Në mësimin e shtatë Do të mësoni se si të instaloni dhe përdorni kuadrin Truffle, i njohur në mesin e zhvilluesve të kontratave inteligjente Solidity. Do të mësoni se si të krijoni skriptet JavaScript që thërrasin funksionet e kontratës duke përdorur modulin e kontratës së tartufit dhe do të testoni kontratën tuaj inteligjente duke përdorur Truffle.

Mësimi i tetë dedikuar llojeve të të dhënave Solidity. Do të shkruani kontrata inteligjente që punojnë me lloje të dhënash si numra të plotë të nënshkruar dhe të panënshkruar, numra të nënshkruar, vargje, adresa, variabla komplekse, vargje, numërime, struktura dhe fjalorë.

Në mësimin e nëntë Do të jeni një hap më afër krijimit të kontratave inteligjente për rrjetin kryesor Ethereum. Do të mësoni se si të publikoni kontrata duke përdorur Truffle në rrjetin privat Geth, si dhe në rrjetin testues Rinkeby. Korrigjimi i një kontrate inteligjente në rrjetin Rinkeby është shumë i dobishëm përpara se ta publikoni në rrjetin kryesor - pothuajse gjithçka është reale atje, por falas.

Si pjesë e mësimit, ju do të krijoni një nyje testimi të rrjetit Rinkeby, do ta financoni atë me fonde dhe do të publikoni një kontratë inteligjente.

Mësimi 10 dedikuar për ruajtjen e të dhënave të shpërndarë të Ethereum Swarm. Duke përdorur ruajtjen e shpërndarë, ju kurseni në ruajtjen e sasive të mëdha të të dhënave në zinxhirin e bllokut Ethereum.

Në këtë tutorial, ju do të krijoni një ruajtje lokale Swarm, do të shkruani dhe lexoni operacionet në skedarë dhe drejtoritë e skedarëve. Më pas, do të mësoni se si të punoni me portën publike Swarm, të shkruani skripta për të hyrë në Swarm nga Node.js, si dhe të përdorni modulin Perl Net::Ethereum::Swarm.

Objektivi i mësimit 11 — zotëroni punën me kontratat inteligjente Solidity duke përdorur gjuhën e njohur të programimit Python dhe kornizën Web3.py. Do të instaloni kornizën, do të shkruani skripta për të përpiluar dhe publikuar kontratën inteligjente dhe do të telefononi funksionet e saj. Në këtë rast, Web3.py do të përdoret si më vete ashtu edhe në lidhje me mjedisin e zhvillimit të integruar Truffle.

Në mësimin 12 do të mësoni të transferoni të dhëna midis kontratave inteligjente dhe botës reale duke përdorur orakull. Kjo do të jetë e dobishme për ju që të merrni të dhëna nga faqet e internetit, pajisjet IoT, pajisje dhe sensorë të ndryshëm dhe të dërgoni të dhëna nga kontratat inteligjente në këto pajisje. Në pjesën praktike të mësimit, ju do të krijoni një orakull dhe një kontratë të zgjuar që merr kursin aktual të këmbimit midis USD dhe rubla nga faqja e internetit e Bankës Qendrore të Federatës Ruse.

Mësimi 1. Shkurtimisht rreth blockchain dhe rrjetit EthereumQëllimi i mësimit: njihuni me parimet e funksionimit të blockchain Ethereum, fushat e tij të aplikimit dhe terminologjinë bazë.
Detyrat praktike: nuk përfshihet në këtë mësim.

Sot vështirë se ka një zhvillues softuerësh që nuk ka dëgjuar asgjë për teknologjinë blockchain (Blockchain), kriptovalutat (Cryptocurrency ose Crypto Currency), Bitcoin (Bitcoin), ofertën fillestare të monedhave (ICO, Oferta fillestare e monedhës), kontratat inteligjente (Smart Contract). si dhe koncepte dhe terma të tjerë që lidhen me blockchain.

Teknologjia Blockchain hap tregje të reja dhe krijon vende pune për programuesit. Nëse i kuptoni të gjitha ndërlikimet e teknologjive të kriptomonedhave dhe teknologjive të kontratave inteligjente, atëherë nuk duhet të keni probleme me zbatimin e kësaj njohurie në praktikë.

Duhet thënë se ka shumë spekulime rreth kriptomonedhave dhe blockchains. Do të lëmë mënjanë diskutimet për ndryshimet në normat e kriptomonedhave, krijimin e piramidave, ndërlikimet e legjislacionit të kriptomonedhave, etj. Në kursin tonë të trajnimit do të fokusohemi kryesisht në aspektet teknike të aplikimit të kontratave inteligjente të zinxhirit të bllokut Ethereum (Ethereum, Ether) dhe zhvillimin e të ashtuquajturave aplikacione të decentralizuara (Aplikacion i shpërndarë, DApp).

Çfarë është blockchain

Blockchain (Block Chain) është një zinxhir blloqesh të dhënash të lidhura me njëri-tjetrin në një mënyrë të caktuar. Në fillim të zinxhirit gjendet blloku i parë, i cili quhet blloku primar (blloku i gjenezës) ose blloku i gjenezës. Pasohet nga e dyta, pastaj e treta e kështu me radhë.

Të gjitha këto blloqe të dhënash dublikohen automatikisht në nyje të shumta të rrjetit blockchain. Kjo siguron ruajtjen e decentralizuar të të dhënave të blockchain.
Ju mund të mendoni për një sistem blockchain si një numër i madh nyjesh (serverët fizikë ose virtualë) të lidhur në një rrjet dhe që përsërisin të gjitha ndryshimet në zinxhirin e blloqeve të të dhënave. Ky është si një kompjuter gjigant me shumë servera, dhe nyjet e një kompjuteri të tillë (serverët) mund të shpërndahen në të gjithë botën. Dhe ju gjithashtu mund të shtoni kompjuterin tuaj në rrjetin blockchain.

Baza e të dhënave të shpërndara

Një blockchain mund të mendohet si një bazë të dhënash e shpërndarë që përsëritet në të gjitha nyjet e rrjetit blockchain. Në teori, blockchain do të jetë funksional për sa kohë që të paktën një nyje është duke punuar, duke ruajtur të gjitha blloqet e blockchain.

Regjistri i të dhënave të shpërndara

Blockchain mund të mendohet si një libër i shpërndarë i të dhënave dhe operacioneve (transaksioneve). Një emër tjetër për një regjistër të tillë është një libër.

Të dhënat mund të shtohen në një libër të shpërndarë, por nuk mund të ndryshohen ose fshihen. Kjo pamundësi arrihet, veçanërisht, me përdorimin e algoritmeve kriptografike, algoritmeve speciale për shtimin e blloqeve në zinxhir dhe ruajtjes së decentralizuar të të dhënave.

Gjatë shtimit të blloqeve dhe kryerjes së operacioneve (transaksioneve), përdoren çelësat privatë dhe publikë. Ata kufizojnë përdoruesit e blockchain vetëm duke u dhënë atyre akses në blloqet e tyre të të dhënave.

transaksionet

Blockchain ruan informacione rreth operacioneve (transaksioneve) në blloqe. Në të njëjtën kohë, transaksionet e vjetra, tashmë të përfunduara nuk mund të kthehen ose të ndryshohen. Transaksionet e reja ruhen në blloqe të reja, të shtuara.

Në këtë mënyrë, e gjithë historia e transaksionit mund të regjistrohet e pandryshuar në blockchain. Prandaj, blockchain mund të përdoret, për shembull, për të ruajtur në mënyrë të sigurt transaksionet bankare, informacionin për të drejtat e autorit, historinë e ndryshimeve në pronarët e pronave, etj.

Blockchain Ethereum përmban të ashtuquajturat gjendje të sistemit. Ndërsa transaksionet ekzekutohen, gjendja ndryshon nga gjendja fillestare në gjendjen aktuale. Transaksionet regjistrohen në blloqe.

Blockchains publike dhe private

Duhet theksuar këtu se gjithçka që thuhet është e vërtetë vetëm për të ashtuquajturat rrjete publike blockchain, të cilat nuk mund të kontrollohen nga asnjë person fizik apo juridik, agjenci qeveritare apo qeveri.
Të ashtuquajturat rrjete private blockchain janë nën kontrollin e plotë të krijuesve të tyre dhe gjithçka është e mundur atje, për shembull, një zëvendësim i plotë i të gjitha blloqeve të zinxhirit.

Aplikime praktike të blockchain

Për çfarë mund të jetë i dobishëm blockchain?

Me pak fjalë, blockchain ju lejon të kryeni në mënyrë të sigurt transaksione (transaksione) midis njerëzve ose kompanive që nuk i besojnë njëri-tjetrit. Të dhënat e regjistruara në blockchain (transaksionet, të dhënat personale, dokumentet, certifikatat, kontratat, faturat, etj.) nuk mund të falsifikohen ose zëvendësohen pas regjistrimit. Prandaj, bazuar në blockchain, është e mundur të krijohen, për shembull, regjistra të besuar të shpërndarë të llojeve të ndryshme të dokumenteve.

Natyrisht, ju e dini që sistemet e kriptomonedhave po krijohen në bazë të zinxhirëve bllokues, të krijuar për të zëvendësuar paratë e zakonshme të letrës. Paratë e letrës quhen gjithashtu fiat (nga Fiat Money).
Blockchain siguron ruajtjen dhe pandryshueshmërinë e transaksioneve të regjistruara në blloqe, prandaj mund të përdoret për të krijuar sisteme kriptomonedhash. Ai përmban të gjithë historinë e transferimit të fondeve kripto midis përdoruesve të ndryshëm (llogari) dhe çdo operacion mund të gjurmohet.

Megjithëse transaksionet brenda sistemeve të kriptomonedhës mund të jenë anonime, tërheqja e kriptomonedhës dhe shkëmbimi i saj me para fiat zakonisht rezulton në zbulimin e identitetit të pronarit të aktivit të kriptomonedhës.

Të ashtuquajturat kontrata inteligjente, të cilat janë softuer që funksionojnë në rrjetin Ethereum, ju lejojnë të automatizoni procesin e përfundimit të transaksioneve dhe monitorimin e zbatimit të tyre. Kjo është veçanërisht efektive nëse pagesa për transaksionin kryhet duke përdorur kriptomonedhën Ether.

Blockchain Ethereum dhe kontratat inteligjente Ethereum të shkruara në gjuhën e programimit Solidity mund të përdoren, për shembull, në fushat e mëposhtme:

  • një alternativë për noterizimin e dokumenteve;
  • ruajtja e një regjistri të pasurive të paluajtshme dhe informacioni për transaksionet me objektet e pasurive të paluajtshme;
  • ruajtja e informacionit të së drejtës së autorit mbi pronësinë intelektuale (libra, imazhe, vepra muzikore, etj.);
  • krijimi i sistemeve të votimit të pavarur;
  • financa dhe banka;
  • logjistikë në shkallë ndërkombëtare, ndjekja e lëvizjes së mallrave;
  • ruajtja e të dhënave personale si analoge me sistemin e kartave të identitetit;
  • transaksione të sigurta në fushën tregtare;
  • ruajtja e rezultateve të ekzaminimeve mjekësore, si dhe historia e procedurave të përshkruara

Probleme me blockchain

Por, sigurisht, jo gjithçka është aq e thjeshtë sa mund të duket!

Ka probleme me verifikimin e të dhënave përpara se t'i shtoni ato në blockchain (për shembull, a janë të rreme?), probleme me sigurinë e sistemit dhe softuerit të aplikacionit të përdorur për të punuar me blockchain, probleme me mundësinë e përdorimit të metodave të inxhinierisë sociale për të vjedhur aksesin te kuletat e kriptomonedhave etj. .P.

Përsëri, nëse nuk po flasim për një blockchain publik, nyjet e të cilit janë të shpërndara në të gjithë botën, por për një blockchain privat që i përket një personi ose organizate, atëherë niveli i besimit këtu nuk do të jetë më i lartë se niveli i besimit. në këtë person ose në këtë organizatë.

Duhet gjithashtu të merret parasysh që të dhënat e regjistruara në blockchain bëhen të disponueshme për të gjithë. Në këtë kuptim, blockchain (veçanërisht publik) nuk është i përshtatshëm për ruajtjen e informacionit konfidencial. Megjithatë, fakti që informacioni mbi blockchain nuk mund të ndryshohet mund të ndihmojë në parandalimin ose hetimin e llojeve të ndryshme të aktiviteteve mashtruese.

Aplikacionet e decentralizuara të Ethereum do të jenë të përshtatshme nëse paguani për përdorimin e tyre me kriptomonedhë. Sa më shumë njerëz që zotërojnë kriptomonedhë ose janë të gatshëm ta blejnë atë, aq më të njohura do të bëhen DApps dhe kontratat inteligjente.

Problemet e zakonshme me blockchain që pengojnë zbatimin e tij praktik përfshijnë shpejtësinë e kufizuar me të cilën mund të shtohen blloqe të reja dhe koston relativisht të lartë të transaksioneve. Por teknologjia në këtë fushë po zhvillohet në mënyrë aktive dhe ka shpresa se problemet teknike do të zgjidhen me kalimin e kohës.

Një problem tjetër është se kontratat inteligjente në blockchain Ethereum funksionojnë në një mjedis të izoluar të makinave virtuale dhe nuk kanë akses në të dhënat e botës reale. Në veçanti, programi i kontratës inteligjente nuk mund të lexojë vetë të dhëna nga faqet ose ndonjë pajisje fizike (sensorë, kontakte, etj.), dhe gjithashtu nuk mund të nxjerrë të dhëna në asnjë pajisje të jashtme. Ne do të diskutojmë këtë problem dhe mënyrat për ta zgjidhur atë në një mësim kushtuar të ashtuquajturve Oracle - ndërmjetësuesit e informacionit të kontratave inteligjente.

Ka edhe kufizime ligjore. Në disa vende, për shembull, është e ndaluar përdorimi i kriptomonedhës si një mjet pagese, por ju mund ta zotëroni atë si një lloj aktivi dixhital, si letrat me vlerë. Asete të tilla mund të blihen dhe shiten në bursë. Në çdo rast, kur krijoni një projekt që funksionon me kriptovaluta, duhet të njiheni me legjislacionin e vendit nën juridiksionin e të cilit bie projekti juaj.

Si formohet një zinxhir blockchain

Siç kemi thënë tashmë, blockchain është një zinxhir i thjeshtë i blloqeve të të dhënave. Së pari, formohet blloku i parë i këtij zinxhiri, më pas i shtohet i dyti, e kështu me radhë. Të dhënat e transaksionit supozohet se ruhen në blloqe dhe shtohen në bllokun më të fundit.

Në Fig. 1.1 ne treguam versionin më të thjeshtë të një sekuence blloqesh, ku blloku i parë i referohet atij të ardhshëm.

Libri “Krijimi i kontratave inteligjente të soliditetit për zinxhirin e bllokut Ethereum. Udhëzues praktik"
Oriz. 1.1. Sekuencë e thjeshtë blloqesh

Me këtë opsion, megjithatë, është shumë e lehtë të ngacmosh përmbajtjen e çdo blloku në zinxhir, pasi blloqet nuk përmbajnë asnjë informacion për t'u mbrojtur nga ndryshimet. Duke marrë parasysh që blockchain synohet të përdoret nga njerëz dhe kompani mes të cilëve nuk ka besim, mund të konkludojmë se kjo metodë e ruajtjes së të dhënave nuk është e përshtatshme për blockchain.

Le të fillojmë të mbrojmë blloqet nga falsifikimi. Në fazën e parë, ne do të përpiqemi të mbrojmë çdo bllok me një kontroll (Fig. 1.2).

Libri “Krijimi i kontratave inteligjente të soliditetit për zinxhirin e bllokut Ethereum. Udhëzues praktik"
Oriz. 1.2. Shtimi i mbrojtjes për këto blloqe me një shumë kontrolli

Tani një sulmues nuk mund të ndryshojë thjesht bllokun, pasi ai përmban kontrollin e të dhënave të bllokut. Kontrollimi i shumës së kontrollit do të tregojë se të dhënat janë ndryshuar.

Për të llogaritur shumën e kontrollit, mund të përdorni një nga funksionet e hashimit si MD-5, SHA-1, SHA-256, etj. Funksionet hash llogaritin një vlerë (për shembull, një varg teksti me gjatësi konstante) duke kryer operacione të pakthyeshme në një bllok të dhënash. Operacionet varen nga lloji i funksionit hash.

Edhe nëse përmbajtja e bllokut të të dhënave ndryshon pak, vlera e hash-it gjithashtu do të ndryshojë. Duke analizuar vlerën e funksionit hash, është e pamundur të rindërtohet blloku i të dhënave për të cilin është llogaritur.

A do të jetë e mjaftueshme një mbrojtje e tillë? Fatkeqësisht jo.

Në këtë skemë, checksum (funksioni hash) mbron vetëm blloqe individuale, por jo të gjithë blockchain. Duke ditur algoritmin për llogaritjen e funksionit hash, një sulmues mund të zëvendësojë lehtësisht përmbajtjen e një blloku. Gjithashtu, asgjë nuk do ta pengojë atë të heqë blloqet nga zinxhiri ose të shtojë të reja.

Për të mbrojtur të gjithë zinxhirin në tërësi, mund të ruani gjithashtu në çdo bllok, së bashku me të dhënat, një hash të të dhënave nga blloku i mëparshëm (Fig. 1.3).

Libri “Krijimi i kontratave inteligjente të soliditetit për zinxhirin e bllokut Ethereum. Udhëzues praktik"
Oriz. 1.3. Shtoni hash-in e bllokut të mëparshëm në bllokun e të dhënave

Në këtë skemë, për të ndryshuar një bllok, duhet të rillogaritni funksionet hash të të gjitha blloqeve pasuese. Do të duket, cili është problemi?

Në blloqe të vërteta, vështirësi artificiale krijohen gjithashtu për shtimin e blloqeve të reja - përdoren algoritme që kërkojnë shumë burime kompjuterike. Duke pasur parasysh që për të bërë ndryshime në një bllok, duhet të rillogaritni jo vetëm këtë bllok, por të gjithë të mëpasshëm, kjo do të jetë jashtëzakonisht e vështirë për t'u bërë.

Le të kujtojmë gjithashtu se të dhënat e blockchain ruhen (kopjohen) në nyje të shumta të rrjetit, d.m.th. Përdoret ruajtja e decentralizuar. Dhe kjo e bën shumë më të vështirë falsifikimin e një blloku, sepse duhet të bëhen ndryshime në të gjitha nyjet e rrjetit.

Meqenëse blloqet ruajnë informacione për bllokun e mëparshëm, është e mundur të kontrolloni përmbajtjen e të gjitha blloqeve në zinxhir.

Blockchain Ethereum

Blockchain Ethereum është një platformë në të cilën mund të krijohen DApps të shpërndarë. Ndryshe nga platformat e tjera, Ethereum lejon përdorimin e të ashtuquajturave kontrata smart (kontratat inteligjente), të shkruara në gjuhën e programimit Solidity.

Kjo platformë u krijua në vitin 2013 nga Vitalik Buterin, themelues i revistës Bitcoin, dhe u lançua në vitin 2015. Gjithçka që do të studiojmë ose bëjmë në kursin tonë të trajnimit lidhet posaçërisht me kontratat inteligjente të Blockchain Ethereum dhe Solidity.

Minierat ose si krijohen blloqet

Minierat është një proces mjaft kompleks dhe intensiv i burimeve për shtimin e blloqeve të reja në zinxhirin e zinxhirit të bllokut, dhe aspak "miniera e kriptomonedhës". Miniera siguron funksionalitetin e blockchain, sepse Është ky proces që është përgjegjës për shtimin e transaksioneve në blockchain Ethereum.

Njerëzit dhe organizatat e përfshira në shtimin e blloqeve quhen minatorë.
Softueri që funksionon në nyjet minerare përpiqet të gjejë një parametër hashing të quajtur Nonce për bllokun e fundit për të marrë një vlerë specifike hash të specifikuar nga rrjeti. Algoritmi i hashimit Ethash i përdorur në Ethereum ju lejon të merrni vlerën Nonce vetëm përmes kërkimit sekuencial.

Nëse nyja miner gjen vlerën e saktë Nonce, atëherë kjo është e ashtuquajtura prova e punës (PoW, Proof-of-work). Në këtë rast, nëse një bllok shtohet në rrjetin Ethereum, minatori merr një shpërblim të caktuar në monedhën e rrjetit - Ether. Në kohën e shkrimit, shpërblimi është 5 Eter, por kjo do të reduktohet me kalimin e kohës.

Kështu, minatorët e Ethereum sigurojnë funksionimin e rrjetit duke shtuar blloqe dhe marrin para nga kriptovalutat për këtë. Ka shumë informacione në internet në lidhje me minatorët dhe minierat, por ne do të fokusohemi në krijimin e kontratave të Solidity dhe DApp-ve në rrjetin Ethereum.

Përmbledhje e mësimit

Në mësimin e parë, u njohët me blockchain dhe mësuat se është një sekuencë blloqesh e përbërë posaçërisht. Përmbajtja e blloqeve të regjistruara më parë nuk mund të ndryshohet, pasi kjo do të kërkonte rillogaritjen e të gjitha blloqeve pasuese në shumë nyje të rrjetit, gjë që kërkon shumë burime dhe kohë.

Blockchain mund të përdoret për të ruajtur rezultatet e transaksioneve. Qëllimi i tij kryesor është të organizojë transaksione të sigurta ndërmjet palëve (personave dhe organizatave) ndërmjet të cilave nuk ka besim. Ju mësuat në cilat fusha specifike të biznesit dhe në cilat fusha mund të përdoren kontratat inteligjente të blockchain Ethereum dhe Solidity. Ky është sektori bankar, regjistrimi i të drejtave pronësore, dokumentet etj.

Ju gjithashtu mësuat se mund të shfaqen probleme të ndryshme kur përdorni blockchain. Këto janë probleme të verifikimit të informacionit të shtuar në blockchain, shpejtësisë së blockchain, kostos së transaksioneve, problemit të shkëmbimit të të dhënave midis kontratave inteligjente dhe botës reale, si dhe sulme të mundshme nga sulmuesit që synojnë vjedhjen e fondeve të kriptomonedhave nga llogaritë e përdoruesve. .

Ne gjithashtu folëm shkurtimisht për minierat si procesi i shtimit të blloqeve të reja në blockchain. Minierat janë të nevojshme për të përfunduar transaksionet. Ata që janë të përfshirë në miniera sigurojnë funksionimin e blockchain dhe marrin një shpërblim në kriptomonedhë për këtë.

Mësimi 2. Përgatitja e një mjedisi pune në Ubuntu dhe Debian OSZgjedhja e një sistemi operativ
Instalimi i shërbimeve të nevojshme
Instalimi i Geth dhe Swarm në Ubuntu
Instalimi i Geth dhe Swarm në Debian
Përgatitja paraprake
Shkarkimi i shpërndarjes Go
Vendosja e variablave të mjedisit
Po kontrollon versionin Go
Instalimi i Geth dhe Swarm
Krijimi i një blockchain privat
Përgatitja e skedarit genesis.json
Krijo një drejtori për punë
Krijo nje llogari
Fillimi i inicializimit të nyjeve
Opsionet e nisjes së nyjeve
Lidhu me nyjen tonë
Menaxhimi i minierave dhe kontrolli i bilancit
Mbyllja e tastierës Geth
Përmbledhje e mësimit

Mësimi 3. Përgatitja e mjedisit të punës në Raspberry Pi 3Përgatitja e Raspberry Pi 3 për punë
Instalimi i Rasberian
Instalimi i përditësimeve
Aktivizimi i SSH Access
Vendosja e një adrese IP statike
Instalimi i shërbimeve të nevojshme
Instalimi i Go
Shkarkimi i shpërndarjes Go
Vendosja e variablave të mjedisit
Po kontrollon versionin Go
Instalimi i Geth dhe Swarm
Krijimi i një blockchain privat
Kontrollimi i llogarisë dhe bilancit
Përmbledhje e mësimit

Mësimi 4. Llogaritë dhe transferimi i fondeve ndërmjet llogariveShikoni dhe shtoni llogari
Shikoni një listë të llogarive
Shtimi i një llogarie
opsionet e komandës së llogarisë geth
Fjalëkalimet e llogarisë
Kriptovaluta në Ethereum
Njësitë e monedhës Ethereum
Ne përcaktojmë gjendjen aktuale të llogarive tona
Transferoni fonde nga një llogari në tjetrën
eth.send Metoda e transaksionit
Shikoni statusin e transaksionit
Fatura e transaksionit
Përmbledhje e mësimit

Mësimi 5. Publikimi i kontratës suaj të parëKontratat inteligjente në Ethereum
Zbatimi i zgjuar i kontratës
Makina virtuale Ethereum
Mjedisi i integruar i zhvillimit Remix Solidity IDE
Përpilimi në ekzekutim
Thirrja e funksioneve të kontratës
Publikimi i një kontrate në një rrjet privat
Marrja e përkufizimit ABI dhe kodit binar të kontratës
Publikimi i kontratës
Kontrollimi i statusit të transaksionit të publikimit të kontratës
Thirrja e funksioneve të kontratës
Përpiluesi i grupit solc
Instalimi i solc në Ubuntu
Instalimi i solc në Debian
Përpilimi i kontratës HelloSol
Publikimi i kontratës
Instalimi i solc në Rasberian
Përmbledhje e mësimit

Mësimi 6. Kontratat inteligjente dhe Nyja.jsInstalimi i Node.js
Instalimi në Ubuntu
Instalimi në Debian
Instalimi dhe ekzekutimi i Ganache-cli
Instalimi i Web3
Instalimi i solc
Instalimi i Node.js në Rasberian
Skript për të marrë një listë të llogarive në tastierë
Skript për publikimin e një kontrate inteligjente
Nisni dhe merrni parametrat
Marrja e opsioneve të nisjes
Përpilimi i kontratës
Po zhbllokoni llogarinë tuaj
Po ngarkohet ABI dhe kodi binar i kontratës
Vlerësimi i sasisë së kërkuar të gazit
Krijoni një objekt dhe filloni të publikoni një kontratë
Ekzekutimi i skenarit të botimit të kontratës
Thirrja e funksioneve të kontratës inteligjente
A është e mundur të përditësohet një kontratë inteligjente e publikuar?
Duke punuar me versionin Web3 1.0.x
Marrja e një liste llogarish
Publikimi i kontratës
Thirrja e funksioneve të kontratës
Transferoni fonde nga një llogari në tjetrën
Transferoni fonde në llogarinë e kontratës
Përditësimi i kontratës inteligjente HelloSol
Krijoni një skript për të parë gjendjen e llogarisë tuaj
Shtoni një telefonatë në funksionin getBalance në skriptin call_contract_get_promise.js
Ne mbushim llogarinë e kontratës inteligjente
Përmbledhje e mësimit

Mësimi 7. Hyrje në TartufinInstalimi i tartufit
Krijo një projekt HelloSol
Krijimi i drejtorisë dhe skedarëve të projektit
Drejtoria e kontratave
Migrimet e katalogut
Testi i drejtorisë
skedar truffle-config.js
Përpilimi i kontratës HelloSol
Filloni të publikoni një kontratë
Thirrja e funksioneve të kontratës HelloSol në një kërkesë tartufi
Thirrja e funksioneve të kontratës HelloSol nga një skript JavaScript që ekzekuton Node.js
Instalimi i modulit të kontratës së tartufit
Thirrja e funksioneve të kontratës getValue dhe getString
Thirrja e funksioneve të kontratës setValue dhe setString
Ndryshimi i kontratës dhe ripublikimi
Duke punuar me versionin Web3 1.0.x
Bërja e ndryshimeve në kontratën inteligjente HelloSol
Skriptet për thirrjen e metodave të kontratës
Testimi në Tartuff
Testi i soliditetit
Testi JavaScript
Përmbledhje e mësimit

Mësimi 8. Llojet e të dhënave të ngurtësisëKontrata për mësimin e llojeve të të dhënave
Llojet e të dhënave Boolean
Numrat e plotë të panënshkruar dhe numrat e plotë të nënshkruar
Numrat e pikave fikse
Adresë
Variablat e llojeve komplekse
Vargjet me madhësi fikse
Vargjet dinamike
Regjistrimi
Strukturat
Harta e fjalorëve
Përmbledhje e mësimit

Mësimi 9. Migrimi i kontratave në rrjetin privat dhe në rrjetin RinkebyPublikimi i një kontrate nga Truffle në rrjetin privat Geth
Përgatitja e një nyje rrjeti privat
Përgatitja e një kontrate për punë
Përpilimi dhe migrimi i një kontrate në rrjetin Truffle
Fillimi i migrimit të rrjetit lokal
Marrja e objekteve të tartufit
Publikimi i një kontrate nga Truffle në rrjetin testues Rinkeby
Përgatitja e një nyje Geth për të punuar me Rinkeby
Sinkronizimi i nyjeve
Shtimi i llogarive
Mbushja e llogarisë tuaj Rinkeby me eter
Nisja e migrimit të kontratës në rrjetin Rinkeby
Shikimi i informacionit të kontratës në rrjetin Rinkeby
Konsola Truffle për Rinkeby Network
Mënyra më e lehtë për të thirrur funksionet e kontratës
Thirrja e metodave të kontratës duke përdorur Node.js
Transferoni fonde midis llogarive në tastierën Truffle për Rinkby
Përmbledhje e mësimit

Mësimi 10. Ruajtja e decentralizuar e të dhënave Ethereum SwarmSi funksionon Ethereum Swarm?
Instalimi dhe lëshimi i Swarm
Operacionet me skedarë dhe direktori
Ngarkimi i një skedari në Ethereum Swarm
Leximi i një skedari nga Ethereum Swarm
Shikoni manifestin e një skedari të ngarkuar
Ngarkimi i drejtorive me nëndrejtori
Leximi i një skedari nga një dosje e shkarkuar
Përdorimi i një porte publike Swarm
Qasja në Swarm nga skriptet Node.js
Perl Net::Ethereum::Moduli Swarm
Instalimi i modulit Net::Ethereum::Swarm
Shkrimi dhe leximi i të dhënave
Përmbledhje e mësimit

Mësimi 11. Korniza Web3.py për të punuar me Ethereum në PythonDuke instaluar Web3.py
Përditësimi dhe instalimi i paketave të nevojshme
Instalimi i modulit easysolc
Publikimi i një kontrate duke përdorur Web3.py
Përpilimi i kontratës
Lidhja me një ofrues
Ekzekutoni publikimin e kontratës
Ruajtja e adresës së kontratës dhe abi në një skedar
Ekzekutimi i skenarit të botimit të kontratës
Metodat e kontratës së thirrjes
Leximi i adresës dhe abisë së një kontrate nga një skedar JSON
Lidhja me një ofrues
Krijimi i një objekti të kontratës
Metodat e kontratës së thirrjes
Truffle dhe Web3.py
Përmbledhje e mësimit

Mësimi 12. OrakletA mund t'i besojë një kontratë inteligjente të dhënave nga bota e jashtme?
Oracle si ndërmjetës të informacionit të zinxhirit bllokues
Burim i të dhënave
Kodi për të përfaqësuar të dhënat nga burimi
Oracle për regjistrimin e kursit të këmbimit në blockchain
Kontrata USDRateOracle
Përditësimi i kursit të këmbimit në një kontratë inteligjente
Përdorimi i një ofruesi të prizave në internet
Në pritje të ngjarjes RateUpdate
Trajtimi i ngjarjes RateUpdate
Nisja e një përditësimi të të dhënave në një kontratë inteligjente
Përmbledhje e mësimit

Burimi: www.habr.com

Shto një koment