
Për më shumë se një vit punova mbi librin "Krijimi i kontratave të mençura Solidity për blockchain-in Ethereum. Udhezues praktik", dhe tani kjo punë është përfunduar, dhe libri .
Shpresoj që libri im do t'ju ndihmojë të filloni shpejt krijimin e kontratave të mençura Solidity dhe aplikacioneve të shpërndara DApp për blockchain-in 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ë nodet lokale të Ethereum, të publikojë kontrata të mençura dhe të thërrasë metodat e tyre, të shkëmbejë të dhëna midis botës reale dhe kontratave të mençura me anë të orakujve, dhe të punojë me rrjetin provues të Rinkeby.
Libri është i dedikuar për të gjithë ata që janë të interesuar për teknologjitë e avancuara në fushën e blockchain-it dhe duan të fitojnë shpejt njohuri që i lejojnë të merren me punë interesante dhe perspektivë.
Më poshtë do të gjeni përmbajtjen dhe kapitullin e parë të librit (po ashtu në disponohen fragmente të librit). Shpresoj të marr tani komente, vërejtje dhe propozime. Të gjitha këto do t'i marrë parasysh në përgatitjen e redaksë së ardhshme të librit.
PërmbajtjaHyrjeLibri ynë është për ata që duan jo vetëm të kuptojnë parimet e punës së blockchain-it Ethereum, por gjithashtu të fitojnë aftësi praktike në krijimin e aplikacioneve të shpërndara DApp në gjuhën e programimit Solidity për këtë rrjet.
Ky libër është më mirë të mos lexohet thjesht, por të punohet me të, duke përfunduar detyrat praktike të përshkruara në mësime. Për të punuar do t'ju nevojitet një kompjuter lokal, një server virtual ose në re me sistemin operativ Debian ose Ubuntu të instaluar. Gjithashtu, për përfundimin e shumë detyrave, mund të përdorni Raspberry Pi.
Në mësimin e parë ne do të shqyrtojmë parimet e punës së blockchain-it Ethereum dhe terminologjinë kryesore, si dhe do të flasim mbi vendet ku mund të përdoret ky blockchain.
Qëllimi i mësimit të dytë është të krijohet një nod privat i blockchain-it Ethereum për punën e mëvonshme në kuadër të këtij kursi në serverin Ubuntu dhe Debian. Ne do të shqyrtojmë veçoritë e instalimit të utilitarëve kryesorë, të tilla si geth, që siguron funksionimin e nodit tonë të blockchain-it, si dhe demonin e ruajtjes së dhënave të decentralizuara swarm.
Mësimi i tretë do të mësoni si të kryeni eksperimente me Ethereum në një mikrocomputer të lirë Raspberry Pi. Do të instaloni sistemin operativ (OS) Rasberian në Raspberry Pi, utilitarin Geth që siguron funksionimin e nodës së blockchain, si dhe shërbimin e ruajtjes të decentralizuar Swarm.
Mësimi i katërt i kushtohet llogarive dhe njësive të kriptovalutave në rrjetin Ethereum, si dhe mënyrave për të transferuar fonde nga një llogari në tjetrën nga konsola Geth. Do të mësoni të krijoni llogari, të inicioni transaksione transferimi fondesh, të merrni statusin e transaksionit dhe faturën e tij.
Në mësimin e pestë do të njiheni me kontratat smart në rrjetin Ethereum, do të mësoni për ekzekutimin e tyre nga makina virtuale Ethereum.
Do të krijoni dhe publikoni në një rrjet privat Ethereum kontratën tuaj të parë smart dhe do të mësoni si të thërrisni funksionet e saj. Për këtë, do të përdorni mjedisin e zhvillimit Remix Solidity IDE. Për më tepër, do të mësoni si të instaloni dhe përdorni kompilatorin e paketës solc.
Ne gjithashtu do të flasim për atë që quhet interface binar i aplikacionit Application Binary Interface (ABI) dhe do t'ju mësojmë si ta përdorni atë.
Mësimi i gjashtë i kushtohet krijimit të skripteve JavaScript që funksionojnë nën menaxhimin e Node.js dhe që kryejnë operacione me kontratat smart Solidity.
Do të instaloni Node.js në OS Ubuntu, Debian dhe Rasberian, do të shkruani skripte për publikimin e kontratës smart në rrjetin lokal Ethereum dhe thirrjen e funksioneve të saj.
Për më tepër, do të mësoni si të transferoni fonde midis llogarive të zakonshme me anë të skripteve, si dhe t'i depozitoni ato në llogaritë e kontratave smart.
Në mësimin e shtatë do të mësoni si të instaloni dhe përdorni mjedisin e integruar Truffle, që është i njohur mes zhvilluesve të kontratave smart Solidity. Do të mësoni si të krijoni skripte JavaScript që thërrasin funksionet e kontratave me modulin truffle-contract, si dhe do të kryeni testimin e kontratës suaj smart me anë të Truffle.
Mësimi i tetë i kushtohet llojeve të të dhënave Solidity. Do të shkruani kontrata smart që punojnë me lloje të tillë të të dhënave si numra të plotë me shenjë dhe pa shenjë, numra me shenjë, stringje, adresa, variabla të tipave të ndërlikuara, array, enumeracione, struktura dhe fjalorë.
Në mësimin e nëntë Ju do t’i afroheni një hap tjetër krijimit të kontratave inteligjente për rrjetin kryesor Ethereum. Do të mësoni si të publikoni kontrata duke përdorur Truffle në një rrjet privat Geth, si dhe në një rrjet provues Rinkeby. Debugging i kontratës inteligjente në rrjetin Rinkeby është shumë i dobishëm para publikimit të saj në rrjetin kryesor - atje gjithçka është praktikisht reale, por është falas.
Gjatë mësimit do të krijoni një nyje të rrjetit provues Rinkeby, do ta mbushni atë me fonde, dhe do të publikoni një kontratë inteligjente.
Mësimi 10 i kushtohet hapësirave të shpërndara të të dhënave Ethereum Swarm. Duke përdorur hapësirat e shpërndara, ju kuroni shpenzimet për ruajtjen e të dhënave me volum të lartë në blockchainin Ethereum.
Gjatë këtij mësimi do të krijoni një hapësirë lokale Swarm, do të kryeni operacione për të lexuar dhe shkruar skedarë, si dhe kataloge me skedarë. Më pas do të mësoni si të punoni me një kalim publik Swarm, do të shkruani skriptet për t'u lidhur me Swarm nga Node.js, si dhe me modulën Perl Net::Ethereum::Swarm.
Qëllimi i mësimit 11 është të zotëroni punën me kontratat inteligjente Solidity duke përdorur gjuhën e popullarizuar të programimit Python dhe kornizën Web3.py. Do ta instaloni këtë kornizë, do të shkruani skriptet për kompaktimin dhe publikimin e kontratës inteligjente, si dhe për thirrjen e funksioneve të saj. Në këtë rast, Web3.py do të përdoret si në mënyrë të pavarur, ashtu dhe në bashkëpunim me mjedisin e zhvillimit të integruar Truffle.
Në mësimin 12 do të mësoni si të transferoni të dhëna midis kontratave inteligjente dhe botës reale duke përdorur orakuj. Kjo do t'ju ndihmojë për të marrë të dhëna nga faqet e internetit, pajisjet e internetit të gjërave IoT, instrumentet dhe sensorët e ndryshëm, dhe për të dërguar të dhëna nga kontratat inteligjente në këto pajisje. Në pjesën praktike të mësimit do të krijoni një orakul dhe një kontratë inteligjente që merr kursin aktual të këmbimit USD në rubla nga faqja e CB të RF.
Mësimi 1. Një përmbledhje e bllokadës dhe rrjetit EthereumQëllimi i mësimit: të njohni parimet e funksionimit të bllokadës Ethereum, fushat e përdorimit të saj dhe terminologjinë kryesore.
Detyrat praktike: në këtë mësim nuk janë parashikuar.
Sot është e pakët që një zhvillues software (SW) të mos ketë dëgjuar asgjë për teknologjinë bllokadë (Blockchain), kriptovalutat (Cryptocurrency ose Crypto Currency), bitcoinat (Bitcoin), ofrimin fillestar të monedhave (ICO, Initial coin offering), kontratat inteligjente (Smart Contract), si dhe për konceptet dhe terminologjinë e tjera që lidhen me bllokadën.
Teknologjia e blockchain-it hap tregje të reja dhe krijon vende pune për programuesit. Nëse ju përvetësoni të gjitha nuancat e teknologjive të kriptomonedhave dhe të kontratave të mençura, atëherë nuk do të keni asnjë problem me aplikimin e këtyre njohurive në praktikë.
Duhet thënë se rreth kriptomonedhave dhe blockchain-ëve ka shumë spekulime. Ne do ta lëmë mënjanë diskutimet mbi ndryshimet e çmimeve të kriptomonedhave, krijimin e piramidave, nuancat e legjislacionit të kriptomonedhave dhe të ngjashme. Në kursin tonë arsimor, do të përqendrohemi kryesisht në aspektet teknike të aplikimit të kontratave të mençura në blockchain-in Ethereum (ether, eth) dhe zhvillimin e ashtuquajturve aplikacione të decentralizuara (Distributed Applications, DApp).
Çfarë është blockchain
Blockchain (Blockchain, Block Chain) është një zinxhir blokesh të dhënash, të lidhura me njëra-tjetrën në një mënyrë të caktuar. Në fillim të zinxhirit ndodhet blloku i parë, i cili quhet bllok primar (genesis block) apo blloku i origjinës. Pas tij ndodhet blloku i dytë, pastaj i treti dhe kështu me radhë.
Të gjitha këto blloqe të dhënash përsëriten automatikisht në shumë nyje të rrjetit të blockchain-it. Kështu sigurohet ruajtja e decentralizuar e të dhënave të blockchain-it.
Mund ta paraqitni sistemin e blockchain-it si një numër të madh nyjesh (servera fizik apo virtual), të bashkuar në një rrjet dhe që riprodhojnë të gjitha ndryshimet në zinxhirin e blloqeve të dhënash. Është si një kompjuter gjigand me shumë servera, ku nyjet e këtij kompjuteri (serverët) mund të jenë të shpërndara në të gjithë botën. Dhe ju gjithashtu mund ta shtoni kompjuterin tuaj në rrjetin e blockchain-it.
Baza e dhënave të shpërndara
Blockchain mund të përfaqësohet si një bazë e dhënash e shpërndarë, e riprodhuar në të gjitha nyjet e rrjetit të blockchain-it. Në teori, blockchain do të funksionojë sa kohë që punon të paktën një nyje që ruan të gjitha blloqet e blockchain-it.
Regjistri i shpërndarë i të dhënave
Blockchain mund të përfaqësohet si një regjistër i shpërndarë i të dhënave dhe operacioneve (transaksioneve). Një tjetër emër i këtij regjistri është libri i dukshëm.
Në regjistrin e shpërndarë mund të shtohen të dhëna, por nuk është e mundur të ndryshohen ose të fshihen ato. Kjo pamundësi arrihet, në veçanti, përmes aplikimit të algoritmeve kriptografikë, algoritmeve speciale për shtimin e blloqeve në zinxhir dhe ruajtjes së decentralizuar të të dhënave.
Gjatë shtimit të blloqeve dhe për kryerjen e operacioneve (transaksioneve) përdoren çelësa privat e publik. Ato kufizojnë përdoruesit e blockchain-it, duke u ofruar atyre qasje vetëm në blloqet e tyre të dhënash.
Transaksionet
Blockchain-i ruan informacionin në lidhje me operacionet (transaksionet) në blloqe. Kështu, transaksionet e vjetra, të cilat tashmë janë kryer, nuk mund të rishikohen ose ndryshohen. Transaksionet e reja ruhen në blloqe të reja, të shtuara.
Kështu, në blockchain mund të regjistrohet në formën e pandryshueshme e gjithë historia e transaksioneve. Prandaj, blockchain mund të përdoret, për shembull, për ruajtjen e sigurt të operacioneve bankare, informacionit në lidhje me të drejtat e autorit, historinë e ndryshimeve të pronarëve të objekteve të pasurive të paluajtshme etj.
Blockchain-i i Ethereum përmban ato që quhen gjendje të sistemit. Ndërsa kryen transaksione, gjendja ndryshohet nga fillestare në aktuale. Transaksionet regjistrohen në blloqe.
Blockchain-et publike dhe private
Këtu është e rëndësishme të theksohet se gjithçka e thënë është e vërtetë vetëm për rrjetet publike të blockchain-it, të cilat nuk mund të kontrollohen nga ndonjë individ fizik ose juridik, agjenci shtetërore ose qeveritarë.
Ato që quhen rrjete private të blockchain-it janë nën kontrollin e plotë të krijuesve të tyre, dhe aty është e mundur gjithçka, për shembull, zëvendësimi i plotë i të gjitha blloqeve në zinxhir.
Aplikimet praktike të blockchain-it
Për çfarë mund të jetë i dobishëm blockchain-i?
Nëse e përmbledhim, blockchain-i lejon kryerjen e operacioneve (transaksioneve) në mënyrë të sigurt midis personave ose kompanive që nuk i besojnë njëri-tjetrit. Të dhënat e regjistruara në blockchain (transaksionet, të dhënat personale, dokumentet, dëshmitë, kontratat, faturat etj.) nuk mund të falsifikohen ose zëvendësohen pas regjistrimit. Prandaj, mbi bazën e blockchain-it mund të krijohen, për shembull, regjistra të shpërndarë të besueshëm për të ndryshme lloje dokumentesh.
Natyrisht, ju e dini se sistemet e kriptovalutave krijohen mbi bazën e bllokëve, të destinuara për të zëvendësuar paratë e zakonshme të papier. Paratë e papier quhen gjithashtu fiat (nga Fiat Money).
Blloku siguron ruajtjen dhe pandryshueshmërinë e transaksioneve të regjistruara në blloqe, prandaj mund të përdoret për krijimin e sistemeve të kriptovalutave. Ai përmban të gjithë historinë e trasferimit të ndihmave kripto midis përdoruesve të ndryshëm (llogarive), duke e bërë të mundur ndjekjen e çdo operacioni.
Megjithëse operacionet brenda sistemeve të kriptovalutave mund të jenë anonime, tërheqja e kriptovalutës dhe shkëmbimi i saj për para fiat zakonisht çojnë në zbulimin e identitetit të pronarit të aktivizmit kriptovaluta.
Të ashtuquajturat kontrata të mençura, që përfaqësojnë një softuer që funksionon në rrjetin Ethereum, lejojnë automatizimin e procesit të lidhjes së marrëveshjeve dhe kontrollin e përmbushjes së tyre. Kjo është veçanërisht efektive, kur pagesa për një marrëveshje bëhet me kriptovalutën Ether.
Blloku Ethereum dhe kontratat e mençura Ethereum, të shkruara në gjuhën e programimit Solidity, mund të përdoren, për shembull, në këto fusha:
- alternativë për noterinë për verifikimin e dokumenteve;
- ruajtja e regjistrit të objekteve të patundshme dhe të dhënave për operacionet me to;
- ruajtja e të dhënave për të drejtat e autorit në objekte të pasurisë intelektuale (libra, imazhe, vepra muzikore, etj.);
- krijimi i sistemeve të votimit të pavarur;
- fusha e financave dhe aktiviteti bankar;
- logjistika në shkallë ndërkombëtare, ndjekja e lëvizjes së ngarkesave;
- ruajtja e të dhënave personale si një analog i sistemeve të identitetit;
- transaksione të sigurta në fushën tregtare;
- ruajtja e rezultateve të ekzaminimeve mjekësore, si dhe historiku i procedurave të caktuara.
Problemet me bllokun
Por, sigurisht, nuk është aq e lehtë sa mund të duket!
Ka probleme me verifikimin e të dhënave para se ato të shtohen në bllok, (për shembull, a janë ato të vërteta?), probleme me sigurinë e softuerit sistemor dhe aplikativ që përdoret për të punuar me bllokun, probleme me mundësitë e përdorimit të metodave të inxhinierisë sociale për të grabitur aksesin në portofolat e kriptovalutës dhe të tjera.
Përsëri, nëse flasim për një blockchain publik, me nyje të shpërndara në të gjithë botën, ose për një blockchain privat, që i përket një personi ose organizate, niveli i besimit këtu do të jetë po aq i lartë sa niveli i besimit ndaj këtij personi ose organizate.
Gjithashtu, duhet të merret parasysh se të dhënat e regjistruara në blockchain bëhen të aksesueshme për të gjithë. Në këtë kuptim, blockchain (sidomos ai publik) nuk është i përshtatshëm për ruajtjen e informacionit të ndjeshëm. Megjithatë, fakti që informacioni në blockchain nuk mund të ndryshohet, mund të ndihmojë në parandalimin ose hetimin e llojeve të ndryshme të veprimeve të mashtrimit.
Aplikacionet e decentralizuara të Ethereum do të jenë më të lehta për t'u përdorur nëse paguhet për ta me cryptocurrency. Sa më shumë njerëz të kenë cryptocurrency ose të jenë të gatshëm ta blejnë, aq më shumë popullaritet do të fitojnë aplikacionet DApp dhe kontratat inteligjente.
Në mesin e problemeve të zakonshme të blockchain-it që pengojnë aplikimin e tij praktik, mund të përmendim shpejtësinë e kufizuar të shtimit të blloqeve të reja dhe koston relativisht të lartë të transaksioneve. Por teknologjitë në këtë fushë po zhvillohen aktivisht, dhe ka shpresa që problemet teknike do të zgjidhen me kalimin e kohës.
Një tjetër problem është se kontratat inteligjente të blockchain-it 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ënat nga faqet e internetit ose nga ndonjë pajisje fizike (sensora, kontakte etj.), as nuk mund të dërgojë të dhëna në ndonjë pajisje të jashtme. Këtë problem dhe mënyrat e zgjidhjes së tij do ta diskutojmë në mësimin që i kushtohet të ashtuquajturëve Orakuj — ndërmjetës të informacionit të kontratave inteligjente.
Ka gjithashtu kufizime në fushën e legjislacionit. Në disa vende, për shembull, ndalohet përdorimi i cryptocurrency si një mjet pagese, por mund të mbahet si një aktiv digjital, të ngjashëm me aksionet. Aktivet e tilla mund të blihen dhe shiten në treg. Në çdo rast, kur krijoni një projekt që punon me cryptocurrency, është e nevojshme të njiheni me legjislacionin e vendit ku bie në juridiksion projekti juaj.
Si formohet zinxhiri i blockchain-it
Si si kemi thënë, blockchain-i është një zinxhir i thjeshtë i blloqeve të dhënash. Fillimisht, formohet blloku i parë i këtij zinxhiri, pastaj i shtohet blloku i dytë dhe kështu me radhë. Supozohet se të dhënat e transaksioneve ruhen në blloqe dhe shtohen në bllokun e fundit.
Në Fig. 1.1, ne treguam variantin më të thjeshtë të sekuencës së blloqeve, ku blloku i parë referohet tek ai tjetër.

Fig. 1.1. Sekuencë e thjeshtë e blloqeve
Në këtë variant, megjithatë, është shumë e lehtë të falsifikosh përmbajtjen e çdo blloku të zinxhirit, pasi blloqet nuk përmbajnë asnjë informacion për mbrojtjen nga ndryshimet. Duke pasur parasysh se blockchain-i është i destinuar për përdorim nga individë dhe kompani mes të cilave nuk ka besim, mund të përfundojmë se një mënyrë e tillë ruajtjeje të dhënash nuk është e përshtatshme për blockchain-in.
Le ta shohim mbrojtjen e blloqeve nga falsifikimi. Në fazën e parë, ne do të përpiqemi të mbrojmë çdo bllok me një kontroll total (Fig. 1.2).

Fig. 1.2. Shtimi i mbrojtjes së të dhënave të blloqeve me një kontroll total
Tani, një sulmues nuk mund ta ndryshojë thjesht një bllok, pasi në të ka një kontroll total të të dhënave të bllokut. Kontrolli i kontrollit total do të tregojë se të dhënat janë ndryshuar.
Për të llogaritur kontrollin total, mund të përdorni një nga funksionet e hash-it, si MD-5, SHA-1, SHA-256 etj. Funksionet hash llogarisin një vlerë të caktuar (p.sh., në formën e një stringu teksti me gjatësi të qëndrueshme) si rezultat i operacioneve të pakthyeshme mbi bllokun e të dhënave. Operacionet varen nga lloji i funksionit hash.
Edhe me një ndryshim të vogël në përmbajtjen e bllokut të të dhënave, vlera e funksionit hash gjithashtu do të ndryshojë. Duke analizuar vlerën e funksionit hash, është e pamundur të rikthesh bllokun e 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ë, kontrolli total (funksioni hash) mbron vetëm blloqet individuale, por jo gjithë zinxhirin e blloqeve. Duke ditur algoritmin e llogaritjes së funksionit hash, një sulmues mund ta zëvendësojë lehtësisht përmbajtjen e bllokut. Gjithashtu, asgjë nuk do ta pengojë atë që të fshijë blloqe nga zinxhiri ose të shtojë të reja.
Për të mbrojtur të gjithë zinxhirin në përgjithësi, mund të ruani në çdo bllok së bashku me të dhënat edhe hash-in e të dhënave të bllokut të mëparshëm (Fig. 1.3).

Fig. 1.3. Shtimi i hash-it të bllokut të mëparshëm në të dhënat e bllokut
Në këtë skemë, për të ndryshuar ndonjë bllok, duhet të llogariten funksionet hash të të gjithë blloqeve të mëpastajëm. Çfarë mund të jetë problemi?
Në blockchain-ët e vërtetë, janë krijuar vështirësi artificiale për shtimin e blloqeve të rinj — përdoren algoritme që kërkojnë shumë burime përpunimi. Duke marrë parasysh që për të bërë ndryshime në bllok, duhet të llogaritet jo vetëm ky bllok, por të gjithë të tjerët pas tij, kjo do të jetë jashtëzakonisht e vështirë.
Mos harrojmë gjithashtu se të dhënat e blockchain-it ruajen (repikohen) në shumë nyje të rrjetit, pra përdoret ruajtja e decentralizuar. Kjo e bën shumë më të komplikuar falsifikimin e një blloku, pasi që ndryshimet duhet të bëhen në të gjitha nyjet e rrjetit.
Duke qenë se blloqet ruajnë informacionet e bllokut të mëparshëm, mund të kontrollohet përmbajtja e të gjithë blloqeve të zinxhirit.
Blockchain Ethereum
Blockchain Ethereum paraqet një platformë mbi të cilën mund të krijohen aplikacione të shpërndara DApp. Në krahasim me platforma të tjera, Ethereum lejon përdorimin e ashtuquajturëve kontrata të mençura (smart contracts), të shkruara në gjuhën e programimit Solidity.
Kjo platformë u krijua në vitin 2013 nga Vitalik Buterin, themeluesi i revistës Bitcoin Magazine, dhe u lançua në vitin 2015. Gjithçka që do të studiojmë ose bëjmë në kursin tonë të mësimit, ka lidhje pikërisht me blockchain-in Ethereum dhe kontratat e mençura Solidity.
Mining ose si krijohen blloqet
Mining (mining) përfaqëson një proces të komplikuar dhe të kërkuar burimesh për shtimin e blloqeve të rinj në zinxhirin e blockchain-it, e aspak «shfrytëzim të kriptovalutave». Mining-u siguron funksionimin e blockchain-it, pasi ky proces është ai që përgjigjet për shtimin e transaksioneve në blockchain-in Ethereum.
Njerëzit dhe organizatat që merren me shtimin e blloqeve, quhen minerë (miner).
Softveri (SW) që punon në nyjet e minerëve përpiqet të gjejë për bllokun e fundit parametrin e hash-it të quajtur Nonce, në mënyrë që të arrijë një vlerë të caktuar funksioni hash, të caktuar nga rrjeti. Algoritmi i hash-it Ethash, i përdorur në Ethereum, lejon marrjen e vlerës Nonce vetëm përmes një prove të vazhdueshme.
Nëse nyja e minerit gjen vlerën e duhur të Nonce, atëherë ky është i njohur si prova e punës (PoW, Proof-of-work). Në këtë rast, nëse bloku shtohet në rrjetin Ethereum, minatori merr një shpërblim të caktuar në monedhën e rrjetit — Ether. Në momentin e përgatitjes së librit tonë, shpërblimi është 5 Ether, por me kalimin e kohës ai do të zvogëlohet.
Kështu, minatorët e Ethereum sigurojnë funksionimin e rrjetit duke shtuar blloqe dhe marrin për këtë para kriptografike. Në internet do të gjeni shumë informacion mbi minatorët dhe minimin, ndërsa ne do të përqendrohemi në krijimin e kontratave Solidity dhe aplikacioneve të decentralizuara DApp në rrjetin Ethereum.
Përfundimet e mësimit
Në mësimin e parë, u njohët me blockchain dhe mësuat se çfarë përfaqëson një sekuencë blloqesh të strukturuar në një mënyrë të veçantë. Përmbajtja e blloqeve të regjistruara më parë nuk mund të ndryshohet, pasi për këtë do të duhej të rishikoheshin të gjithë blloqet e mëpasshme në shumë nyje të rrjetit, për çka nevojiten shumë burime dhe kohë.
Blockchain mund të përdoret për të ruajtur rezultatet e transaksioneve të kryera. Qëllimi i tij kryesor është organizimi i kryerjes së sigurt të transaksioneve midis palëve (individëve dhe organizatave) që nuk kanë besim të ndërsjellë. Ju mësuat se në cilat fusha specifike të biznesit dhe në cilat sektorë mund të përdoret blockchain Ethereum dhe kontratat smart Solidity. Kjo përfshin sektorin bankar, regjistrimin e të drejtave të pronës, dokumenteve dhe të ngjashme.
Ju gjithashtu mësuat se gjatë përdorimit të blockchain mund të lindin probleme të ndryshme. Këto përfshijnë problemet e verifikimit të informacionit që shtohet në blockchain, shpejtësinë e funksionimit të blockchain, kostot e transaksioneve, problemin e shkëmbimit të të dhënave midis kontratave smart dhe botës reale, si dhe sulmet e mundshme nga keqbërësit që synojnë të vjedhin fonde kriptomonedhe nga llogaritë e përdoruesve.
Gjithashtu, ne treguam shkurtimisht mbi minimin si procesin e shtimit të bllokëve të rinj në blockchain. Minimi është i nevojshëm për kryerjen e transaksioneve. Ato që merren me minimin sigurojnë funksionimin e blockchain dhe për këtë marrin shpërblim në kriptomonedhë.
Mësimi 2. Përgatitja e ambientit të punës në OS Ubuntu dhe DebianZgjedhja e sistemit operativ
Instalimi i utiliteteve të nevojshme
Instalimi i Geth dhe Swarm në Ubuntu
Instalimi i Geth dhe Swarm në Debian
Përgatitja paraprake
Shkarkimi i shpërndarjes Go
Instalimi i variablave të ambientit
Kontrolli i versions Go
Instalimi i Geth dhe Swarm
Krijimi i një blockchain privat
Готовим файл genesis.json
Krijimi i një katalogu për punë
Krijimi i një llogarie
Fillimi i inicializimit të nodit
Parametrat e nisjes së nodit
Lidhja me nodin tonë
Menaxhimi i minierës dhe kontrolli i bilancit
Mbyllja e konsolës Geth
Përfundimet e mësimit
Mësimi 3. Përgatitja e ambientit 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 aksesit SSH
Instalimi i një adrese IP statike
Instalimi i utiliteteve të nevojshme
Instalimi i Go
Shkarkimi i shpërndarjes Go
Instalimi i variablave të ambientit
Kontrolli i versions Go
Instalimi i Geth dhe Swarm
Krijimi i një blockchain privat
Kontrolli i llogarisë dhe bilancit
Përfundimet e mësimit
Mësimi 4. Llogaritë dhe transferimi i fondeve midis llogariveShikimi dhe shtimi i llogarive
Shikimi i listës së llogarive
Shtimi i një llogarie
Parametrat e komandës geth account
Fjalëkalimet e llogarive
Kriptovaluta në Ethereum
Njësitë monetare të Ethereum
Përcaktimi i bilancit aktual të llogarive tona
Transferimi i fondeve nga një llogari në tjetrën
Metoda eth.sendTransaction
Shikimi i statusit të transaksionit
Dëshmia e transaksionit
Përfundimet e mësimit
Mësimi 5. Publikimi i kontratës së parëKontratë inteligjente në Ethereum
Ekzekutimi i kontratës inteligjente
Makinë virtuale Ethereum
Mjedisi i integruar i zhvillimit Remix Solidity IDE
Nisja e kompilimit
Thirrja e funksioneve të kontratës
Publikimi i kontratës në rrjetin privat
Marrja e përkufizimit ABI dhe kodit binar të kontratës
Publikimi i kontratës
Kontrolli i statusit të transaksionit të publikimit të kontratës
Thirrja e funksioneve të kontratës
Kompjuteri i paketave solc
Instalimi i solc në Ubuntu
Instalimi i solc në Debian
Kompilimi i kontratës HelloSol
Publikimi i kontratës
Instalimi i solc në Rasberian
Përfundimet e mësimit
Урок 6. Смарт-контракты и Node.jsУстановка 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
Skenari për marrjen e listës së llogarive në konsolë
Skenari për publikimin e kontratës inteligjente
Nisja dhe marrja e parametrave
Marrja e parametrave të nisjes
Kompilimi i kontratës
Çelësi i llogarisë
Shkarkimi i ABI dhe kodit binar të kontratës
Vlerësimi i sasisë së nevojshme të gazit
Krijimi i objektit dhe nisja e publikimit të kontratës
Nisja e skenarit për publikimin e kontratës
Thirrja e funksioneve të kontratës inteligjente
A është e mundur përmirësimi i kontratës inteligjente të publikuar?
Puna me Web3 version 1.0.x
Marrja e listës së llogarive
Publikimi i kontratës
Thirrja e funksioneve të kontratës
Transferimi i fondeve nga një llogari në tjetrën
Transferimi i fondeve në llogarinë e kontratës
Rivendosja e kontratës inteligjente HelloSol
Krijimi i një skenari për shikimin e bilancit të llogarisë
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Shtimi i fondeve në llogarinë e kontratës inteligjente
Përfundimet e mësimit
Mësimi 7. Hyrje në TruffleInstalimi i Truffle
Krijimi i projektit HelloSol
Krijimi i katalogut dhe skedave të projektit
Katalogu contracts
Katalogu migrations
Katalogu test
Файл truffle-config.js
Kompilimi i kontratës HelloSol
Nisja e publikimit të kontratës
Thirrja e funksioneve të kontratës HelloSol në thirrjen Truffle
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Instalimi i modulit truffle-contract
Thirrja e funksioneve të kontratës getValue dhe getString
Thirrja e funksioneve të kontratës setValue dhe setString
Modifikimi i kontratës dhe publikimi sërish
Puna me Web3 version 1.0.x
Kemi bërë ndryshime në smart kontratën HelloSol
Skriptet për thirrjen e metodave të kontratës
Testimi në Truffle
Test në Solidity
Test në JavaScript
Përfundimet e mësimit
Mësimi 8. Llojet e të dhënave në SolidityKontrata për studimin e llojeve të të dhënave
Llojet logjike të të dhënave
Numra të pandërprerë dhe numra të nënshkruar
Numra me presje fikse
Adresa
Variablat e llojeve të komplikuara
Masa me madhësi fikse
Masa dinamikë
Enum
Struktura
Hartat mapping
Përfundimet e mësimit
Mësimi 9. Migrimi i kontratave në një rrjet privat dhe në rrjetin RinkebyPublikimi i kontratës nga Truffle në rrjetin privat Geth
Përgatitja e nyjës së rrjetit privat
Përgatitja e kontratës për përdorim
Kompilimi dhe migrimi i kontratës në rrjetin Truffle
Nisja e migrimit në rrjetin lokal geth
Obtaining Truffle artifacts
Publikimi i kontratës nga Truffle në rrjetin e testimit Rinkeby
Përgatitja e nyjës Geth për punë me Rinkeby
Sinhronizimi i nyjës
Shtimi i llogarive
Financimi i llogarisë Rinkeby me ether
Nisja e migrimit të kontratës në rrjetin Rinkeby
Shikimi i informacionit në lidhje me kontratën në rrjetin Rinkeby
Konsol Truffle për rrjetin Rinkeby
Një mënyrë më e thjeshtë për të thirrur funksionet e kontratës
Вызов методов контракта при помощи Node.js
Transferimi i fondeve midis llogarive në konsolën Truffle për Rinkby
Përfundimet e mësimit
Mësimi 10. Ruajtja e decentralizuar e të dhënave Ethereum SwarmSi funksionon Ethereum Swarm
Instalimi dhe nisja e Swarm
Operacionet me skedarë dhe katalogë
Ngarkimi i skedarit në Ethereum Swarm
Leximi i skedarit nga Ethereum Swarm
Shikimi i manifestit të skedarit të ngarkuar
Ngarkimi i katalogëve me nënkatalogë
Leximi i skedarit nga katalogu i ngarkuar
Përdorimi i portit publik të Swarm
Обращение к Swarm из скриптов Node.js
Moduli Perl Net::Ethereum::Swarm
Instalimi i modulit Net::Ethereum::Swarm
Shkrimi dhe leximi i të dhënave
Përfundimet e mësimit
Mësimi 11. Framework-u Web3.py për punën me Ethereum në PythonInstalimi i Web3.py
Përditësimi dhe instalimi i paketave të nevojshme
Instalimi i modulit easysolc
Publikimi i kontratës me ndihmën e Web3.py
Kompilimi i kontratës
Lidhja me ofruesin
Ekzekutimi i publikimit të kontratës
Ruajtja e adresës së kontratës dhe abi në një skedar
Nisja e skenarit për publikimin e kontratës
Thirrja e metodave të kontratës
Leximi i adresës dhe abi të kontratës nga skedari JSON
Lidhja me ofruesin
Krijimi i një objekti të kontratës
Thirrja e metodave të kontratës
Truffle dhe Web3.py
Përfundimet e mësimit
Mësimi 12. OracleA mund t'i besohet një kontrate inteligjente të dhënave nga bota e jashtme?
Orakujt si ndërmjetës informativë të bllokadës
Burimi i të dhënave
Kodi për të paraqitur të dhënat nga burimi
Orakulli për të regjistruar kursin e këmbimit në bllokadë
Kontrata USDRateOracle
Përditësimi i kursit të këmbimit në kontratën inteligjente
Përdorimi i ofruesit Web Socket
Priste ngjarjen RateUpdate
Përpunimi i ngjarjes RateUpdate
Iniciimi i përditësimit të të dhënave në kontratën inteligjente
Përfundimet e mësimit
Burimi: habr.com
