Ang aklat na “Paglikha ng Solidity Smart Contracts para sa Ethereum Blockchain. Praktikal na Gabay»

Ang aklat na “Paglikha ng Solidity Smart Contracts para sa Ethereum Blockchain. Praktikal na Gabay»
Mahigit isang taon na akong nagtatrabaho sa aklat na “Building Solidity Smart Contracts para sa Ethereum Blockchain. Praktikal na Gabay”, at ngayon ay natapos na ang gawaing ito, at ang aklat nai-publish at magagamit sa Liters.

Sana ay matulungan ka ng aking aklat na makapagsimula nang mabilis sa pagbuo ng mga Solidity smart contact at ipinamahagi ang mga DApp para sa Ethereum blockchain. Binubuo ito ng 12 mga aralin na may mga praktikal na gawain. Matapos makumpleto ang mga ito, makakagawa ang mambabasa ng sarili nilang mga lokal na Ethereum node, mag-publish ng mga matalinong kontrata at tumawag sa kanilang mga pamamaraan, makipagpalitan ng data sa pagitan ng totoong mundo at mga matalinong kontrata gamit ang mga orakulo, at magtrabaho kasama ang Rinkeby test debug network.

Ang libro ay naka-address sa lahat na interesado sa mga advanced na teknolohiya sa larangan ng blockchains at gustong mabilis na makakuha ng kaalaman na nagpapahintulot sa kanila na gumawa ng kawili-wili at promising na gawain.

Sa ibaba makikita mo ang talaan ng mga nilalaman at ang unang kabanata ng aklat (gayundin sa Litrese Available ang mga fragment ng aklat). Umaasa akong makatanggap ng puna, komento at mungkahi. Susubukan kong isaalang-alang ang lahat ng ito kapag inihahanda ang susunod na edisyon ng aklat.

Talaan ng nilalamanPagpapakilalaAng aming libro ay inilaan para sa mga nais na hindi lamang maunawaan ang mga prinsipyo ng Ethereum blockchain, ngunit makakuha din ng mga praktikal na kasanayan sa paglikha ng mga distributed DApps sa Solidity programming language para sa network na ito.

Mas mainam na hindi lamang basahin ang aklat na ito, ngunit magtrabaho kasama nito, pagkumpleto ng mga praktikal na gawain na inilarawan sa mga aralin. Upang gumana, kakailanganin mo ng lokal na computer, virtual o cloud server na may naka-install na Debian o Ubuntu. Maaari mo ring gamitin ang Raspberry Pi upang magsagawa ng maraming gawain.

Sa unang aralin tatalakayin natin ang mga prinsipyo ng Ethereum blockchain at ang pangunahing terminolohiya, pati na rin ang pag-uusapan kung saan maaaring gamitin ang blockchain na ito.

Layunin ikalawang aralin - lumikha ng pribadong Ethereum blockchain node para sa karagdagang trabaho sa loob ng balangkas ng kursong ito sa isang Ubuntu at Debian server. Titingnan namin ang mga tampok ng pag-install ng mga pangunahing kagamitan, tulad ng geth, na nagsisiguro sa pagpapatakbo ng aming blockchain node, pati na rin ang swarm decentralized data storage daemon.

Pangatlong aralin nagtuturo sa iyo kung paano mag-eksperimento sa Ethereum sa isang murang Raspberry Pi microcomputer. I-install mo ang Rasberian operating system (OS) sa Raspberry Pi, ang Geth utility na nagpapagana sa blockchain node, at ang Swarm decentralized data warehouse daemon.

ikaapat na aralin ay nakatuon sa mga account at cryptocurrency unit sa Ethereum network, pati na rin ang mga paraan upang maglipat ng mga pondo mula sa isang account patungo sa isa pa mula sa Geth console. Matututuhan mo kung paano gumawa ng mga account, magsimula ng mga transaksyon sa fund transfer, makakuha ng status ng transaksyon at resibo.

Sa ikalimang aralin makikilala mo ang mga matalinong kontrata sa Ethereum network, alamin ang tungkol sa kanilang pagpapatupad ng Ethereum virtual machine.

Gagawin at ipa-publish mo ang iyong unang matalinong kontrata sa pribadong network ng Ethereum at matutunan kung paano tawagan ang mga function nito. Upang gawin ito, gagamitin mo ang Remix Solidity IDE. Bilang karagdagan, matututunan mo kung paano i-install at gamitin ang compiler ng solc package.
Pag-uusapan din natin ang tinatawag na Application Binary Interface (ABI) at ituturo sa iyo kung paano ito gamitin.

Ikaanim na aralin ay nakatuon sa paglikha ng mga script ng JavaScript na nagpapatakbo ng Node.js at gumaganap ng mga operasyon gamit ang mga Solidity smart contract.

I-install mo ang Node.js sa Ubuntu, Debian at Rasberian OS, magsusulat ng mga script para mag-publish ng smart contract sa Ethereum local network at tawagan ang mga function nito.

Bilang karagdagan, matututuhan mo kung paano maglipat ng mga pondo sa pagitan ng mga regular na account gamit ang mga script, pati na rin i-credit ang mga ito sa mga smart contract account.

Sa ikapitong aralin matututunan mo kung paano i-install at gamitin ang Truffle integrated environment, na sikat sa mga developer ng Solidity smart contract. Matututuhan mo kung paano gumawa ng mga script ng JavaScript na tumatawag sa mga function ng kontrata gamit ang module ng truffle-contract, at subukan ang iyong matalinong kontrata sa Truffle.

Ikawalong aralin nakatuon sa mga uri ng data ng Solidity. Magsusulat ka ng mga matalinong kontrata na gumagana sa mga uri ng data gaya ng mga integer na nilagdaan at hindi nalagdaan, mga sign na numero, string, address, kumplikadong uri ng mga variable, array, enumerasyon, istruktura, at diksyunaryo.

Sa ika-siyam na aralin ikaw ay magiging isang hakbang na mas malapit sa paglikha ng mga matalinong kontrata para sa pangunahing network ng Ethereum. Matututuhan mo kung paano mag-publish ng mga kontrata gamit ang Truffle sa pribadong network ng Geth, gayundin sa Rinkeby testnet. Ang pag-debug ng matalinong kontrata sa Rinkeby network ay lubhang kapaki-pakinabang bago ito i-publish sa pangunahing network - halos lahat ay totoo doon, ngunit libre.

Bilang bahagi ng aralin, gagawa ka ng Rinkeby testnet node, palitan ito ng mga pondo, at mag-publish ng matalinong kontrata.

Aralin 10 nakatuon sa Ethereum Swarm distributed data stores. Gamit ang distributed storage, makakatipid ka sa pag-iimbak ng malalaking halaga ng data sa Ethereum blockchain.

Sa tutorial na ito, gagawa ka ng lokal na storage ng Swarm, magsulat at magbasa ng mga file, at mga direktoryo ng file. Susunod, matututunan mo kung paano magtrabaho kasama ang pampublikong Swarm gateway, magsulat ng mga script para ma-access ang Swarm mula sa Node.js, pati na rin ang paggamit ng Net::Ethereum::Swarm Perl module.

Aralin 11 Layunin — master na nagtatrabaho sa Solidity smart contracts gamit ang sikat na Python programming language at ang Web3.py framework. Ii-install mo ang balangkas na ito, susulat ng mga script para mag-compile at mag-publish ng isang matalinong kontrata, pati na rin ang tawagan ang mga function nito. Sa kasong ito, ang Web3.py ay gagamitin nang mag-isa at kasabay ng Truffle integrated development environment.

Sa aralin 12 matututunan mo kung paano maglipat ng data sa pagitan ng mga matalinong kontrata at ng totoong mundo gamit ang mga orakulo. Kapaki-pakinabang ito para sa pagtanggap ng data mula sa mga website, IoT device, iba't ibang device at sensor, at pagpapadala ng data mula sa mga smart contract sa mga device na ito. Sa praktikal na bahagi ng aralin, gagawa ka ng isang orakulo at isang matalinong kontrata na tumatanggap ng kasalukuyang USD-to-ruble exchange rate mula sa website ng Central Bank ng Russian Federation.

Aralin 1. Maikling tungkol sa blockchain at Ethereum networkLayunin ng aralin: kilalanin ang mga prinsipyo ng Ethereum blockchain, mga lugar ng aplikasyon at pangunahing terminolohiya.
Mga praktikal na gawain: hindi kasama sa araling ito.

Halos walang software developer ngayon na hindi nakarinig ng anuman tungkol sa teknolohiya ng blockchain (Blockchain), cryptocurrencies (Cryptocurrency o Crypto Currency), bitcoins (Bitcoin), paunang coin offering (ICO, Initial coin offering), smart contracts (Smart Contract), pati na rin ang iba pang mga konsepto at termino na nauugnay sa blockchain.

Ang teknolohiya ng Blockchain ay nagbubukas ng mga bagong merkado at lumilikha ng mga trabaho para sa mga programmer. Kung naiintindihan mo ang lahat ng sali-salimuot ng mga teknolohiyang cryptocurrency at mga teknolohiya ng matalinong kontrata, dapat ay wala kang problema sa paglalapat ng kaalamang ito sa pagsasanay.

Dapat kong sabihin na mayroong maraming haka-haka sa paligid ng mga cryptocurrencies at blockchain. Iiwanan namin ang mga talakayan tungkol sa mga pagbabago sa mga rate ng cryptocurrency, tungkol sa paglikha ng mga pyramids, tungkol sa mga intricacies ng batas ng cryptocurrency, atbp. Sa aming tutorial, pangunahing tututukan namin ang mga teknikal na aspeto ng paggamit ng mga matalinong kontrata sa Ethereum blockchain (ethereum, ether) at pagbuo ng tinatawag na mga desentralisadong aplikasyon (Distributed Application, DApp).

Ano ang blockchain

Ang Blockchain (Blockchain, Block Chain) ay isang hanay ng mga bloke ng data na nauugnay sa isa't isa sa isang tiyak na paraan. Sa simula ng kadena ay ang unang bloke, na tinatawag na pangunahing bloke (genesis block) o genesis block. Sinusundan ito ng isang segundo, pagkatapos ay isang pangatlo, at iba pa.

Ang lahat ng mga bloke ng data na ito ay awtomatikong nadoble sa maraming node ng blockchain network. Tinitiyak nito ang desentralisadong imbakan ng data ng blockchain.
Maaari mong isipin ang isang blockchain system bilang isang malaking bilang ng mga node (pisikal o virtual na mga server) na magkakasamang naka-network at kinokopya ang lahat ng mga pagbabago sa data block chain. Ito ay tulad ng isang higanteng multi-server na computer, at ang mga node ng naturang computer (server) ay maaaring nakakalat sa buong mundo. At maaari mo ring idagdag ang iyong computer sa blockchain network.

Ibinahagi ang database

Ang Blockchain ay maaaring isipin bilang isang distributed database na ginagaya sa lahat ng node ng blockchain network. Sa teorya, ang blockchain ay magiging operational hangga't hindi bababa sa isang node ang gumagana, na nag-iimbak ng lahat ng mga bloke ng blockchain.

Naipamahagi na Registry ng Data

Maaaring ituring ang Blockchain bilang isang distributed ledger ng data at mga operasyon (mga transaksyon). Ang isa pang pangalan para sa naturang rehistro ay isang ledger.

Maaaring idagdag ang data sa ipinamahagi na ledger, ngunit hindi ito maaaring baguhin o tanggalin. Ang imposibilidad na ito ay nakakamit, sa partikular, sa pamamagitan ng paggamit ng mga cryptographic algorithm, mga espesyal na algorithm para sa pagdaragdag ng mga bloke sa chain, at desentralisadong imbakan ng data.

Kapag nagdaragdag ng mga bloke at gumaganap ng mga operasyon (mga transaksyon), pribado at pampublikong mga susi ang ginagamit. Pinaghihigpitan nila ang mga gumagamit ng blockchain sa pamamagitan ng pagbibigay sa kanila ng access sa sarili nilang mga bloke ng data lamang.

Mga Transaksyon

Ang Blockchain ay nag-iimbak ng impormasyon tungkol sa mga operasyon (mga transaksyon) sa mga bloke. Kasabay nito, ang mga luma, nakumpleto nang transaksyon ay hindi maaaring ibalik o baguhin. Ang mga bagong transaksyon ay iniimbak sa bago, idinagdag na mga bloke.

Kaya, ang buong kasaysayan ng mga transaksyon ay maaaring maitala sa blockchain na hindi nagbabago. Samakatuwid, ang blockchain ay maaaring gamitin, halimbawa, upang ligtas na mag-imbak ng mga transaksyon sa bangko, impormasyon sa copyright, kasaysayan ng mga pagbabago sa mga may-ari ng ari-arian, atbp.

Ang Ethereum blockchain ay naglalaman ng tinatawag na system states. Habang umuunlad ang mga transaksyon, nagbabago ang estado mula sa una hanggang sa kasalukuyan. Ang mga transaksyon ay naitala sa mga bloke.

Mga pampubliko at pribadong blockchain

Dapat pansinin dito na ang lahat ng nasa itaas ay totoo lamang para sa mga tinatawag na pampublikong blockchain network, na hindi makokontrol ng sinumang indibidwal o legal na entity, mga katawan ng estado o pamahalaan.
Ang tinatawag na pribadong blockchain network ay nasa ilalim ng kumpletong kontrol ng kanilang mga tagalikha, at lahat ay posible doon, halimbawa, ang kumpletong pagpapalit ng lahat ng mga bloke ng chain.

Mga Praktikal na Aplikasyon ng Blockchain

Ano ang maaaring gamitin ng blockchain?

Sa madaling salita, pinapayagan ka ng blockchain na ligtas na magsagawa ng mga transaksyon (transaksyon) sa pagitan ng mga tao o kumpanya na hindi nagtitiwala sa isa't isa. Ang data na naitala sa blockchain (mga transaksyon, personal na data, dokumento, sertipiko, kontrata, invoice, atbp.) ay hindi maaaring pekein o palitan pagkatapos i-record. Samakatuwid, batay sa blockchain, posible na lumikha, halimbawa, mga pinagkakatiwalaang ipinamamahaging mga rehistro ng iba't ibang uri ng mga dokumento.

Siyempre, alam mo na ang mga sistema ng crypto-currency na nakabatay sa blockchain ay nililikha upang palitan ang maginoo na pera sa papel. Ang papel na pera ay tinatawag ding fiat money (mula sa Fiat Money).
Ang Blockchain ay nagbibigay ng imbakan at immutability ng mga transaksyon na naitala sa mga bloke, kaya maaari itong magamit upang lumikha ng mga sistema ng cryptocurrency. Naglalaman ito ng buong kasaysayan ng paglilipat ng mga pondo ng crypto sa pagitan ng iba't ibang user (accounts), at maaaring masubaybayan ang anumang operasyon.

Bagama't ang mga transaksyon sa loob ng mga sistema ng crypto-currency ay maaaring hindi nagpapakilala, ang pag-withdraw ng crypto-currency at pagpapalit nito sa fiat money ay karaniwang nagpapakita ng pagkakakilanlan ng may-ari ng asset ng crypto-currency.

Ang tinatawag na mga smart contract, na software na tumatakbo sa Ethereum network, ay nagbibigay-daan sa iyo na i-automate ang proseso ng pagtatapos ng mga transaksyon at pagsubaybay sa kanilang pagpapatupad. Ito ay lalong epektibo kung ang pagbabayad para sa transaksyon ay isinasagawa gamit ang Ether cryptocurrency (ether).

Ang Ethereum blockchain at Ethereum smart contract na nakasulat sa Solidity programming language ay maaaring gamitin, halimbawa, sa mga sumusunod na lugar:

  • isang alternatibo sa notarization ng mga dokumento;
  • pagpapanatili ng isang rehistro ng mga bagay sa real estate at impormasyon tungkol sa mga transaksyon sa mga bagay sa real estate;
  • pag-iimbak ng impormasyon sa copyright para sa intelektwal na ari-arian (mga aklat, larawan, mga gawang musikal, atbp.);
  • pagtatatag ng mga independiyenteng sistema ng pagboto;
  • pananalapi at pagbabangko;
  • logistik sa isang internasyonal na sukat, pagsubaybay sa paggalaw ng mga kalakal;
  • imbakan ng personal na data bilang isang analogue ng sistema ng identity card;
  • ligtas na mga transaksyon sa komersyal na lugar;
  • pag-iimbak ng mga resulta ng mga medikal na eksaminasyon, pati na rin ang kasaysayan ng mga iniresetang pamamaraan

Mga problema sa blockchain

Ngunit, siyempre, hindi lahat ay kasing simple ng maaaring tila!

May mga problema sa pag-verify ng data bago ito idagdag sa blockchain (halimbawa, peke ba ang mga ito?), mga problema sa seguridad ng system at application software na ginamit para magtrabaho kasama ang blockchain, mga problema sa posibilidad ng paggamit ng mga pamamaraan ng social engineering upang magnakaw ng access sa mga wallet ng cryptocurrency, atbp. .P.

Muli, kung hindi natin pinag-uusapan ang isang pampublikong blockchain na ang mga node ay nakakalat sa buong mundo, ngunit tungkol sa isang pribadong blockchain na pag-aari ng isang tao o organisasyon, kung gayon ang antas ng tiwala dito ay hindi mas mataas kaysa sa antas ng tiwala sa taong ito. o organisasyon.

Dapat ding isaalang-alang na ang data na naitala sa blockchain ay magagamit ng lahat. Sa ganitong kahulugan, ang blockchain (lalo na ang publiko) ay hindi angkop para sa pag-iimbak ng kumpidensyal na impormasyon. Gayunpaman, ang katotohanan na ang impormasyon sa blockchain ay hindi mababago ay maaaring makatulong na maiwasan o mag-imbestiga sa iba't ibang uri ng mga mapanlinlang na aktibidad.

Ang mga desentralisadong aplikasyon ng Ethereum ay magiging maginhawa kung magbabayad ka para sa kanilang paggamit sa cryptocurrency. Kung mas maraming tao ang nagmamay-ari o gustong bumili ng mga cryptocurrencies, magiging mas sikat ang mga DApp at smart contract.

Kabilang sa mga pangkalahatang problema ng blockchain na humahadlang sa praktikal na aplikasyon nito, maaari nating banggitin ang limitadong bilis ng pagdaragdag ng mga bagong bloke at ang medyo mataas na halaga ng mga transaksyon. Ngunit ang teknolohiya sa lugar na ito ay aktibong umuunlad, at inaasahan na ang mga teknikal na problema ay malulutas sa paglipas ng panahon.

Ang isa pang problema ay ang mga smart contract ng Ethereum blockchain ay tumatakbo sa isang nakahiwalay na kapaligiran ng mga virtual machine, at walang access sa totoong data sa mundo. Sa partikular, ang smart contract program ay hindi makakapagbasa ng data mula sa mga website o anumang pisikal na device (mga sensor, contact, atbp.), at hindi makakapag-output ng data sa anumang external na device. Tatalakayin natin ang problemang ito at mga paraan upang malutas ito sa aralin na nakatuon sa tinatawag na Oracles - mga tagapamagitan ng impormasyon ng mga matalinong kontrata.

Mayroon ding mga legal na paghihigpit. Sa ilang bansa, halimbawa, ipinagbabawal ang paggamit ng cryptocurrency bilang paraan ng pagbabayad, ngunit maaari mo itong pagmamay-ari bilang isang uri ng digital asset, tulad ng mga securities. Ang mga naturang asset ay maaaring mabili at ibenta sa stock exchange. Sa anumang kaso, kapag lumilikha ng isang proyekto na nagtatrabaho sa mga cryptocurrencies, kailangan mong maging pamilyar sa batas ng bansa kung saan nasasakupan ang iyong proyekto.

Paano nabuo ang chain ng blockchain

Tulad ng nasabi na natin, ang blockchain ay isang simpleng hanay ng mga bloke ng data. Una, ang unang bloke ng kadena na ito ay nabuo, pagkatapos ay ang pangalawa ay idinagdag dito, at iba pa. Ang data ng transaksyon ay dapat na naka-imbak sa mga bloke at idinagdag sa pinakahuling bloke.

Sa fig. 1.1 ipinakita namin ang pinakasimpleng bersyon ng block sequence, kung saan ang unang block ay tumutukoy sa susunod.

Ang aklat na “Paglikha ng Solidity Smart Contracts para sa Ethereum Blockchain. Praktikal na Gabay»
kanin. 1.1. Simpleng Block Sequence

Sa kasong ito, gayunpaman, napakadaling pekein ang mga nilalaman ng anumang bloke sa kadena, dahil ang mga bloke ay hindi naglalaman ng anumang impormasyon upang maprotektahan laban sa mga pagbabago. Isinasaalang-alang na ang blockchain ay inilaan para sa paggamit ng mga tao at kumpanya kung saan walang tiwala, maaari itong tapusin na ang pamamaraang ito ng pag-iimbak ng data ay hindi angkop para sa blockchain.

Harapin natin ang pagprotekta sa mga bloke mula sa pamemeke. Sa unang yugto, susubukan naming protektahan ang bawat bloke gamit ang isang checksum (Larawan 1.2).

Ang aklat na “Paglikha ng Solidity Smart Contracts para sa Ethereum Blockchain. Praktikal na Gabay»
kanin. 1.2. Pagdaragdag ng proteksyon ng checksum para sa block data

Ngayon, hindi na mababago ng isang attacker ang block nang ganoon lang, dahil naglalaman ito ng checksum ng block data. Ipapakita ng checksum check na nabago ang data.

Maaari mong gamitin ang isa sa mga hash function gaya ng MD-5, SHA-1, SHA-256, atbp. upang kalkulahin ang checksum. Kinakalkula ng mga function ng hash ang ilang halaga (halimbawa, sa anyo ng isang string ng teksto na may pare-parehong haba) bilang resulta ng pagsasagawa ng mga hindi maibabalik na operasyon sa isang bloke ng data. Ang mga operasyon ay nakasalalay sa uri ng hash function.

Kahit na bahagyang nagbabago ang nilalaman ng data block, magbabago rin ang hash value. Sa pamamagitan ng pagsusuri sa halaga ng isang hash function, imposibleng mabawi ang block ng data kung saan ito kinakalkula.

Sapat ba ang gayong proteksyon? Sa kasamaang palad hindi.

Sa scheme na ito, pinoprotektahan lamang ng checksum (hash function) ang mga indibidwal na bloke, ngunit hindi ang buong block chain. Alam ang algorithm para sa pagkalkula ng hash function, ang isang attacker ay madaling baguhin ang mga nilalaman ng block. Gayundin, walang makakapigil sa kanya na alisin ang mga bloke mula sa kadena o magdagdag ng mga bago.

Upang maprotektahan ang buong kadena sa kabuuan, maaari kang mag-imbak sa bawat bloke kasama ang data din ng isang hash ng data ng nakaraang bloke (Larawan 1.3).

Ang aklat na “Paglikha ng Solidity Smart Contracts para sa Ethereum Blockchain. Praktikal na Gabay»
kanin. 1.3. Idagdag ang hash ng nakaraang block sa data block

Sa pamamaraang ito, upang baguhin ang anumang bloke, kailangan mong muling kalkulahin ang mga pag-andar ng hash ng lahat ng kasunod na mga bloke. Mukhang, ano ang problema?

Sa mga totoong blockchain, ang mga artipisyal na paghihirap ay nilikha para sa pagdaragdag ng mga bagong bloke - ginagamit ang mga algorithm na nangangailangan ng maraming mapagkukunan ng pag-compute. Isinasaalang-alang ang katotohanan na upang makagawa ng mga pagbabago sa isang bloke, kinakailangan na muling kalkulahin ang hindi isa sa bloke na ito, ngunit ang lahat ng mga kasunod, ito ay magiging lubhang mahirap na gawin ito.

Alalahanin din na ang data ng blockchain ay iniimbak (ginagaya) sa maraming network node, i.e. ginagamit ang desentralisadong imbakan. At ito ay lubos na nagpapalubha sa pamemeke ng bloke, dahil. kailangang gawin ang mga pagbabago sa lahat ng node ng network.

Dahil ang mga bloke ay nag-iimbak ng impormasyon tungkol sa nakaraang bloke, posible na suriin ang mga nilalaman ng lahat ng mga bloke sa chain.

Blockchain Ethereum

Ang Ethereum blockchain ay isang platform kung saan maaari kang bumuo ng mga distributed DApps. Hindi tulad ng iba pang mga platform, pinapayagan ng Ethereum ang paggamit ng mga tinatawag na smart contract (smart contract, smart contract) na nakasulat sa Solidity programming language.

Ang platform na ito ay nilikha noong 2013 ni Vitalik Buterin, tagapagtatag ng Bitcoin Magazine, at inilunsad noong 2015. Lahat ng matututunan o gagawin namin sa aming kurso sa pagsasanay ay partikular na nauugnay sa Ethereum blockchain at Solidity smart contracts.

Pagmimina o kung paano nilikha ang mga bloke

Ang pagmimina ay isang medyo kumplikado at masinsinang mapagkukunan na proseso ng pagdaragdag ng mga bagong bloke sa blockchain, at hindi "pagmimina ng cryptocurrency" sa lahat. Tinitiyak ng pagmimina ang kahusayan ng blockchain, dahil. ang prosesong ito ang responsable sa pagdaragdag ng mga transaksyon sa Ethereum blockchain.

Ang mga tao at organisasyong kasangkot sa pagdaragdag ng mga bloke ay tinatawag na mga minero.
Ang software (software) na tumatakbo sa mga node ng mga minero ay sumusubok na kunin ang isang parameter ng hashing na tinatawag na Nonce para sa huling bloke upang makakuha ng isang tiyak na halaga ng hash na ibinigay ng network. Ang Ethash hashing algorithm na ginamit sa Ethereum ay nagbibigay-daan sa iyong makuha ang Nonce value sa pamamagitan lamang ng sequential enumeration.

Kung nakita ng minero node ang tamang halaga ng Nonce, ito ang tinatawag na proof of work (PoW, Proof-of-work). Sa kasong ito, kung ang block ay idinagdag sa Ethereum network, ang minero ay tumatanggap ng isang tiyak na gantimpala sa pera ng network - Ether. Sa panahon ng pagsulat ng aklat na ito, ang gantimpala ay 5 Ether, ngunit ito ay bababa sa paglipas ng panahon.

Kaya, tinitiyak ng mga minero ng Ethereum ang pagpapatakbo ng network sa pamamagitan ng pagdaragdag ng mga bloke, at tumatanggap ng pera ng cryptocurrency para dito. Makakakita ka ng maraming impormasyon tungkol sa mga minero at pagmimina sa Internet, at tututukan namin ang paglikha ng mga Solidity contract at DApps sa Ethereum network.

Buod ng aralin

Sa unang aralin, nakilala mo ang blockchain at nalaman mong ito ay isang pagkakasunud-sunod ng mga bloke na binubuo sa isang espesyal na paraan. Ang mga nilalaman ng mga naunang naitala na mga bloke ay hindi mababago, dahil mangangailangan ito ng muling pagkalkula ng lahat ng kasunod na mga bloke sa maraming mga node ng network, na nangangailangan ng maraming mapagkukunan at oras.

Maaaring gamitin ang Blockchain upang iimbak ang mga resulta ng mga transaksyon. Ang pangunahing layunin nito ay upang ayusin ang ligtas na pagpapatupad ng mga transaksyon sa pagitan ng mga partido (mga tao at organisasyon), kung saan walang tiwala. Natutunan mo kung aling mga partikular na lugar ng negosyo at kung aling mga lugar maaari mong gamitin ang Ethereum blockchain at Solidity smart contracts. Ito ang sektor ng pagbabangko, pagpaparehistro ng mga karapatan sa ari-arian, mga dokumento, atbp.

Natutunan mo rin na iba't ibang problema ang maaaring lumitaw kapag gumagamit ng blockchain. Ito ang mga problema sa pag-verify ng impormasyong idinagdag sa blockchain, ang bilis ng blockchain, ang halaga ng mga transaksyon, ang problema ng palitan ng data sa pagitan ng mga matalinong kontrata at ng totoong mundo, pati na rin ang mga potensyal na pag-atake ng mga nanghihimasok na naglalayong magnakaw ng mga pondo ng cryptocurrency mula sa gumagamit. mga account.

Sa madaling sabi din namin napag-usapan ang tungkol sa pagmimina bilang isang proseso ng pagdaragdag ng mga bagong bloke sa blockchain. Kinakailangan ang pagmimina upang makumpleto ang mga transaksyon. Tinitiyak ng mga nakikibahagi sa pagmimina ang pagganap ng blockchain at makakatanggap ng gantimpala sa cryptocurrency para dito.

Aralin 2: Paghahanda ng Desktop Environment sa Ubuntu at DebianPagpili ng operating system
Pag-install ng mga kinakailangang kagamitan
Pag-install ng Geth at Swarm sa Ubuntu
Pag-install ng Geth at Swarm sa Debian
Paunang paghahanda
Dina-download ang pamamahagi ng Go
Pagtatakda ng mga variable ng kapaligiran
Sinusuri ang Go Version
Pag-install ng Geth at Swarm
Lumilikha kami ng pribadong blockchain
Inihahanda ang genesis.json file
Gumawa ng direktoryo ng trabaho
Gumawa ng account
Patakbuhin ang pagsisimula ng node
Mga opsyon sa pagsisimula ng node
Kumokonekta sa aming site
Pamamahala ng pagmimina at pagsusuri ng balanse
Isinara ang Geth console
Buod ng aralin

Aralin 3Inihahanda ang Iyong Raspberry Pi 3
Pag-install ng Rasberian
Pag-install ng mga update
Paganahin ang SSH Access
Pagtatakda ng static na IP address
Pag-install ng mga kinakailangang kagamitan
Ini-install ang Go
Dina-download ang pamamahagi ng Go
Pagtatakda ng mga variable ng kapaligiran
Sinusuri ang Go Version
Pag-install ng Geth at Swarm
Lumilikha kami ng pribadong blockchain
Pagsusuri ng account at balanse
Buod ng aralin

Aralin 4Pagtingin at pagdaragdag ng mga account
Pagtingin sa listahan ng mga account
Pagdaragdag ng isang account
mga opsyon sa utos ng account ng geth
Mga password ng account
Cryptocurrency sa Ethereum
Pera ng Ethereum
Tukuyin ang kasalukuyang balanse ng aming mga account
Paglipat ng mga pondo mula sa isang account patungo sa isa pa
eth.sendTransaction Method
Pagtingin sa Katayuan ng isang Transaksyon
Resibo ng transaksyon
Buod ng aralin

Aralin 5Mga matalinong kontrata sa Ethereum
Matalinong pagpapatupad ng kontrata
Ethereum virtual machine
Integrated Development Environment Remix Solidity IDE
Pagsisimula ng compilation
Mga Function ng Kontrata sa Pagtawag
Paglalathala ng isang kontrata sa isang pribadong network
Kunin ang kahulugan ng ABI at binary ng kontrata
Paglalathala ng kontrata
Sinusuri ang katayuan ng isang transaksyon sa pag-publish ng kontrata
Mga Function ng Kontrata sa Pagtawag
solc batch compiler
Pag-install ng solc sa Ubuntu
Pag-install ng solc sa Debian
Pagsasama-sama ng kontrata ng HelloSol
Paglalathala ng kontrata
Pag-install ng solc sa Rasberian
Buod ng aralin

Aralin 6. Mga matalinong kontrata at Node.jsIni-install ang Node.js
Pag-install sa Ubuntu
Pag-install sa Debian
Pag-install at pagpapatakbo ng Ganache-cli
Pag-install ng Web3
Pag-install ng Solc
Pag-install ng Node.js sa Rasberian
Script upang makakuha ng listahan ng mga account sa console
Script para sa pag-publish ng isang matalinong kontrata
Pagpapatakbo at pagkuha ng mga parameter
Pagkuha ng mga opsyon sa paglulunsad
Pagsasama-sama ng Kontrata
Pag-unlock ng account
I-download ang ABI at contract binary code
Pagtantya ng kinakailangang halaga ng gas
Lumikha ng isang bagay at simulan ang pag-publish ng isang kontrata
Pagpapatakbo ng script sa pag-publish ng kontrata
Pagtawag sa mga function ng smart contract
Posible bang i-update ang na-publish na smart contract
Paggawa gamit ang Web3 na bersyon 1.0.x
Kumuha ng listahan ng mga account
Paglalathala ng kontrata
Mga Function ng Kontrata sa Pagtawag
Paglipat ng mga pondo mula sa isang account patungo sa isa pa
Paglipat ng mga pondo sa account ng kontrata
Ina-update ang HelloSol smart contract
Gumawa ng script para tingnan ang balanse ng account
Magdagdag ng getBalance function na tawag sa call_contract_get_promise.js script
Replenishment ng smart contract account
Buod ng aralin

Aralin 7. Panimula sa TrufflePag-install ng Truffle
Gumawa ng proyektong HelloSol
Paglikha ng Direktoryo ng Proyekto at Mga File
direktoryo ng mga kontrata
Mga paglilipat ng direktoryo
direktoryo ng pagsubok
truffle-config.js file
Pagsasama-sama ng kontrata ng HelloSol
Magsimulang maglathala ng kontrata
Ang pagtawag sa kontrata ng HelloSol ay gumagana sa isang Truffle prompt
Ang pagtawag sa HelloSol contract function mula sa JavaScript script na nagpapatakbo ng Node.js
Pag-install ng truffle-contract module
Ang pagtawag sa mga function ng kontrata ay getValue at getString
Mga function ng kontrata sa pagtawag setValue at setString
Pagbabago ng kontrata at muling paglalathala
Paggawa gamit ang Web3 na bersyon 1.0.x
Paggawa ng mga pagbabago sa HelloSol smart contract
Mga script para sa pagtawag sa mga paraan ng kontrata
Pagsubok sa Truffle
Pagsubok ng solidity
Pagsubok sa JavaScript
Buod ng aralin

Aralin 8Kontrata para sa pag-aaral ng mga uri ng data
Mga uri ng data ng Boolean
Unsigned at sign integers
Mga Numero ng Nakapirming Punto
address
Mga Variable ng Kumplikadong Uri
Mga Fixed Array
Mga dynamic na array
Pagpapatala
Mga istraktura
mga diksyunaryo
Buod ng aralin

Aralin 9Pag-publish ng kontrata mula sa Truffle patungo sa pribadong network ng Geth
Paghahanda ng Private Network Host
Paghahanda ng kontrata para sa trabaho
Pag-compile at paglilipat ng kontrata sa Truffle network
Nagpapatakbo ng paglipat ng geth LAN
Pagkuha ng mga artifact Truffle
Pag-publish ng kontrata mula sa Truffle sa Rinkeby testnet
Inihahanda ang Geth Node para sa Rinkeby
Pag-synchronize ng Node
Pagdaragdag ng mga account
I-top up ang iyong Rinkeby account sa Ether
Sinisimulan ang paglipat ng kontrata sa network ng Rinkeby
Tingnan ang impormasyon ng kontrata sa network ng Rinkeby
Truffle Console para sa Rinkeby Network
Mas madaling paraan para tumawag sa mga function ng kontrata
Pagtawag sa mga paraan ng kontrata sa Node.js
Maglipat ng mga pondo sa pagitan ng mga account sa Truffle console para sa Rinkby
Buod ng aralin

Aralin 10Paano Gumagana ang Ethereum Swarm
Pag-install at pagpapatakbo ng Swarm
Mga operasyon sa mga file at direktoryo
Pag-upload ng file sa Ethereum Swarm
Nagbabasa ng file mula sa Ethereum Swarm
Pagtingin sa manifest ng isang na-upload na file
Naglo-load ng mga direktoryo na may mga subdirectory
Pagbabasa ng file mula sa isang na-upload na direktoryo
Gamit ang Swarm Public Gateway
Pagtawag sa Swarm mula sa mga script ng Node.js
Perl Net::Ethereum::Swarm module
Pag-install ng Net::Ethereum::Swarm Module
Pagsulat at pagbasa ng datos
Buod ng aralin

Aralin 11Pag-install ng Web3.py
I-update at i-install ang mga kinakailangang pakete
Pag-install ng easysolc module
Pag-publish ng kontrata sa Web3.py
Pagsasama-sama ng Kontrata
Kumokonekta sa isang provider
Isagawa ang paglalathala ng kontrata
Sine-save ang address ng kontrata at abi sa isang file
Pagpapatakbo ng script sa pag-publish ng kontrata
Mga Paraan ng Kontrata sa Pagtawag
Binabasa ang address at kontrata abi mula sa JSON file
Kumokonekta sa isang provider
Lumikha ng isang bagay ng kontrata
Mga Paraan ng Kontrata sa Pagtawag
Truffle at Web3.py
Buod ng aralin

Aralin 12Maaari bang magtiwala ang isang matalinong kontrata sa data mula sa labas ng mundo
Oracles bilang Blockchain Information Intermediaries
Pinanggalingan ng Datos
Code upang kumatawan sa data mula sa isang pinagmulan
Oracle para itala ang exchange rate sa blockchain
Kontrata USDRateOracle
Pag-update ng exchange rate sa isang matalinong kontrata
Gamit ang Web Socket Provider
Naghihintay para sa RateUpdate na kaganapan
Pangangasiwa sa RateUpdate na kaganapan
Pagsisimula ng pag-update ng data sa isang matalinong kontrata
Buod ng aralin

Pinagmulan: www.habr.com

Magdagdag ng komento