Il-ktieb “Creating Solidity smart contracts for the Ethereum blockchain. Gwida prattika"

Il-ktieb “Creating Solidity smart contracts for the Ethereum blockchain. Gwida prattika"
Għal aktar minn sena ilni naħdem fuq il-ktieb “Creating Solidity Smart Contracts for the Ethereum Blockchain. Gwida Prattika", u issa dan ix-xogħol tlesta, u l-ktieb ippubblikata u disponibbli f'Litri.

Nispera li l-ktieb tiegħi jgħinek malajr tibda toħloq kuntatti intelliġenti ta 'Solidity u DApps distribwiti għall-blockchain Ethereum. Tikkonsisti fi 12-il lezzjoni b'kompiti prattiċi. Wara li lestihom, il-qarrej se jkun jista 'joħloq in-nodi Ethereum lokali tiegħu stess, jippubblika kuntratti intelliġenti u jsejjaħ il-metodi tagħhom, jiskambja data bejn id-dinja reali u kuntratti intelliġenti bl-użu ta' orakli, u jaħdem man-netwerk ta 'debug tat-test Rinkeby.

Книга адресована всем, кто интересуется передовыми технологиями в области блокчейнов и хочет быстро получить знания, позволяющие заниматься интересной и перспективной работой.

Hawn taħt għandek issib il-werrej u l-ewwel kapitlu tal-ktieb (ukoll fuq Litri frammenti tal-ktieb huma disponibbli). Nittama li nirċievi feedback, kummenti u suġġerimenti. Se nipprova nikkunsidra dan kollu meta nipprepara l-edizzjoni li jmiss tal-ktieb.

Tabella tal-kontenutIntroduzzjoniIl-ktieb tagħna huwa maħsub għal dawk li jridu mhux biss jifhmu l-prinċipji tal-blockchain Ethereum, iżda wkoll biex jiksbu ħiliet prattiċi fil-ħolqien ta 'DApps distribwiti fil-lingwa ta' programmar Solidity għal dan in-netwerk.

Huwa aħjar mhux biss li taqra dan il-ktieb, iżda li taħdem miegħu, billi twettaq kompiti prattiċi deskritti fil-lezzjonijiet. Biex taħdem, ser ikollok bżonn kompjuter lokali, server virtwali jew cloud b'Debian jew Ubuntu OS installat. Tista 'wkoll tuża Raspberry Pi biex twettaq ħafna kompiti.

Fl-ewwel lezzjoni Se nħarsu lejn il-prinċipji operattivi tal-blockchain Ethereum u t-terminoloġija bażika, u nitkellmu wkoll dwar fejn tista 'tintuża din il-blockchain.

Goal it-tieni lezzjoni — oħloq node privat Ethereum blockchain għal aktar xogħol f'dan il-kors fuq server Ubuntu u Debian. Aħna se nħarsu lejn il-karatteristiċi ta 'installazzjoni ta' utilitajiet bażiċi, bħal geth, li jiżgura t-tħaddim tan-node blockchain tagħna, kif ukoll id-daemon tal-ħażna tad-dejta deċentralizzata swarm.

It-tielet lezzjoni se jgħallmu kif tesperimenta bl-Ethereum fuq mikrokompjuter Raspberry Pi rħas. Se tinstalla s-sistema operattiva Rasberian (OS) fuq il-Raspberry Pi, l-utilità Geth li tħaddem in-node blockchain, u d-daemon tal-ħażna tad-dejta deċentralizzata Swarm.

Lezzjoni erbgħa hija ddedikata għal kontijiet u unitajiet ta 'kripto-munita fuq in-netwerk Ethereum, kif ukoll modi biex tittrasferixxi fondi minn kont għal ieħor mill-console Geth. Inti se titgħallem kif toħloq kontijiet, tibda tranżazzjonijiet ta 'trasferiment ta' fondi, u tikseb l-istatus tat-tranżazzjoni u l-irċevuta.

Fil-ħames lezzjoni Int se ssir familjari mal-kuntratti intelliġenti fuq in-netwerk Ethereum u titgħallem dwar l-eżekuzzjoni tagħhom mill-magna virtwali Ethereum.

Int se toħloq u tippubblika l-ewwel kuntratt intelliġenti tiegħek fuq in-netwerk privat Ethereum u titgħallem kif issejjaħ il-funzjonijiet tiegħu. Biex tagħmel dan, tuża r-Remix Solidity IDE. Se titgħallem ukoll kif tinstalla u tuża l-kompilatur tal-lott solc.
Se nitkellmu wkoll dwar l-hekk imsejħa Application Binary Interface (ABI) u ngħallmu kif tużaha.

Is-sitt lezzjoni hija ddedikata għall-ħolqien ta' skripts JavaScript li jmexxu Node.js u jwettaq operazzjonijiet b'kuntratti intelliġenti ta' Solidity.

Int ser tinstalla Node.js fuq Ubuntu, Debian u Rasberian OS, tikteb skripts biex tippubblika kuntratt intelliġenti fuq in-netwerk lokali Ethereum u ċċempel il-funzjonijiet tagħha.

Barra minn hekk, titgħallem kif tittrasferixxi fondi bejn kontijiet regolari billi tuża skripts, kif ukoll tikkreditahom għal kontijiet ta 'kuntratt intelliġenti.

Fis-seba’ lezzjoni Int titgħallem kif tinstalla u tuża l-qafas tat-Truffle, popolari fost l-iżviluppaturi tal-kuntratti intelliġenti ta 'Solidity. Int ser titgħallem kif toħloq skripts JavaScript li jsejħu funzjonijiet tal-kuntratt billi tuża l-modulu tal-kuntratt tartuf, u tittestja l-kuntratt intelliġenti tiegħek billi tuża Truffle.

It-tmien lezzjoni iddedikat għat-tipi ta' data ta' Solidity. Inti se tikteb kuntratti intelliġenti li jaħdmu ma 'tipi ta' data bħal interi ffirmati u mhux iffirmati, numri ffirmati, kordi, indirizzi, varjabbli kumplessi, arrays, enumerazzjonijiet, strutturi, u dizzjunarji.

Fid-disa’ lezzjoni Int tkun pass eqreb lejn il-ħolqien ta 'kuntratti intelliġenti għall-mainnet ta' Ethereum. Int se titgħallem kif tippubblika kuntratti billi tuża Truffle fuq in-netwerk privat Geth, kif ukoll fuq it-testnet Rinkeby. Id-debugging ta 'kuntratt intelliġenti fuq in-netwerk Rinkeby huwa utli ħafna qabel ma jiġi ppubblikat fuq in-netwerk ewlieni - kważi kollox huwa reali hemmhekk, iżda b'xejn.

Bħala parti mill-lezzjoni, int se toħloq node tan-netwerk tat-test Rinkeby, tiffinanzjah b'fondi, u tippubblika kuntratt intelliġenti.

Lezzjoni 10 iddedikat għall-ħażna tad-dejta distribwita Ethereum Swarm. Billi tuża ħażna mqassma, tiffranka fuq il-ħażna ta 'ammonti kbar ta' dejta fuq il-blockchain Ethereum.

F'dan it-tutorja, inti toħloq ħażna Swarm lokali, tikteb u taqra operazzjonijiet fuq fajls, u direttorji tal-fajls. Sussegwentement, titgħallem kif taħdem mal-gateway pubbliku Swarm, tikteb skripts biex taċċessa Swarm minn Node.js, kif ukoll tuża l-modulu Perl Net::Ethereum::Swarm.

Għan tal-Lezzjoni 11 — kaptan jaħdem ma' kuntratti intelliġenti Solidity bl-użu tal-lingwa ta' programmar Python popolari u l-qafas Web3.py. Int ser tinstalla l-qafas, tikteb skripts biex tiġbor u tippubblika l-kuntratt intelliġenti, u ssejjaħ il-funzjonijiet tiegħu. F'dan il-każ, Web3.py se jintuża kemm waħdu kif ukoll flimkien mal-ambjent ta 'żvilupp integrat Truffle.

Fil-lezzjoni 12 titgħallem tittrasferixxi data bejn kuntratti intelliġenti u d-dinja reali billi tuża l-orakli. Dan se jkun utli għalik biex tirċievi dejta minn siti tal-Web, apparati tal-IoT, apparati u sensuri varji, u tibgħat dejta minn kuntratti intelliġenti għal dawn l-apparati. Fil-parti prattika tal-lezzjoni, inti se toħloq oraklu u kuntratt intelliġenti li jirċievi r-rata tal-kambju attwali bejn USD u rubles mill-websajt tal-Bank Ċentrali tal-Federazzjoni Russa.

Lezzjoni 1. Fil-qosor dwar il-blockchain u n-netwerk EthereumL-iskop tal-lezzjoni: jiffamiljarizzaw ruħhom mal-prinċipji operattivi tal-blockchain Ethereum, l-oqsma ta 'applikazzjoni tagħha u t-terminoloġija bażika.
Ħidmiet prattiċi: mhux inkluż f’din il-lezzjoni.

Bilkemm hemm żviluppatur tas-softwer illum li ma sema xejn dwar it-teknoloġija blockchain (Blockchain), kripto-muniti (Cryptocurrency jew Crypto Currency), Bitcoin (Bitcoin), offerta inizjali ta 'muniti (ICO, Offerta ta' muniti inizjali), kuntratti intelliġenti (Kuntratt Intelliġenti), kif ukoll kunċetti u termini oħra relatati mal-blockchain.

It-teknoloġija Blockchain tiftaħ swieq ġodda u toħloq impjiegi għall-programmaturi. Jekk tifhem l-intricacies kollha tat-teknoloġiji tal-kripto-munita u t-teknoloġiji tal-kuntratt intelliġenti, allura m'għandekx ikollok problemi biex tapplika dan l-għarfien fil-prattika.

Għandu jingħad li hemm ħafna spekulazzjoni madwar il-kripto-muniti u l-blockchains. Se nħallu fil-ġenb diskussjonijiet dwar bidliet fir-rati tal-kripto-munita, il-ħolqien ta 'piramidi, l-intricacies tal-leġiżlazzjoni tal-kripto-munita, eċċ. Fil-kors ta 'taħriġ tagħna se niffukaw prinċipalment fuq l-aspetti tekniċi tal-applikazzjoni ta' kuntratti intelliġenti tal-blockchain Ethereum (Ethereum, Ether) u l-iżvilupp tal-hekk imsejħa applikazzjonijiet deċentralizzati (Applikazzjoni distribwita, DApp).

X'inhi blockchain

Blockchain (Block Chain) hija katina ta 'blokki tad-dejta konnessi ma' xulxin b'ċertu mod. Fil-bidu tal-katina hemm l-ewwel blokka, li tissejjaħ il-blokk primarju (blokk tal-ġenesi) jew blokk tal-ġenesi. Huwa segwit mit-tieni, imbagħad it-tielet u l-bqija.

Dawn il-blokki tad-dejta kollha huma awtomatikament duplikati fuq bosta nodi tan-netwerk blockchain. Dan jiżgura ħażna deċentralizzata ta 'data blockchain.
Tista 'taħseb f'sistema blockchain bħala numru kbir ta' nodi (servers fiżiċi jew virtwali) konnessi f'netwerk u jirreplikaw il-bidliet kollha fil-katina ta 'blokki tad-dejta. Dan huwa bħal kompjuter ġgant b'ħafna servers, u n-nodi ta 'tali kompjuter (servers) jistgħu jkunu mifruxa mad-dinja kollha. U int ukoll tista 'żżid il-kompjuter tiegħek man-netwerk blockchain.

Database Mqassma

Blockchain jista' jitqies bħala database distribwita li hija replikata fin-nodi kollha tan-netwerk blockchain. Fit-teorija, il-blockchain se tkun operattiva sakemm mill-inqas nodu wieħed ikun qed jaħdem, u jaħżen il-blokki kollha tal-blockchain.

Reġistru tad-Dejta Mqassma

Blockchain jista 'jitqies bħala reġistru distribwit ta' data u operazzjonijiet (tranżazzjonijiet). Isem ieħor għal reġistru bħal dan huwa reġistru.

Id-dejta tista’ tiżdied ma’ reġistru distribwit, iżda ma tistax tinbidel jew titħassar. Din l-impossibbiltà tinkiseb, b'mod partikolari, bl-użu ta 'algoritmi kriptografiċi, algoritmi speċjali għaż-żieda ta' blokki mal-katina u ħażna deċentralizzata tad-dejta.

Meta żżid blokki u twettaq operazzjonijiet (tranżazzjonijiet), jintużaw ċwievet privati ​​u pubbliċi. Huma jirrestrinġu l-utenti tal-blockchain billi jagħtuhom biss aċċess għall-blokki tad-dejta tagħhom stess.

Tranżazzjonijiet

Blockchain jaħżen informazzjoni dwar operazzjonijiet (tranżazzjonijiet) fi blokki. Fl-istess ħin, tranżazzjonijiet qodma u li diġà tlestew ma jistgħux jiġu rtirati lura jew mibdula. Tranżazzjonijiet ġodda huma maħżuna fi blokki ġodda miżjuda.

B'dan il-mod, l-istorja kollha tat-tranżazzjonijiet tista 'tiġi rreġistrata mhux mibdula fuq il-blockchain. Għalhekk, blockchain jista 'jintuża, pereżempju, biex jaħżen b'mod sigur tranżazzjonijiet bankarji, informazzjoni dwar id-drittijiet tal-awtur, storja ta' bidliet fis-sidien tal-proprjetà, eċċ.

Il-blockchain Ethereum fih l-hekk imsejħa stati tas-sistema. Hekk kif it-tranżazzjonijiet jiġu esegwiti, l-istat jinbidel mill-istat inizjali għall-istat attwali. It-tranżazzjonijiet huma rreġistrati fi blokki.

Blockchains pubbliċi u privati

Għandu jiġi nnutat hawnhekk li dak kollu li ntqal huwa minnu biss għall-hekk imsejħa netwerks pubbliċi blockchain, li ma jistgħux jiġu kkontrollati minn ebda individwu jew entità legali, aġenzija tal-gvern jew gvern.
L-hekk imsejħa netwerks privati ​​blockchain huma taħt il-kontroll sħiħ tal-ħallieqa tagħhom, u kollox huwa possibbli hemmhekk, pereżempju, sostituzzjoni sħiħa tal-blokki kollha tal-katina.

Applikazzjonijiet prattiċi ta 'blockchain

Għal xiex jista’ jkun utli blockchain?

Fil-qosor, blockchain jippermettilek li twettaq tranżazzjonijiet (tranżazzjonijiet) b'mod sigur bejn nies jew kumpaniji li ma jafdawx lil xulxin. Data rreġistrata fil-blockchain (tranżazzjonijiet, data personali, dokumenti, ċertifikati, kuntratti, fatturi, eċċ.) ma tistax tiġi ffalsifikata jew sostitwita wara r-reġistrazzjoni. Għalhekk, ibbażat fuq il-blockchain, huwa possibbli li jinħolqu, pereżempju, reġistri distribwiti fdati ta 'diversi tipi ta' dokumenti.

Naturalment, taf li qed jinħolqu sistemi ta 'kripto-munita fuq il-bażi ta' blockchains, iddisinjati biex jissostitwixxu l-flus tal-karti ordinarji. Il-flus tal-karti jissejħu wkoll fiat (minn Fiat Money).
Blockchain jiżgura l-ħażna u l-immutabilità ta 'tranżazzjonijiet irreġistrati fi blokki, u huwa għalhekk li jista' jintuża biex jinħolqu sistemi ta 'kripto-munita. Fiha l-istorja kollha tat-trasferiment ta 'fondi kripto bejn utenti differenti (kontijiet), u kwalunkwe operazzjoni tista' tiġi ssorveljata.

Għalkemm it-tranżazzjonijiet fi ħdan is-sistemi tal-kripto-munita jistgħu jkunu anonimi, l-irtirar tal-kripto-munita u l-iskambju tagħha għal flus fiat normalment jirriżulta li tiżvela l-identità tas-sid tal-assi tal-kripto-munita.

L-hekk imsejħa kuntratti intelliġenti, li huma softwer li jaħdem fuq in-netwerk Ethereum, jippermettulek awtomatizza l-proċess tal-konklużjoni tat-tranżazzjonijiet u l-monitoraġġ tal-implimentazzjoni tagħhom. Dan huwa speċjalment effettiv jekk il-ħlas għat-tranżazzjoni jitwettaq bl-użu tal-munita kripto Ether.

Il-blockchain Ethereum u l-kuntratti intelliġenti Ethereum miktuba fil-lingwa tal-ipprogrammar Solidity jistgħu jintużaw, pereżempju, fl-oqsma li ġejjin:

  • alternattiva għal notarizzazzjoni ta' dokumenti;
  • Ħażna ta' reġistru ta' oġġetti ta' proprjetà immobbli u informazzjoni dwar transazzjonijiet ma' oġġetti ta' proprjetà immobbli;
  • ħażna ta' informazzjoni dwar id-drittijiet tal-awtur fuq proprjetà intellettwali (kotba, stampi, xogħlijiet mużikali, eċċ.);
  • il-ħolqien ta' sistemi ta' votazzjoni indipendenti;
  • Finanzi u servizzi bankarji;
  • loġistika fuq skala internazzjonali, traċċar tal-moviment tal-merkanzija;
  • ħażna ta' data personali bħala analoga għal sistema ta' karta tal-identità;
  • tranżazzjonijiet siguri fil-qasam kummerċjali;
  • jaħżnu r-riżultati tal-eżamijiet mediċi, kif ukoll l-istorja tal-proċeduri preskritti

Problemi bil-blockchain

Iżda, ovvjament, mhux kollox huwa sempliċi kemm jista 'jidher!

Hemm problemi bil-verifika tad-dejta qabel ma żżidha mal-blockchain (pereżempju, huma foloz?), problemi bis-sigurtà tas-sistema u s-softwer tal-applikazzjoni użati biex jaħdmu mal-blockchain, problemi bil-possibbiltà li jintużaw metodi ta 'inġinerija soċjali biex jisirqu l-aċċess għall-kartieri tal-kripto-munita, eċċ. .P.

Għal darb'oħra, jekk ma nkunux qed nitkellmu dwar blockchain pubblika, li n-nodi tagħha huma mifruxa mad-dinja kollha, iżda dwar blockchain privata li tappartjeni għal persuna jew organizzazzjoni, allura l-livell ta 'fiduċja hawnhekk mhux se jkun ogħla mil-livell ta' fiduċja. f’din il-persuna jew f’din l-organizzazzjoni.

Għandu jitqies ukoll li d-dejta rreġistrata fil-blockchain issir disponibbli għal kulħadd. F'dan is-sens, blockchain (speċjalment pubbliku) mhuwiex adattat għall-ħażna ta 'informazzjoni kunfidenzjali. Madankollu, il-fatt li l-informazzjoni dwar il-blockchain ma tistax tinbidel jista 'jgħin biex jipprevjeni jew jinvestiga diversi tipi ta' attivitajiet frawdolenti.

L-applikazzjonijiet deċentralizzati ta 'Ethereum se jkunu konvenjenti jekk tħallas għall-użu tagħhom bil-munita kriptografika. Iktar ma jkun hemm nies li għandhom munita kriptografika jew lesti li jixtruha, aktar se jsiru DApps u kuntratti intelliġenti popolari.

Problemi komuni bil-blockchain li jfixklu l-applikazzjoni prattika tagħha jinkludu l-veloċità limitata li biha jistgħu jiżdiedu blokki ġodda u l-ispiża relattivament għolja tat-tranżazzjonijiet. Iżda t-teknoloġija f'dan il-qasam qed tiżviluppa b'mod attiv, u hemm tamiet li l-problemi tekniċi jiġu solvuti maż-żmien.

Problema oħra hija li l-kuntratti intelliġenti fuq il-blockchain Ethereum joperaw f'ambjent iżolat ta 'magni virtwali, u m'għandhomx aċċess għal data tad-dinja reali. B'mod partikolari, il-programm ta 'kuntratt intelliġenti ma jistax innifsu jaqra data minn siti jew kwalunkwe apparat fiżiku (sensuri, kuntatti, eċċ.), U wkoll ma jistax joħroġ data lil xi apparat estern. Se niddiskutu din il-problema u modi kif insolvuha f'lezzjoni ddedikata għall-hekk imsejħa Oracles - intermedjarji ta 'informazzjoni ta' kuntratti intelliġenti.

Hemm ukoll restrizzjonijiet legali. F'xi pajjiżi, pereżempju, huwa pprojbit li tuża l-munita kripto bħala mezz ta 'ħlas, iżda tista' tippossjediha bħala tip ta 'assi diġitali, bħal titoli. Tali assi jistgħu jinxtraw u jinbiegħu fil-kambju. Fi kwalunkwe każ, meta toħloq proġett li jaħdem bil-kripto-muniti, għandek bżonn tiffamiljarizza ruħek mal-leġiżlazzjoni tal-pajjiż li taħtu jaqa' l-proġett tiegħek.

Kif tiġi ffurmata katina blockchain

Kif diġà għedna, blockchain hija katina sempliċi ta 'blokki tad-dejta. L-ewwel, l-ewwel blokka ta 'din il-katina hija ffurmata, imbagħad it-tieni hija miżjuda magħha, eċċ. Id-dejta tat-tranżazzjonijiet hija preżunta li tkun maħżuna fi blokki, u hija miżjuda mal-blokk l-aktar reċenti.

Fil-Fig. 1.1 urejna l-aktar verżjoni sempliċi ta 'sekwenza ta' blokki, fejn l-ewwel blokka tirreferi għal dik li jmiss.

Il-ktieb “Creating Solidity smart contracts for the Ethereum blockchain. Gwida prattika"
Ross. 1.1. Sekwenza sempliċi ta 'blokki

B'din l-għażla, madankollu, huwa faċli ħafna li tbagħbas il-kontenut ta 'kwalunkwe blokk fil-katina, peress li l-blokki ma fihom ebda informazzjoni biex jipproteġu kontra l-bidliet. Meta wieħed iqis li l-blockchain hija maħsuba biex tintuża minn nies u kumpaniji li bejniethom m'hemm l-ebda fiduċja, nistgħu nikkonkludu li dan il-metodu ta 'ħażna tad-dejta mhuwiex adattat għall-blockchain.

Ejja nibdew nipproteġu l-blokki mill-falsifikazzjoni. Fl-ewwel stadju, aħna nippruvaw nipproteġu kull blokka b'checksum (Fig. 1.2).

Il-ktieb “Creating Solidity smart contracts for the Ethereum blockchain. Gwida prattika"
Ross. 1.2. Żieda ta' protezzjoni għal dawn il-blokki b'checksum

Issa attakkant ma jistax sempliċement ibiddel il-blokk, peress li fih iċ-checksum tad-dejta tal-blokk. Il-verifika taċ-checksum turi li d-dejta nbidlet.

Biex tikkalkula ċ-checksum, tista 'tuża waħda mill-funzjonijiet ta' hashing bħal MD-5, SHA-1, SHA-256, eċċ. Il-funzjonijiet hash jikkalkulaw valur (per eżempju, string ta 'test ta' tul kostanti) billi jwettqu operazzjonijiet irriversibbli fuq blokka ta 'dejta. L-operazzjonijiet jiddependu fuq it-tip ta 'funzjoni hash.

Anke jekk il-kontenut tal-blokka tad-dejta jinbidel xi ftit, il-valur tal-hash jinbidel ukoll. Billi tanalizza l-valur tal-funzjoni tal-hash, huwa impossibbli li tinbena mill-ġdid il-blokk tad-dejta li għalih ġie kkalkulat.

Protezzjoni bħal din se tkun biżżejjed? Sfortunatament le.

F'din l-iskema, iċ-checksum (funzjoni hash) tipproteġi biss blokki individwali, iżda mhux il-blockchain kollu. Billi jkun jaf l-algoritmu għall-kalkolu tal-funzjoni tal-hash, attakkant jista 'faċilment jissostitwixxi l-kontenut ta' blokka. Ukoll, xejn ma jipprevjenih milli jneħħi blokki mill-katina jew iżid oħrajn ġodda.

Biex tipproteġi l-katina kollha kemm hi, tista 'wkoll taħżen f'kull blokka, flimkien mad-dejta, hash tad-dejta mill-blokk preċedenti (Fig. 1.3).

Il-ktieb “Creating Solidity smart contracts for the Ethereum blockchain. Gwida prattika"
Ross. 1.3. Żid il-hash tal-blokk preċedenti mal-blokk tad-dejta

F'din l-iskema, sabiex tibdel blokka, għandek bżonn tikkalkula mill-ġdid il-funzjonijiet tal-hash tal-blokki sussegwenti kollha. Jidher, x'inhi l-problema?

Fil-blockchains reali, jinħolqu addizzjonalment diffikultajiet artifiċjali biex jiżdiedu blokki ġodda—jintużaw algoritmi li jeħtieġu ħafna riżorsi tal-kompjuter. Meta wieħed iqis li sabiex tagħmel bidliet fi blokka, għandek bżonn tikkalkula mill-ġdid mhux biss din il-blokka waħda, iżda dawk kollha sussegwenti, dan se jkun estremament diffiċli li jsir.

Ejja niftakru wkoll li d-dejta tal-blockchain hija maħżuna (duplikata) fuq bosta nodi tan-netwerk, i.e. Jintuża ħażna deċentralizzata. U dan jagħmilha ferm aktar diffiċli li tiffalz blokk, għaliex għandhom isiru bidliet għan-nodi kollha tan-netwerk.

Peress li l-blokki jaħżnu informazzjoni dwar il-blokk preċedenti, huwa possibbli li tiċċekkja l-kontenut tal-blokki kollha fil-katina.

Ethereum blockchain

Il-blockchain Ethereum hija pjattaforma li fuqha jistgħu jinħolqu DApps distribwiti. B'differenza minn pjattaformi oħra, Ethereum jippermetti l-użu tal-hekk imsejħa kuntratti intelliġenti (kuntratti intelliġenti), miktuba fil-lingwa ta 'programmar Solidity.

Din il-pjattaforma ġiet maħluqa fl-2013 minn Vitalik Buterin, fundatur ta 'Bitcoin Magazine, u mnedija fl-2015. Dak kollu li se nistudjaw jew nagħmlu fil-kors ta’ taħriġ tagħna jirrelata speċifikament mal-kuntratti intelliġenti Ethereum blockchain u Solidity.

Minjieri jew kif jinħolqu blokki

It-tħaffir fil-minjieri huwa proċess pjuttost kumpless u li juża ħafna riżorsi biex jiżdiedu blokki ġodda mal-katina tal-blockchain, u xejn "it-tħaffir tal-kripto-munita." Minjieri jiżgura l-funzjonalità tal-blockchain, minħabba huwa dan il-proċess li huwa responsabbli għaż-żieda ta 'tranżazzjonijiet mal-blockchain Ethereum.

Nies u organizzazzjonijiet involuti fiż-żieda ta 'blokki jissejħu minaturi.
Is-softwer li jaħdem fuq in-nodi tal-minaturi jipprova jsib parametru ta 'hashing imsejjaħ Nonce għall-aħħar blokka biex tikseb valur ta' hash speċifiku speċifikat min-netwerk. L-algoritmu tal-hashing Ethash użat f'Ethereum jippermettilek li tikseb il-valur Nonce biss permezz ta 'tfittxija sekwenzjali.

Jekk in-nodu tal-minatur isib il-valur Nonce korrett, allura din hija l-hekk imsejħa prova tax-xogħol (PoW, Proof-of-work). F'dan il-każ, jekk blokka tiżdied man-netwerk Ethereum, il-minatur jirċievi ċertu premju fil-munita tan-netwerk - Ether. Fiż-żmien tal-kitba, il-premju huwa 5 Ether, iżda se jitnaqqas maż-żmien.

Għalhekk, il-minaturi tal-Ethereum jiżguraw it-tħaddim tan-netwerk billi jżidu blokki, u jirċievu flus kripto-munita għal dan. Issib ħafna informazzjoni fuq l-internet dwar minaturi u tħaffir, iżda aħna se niffukaw fuq il-ħolqien ta 'kuntratti ta' Solidità u DApps fuq in-netwerk Ethereum.

Sommarju tal-lezzjoni

Fl-ewwel lezzjoni, inti ltqajna familjari mal-blockchain u tgħallimt li hija sekwenza ta 'blokki magħmula apposta. Il-kontenut tal-blokki rreġistrati qabel ma jistax jinbidel, peress li dan ikun jeħtieġ li jiġu kkalkulati mill-ġdid il-blokki kollha sussegwenti fuq ħafna nodi tan-netwerk, li jeħtieġ ħafna riżorsi u ħin.

Blockchain jista 'jintuża biex jaħżen ir-riżultati tat-tranżazzjonijiet. L-għan ewlieni tagħha huwa li torganizza tranżazzjonijiet siguri bejn partijiet (persuni u organizzazzjonijiet) li bejniethom m'hemmx fiduċja. Tgħallimt f'liema oqsma speċifiċi tan-negozju u f'liema oqsma jistgħu jintużaw il-blockchain Ethereum u l-kuntratti intelliġenti ta 'Solidity. Dan huwa s-settur bankarju, ir-reġistrazzjoni tad-drittijiet tal-proprjetà, id-dokumenti, eċċ.

Tgħallimt ukoll li jistgħu jinqalgħu diversi problemi meta tuża blockchain. Dawn huma problemi ta’ verifika ta’ informazzjoni miżjuda mal-blockchain, il-veloċità tal-blockchain, l-ispiża tat-tranżazzjonijiet, il-problema tal-iskambju tad-dejta bejn kuntratti intelliġenti u d-dinja reali, kif ukoll attakki potenzjali minn attakkanti mmirati biex jisirqu fondi tal-kripto-munita mill-kontijiet tal-utenti. .

Tkellimna wkoll fil-qosor dwar il-minjieri bħala l-proċess taż-żieda ta 'blokki ġodda mal-blockchain. It-tħaffir huwa meħtieġ biex jitlestew it-tranżazzjonijiet. Dawk involuti fil-minjieri jiżguraw il-funzjonament tal-blockchain u jirċievu premju fil-munita kripto għal dan.

Lezzjoni 2. Tħejjija ta' ambjent tax-xogħol f'Ubuntu u Debian OSGħażla ta' sistema operattiva
Installazzjoni tal-utilitajiet meħtieġa
Installazzjoni ta' Geth u Swarm fuq Ubuntu
L-installazzjoni ta' Geth u Swarm fuq Debian
Preparazzjoni preliminari
Niżżel id-distribuzzjoni Go
Twaqqif ta' varjabbli ambjentali
Iċċekkja l-verżjoni Go
Installazzjoni ta' Geth u Swarm
Il-ħolqien ta' blockchain privat
Tħejjija tal-fajl genesis.json
Oħloq direttorju għax-xogħol
Oħloq kont
Tibda l-inizjalizzazzjoni tan-node
Għażliet ta' Tnedija ta' Nodi
Qabbad man-node tagħna
Ġestjoni tal-minjieri u kontroll tal-bilanċ
It-tifi tal-console Geth
Sommarju tal-lezzjoni

Lezzjoni 3. Tħejjija tal-ambjent tax-xogħol fuq Raspberry Pi 3Tħejjija tar-Raspberry Pi 3 għax-xogħol
Installazzjoni ta' Rasberian
Installazzjoni ta' aġġornamenti
Jippermettu Aċċess SSH
L-issettjar ta' Indirizz IP Statiku
Installazzjoni tal-utilitajiet meħtieġa
Installazzjoni Go
Niżżel id-distribuzzjoni Go
Twaqqif ta' varjabbli ambjentali
Iċċekkja l-verżjoni Go
Installazzjoni ta' Geth u Swarm
Il-ħolqien ta' blockchain privat
Iċċekkja l-kont u l-bilanċ tiegħek
Sommarju tal-lezzjoni

Lezzjoni 4. Kontijiet u trasferiment ta' fondi bejn kontijietAra u żid il-kontijiet
Ara lista ta' kontijiet
Żieda ta' kont
għażliet tal-kmand tal-kont geth
Il-passwords tal-kont
Kriptomunita fl-Ethereum
Unitajiet tal-Munita Ethereum
Aħna niddeterminaw il-bilanċ kurrenti tal-kontijiet tagħna
Ittrasferixxi fondi minn kont għal ieħor
eth.sendTransaction metodu
Ara l-istatus tat-tranżazzjoni
Irċevuta tat-tranżazzjoni
Sommarju tal-lezzjoni

Lezzjoni 5. Tippubblika l-ewwel kuntratt tiegħekKuntratti intelliġenti fl-Ethereum
Eżekuzzjoni Smart Kuntratt
Magna Virtwali Ethereum
Ambjent ta 'żvilupp integrat Remix Solidity IDE
Kumpilazzjoni tal-ġiri
Sejħa Funzjonijiet Kuntrattwali
Il-pubblikazzjoni ta' kuntratt fuq netwerk privat
Jkollna d-definizzjoni ABI u l-kodiċi binarju tal-kuntratt
Pubblikazzjoni tal- kuntratt
Iċċekkja l-kuntratt jippubblika l-istatus tat-tranżazzjoni
Sejħa Funzjonijiet Kuntrattwali
Kompilatur tal-lott solc
Installazzjoni tas-solc fuq Ubuntu
Installazzjoni tas-solc fuq Debian
Il-kumpilazzjoni tal-kuntratt HelloSol
Pubblikazzjoni tal- kuntratt
Installazzjoni tas-solc fuq Rasberian
Sommarju tal-lezzjoni

Lezzjoni 6. Kuntratti intelliġenti u Node.jsInstallazzjoni Node.js
Installazzjoni fuq Ubuntu
Installazzjoni fuq Debian
L-installazzjoni u t-tħaddim ta' Ganache-cli
Installazzjoni tal-Web3
Installazzjoni tas-solc
Installazzjoni ta 'Node.js fuq Rasberian
Script biex tikseb lista ta 'kontijiet fil-console
Skript għall-pubblikazzjoni ta' kuntratt intelliġenti
Tnedija u tikseb parametri
Jkollna għażliet ta 'tnedija
Kumpilazzjoni ta' Kuntratt
Żblokk tal-kont tiegħek
Tagħbija ABI u kodiċi binarju tal-kuntratt
Stima ta 'l-ammont meħtieġ ta' gass
Oħloq oġġett u ibda tippubblika kuntratt
Tmexxi l-iskrittura tal-pubblikazzjoni tal-kuntratt
Sejħa għal funzjonijiet ta' kuntratt intelliġenti
Huwa possibbli li jiġi aġġornat kuntratt intelliġenti ppubblikat?
Ħidma mal-verżjoni Web3 1.0.x
Jkollna lista ta' kontijiet
Pubblikazzjoni tal- kuntratt
Sejħa Funzjonijiet Kuntrattwali
Ittrasferixxi fondi minn kont għal ieħor
Ittrasferixxi fondi għal kont tal-kuntratt
Aġġornament tal-kuntratt intelliġenti HelloSol
Oħloq skript biex tara l-bilanċ tal-kont tiegħek
Żid sejħa għall-funzjoni getBalance fl-iscript call_contract_get_promise.js
Aħna ngħollu l-kont tal-kuntratt intelliġenti
Sommarju tal-lezzjoni

Lezzjoni 7. Introduzzjoni għat-TruffleInstallazzjoni tartufa
Oħloq proġett HelloSol
Ħolqien tad-Direttorju tal-Proġett u Fajls
Direttorju tal-kuntratti
Migrazzjonijiet katalogu
Test tad-direttorju
fajl truffle-config.js
Il-kumpilazzjoni tal-kuntratt HelloSol
Ibda tippubblika kuntratt
Sejħa għall-Funzjonijiet tal-Kuntratt HelloSol fi Prompt tat-Truffle
Is-sejħa ta' funzjonijiet ta' kuntratt HelloSol minn script JavaScript li jħaddem Node.js
Installazzjoni tal-modulu tal-kuntratt tartuf
Issejjaħ il-funzjonijiet tal-kuntratt getValue u getString
Sejħa tal-funzjonijiet tal-kuntratt setValue u setString
Modifika tal-kuntratt u pubblikazzjoni mill-ġdid
Ħidma mal-verżjoni Web3 1.0.x
Nagħmlu bidliet fil-kuntratt intelliġenti HelloSol
Skripts għas-sejħa ta' metodi ta' kuntratt
Ittestjar fit-Truffle
Test tas-solidità
Test JavaScript
Sommarju tal-lezzjoni

Lezzjoni 8. Tipi ta' Data ta' SoliditàKuntratt għat-tagħlim ta' tipi ta' data
Tipi ta' data Boolean
Numeri interi mhux iffirmati u interi ffirmati
Numri ta' punt fissi
Indirizz
Varjabbli ta' tipi kumplessi
Arrays Daqs Fissi
Arrays dinamiċi
Enumerazzjoni
Strutturi
Mapping ta' dizzjunarji
Sommarju tal-lezzjoni

Lezzjoni 9. Migrazzjoni ta' kuntratti għan-netwerk privat u għan-netwerk RinkebyIl-pubblikazzjoni ta' kuntratt minn Truffle għan-netwerk privat Geth
Tħejjija ta 'node tan-netwerk privat
Tħejjija ta' kuntratt għax-xogħol
Il-kumpilazzjoni u l-migrazzjoni ta' kuntratt għan-netwerk Truffle
Bidu tal-migrazzjoni tan-netwerk lokali geth
Getting artifacts tartuf
Il-pubblikazzjoni ta' kuntratt minn Truffle għat-testnet Rinkeby
Tħejjija ta 'node Geth biex taħdem ma' Rinkeby
Sinkronizzazzjoni tan-nodi
Żieda ta' kontijiet
Iżżid il-kont Rinkeby tiegħek bl-ether
Tnedija tal-migrazzjoni tal-kuntratt għan-netwerk Rinkeby
Ara l-informazzjoni dwar il-kuntratt fuq in-netwerk Rinkeby
Truffle Console għan-Netwerk Rinkeby
Mod aktar faċli biex issejjaħ funzjonijiet tal-kuntratt
Sejħa ta' metodi ta' kuntratt bl-użu ta' Node.js
Ittrasferixxi fondi bejn il-kontijiet fil-console Truffle għal Rinkby
Sommarju tal-lezzjoni

Lezzjoni 10. Ħażna Deċentralizzata tad-Dejta Ethereum SwarmKif jaħdem Ethereum Swarm?
Installazzjoni u tnedija ta' Swarm
Operazzjonijiet b'fajls u direttorji
Tlugħ ta' Fajl f'Ethereum Swarm
Qari ta 'fajl minn Ethereum Swarm
Ara l-manifest ta' fajl imtella'
Tagħbija tad-direttorji b'subdirettorji
Qari ta' fajl minn direttorju mniżżel
Bl-użu ta 'portal Swarm pubbliku
Aċċess għal Swarm minn skripts Node.js
Perl Net::Ethereum::Modulu Swarm
Installazzjoni tal-modulu Net::Ethereum::Swarm
Kitba u qari tad-data
Sommarju tal-lezzjoni

Lezzjoni 11. Qafas Web3.py biex taħdem ma 'Ethereum f'PythonInstallazzjoni Web3.py
Aġġornament u installazzjoni ta 'pakketti meħtieġa
Installazzjoni tal-modulu easysolc
Il-pubblikazzjoni ta' kuntratt bl-użu ta' Web3.py
Kumpilazzjoni ta' Kuntratt
Konnessjoni ma' fornitur
Teżegwixxi pubblikazzjoni tal-kuntratt
Iffrankar tal-indirizz tal-kuntratt u abi f'fajl
Tmexxi l-iskrittura tal-pubblikazzjoni tal-kuntratt
Sejħa Metodi Kuntratti
Qari tal-indirizz u l-abi ta' kuntratt minn fajl JSON
Konnessjoni ma' fornitur
Ħolqien ta' Għan Kuntratt
Sejħa Metodi Kuntratti
Truffle u Web3.py
Sommarju tal-lezzjoni

Lezzjoni 12. OrakliJista' kuntratt intelliġenti jafda dejta mid-dinja ta' barra?
Oracles bħala intermedjarji tal-informazzjoni blockchain
Sors tad-dejta
Kodiċi biex tirrappreżenta data mis-sors
Oracle għar-reġistrazzjoni tar-rata tal-kambju fil-blockchain
Kuntratt USDRateOracle
Aġġornament tar-rata tal-kambju f'kuntratt intelliġenti
Bl-użu ta' Fornitur tas-Socket tal-Web
Stennija għall-avveniment RateUpdate
Immaniġġjar tal-avveniment RateUpdate
Il-bidu ta' aġġornament tad-dejta f'kuntratt intelliġenti
Sommarju tal-lezzjoni

Sors: www.habr.com

Żid kumment