
Kam punuar për më shumë se një vit mbi librin «Krijimi i kontratave të mençura Solidity për blockchainin Ethereum. Udhëzues praktik», dhe tani puna është e përfunduar, libri .
Shpresoj se libri im do të ndihmojë të filloni shpejt krijimin e kontratave të mençura Solidity dhe aplikacioneve të shpërndara DApp për blockchainin Ethereum. Ai përb consists nga 12 mësime me detyra praktike. Pas përfundimit të tyre, lexuesi do të jetë në gjendje të krijojë nyjat e tij lokale Ethereum, të publikojë kontrata të mençura dhe të thërrasë metodat e tyre, të shkëmbejë të dhëna mes botës reale dhe kontratave të mençura me anë të orakujve, të punojë me rrjetin e testimit Rinkeby.
Libri është drejtuar të gjithë atyre që janë të interesuar për teknologjitë e avancuara në fushën e blockchaineve dhe duan të fitojnë shpejt njohuri që lejojnë punë interesante dhe me perspektivë.
Më poshtë do të gjeni përmbajtjen dhe kapitullin e parë të librit (po ashtu në janë të aksesueshme fragmente të librit). Shpresoj të marr reagime, vërejtje dhe sugjerime. Të gjitha këto do t'i marr parasysh gjatë përgatitjes së ediçionit të ardhshëm të librit.
PërmbajtjaHyrjeLibri ynë është për ata që duan jo vetëm të kuptojnë parimet e funksionimit të blockchain-it Ethereum, por edhe 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ë i mirë për t'u punuar praktisht, duke kryer detyrat që përshkruhen në mësime. Për ta punuar, do të nevojitet një kompjuter lokal, një server virtual ose të bazuar në cloud me sistemin operativ Debian ose Ubuntu të instaluar. Po ashtu, për kryerjen e shumë detyrave mund të përdoret Raspberry Pi.
Në mësimin e parë ne do të shqyrtojmë parimet e funksionimit të blockchain-it Ethereum dhe terminologjinë kryesore, si dhe do të flasim mbi vendet ku mund të përdoret ky blockchain.
Qëllimi mësimit të dytë — krijimi i një nodi të blockchain-it privat Ethereum për punë të mëtejshme në kuadër të këtij kursi në serverin Ubuntu dhe Debian. Ne do të shqyrtojmë veçantitë e instalimit të mjeteve kryesore, të tilla si geth, që siguron funksionimin e nodit të blockchain-it tonë, si dhe demonin e ruajtjes së decentralizuar të të dhënave swarm.
Mësimi i tretë do t'ju mësojë të kryeni eksperimente me Ethereum në një mikrokompjuter të lirë Raspberry Pi. Do të instaloni sistemin operativ (OS) Rasberian në Raspberry Pi, utilitarin Geth që siguron funksionimin e nodit të bllokut të zinxhirëve, si dhe demonin e ruajtjes së dhënash të decentralizuara Swarm.
Mësimi i katërt është i dedikuar për llogaritë dhe njësitë e kriptovalutës në rrjetin Ethereum, si dhe mënyrat e transferimit të fondeve nga një llogari në tjetrën nga konsola Geth. Do të mësoni si të krijoni llogari, të inicioni transaksione për transferimin e fondeve, të merrni gjendjen e transaksionit dhe pranuar mjetin e tij.
Në mësimin e pestë do të njiheni me kontratat inteligjente në rrjetin Ethereum, dhe do të mësoni rreth ekzekutimit të tyre nga makineria virtuale Ethereum.
Do të krijoni dhe publikoni kontratën tuaj të parë inteligjente në një rrjet privat Ethereum dhe do të mësoni si të thirrni funksionet e saj. Për këtë do të përdorni ambientin e zhvillimit Remix Solidity IDE. Për më tepër, do të mësoni si të instaloni dhe përdorni kompajlerin paketë solc.
Po ashtu, do t'ju flasim për atë që quhet ndërfaqja binare e aplikacionit Application Binary Interface (ABI) dhe do t'ju mësojmë si ta përdorni atë.
Mësimi i gjashtë i kushton krijimit të skripteve JavaScript, që funksionojnë nën menaxhimin e Node.js dhe kryejnë operacione me kontrata të mençura Solidity.
Do të instaloni Node.js në sistemet operative Ubuntu, Debian dhe Raspbian, do të shkruani skripte për publikimin e kontratës së mençur në rrjetin lokal Ethereum dhe thirrjen e funksioneve të saj.
Për më tepër, do të mësoni si të transferoni mjete midis llogarive normale me anë të skripteve dhe si t’i kreditoni ato në llogaritë e kontratave të mençura.
Në mësimin e shtatë do të mësoni të instaloni dhe përdorni ambientin e integruar Truffle, që është popullor mes zhvilluesve të kontratave të mençura Solidity. Do të mësoni të krijoni skripte JavaScript që thërrasin funksionet e kontratave duke përdorur modulinn truffle-contract, si dhe të testeoni kontratën tuaj të mençur me ndihmën e Truffle.
Në mësimin e tetë i kushton tipeve të të dhënave në Solidity. Do të shkruani kontrata të mençura që punojnë me tipe të dhënash si numra të plotë me dhe pa nënshkrim, numra me nënshkrim, strings, adresa, variabla të tipeve komplekse, array, enumerime, struktura dhe fjalorë.
Në mësimin e nëntë Ju do të afroni edhe një hap më pranë 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ë rrjetin testues Rinkeby. Debugging e kontratave inteligjente në rrjetin Rinkeby është shumë e dobishme para publikimit në rrjetin kryesor — atje është pothuajse gjithçka e vërtetë, por falas.
Gjatë mësimit do të krijoni një nyjë të rrjetit testues Rinkeby, do ta mbushni atë me fonde dhe do të publikoni një kontratë inteligjente.
Mësimi 10 i kushtohet magazinave të shpërndara të të dhënave Ethereum Swarm. Duke përdorur magazinat e shpërndara, ju kurseni në ruajtjen e të dhënave të mëdha në blockchainin Ethereum.
Gjatë këtij mësimi do të krijoni një magazinë lokale Swarm, do të kryeni operacione të shkrimit dhe leximit të skedarëve, si dhe katalogëve me skedarë. Më pas do të mësoni si të punoni me portalin publik Swarm, do të shkruani skenarë për të hyrë në Swarm nga Node.js, po ashtu edhe me modulin Perl Net::Ethereum::Swarm.
Qëllimi i mësimit 11 — të mësoni të punoni me kontratat smart Solidity duke përdorur gjuhën e njohur programuese Python dhe kornizën Web3.py. Do të instaloni këtë kornizë, do të shkruani skripte për kompilimin dhe publikimin e kontratave smart, si dhe për thirrjen e funksioneve të tyre. Gjatë kësaj, Web3.py do të përdoret si i tillë, ashtu edhe në bashkëpunim me ambientin e zhvillimit Truffle.
Në mësimin 12 do të mësoni të kaloni të dhënat midis kontratave smart dhe botës reale duke përdorur oracle. Kjo do t'ju ndihmojë të merrni të dhëna nga faqet e internetit, pajisjet e internetit të gjërave IoT, pajisje të ndryshme dhe senzora, dhe të dërgoni të dhëna nga kontratat smart në këto pajisje. Në pjesën praktike të mësimit do të krijoni një oracle dhe një kontratë smart që merr kursin aktual të këmbimit USD në rubla nga faqja e Bankës Qendrore të RF.
Mësimi 1. Në lidhje me blockchain dhe rrjetin EthereumQëllimi i mësimit: të njiheni me parimet e funksionimit të blockchain Ethereum, fushat e aplikimit të tij dhe terminologjinë kryesore.
Detyrat praktike: në këtë mësim nuk parashikohen.
Sot, me siguri, nuk ka zhvillues software-i që nuk ka dëgjuar për teknologjinë blockchain, kriptovalutat, bitcoin, ofertat fillestare të monedhave (ICO), kontratat smart, si dhe për termat dhe konceptet e tjera që lidhen me blockchain-in.
Teknologjia e blockchain-it hap tregje të reja dhe krijon vende pune për programuesit. Nëse do të mësoni të gjitha nuancat e teknologjive të kriptovalutave dhe kontratave smart, nuk duhet të keni probleme në aplikimin e këtyre njohurive në praktikë.
Kemi për të thënë se rreth kriptovalutave dhe blockchain-eve ka shumë spekulime. Ne do ta lemë anash diskutimin mbi ndryshimet e çmimeve të kriptovalutave, krijimin e piramidave, nuancat e legjislacionit të kriptovalutave, etj. Në kursin tonë të mësimit, do të përqendrohemi kryesisht në aspektet teknike të përdorimit të kontratave smart në blockchain-in Ethereum dhe në zhvillimin e ashtuquajturave aplikacione të decentralizuara (DApp).
Çfarë është blockchain?
Blockchain (Blloku i të Dhënave) është një zinxhir i blloqeve 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 quajtur blloku fillestar (genesis block) ose blloku i gjenezës. Pas tij vjen blloku i dytë, pastaj i treti dhe kështu me radhë.
Të gjithë këta blloqe të dhënash automatikisht shumëfishohen në numër të madh nodash në rrjetin e blockchain-it. Kështu sigurohet ruajtja e decentralizuar e të dhënave të blockchain-it.
Mund ta imagjinoni sistemin e blockchain-it si një sasi të madhe nodash (servera fizikë ose virtualë), të bashkuara në një rrjet dhe që replikojnë të gjitha ndryshimet në zinxhirin e blloqeve të dhënash. Është si një kompjuter gjigant multi-server, ku nodet 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 të Dhënave të Shpërndara
Blockchain mund të تصورoni si një bazë të dhënash të shpërndara, e replikueshme në të gjitha nodet e rrjetit të blockchain-it. Në teori, blockchain do të funksionojë derisa të funksionojë të paktën një nod që ruan të gjitha blloqet e blockchain-it.
Regjistri i shpërndarë i të dhënave
Blockchain mund të تصورoni si një regjistër të shpërndarë të të dhënave dhe operacioneve (transaksioneve). Një emër tjetër për këtë regjistër është libri i përgjithshëm.
Në regjistrin e shpërndarë mund të shtohen të dhëna, por nuk është e mundur t'i ndryshohen ose fshihen ato. Kjo pamundësi arrihet, ndër të tjera, nëpërmjet përdorimit të algoritemeve kriptografike, algoritemeve speciale për shtimin e blloqeve në zinxhir dhe ruajtjes së decentralizuar të të dhënave.
Në shtimin e blloqeve dhe ekzekutimin e operacioneve (transaksioneve) përdoren çelësat privatë dhe publikë. Ato kufizojnë përdoruesit e blockchain-it, duke u ofruar qasje vetëm në blloqet e tyre të dhënash.
Transaksionet
Blockchain ruan informacionin për operacionet (transaksionet) në blloqe. Në këtë mënyrë, transaksionet e vjetra, që tashmë janë kryer, nuk mund të rikthehen ose ndryshohen. Transaksionet e reja ruhen në blloqet e reja, të shtuar.
Kështu, në blockchain mund të regjistrohet në mënyrë të pandryshueshme e gjithë historia e transaksioneve. Prandaj, blockchain mund të përdoret, për shembull, për ruajtjen e sigurt të operacioneve bankare, informacionit mbi të drejtat e autorit, historinë e ndryshimeve të pronarëve të pronave dhe të ngjashme.
Blockchain-i Ethereum përmban atë që quhet gjendje e sistemit. Ndërsa transaksionet kryhen, gjendja ndryshon nga fillestare në aktuale. Transaksionet regjistrohen në blloqe.
Blockchain-et publikë dhe privatë
Duhet theksuar se gjithçka e thënë është e vërtetë vetëm për ato që quhen rrjete publike blockchain, të cilat nuk mund të kontrollohen nga asnjë individ fizik ose juridik, agjenci shtetërore ose qeveri.
Ato që quhen rrjete private blockchain 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 të zinxhirit.
Aplikimet praktike të blockchain-it
Për çfarë mund të përdoret blockchain-i?
Nëse flasim shkurt, blockchain-i lejon kryerjen e operacioneve (transaksioneve) në mënyrë të sigurt midis personave ose kompanive që nuk kanë besim në njëra-tjetrën. Të dhënat e regjistruara në blockchain (transaksione, të dhëna personale, dokumente, dëshmi, kontrata, 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ë besueshëm të shpërndarë për dokumente të ndryshme.
Sigurisht, ju e dini se sistemet e kriptomonedhave krijohen mbi bazën e bllokadave, të destinuara të zëvendësojnë paratë e zakonshme të papel shume. Paratë e papel quhen gjithashtu fiat (nga Fiat Money).
Bllokada siguron ruajtjen dhe pandryshueshmërinë e transaksioneve të shkruara në blloqe, prandaj ajo mund të përdoret për krijimin e sistemeve të kriptomonedhave. Ajo përmban të gjithë historinë e transferimeve të fondeve kripto ndërmjet përdoruesve të ndryshëm (akuantave), dhe çdo operacion mund të gjurmohen.
Edhe pse operacionet brenda sistemeve të kriptomonedhave mund të jenë anonime, tërheqja e kriptomonedhave dhe shkëmbimi i saj me para fiat zakonisht çon në zbërthimin e identitetit të pronarit të aktivin të kriptomonedhës.
Kontratat e quajtura smart, që përbëjnë softuer që funksionon në rrjetin Ethereum, lejojnë automatizimin e procesit të nënshkrimit të marrëveshjeve dhe kontrollin e përmbushjes së tyre. Kjo është veçanërisht efektive nëse pagesa për marrëveshjen bëhet me kriptomonedhën Ether.
Bllokada Ethereum dhe kontratat smart Ethereum, të shkruara në gjuhën e programimit Solidity, mund të përdoren, për shembull, në fushat e tilla:
- alternativa ndaj noteri për vërtetimin e dokumenteve;
- ruajtja e regjistrit të pasurive të paluajtshme dhe informacionit mbi transaksionet me pasuritë e paluajtshme;
- ruajtja e informacionit mbi të drejtat e autorit për objekte të pronësisë intelektuale (libra, imazhe, vepra muzikore etj.);
- krijimi i sistemeve të votimit të pavarur;
- sfera financiare dhe veprimtaria bankare;
- logjistika në përmasat ndërkombëtare, ndjekja e lëvizjes së ngarkesave;
- ruajtja e të dhënave personale si një analog i sistemit të identifikimit;
- transaksione të sigurta në fushën tregtare;
- ruajtja e rezultateve të ekzaminimeve mjekësore, si dhe historiku i procedurave të caktuara;
Problemet me blockchain-in;
Por, sigurisht, nuk është gjithçka kaq e thjeshtë siç mund të duket!
Ka probleme me verifikimin e të dhënave para se ato të shtohen në blockchain (për shembull, a janë të falsifikuara?), probleme në sigurinë e softuerit sistemor dhe aplikativ që përdoret për punën me blockchain-in, probleme me mundësinë e përdorimit të metodave të ingjinjerisë sociale për të vjedhur qasjen në portofolat me kriptovaluta etj.
Përsëri, nëse bëhet fjalë për një blockchain privat, i cili i përket një personi ose organizate dhe jo për një blockchain publik me node të shpërndara në të gjithë botën, niveli i besimit këtu do të jetë vetëm aq sa është forca e besimit ndaj këtij personi apo organizate.
Duhet gjithashtu të merret parasysh se 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 në blockchain nuk mund të ndryshohet mund të ndihmojë në parandalimin ose hetimin e llojeve të ndryshme të mashtrimeve.
Aplikacionet e decentralizuara të Ethereum do të ishin më të lehta për t'u përdorur nëse paguhen me kriptovaluta. Sa më shumë njerëz që zotërojnë kriptovaluta ose janë të gatshëm t'i blejnë ato, aq më shumë do të popullohen aplikacionet DApp dhe smart kontratat.
Mes problemeve të zakonshme të blockchain-it që pengojnë aplikimin e tij praktik, mund të përmenden shpejtësia e kufizuar e shtimit të bllokut të ri dhe koston relativisht të lartë të transaksioneve. Por teknologjitë në këtë fushë po zhvillohen intensivisht, dhe ka shpresa se problemet teknike do të zgjidhen me kalimin e kohës.
Një problem tjetër është se kontratat inteligjente të blockchain-it Ethereum funksionojnë në një mjedis të izoluar të makinave virtuale, dhe nuk kanë akses në të dhëna nga bota reale. Në veçanti, për programin e kontratës inteligjente nuk është e mundur të lexojë të dhëna nga faqet e internetit ose ndonjë pajisje fizike (sensorë, kontakte etj.), as nuk mund të dalë me të dhëna në pajisje të jashtme. Ky problem dhe mënyrat e zgjidhjes së tij do të diskutohen në orën e dedikuar Oracle-ve — ndërmjetësve informativë të kontratave inteligjente.
Kaçka kufizime ekzistojnë në fushën e legjislacionit. Në disa vende, për shembull, përdorimi i kriptomonedhës si mjete pagese ndalohet, por mund të mbash atë si një aset digjital, siç janë gjithashtu titujt e tregtisë. Këto asete mund të blihen dhe shiten në bursa. Në çdo rast, kur krijoni një projekt që funksionon me kriptomonedha, duhet të njiheni me legjislacionin e atij vendi nën juridiksionin e të cilit bie projekti juaj.
Si formohet zinxhiri i blockchain
Siç e thamë më parë, blockchain paraqet një zinxhir të thjeshtë blokesh të dhënash. Në fillim, 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 më të fundit.
Në fig. 1.1 kemi treguar variantin më të thjeshtë të sekuencës së bllokëve, ku blloku i parë i referohet të ardhshëm.

Fig. 1.1. Sekuenca e thjeshtë e bllokëve
Megjithatë, në këtë variant, është shumë lehtë të falsifikosh përmbajtjen e çdo blloku në zinxhir, pasi blloqet nuk përmbajnë asnjë informacion për mbrojtjen nga ndryshimi. Duke marrë parasysh se blockchain është i destinuar për përdorim nga njerëz dhe kompani që nuk kanë besim, mund të përfundojmë se një mënyrë e tillë ruajtjeje të dhënash nuk përshtatet për blockchain.
Le të merremi me mbrojtjen e blloqeve nga falsifikimi. Në fazën e parë, do të provojmë të mbrojmë çdo bllok me një kontrolle (Figura 1.2).

Figura 1.2. Shtimi i mbrojtjes së të dhënave të bllokëve me një kontrolle
Tani, një sulmues nuk mund ta ndryshojë thjesht bllokun, pasi ai përmban një kontroll të të dhënave të bllokut. Kontrolli i kontrollit do të tregojë që të dhënat janë ndryshuar.
Për të llogaritur kontrollin, mund të përdorni një nga funksionet e hash-it, siç janë MD-5, SHA-1, SHA-256 etj. Funksionet e hash-it llogarisin një vlerë të caktuar (p.sh., në formën e një vargu tekstual me gjatësi të vazhdueshme) si rezultat i ekzekutimit të funksioneve të pakthyeshme mbi bllokun e të dhënave. Operacionet varen nga lloji i funksionit të hash-it.
Edhe me një ndryshim të vogël në përmbajtjen e bllokut të dhënash, vlera e funksionit hash do të ndryshojë gjithashtu. Duke analizuar vlerën e funksionit hash, nuk është e mundur të rikuperohet blloku i të dhënave për të cilin është llogaritur ajo.
A do të jetë e mjaftueshme një mbrojtje e tillë? Fatkeqësisht, jo.
Në këtë skemë, suma kontrolli (funksioni hash) mbron vetëm blloqet individuale, por jo të gjithë zinxhirin e blloqeve. Duke ditur algoritmin për llogaritjen e funksionit hash, një sulmues mund ta ndryshojë lehtësisht përmbajtjen e bllokut. Asgjë nuk e ndalon atë të fshijë blloqet nga zinxhiri ose të shtojë të reja.
Për të mbrojtur të gjithë zinxhirin si një tërësi, mund të ruhet në secilin bllok, së bashku me të dhënat, gjithashtu edhe hash-in e të dhënave të bllokut të mëparshëm (Figura 1.3).

Figura 1.3. Shtojmë në bllokun e dhënave hash-in e bllokut të mëparshëm
Në këtë skemë, për të ndryshuar ndonjë bllok, duhet të ri-llogaritet funksioni hash i të gjithë blloqeve pasues. Duket sikur, çfarë problemi ka?
Në blloqet e vërtetë, janë krijuar vështirësi artificiale për të shtuar blloqe të reja — algoritmet përdoren që kërkojnë shumë burime kompjuterike. Duke pasur parasysh se për të bërë ndryshime në një bllok, duhet të ri-kalkulohet jo vetëm ky bllok, por të gjithë ata që pasojnë, do të jetë jashtëzakonisht e vështirë.
Le të kujtojmë gjithashtu se të dhënat e blockchain-it ruhen (duplikohen) në shumë node të rrjetit, pra përdoret ruajtja e decentralizuar. Kjo e komplikon shumë falsifikimin e bllokut, sepse ndryshime duhet të bëhen në të gjitha node-t e rrjetit.
Pasi blloqet mbajnë informacion rreth bllokut të mëparshëm, mund të kontrollohet përmbajtja e të gjithë blloqeve në zinxhir.
Blockchain Ethereum
Blockchain Ethereum përfaqëson një platformë mbi të cilën mund të krijohen aplikacione të shpërndara DApp. Ndryshe nga platforma të tjera, Ethereum lejon përdorimin e ashtuquajturve 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. Çdo gjë që do të studiojmë ose bëjmë në kursin tonë ndërlidhet pikërisht me blockchain-in Ethereum dhe kontratat inteligjente Solidity.
Minimi ose si krijohen blloqet
Minimi (mining) është një proces mjaft i ndërlikuar dhe i kërkueshëm për burime për shtimin e blloqeve të reja në zinxhirin e blockchain-it, dhe aspak «shkëputja e kriptovalutave». Minimi siguron funksionalitetin e blockchain-it, pasi ky proces është përgjegjës për shtimin e transaksioneve në blockchain-in Ethereum.
Njerëzit dhe organizatat që merret me shtimin e blloqeve quhen minatorë (miner).
Software-i (SO) që punon në nyjat e minatorëve përpiqet të gjejë për bllokun e fundit parametrin e hash-it të quajtur Nonce, për të arritur një vlerë të caktuar të funksionit hash të caktuar nga rrjeti. Algoritmi i hashing-ut Ethash, i aplikuar në Ethereum, lejon arritjen e vlerës Nonce vetëm përmes një provimi të vazhdueshëm.
Nëse nyja e minerit ka gjetur vlerën e saktë të Nonce, kjo është ajo që quhet provë pune (PoW, Proof-of-work). Në këtë rast, nëse blloku shtohet në rrjetin Ethereum, minerët fitojnë një shpërblim të caktuar në monedhën e rrjetit — Ether. Në momentin e përgatitjes së librit tonë, shpërblimi është 5 Ether, megjithatë me kalimin e kohës ai do të ulet.
Kështu, minerët e Ethereum sigurojnë funksionimin e rrjetit duke shtuar blloqe dhe për këtë marrin para të kriptomonedhës. Në internet do të gjeni një sasi të madhe informacioni rreth minerëve dhe minerit, 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ë, ju u njoftuat me teknologjinë blockchain dhe mësuat se ajo përbën një sekuencë bllokesh të strukturuara në një mënyrë të veçantë. Përmbajtja e blloqeve të regjistruara më parë nuk mund të ndryshohet, pasi kjo do të kërkonte rindërritjen e të gjithë blloqeve të mëpasshme 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ë organizimi i një ekzekutimi të sigurt të transaksioneve midis palëve ( individëve dhe organizatave) të cilat nuk kanë besim të ndërsjellë. Ju keni mësuar në cilat fusha specifike të biznesit dhe në cilat sektorë mund të përdoret blockchain Ethereum dhe kontratat inteligjente Solidity. Kjo përfshin sektorin bankar, regjistrimin e të drejtave të pronësisë, dokumenteve etj.
Ju gjithashtu keni mësuar se gjatë përdorimit të blockchain-it mund të ndodhin probleme të ndryshme. Këto përfshijnë problemet e verifikimit të informacionit të shtuar në blockchain, shpejtësinë e punës së blockchain-it, kostot e transaksioneve, problemin e shkëmbimit të të dhënave midis kontratave inteligjente dhe botës reale, si dhe sulmet potenciale nga hackerat, të cilat synojnë të vjedhin fondet kripto nga llogaritë e përdoruesve.
Gjithashtu, ne përmendëm në mënyrë të shkurtër minierën si procesin e shtimit të blloqeve të reja në blockchain. Miniera është e nevojshme për kryerjen e transaksioneve. Ata që merret me minierën sigurojnë funksionalitetin e blockchain-it dhe marrin një shpërblim në kriptovalutë për këtë.
Mësimi 2. Përgatitja e mjedisit të punës në sistemet operative Ubuntu dhe DebianZgjedhja e sistemit operativ
Instalimi i utilitarëve të nevojshëm
Instalimi i Geth dhe Swarm në Ubuntu
Instalimi i Geth dhe Swarm në Debian
Përgatitja paraprake
Shkarkimi i distribucionit Go
Instalimi i variablave të ambientit
Kontrolli i versionit të Go
Instalimi i Geth dhe Swarm
Krijimi i një blockchain privat
Готовим файл genesis.json
Krijimi i një katalogu për punë
Krijimi i një llogarie
Nisja e inicializimit të nodit
Parametrat e nisjes së nodit
Lidhja me nodin tonë
Menaxhimi i minimit dhe kontrolli i bilancit
Mbyllja e konsolës Geth
Përfundimet 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 Raspbian
Instalimi i azhurnimeve
Aktivizimi i aksesit SSH
Instalimi i një adrese IP statike
Instalimi i utilitarëve të nevojshëm
Instalimi i Go
Shkarkimi i distribucionit Go
Instalimi i variablave të ambientit
Kontrolli i versionit të 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ërkufizimi i bilancit aktual të llogarive tona
Transferimi i fondeve nga një llogari në tjetrën
Metoda eth.sendTransaction
Shikimi i gjendjes së transaksionit
Të dhënat e transaksionit
Përfundimet e mësimit
Leksioni 5. Publikimi i kontratës së parëKontratat Smart në Ethereum
Ekzekutimi i kontratës Smart
Makinë virtuale Ethereum
Ambienti i integruar i zhvillimit Remix Solidity IDE
Fillimi i kompilimit
Thirrja e funksioneve të kontratës
Publikimi i kontratës në një rrjet privat
Marrja e përcaktimit ABI dhe kodit binar të kontratës
Publikimi i kontratës
Kontrollimi i gjendjes së transaksionit të publikimit të kontratës
Thirrja e funksioneve të kontratës
Kompilatori i paketës solc
Instalimi i solc në Ubuntu
Instalimi i solc në Debian
Kompilim 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
Skripti për të marrë listën e llogarive në konsolë
Skripti për publikimin e kontratës smart
Ekzekutimi dhe marrja e parametrave
Marrja e parametrave të ekzekutimit
Kompilimi i kontratës
Çlirimi i llogarisë
Ngarkimi i ABI dhe kodit binar të kontratës
Vlerësimi i sasisë së gazit të nevojshëm
Krijimi i objektit dhe nisja e publikimit të kontratës
Ekzekutimi i skriptit për publikimin e kontratës
Thirrja e funksioneve të kontratës smart
A është e mundur përditësimi i kontratës smart të publikuar
Puna me Web3 version 1.0.x
Marrim listën e 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
Përditësimi i kontraktit inteligjent HelloSol
Krijimi i skriptit për të parë bilancin e llogarisë
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Rimbushja e llogarisë së kontraktit inteligjent
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
Kompilim i kontratës HelloSol
Kryerja e publikimit të kontraktit
Thirrja e funksioneve të kontraktit HelloSol në thirrjet Truffle
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Instalimi i modulit truffle-contract
Thirrja e funksioneve të kontraktit getValue dhe getString
Thirrja e funksioneve të kontraktit setValue dhe setString
Modifikimi i kontraktit dhe ribotimi
Puna me Web3 version 1.0.x
Bëjmë ndryshime në kontraktin inteligjent HelloSol
Skriptet për thirrjen e metodave të kontraktit
Testimi në Truffle
Test në Solidity
Test në JavaScript
Përfundimet e mësimit
Mësimi 8. Llojet e të dhënave në SolidityKontrakti për studimin e llojeve të të dhënave
Llojet logjike të të dhënave
Numra të padiskutueshëm dhe numra të plotë me shenjë
Numra me pikë fikse
Adresa
Variablat e tipeve komplekse
Arrays me madhësi fikse
Arrays dinamike
Enumerimi
Strukturat
Dictionaries mapping
Përfundimet e mësimit
Mësimi 9. Migrimi i kontraktave në rrjetin privat dhe në rrjetin RinkebyPublikimi i kontraktit nga Truffle në rrjetin privat Geth
Përgatitja e nodit të rrjetit privat
Përgatitja e kontratës për operim
Kompilimi dhe migrimi i kontratës në rrjetin Truffle
Startimi i migrimit në rrjetin lokal geth
Nxjerrja e artefakteve Truffle
Publikimi i kontratës nga Truffle në rrjetin testues Rinkeby
Përgatitja e nodit Geth për t'u punuar me Rinkeby
Sinkronizimi i nodit
Shtimi i llogarive
Plotësimi i llogarisë Rinkeby me Ethereum
Startimi i migrimit të kontratës në rrjetin Rinkeby
Shikimi i informacionit rreth kontratës në rrjetin Rinkeby
Konsola 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 Rinkeby
Përfundimet e mësimit
Mësimi 10. Ruajtja e të dhënave të decentralizuara në Ethereum SwarmSi funksionon Ethereum Swarm
Instalimi dhe startimi i 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ën-katalogë
Leximi i skedarit nga katalogu i ngarkuar
Përdorimi i kalimit 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. Korniza Web3.py për punë 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 Web3.py
Kompilimi i kontratës
Lidhja me ofruesin
Kryerja e publikimit të kontratës
Ruajtja e adresës së kontratës dhe abi në skedar
Ekzekutimi i skriptit 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 objektit të kontratës
Thirrja e metodave të kontratës
Truffle dhe Web3.py
Përfundimet e mësimit
Mësimi 12. OrakujtA mund të besojë një kontratë e mençur të dhënat nga bota e jashtme
Orakujt si ndërmjetës informacioni të bllokut
Burimi i të dhënave
Kodi për paraqitjen e të dhënave nga burimi
Orakulli për regjistrimin e kursit të këmbimit në bllok
Kontrata USDRateOracle
Përditësimi i kursit të këmbimit në kontratën e mençur
Përdorimi i ofruesit Web Socket
Pr等待事件 RateUpdate
Përpunimi i ngjarjes RateUpdate
Iniciimi i përditësimit të të dhënave në kontratën e mençur
Përfundimet e mësimit
Burimi: habr.com
