Ang libro nga "Paghimo sa Solidity smart nga mga kontrata alang sa Ethereum blockchain. Praktikal nga giya"

Ang libro nga "Paghimo sa Solidity smart nga mga kontrata alang sa Ethereum blockchain. Praktikal nga giya"
Kapin sa usa ka tuig nagtrabaho ko sa libro nga "Paghimo sa Solidity Smart Contracts para sa Ethereum Blockchain. Praktikal nga Giya", ug karon kini nga buhat nahuman, ug ang libro gimantala ug anaa sa Liter.

Nanghinaut ko nga ang akong libro makatabang kanimo sa dali nga pagsugod sa paghimo sa Solidity smart contacts ug pag-apod-apod sa DApps alang sa Ethereum blockchain. Naglangkob kini sa 12 ka mga leksyon nga adunay praktikal nga mga buluhaton. Sa pagkompleto niini, ang magbabasa makahimo sa paghimo sa ilang kaugalingon nga lokal nga mga Ethereum node, pagmantala sa mga smart nga kontrata ug pagtawag sa ilang mga pamaagi, pagbayloay sa datos tali sa tinuod nga kalibutan ug mga smart nga kontrata gamit ang mga orakulo, ug pagtrabaho kauban ang Rinkeby test debug network.

Ang libro gitumong sa tanan nga interesado sa mga advanced nga teknolohiya sa natad sa blockchains ug gusto nga dali nga makaangkon og kahibalo nga nagtugot kanila sa pagbuhat sa makapaikag ug saad nga trabaho.

Sa ubos makit-an nimo ang talaan sa mga sulud ug ang unang kapitulo sa libro (usab sa Litero ang mga tipik sa libro anaa). Nanghinaut ko nga makadawat og feedback, komento ug sugyot. Akong paningkamutan nga tagdon kining tanan sa dihang mag-andam sa sunod nga edisyon sa libro.

Mga sulud sa suludPasiunaAng among libro gituyo alang niadtong gusto nga dili lamang makasabut sa mga prinsipyo sa Ethereum blockchain, kondili aron usab makaangkon og praktikal nga mga kahanas sa pagmugna og gipang-apod-apod nga DApps sa Solidity programming language alang niini nga network.

Kini mao ang mas maayo nga dili lamang sa pagbasa niini nga libro, apan sa pagtrabaho uban niini, sa pagbuhat sa praktikal nga mga buluhaton nga gihulagway diha sa mga leksyon. Aron magtrabaho, kinahanglan nimo ang usa ka lokal nga kompyuter, virtual o cloud server nga adunay naka-install nga Debian o Ubuntu OS. Mahimo usab nimo gamiton ang Raspberry Pi aron mahimo ang daghang mga buluhaton.

Sa unang leksyon Atong tan-awon ang mga prinsipyo sa pag-operate sa Ethereum blockchain ug batakang terminolohiya, ug maghisgot usab kung asa kini nga blockchain magamit.

Tumong ikaduhang leksyon β€” paghimo ug pribado nga Ethereum blockchain node para sa dugang nga trabaho sulod niini nga kurso sa Ubuntu ug Debian server. Atong tan-awon ang mga bahin sa pag-instalar sa mga batakang utilities, sama sa geth, nga nagsiguro sa operasyon sa atong blockchain node, ingon man ang daemon nga desentralisado nga data storage daemon.

Ikatulo nga leksyon magtudlo kanimo unsaon pag-eksperimento sa Ethereum sa usa ka barato nga Raspberry Pi microcomputer. Imong i-install ang Rasberian operating system (OS) sa Raspberry Pi, ang Geth utility nga nagpalihok sa blockchain node, ug ang Swarm decentralized data storage daemon.

Ikaupat nga leksyon gipahinungod sa mga account ug mga yunit sa cryptocurrency sa Ethereum network, ingon man mga paagi sa pagbalhin sa mga pondo gikan sa usa ka account ngadto sa lain gikan sa Geth console. Mahibal-an nimo kung giunsa paghimo ang mga account, pagsugod sa mga transaksyon sa pagbalhin sa pondo, ug pagkuha sa kahimtang sa transaksyon ug resibo.

Sa ikalima nga leksyon Mahibal-an nimo ang mga smart nga kontrata sa Ethereum network ug mahibal-an ang bahin sa ilang pagpatuman sa Ethereum virtual machine.

Imong himoon ug imantala ang imong unang smart contract sa Ethereum private network ug makat-on unsaon pagtawag sa mga function niini. Aron mahimo kini, imong gamiton ang Remix Solidity IDE. Makakat-on ka usab kung unsaon pag-instalar ug paggamit sa solc batch compiler.
Maghisgot usab kami bahin sa gitawag nga Application Binary Interface (ABI) ug tudloan ka kung giunsa kini paggamit.

Ikaunom nga leksyon gipahinungod sa paghimo sa mga script sa JavaScript nga nagpadagan sa Node.js ug pagpahigayon sa mga operasyon gamit ang Solidity smart contracts.

Imong i-install ang Node.js sa Ubuntu, Debian ug Rasberian OS, pagsulat og mga script aron mamantala ang usa ka smart contract sa Ethereum local network ug tawagan ang mga function niini.

Dugang pa, mahibal-an nimo kung giunsa ang pagbalhin mga pondo tali sa mga regular nga account gamit ang mga script, ingon usab i-kredito kini sa mga smart contract account.

Sa ikapito nga leksyon Mahibal-an nimo kung giunsa ang pag-install ug paggamit sa Truffle framework, nga sikat sa mga developer sa Solidity smart contract. Mahibal-an nimo kung giunsa paghimo ang mga script sa JavaScript nga nagtawag sa mga function sa kontrata gamit ang truffle-contract module, ug sulayan ang imong intelihenteng kontrata gamit ang Truffle.

Ikawalo nga leksyon gipahinungod sa Solidity data type. Isulat nimo ang mga intelihente nga kontrata nga nagtrabaho sa mga tipo sa datos sama sa gipirmahan ug wala gipirmahan nga mga integer, pinirmahan nga mga numero, mga kuwerdas, adres, komplikado nga mga variable, arrays, enumerations, istruktura, ug mga diksyonaryo.

Sa ikasiyam nga leksyon Mahimo ka nga usa ka lakang nga mas duol sa paghimo og mga smart nga kontrata alang sa Ethereum mainnet. Mahibal-an nimo kung giunsa ang pagmantala sa mga kontrata gamit ang Truffle sa pribadong network sa Geth, ingon man sa testnet sa Rinkeby. Ang pag-debug sa usa ka intelihenteng kontrata sa Rinkeby network mapuslanon kaayo sa wala pa kini imantala sa main network - halos tanan tinuod didto, apan libre.

Isip kabahin sa leksyon, maghimo ka og Rinkeby test network node, pondohan kini og mga pundo, ug mag-publish og smart contract.

10 nga leksyon gipahinungod sa Ethereum Swarm nga gipang-apod-apod nga pagtipig sa datos. Pinaagi sa paggamit sa giapod-apod nga pagtipig, makatipig ka sa pagtipig sa daghang mga datos sa blockchain sa Ethereum.

Sa kini nga panudlo, maghimo ka usa ka lokal nga pagtipig sa Swarm, pagsulat ug pagbasa sa mga operasyon sa mga file ug direktoryo nga adunay mga file. Sunod, makakat-on ka kung unsaon pagtrabaho kauban ang publiko nga Swarm gateway, pagsulat sa mga script aron ma-access ang Swarm gikan sa Node.js, ingon man ang paggamit sa Perl Net:: Ethereum:: Swarm module.

Tumong sa Leksyon 11 β€” master nga nagtrabaho kauban ang Solidity smart nga mga kontrata gamit ang sikat nga Python programming language ug ang Web3.py framework. Imong i-install ang balangkas, isulat ang mga script aron ma-compile ug ma-publish ang smart nga kontrata, ug tawagan ang mga gimbuhaton niini. Niini nga kaso, ang Web3.py gamiton sa iyang kaugalingon ug inubanan sa Truffle integrated development environment.

Sa leksyon 12 makakat-on ka sa pagbalhin sa datos tali sa mga smart nga kontrata ug sa tinuod nga kalibutan gamit ang mga orakulo. Mapuslanon kini alang kanimo nga makadawat mga datos gikan sa mga Web site, mga aparato sa IoT, lainlaing mga aparato ug sensor, ug magpadala mga datos gikan sa mga smart nga kontrata sa kini nga mga aparato. Sa praktikal nga bahin sa leksyon, maghimo ka usa ka orakulo ug usa ka intelihenteng kontrata nga makadawat sa kasamtangan nga exchange rate tali sa USD ug rubles gikan sa website sa Central Bank sa Russian Federation.

Leksyon 1. Sa daklit bahin sa blockchain ug sa Ethereum networkAng katuyoan sa leksyon: pamilyar sa mga prinsipyo sa pag-operate sa Ethereum blockchain, mga lugar sa aplikasyon ug sukaranan nga terminolohiya.
Praktikal nga mga buluhaton: wala maapil niini nga leksyon.

Adunay halos usa ka software developer karon nga wala makadungog sa bisan unsa mahitungod sa blockchain teknolohiya (Blockchain), cryptocurrencies (Cryptocurrency o Crypto Currency), Bitcoin (Bitcoin), inisyal nga tanyag nga sensilyo (ICO, Inisyal nga sensilyo nga halad), mga smart kontrata (Smart Kontrata), ingon man usab sa ubang mga konsepto ug termino nga may kalabutan sa blockchain.

Ang teknolohiya sa Blockchain nagbukas sa bag-ong mga merkado ug nagmugna og mga trabaho alang sa mga programmer. Kung nasabtan nimo ang tanan nga mga kakuti sa mga teknolohiya sa cryptocurrency ug mga teknolohiya sa intelihente nga kontrata, nan dili ka kinahanglan nga adunay mga problema sa paggamit niini nga kahibalo sa praktis.

Kinahanglang isulti nga adunay daghang mga pangagpas sa palibot sa mga cryptocurrencies ug blockchain. Ibilin namon ang mga diskusyon bahin sa mga pagbag-o sa mga rate sa cryptocurrency, ang paghimo sa mga piramide, ang mga kakuti sa balaod sa cryptocurrency, ug uban pa. Sa among kurso sa pagbansay mag-una kami sa mga teknikal nga aspeto sa paggamit sa mga smart nga kontrata sa Ethereum blockchain (Ethereum, Ether) ug ang pagpalambo sa gitawag nga mga desentralisadong aplikasyon (Distributed Application, DApp).

Unsa ang blockchain

Ang Blockchain (Block Chain) usa ka kadena sa mga bloke sa datos nga konektado sa usag usa sa usa ka paagi. Sa sinugdanan sa kadena adunay una nga bloke, nga gitawag nga panguna nga bloke (genesis block) o genesis block. Gisundan kini sa ikaduha, dayon ang ikatulo ug uban pa.

Ang tanan nga kini nga mga bloke sa datos awtomatiko nga nadoble sa daghang mga node sa network nga blockchain. Gisiguro niini ang desentralisadong pagtipig sa datos sa blockchain.
Mahimo nimong hunahunaon ang usa ka sistema sa blockchain isip daghang gidaghanon sa mga node (pisikal o virtual nga mga server) nga konektado sa usa ka network ug gikopya ang tanan nga mga pagbag-o sa kadena sa mga bloke sa datos. Kini sama sa usa ka higante nga multi-server nga kompyuter, ug ang mga node sa maong kompyuter (server) mahimong magkatag sa tibuok kalibutan. Ug ikaw usab makadugang sa imong kompyuter sa blockchain network.

Gipanagtag nga Database

Ang usa ka blockchain mahimong isipon nga usa ka gipang-apod-apod nga database nga gisundog sa tanan nga mga node sa blockchain network. Sa teorya, ang blockchain mahimong magamit basta labing menos usa ka node ang nagtrabaho, nagtipig sa tanan nga mga bloke sa blockchain.

Giapod-apod nga Data Registry

Ang Blockchain mahimong isipon nga usa ka giapod-apod nga ledger sa datos ug mga operasyon (mga transaksyon). Ang laing ngalan sa maong rehistro mao ang usa ka ledger.

Ang datos mahimong idugang sa usa ka gipang-apod-apod nga ledger, apan dili kini mausab o mapapas. Kini nga imposible makab-ot, ilabi na, pinaagi sa paggamit sa mga cryptographic algorithm, espesyal nga mga algorithm alang sa pagdugang sa mga bloke sa kadena ug desentralisado nga pagtipig sa datos.

Sa pagdugang sa mga bloke ug paghimo sa mga operasyon (mga transaksyon), pribado ug publiko nga mga yawe gigamit. Gipugngan nila ang mga tiggamit sa blockchain pinaagi lamang sa paghatag kanila og access sa ilang kaugalingon nga mga bloke sa datos.

Mga Transaksyon

Ang Blockchain nagtipig og impormasyon bahin sa mga operasyon (mga transaksyon) sa mga bloke. Sa parehas nga oras, ang daan, nahuman na nga mga transaksyon dili mahimong ibalik o usbon. Ang mga bag-ong transaksyon gitipigan sa bag-o, gidugang nga mga bloke.

Niining paagiha, ang tibuok kasaysayan sa transaksyon mahimong marekord nga wala mausab sa blockchain. Busa, ang blockchain mahimong magamit, pananglitan, aron luwas nga tipigan ang mga transaksyon sa banking, impormasyon sa copyright, kasaysayan sa mga pagbag-o sa mga tag-iya sa kabtangan, ug uban pa.

Ang Ethereum blockchain naglangkob sa gitawag nga system states. Samtang ang mga transaksyon gipatuman, ang estado mausab gikan sa inisyal nga estado ngadto sa kasamtangan nga estado. Ang mga transaksyon girekord sa mga bloke.

Publiko ug pribado nga mga blockchain

Kinahanglan nga hinumdoman dinhi nga ang tanan nga gisulti tinuod lamang alang sa gitawag nga publiko nga blockchain network, nga dili makontrol sa bisan kinsa nga indibidwal o ligal nga entidad, ahensya sa gobyerno o gobyerno.
Ang gitawag nga mga pribadong blockchain network ubos sa bug-os nga kontrol sa ilang mga tiglalang, ug bisan unsa nga posible didto, pananglitan, usa ka kompleto nga pagpuli sa tanan nga mga bloke sa kadena.

Praktikal nga aplikasyon sa blockchain

Unsa ang mahimong mapuslanon alang sa blockchain?

Sa laktod nga pagkasulti, ang blockchain nagtugot kanimo nga luwas nga ipahigayon ang mga transaksyon (transaksyon) tali sa mga tawo o kompanya nga wala’y pagsalig sa usag usa. Ang mga datos nga narekord sa blockchain (mga transaksyon, personal nga datos, mga dokumento, mga sertipiko, mga kontrata, mga invoice, ug uban pa) dili mahimong palsipikado o ilisan human sa pagrekord. Busa, base sa blockchain, posible nga maghimo, pananglitan, kasaligan nga gipang-apod-apod nga mga rehistro sa lainlaing mga lahi sa mga dokumento.

Siyempre, nahibal-an nimo nga ang mga sistema sa cryptocurrency gimugna base sa mga blockchain, nga gidisenyo aron ilisan ang ordinaryong papel nga kwarta. Ang papel nga kwarta gitawag usab nga fiat (gikan sa Fiat Money).
Gisiguro sa Blockchain ang pagtipig ug pagkadili-mabag-o sa mga transaksyon nga natala sa mga bloke, mao nga kini magamit sa paghimo sa mga sistema sa cryptocurrency. Naglangkob kini sa tibuuk nga kasaysayan sa pagbalhin sa mga pondo sa crypto tali sa lainlaing mga tiggamit (mga account), ug ang bisan unsang operasyon mahimong masubay.

Bisan kung ang mga transaksyon sa sulod sa mga sistema sa cryptocurrency mahimo’g dili mailhan, ang pag-withdraw sa cryptocurrency ug pagbaylo niini alang sa fiat nga salapi kasagarang moresulta sa pagpadayag sa identidad sa tag-iya sa asset sa cryptocurrency.

Ang gitawag nga mga smart contract, nga software nga nagdagan sa Ethereum network, nagtugot kanimo sa pag-automate sa proseso sa pagtapos sa mga transaksyon ug pagmonitor sa ilang pagpatuman. Kini labi ka epektibo kung ang pagbayad alang sa transaksyon gihimo gamit ang Ether cryptocurrency.

Ang Ethereum blockchain ug Ethereum smart nga mga kontrata nga gisulat sa Solidity programming language mahimong gamiton, pananglitan, sa mosunod nga mga dapit:

  • alternatibo sa notarization sa mga dokumento;
  • pagtipig sa usa ka rehistro sa mga butang sa real estate ug impormasyon bahin sa mga transaksyon sa mga butang sa real estate;
  • pagtipig sa impormasyon sa copyright sa intellectual property (mga libro, mga hulagway, musikal nga mga buhat, ug uban pa);
  • paghimo ug independenteng sistema sa pagboto;
  • pinansyal ug banking;
  • logistics sa internasyonal nga sukod, pagsubay sa paglihok sa mga butang;
  • pagtipig sa personal nga datos isip analogue sa sistema sa kard sa identidad;
  • luwas nga mga transaksyon sa komersyal nga natad;
  • pagtipig sa mga resulta sa medikal nga eksaminasyon, ingon man ang kasaysayan sa gireseta nga mga pamaagi

Mga problema sa blockchain

Apan, siyempre, dili ang tanan ingon ka yano sama sa daw kini!

Adunay mga problema sa pag-verify sa datos sa dili pa kini idugang sa blockchain (pananglitan, peke ba sila?), mga problema sa seguridad sa sistema ug software sa aplikasyon nga gigamit sa pagtrabaho sa blockchain, mga problema sa posibilidad sa paggamit sa mga pamaagi sa social engineering aron mangawat og access sa mga pitaka sa cryptocurrency, ug uban pa .P.

Pag-usab, kung wala kita maghisgot bahin sa usa ka publiko nga blockchain, ang mga node niini nagkatibulaag sa tibuuk kalibutan, apan bahin sa usa ka pribado nga blockchain nga iya sa usa ka tawo o organisasyon, nan ang lebel sa pagsalig dinhi dili labi ka taas sa lebel sa pagsalig. sa niini nga tawo o niini nga organisasyon.

Kinahanglan usab nga tagdon nga ang datos nga natala sa blockchain mahimong magamit sa tanan. Niini nga pagsabut, ang blockchain (ilabi na ang publiko) dili angay alang sa pagtipig sa kompidensyal nga kasayuran. Bisan pa, ang kamatuoran nga ang impormasyon sa blockchain dili mausab makatabang sa pagpugong o pag-imbestigar sa nagkalain-laing matang sa pagpanglimbong nga mga kalihokan.

Ang mga desentralisadong aplikasyon sa Ethereum mahimong kombenyente kung bayran nimo ang ilang paggamit sa cryptocurrency. Ang daghang mga tawo nga nanag-iya sa cryptocurrency o andam nga mopalit niini, mahimong mas popular ang mga DApp ug mga smart nga kontrata.

Ang kasagarang mga problema sa blockchain nga nakababag sa praktikal nga paggamit niini naglakip sa limitado nga katulin diin ang mga bag-ong bloke mahimong idugang ug ang medyo taas nga gasto sa mga transaksyon. Apan ang teknolohiya sa kini nga lugar aktibo nga nag-uswag, ug adunay mga paglaum nga ang mga problema sa teknikal masulbad sa paglabay sa panahon.

Ang laing problema mao nga ang mga smart nga kontrata sa Ethereum blockchain naglihok sa usa ka hilit nga palibot sa mga virtual nga makina, ug walay access sa tinuod nga kalibutan nga datos. Sa partikular, ang programa sa intelihente nga kontrata dili mismo makabasa sa datos gikan sa mga site o bisan unsang pisikal nga aparato (mga sensor, kontak, ug uban pa), ug dili usab maka-output sa datos sa bisan unsang mga eksternal nga aparato. Atong hisgutan kini nga problema ug mga paagi aron masulbad kini sa usa ka leksyon nga gipahinungod sa gitawag nga Oracles - mga tigpataliwala sa impormasyon sa mga smart nga kontrata.

Adunay usab legal nga mga pagdili. Sa pipila ka mga nasud, pananglitan, gidili ang paggamit sa cryptocurrency ingon usa ka paagi sa pagbayad, apan mahimo nimo kini maangkon ingon usa ka matang sa digital asset, sama sa mga securities. Ang ingon nga mga kabtangan mahimong mapalit ug ibaligya sa pagbinayloay. Sa bisan unsa nga kaso, sa paghimo sa usa ka proyekto nga nagtrabaho sa mga cryptocurrencies, kinahanglan nimo nga pamilyar ang imong kaugalingon sa lehislasyon sa nasud sa ilalum sa kansang hurisdiksyon nahulog ang imong proyekto.

Giunsa naporma ang usa ka kadena nga blockchain

Sama sa giingon na namo, ang blockchain usa ka yano nga kadena sa mga bloke sa datos. Una, ang unang bloke niini nga kadena naporma, unya ang ikaduha idugang niini, ug uban pa. Ang datos sa transaksyon gituohan nga gitipigan sa mga bloke, ug gidugang sa pinakabag-o nga bloke.

Sa Fig. 1.1 among gipakita ang pinakasimple nga bersyon sa usa ka han-ay sa mga bloke, diin ang unang bloke nagtumong sa sunod.

Ang libro nga "Paghimo sa Solidity smart nga mga kontrata alang sa Ethereum blockchain. Praktikal nga giya"
bugas. 1.1. Yano nga han-ay sa mga bloke

Uban niini nga kapilian, bisan pa niana, kini sayon ​​​​kaayo nga usbon ang mga sulod sa bisan unsang block sa kadena, tungod kay ang mga bloke walay bisan unsang impormasyon aron mapanalipdan batok sa mga pagbag-o. Sa pagkonsiderar nga ang blockchain gituyo nga gamiton sa mga tawo ug mga kompanya nga wala’y pagsalig, makahinapos kita nga kini nga pamaagi sa pagtipig sa datos dili angay alang sa blockchain.

Magsugod kita sa pagpanalipod sa mga bloke gikan sa peke. Sa unang yugto, atong sulayan ang pagpanalipod sa matag bloke gamit ang checksum (Fig. 1.2).

Ang libro nga "Paghimo sa Solidity smart nga mga kontrata alang sa Ethereum blockchain. Praktikal nga giya"
bugas. 1.2. Pagdugang og proteksyon alang niini nga mga bloke nga adunay checksum

Karon ang usa ka tig-atake dili na makausab sa block, tungod kay kini naglangkob sa checksum sa block data. Ang pagsusi sa checksum magpakita nga ang datos nausab.

Aron makalkulo ang checksum, mahimo nimong gamiton ang usa sa mga hashing function sama sa MD-5, SHA-1, SHA-256, ug uban pa. Ang hash functions nagkuwenta sa usa ka bili (pananglitan, usa ka text string nga kanunay ang gitas-on) pinaagi sa paghimo sa dili mabalik nga mga operasyon sa usa ka block sa data. Ang mga operasyon nagdepende sa matang sa hash function.

Bisan kung ang mga sulud sa data block mausab gamay, ang hash value usab mausab. Pinaagi sa pag-analisar sa hash function value, imposible nga matukod pag-usab ang data block diin kini gikalkulo.

Igo na ba ang maong panalipod? Ikasubo nga dili.

Niini nga laraw, ang checksum (hash function) nanalipod lamang sa indibidwal nga mga bloke, apan dili ang tibuok blockchain. Nahibal-an ang algorithm sa pagkalkula sa hash function, ang usa ka tig-atake dali nga makapuli sa mga sulud sa usa ka block. Usab, walay makapugong kaniya sa pagtangtang sa mga bloke gikan sa kadena o pagdugang og mga bag-o.

Aron mapanalipdan ang tibuok nga kadena sa kinatibuk-an, mahimo ka usab nga magtipig sa matag bloke, uban sa datos, usa ka hash sa datos gikan sa miaging block (Fig. 1.3).

Ang libro nga "Paghimo sa Solidity smart nga mga kontrata alang sa Ethereum blockchain. Praktikal nga giya"
bugas. 1.3. Idugang ang hash sa miaging block sa data block

Sa kini nga laraw, aron mabag-o ang usa ka bloke, kinahanglan nimo nga kalkulahon pag-usab ang mga gimbuhaton sa hash sa tanan nga sunod nga mga bloke. Morag, unsa ang problema?

Sa tinuud nga mga blockchain, ang mga artipisyal nga kalisud gihimo usab alang sa pagdugang bag-ong mga bloke - gigamit ang mga algorithm nga nanginahanglan daghang mga kapanguhaan sa pag-compute. Gikonsiderar nga aron makahimo mga pagbag-o sa usa ka bloke, kinahanglan nimo nga kalkulahon pag-usab dili lamang kini nga usa ka bloke, apan ang tanan nga mga sunod-sunod, kini labi ka lisud nga buhaton.

Atong hinumdoman usab nga ang blockchain data gitipigan (duplicated) sa daghang network nodes, i.e. Gigamit ang desentralisado nga pagtipig. Ug kini naghimo nga labi ka lisud nga peke ang usa ka bloke, tungod kay Ang mga pagbag-o kinahanglan himuon sa tanan nga mga node sa network.

Tungod kay ang mga bloke nagtipig og impormasyon mahitungod sa miaging block, posible nga susihon ang mga sulod sa tanang mga bloke sa kadena.

Ethereum blockchain

Ang Ethereum blockchain usa ka plataporma diin ang mga gipang-apod-apod nga DApps mahimo nga mahimo. Dili sama sa ubang mga plataporma, ang Ethereum nagtugot sa paggamit sa gitawag nga smart contracts (smart contracts), nga gisulat sa Solidity programming language.

Kini nga plataporma gimugna niadtong 2013 ni Vitalik Buterin, founder sa Bitcoin Magazine, ug gilusad niadtong 2015. Ang tanan nga among tun-an o buhaton sa among kurso sa pagbansay espesipikong nalangkit sa Ethereum blockchain ug Solidity smart nga mga kontrata.

Pagmina o kung giunsa paghimo ang mga bloke

Ang pagmina kay usa ka komplikado ug resource-intensive nga proseso sa pagdugang og bag-ong mga block sa blockchain chain, ug dili sa tanan nga "cryptocurrency mining." Gisiguro sa pagmina ang pagpaandar sa blockchain, tungod kay kini nga proseso ang responsable sa pagdugang sa mga transaksyon sa Ethereum blockchain.

Ang mga tawo ug mga organisasyon nga nalambigit sa pagdugang mga bloke gitawag nga mga minero.
Ang software nga nagdagan sa mga minero node naningkamot sa pagpangita sa usa ka hashing parameter nga gitawag og Nonce alang sa katapusang block aron makakuha og usa ka piho nga hash value nga gitino sa network. Ang Ethash hashing algorithm nga gigamit sa Ethereum nagtugot kanimo sa pagkuha sa Nonce value lamang pinaagi sa sequential search.

Kung makit-an sa minero nga node ang husto nga kantidad sa Nonce, nan kini ang gitawag nga pruweba sa trabaho (PoW, Proof-of-work). Sa kini nga kaso, kung ang usa ka bloke idugang sa Ethereum network, ang minero makadawat usa ka piho nga ganti sa currency sa network - Ether. Sa panahon sa pagsulat, ang ganti mao ang 5 Ether, apan kini makunhuran sa paglabay sa panahon.

Busa, ang mga minero sa Ethereum nagsiguro sa operasyon sa network pinaagi sa pagdugang sa mga bloke, ug makadawat sa kwarta nga cryptocurrency alang niini. Adunay daghang impormasyon sa internet mahitungod sa mga minero ug pagmina, apan mag-focus kami sa paghimo sa mga kontrata sa Solidity ug DApps sa Ethereum network.

Sumaryo sa leksyon

Sa una nga leksyon, nahibal-an nimo ang blockchain ug nahibal-an nga kini usa ka espesyal nga gilangkuban nga han-ay sa mga bloke. Ang mga sulod sa natala na nga mga bloke dili mausab, tungod kay kini nagkinahanglan sa pagkalkula pag-usab sa tanan nga mga sunod-sunod nga mga bloke sa daghang mga network node, nga nagkinahanglan og daghang mga kapanguhaan ug oras.

Ang Blockchain mahimong gamiton sa pagtipig sa mga resulta sa mga transaksyon. Ang nag-unang katuyoan niini mao ang pag-organisar sa luwas nga mga transaksyon tali sa mga partido (mga tawo ug organisasyon) nga wala’y pagsalig. Nahibal-an nimo kung diin ang piho nga mga lugar sa negosyo ug kung asa nga mga lugar ang Ethereum blockchain ug Solidity smart nga mga kontrata mahimong magamit. Kini ang sektor sa bangko, pagrehistro sa mga katungod sa kabtangan, mga dokumento, ug uban pa.

Nahibal-an usab nimo nga ang lainlaing mga problema mahimong motumaw kung mogamit blockchain. Kini ang mga problema sa pag-verify sa kasayuran nga gidugang sa blockchain, ang katulin sa blockchain, ang gasto sa mga transaksyon, ang problema sa pagbinayloay sa datos tali sa mga intelihente nga kontrata ug ang tinuod nga kalibutan, ingon man ang mga potensyal nga pag-atake sa mga tig-atake nga nagtumong sa pagpangawat sa mga pondo sa cryptocurrency gikan sa mga account sa gumagamit. .

Kami usab sa makadiyot naghisgot bahin sa pagmina isip proseso sa pagdugang og bag-ong mga bloke sa blockchain. Ang pagmina gikinahanglan aron makompleto ang mga transaksyon. Kadtong nalambigit sa pagmina nagsiguro sa pag-obra sa blockchain ug makadawat og ganti sa cryptocurrency alang niini.

Leksyon 2. Pag-andam sa usa ka working environment sa Ubuntu ug Debian OSPagpili sa usa ka operating system
Pag-instalar sa gikinahanglan nga mga utilities
Pag-instalar sa Geth ug Swarm sa Ubuntu
Pag-instalar sa Geth ug Swarm sa Debian
Preliminary nga pagpangandam
Pag-download sa Go distribution
Pag-set sa mga variable sa palibot
Pagsusi sa bersyon sa Go
Pag-instalar sa Geth ug Swarm
Paghimo usa ka pribado nga blockchain
Pag-andam sa genesis.json file
Paghimo og direktoryo alang sa trabaho
Paghimo og account
Pagsugod sa pagsugod sa node
Mga Opsyon sa Paglansad sa Node
Sumpaysumpaya ang among node
Pagdumala sa pagmina ug pagsusi sa balanse
Gipalong ang Geth console
Sumaryo sa leksyon

Leksyon 3. Pag-andam sa palibot sa pagtrabaho sa Raspberry Pi 3Pag-andam sa Raspberry Pi 3 alang sa trabaho
Pag-instalar sa Rasberian
Pag-instalar sa mga update
Pag-enable sa SSH Access
Pagbutang ug Static IP Address
Pag-instalar sa gikinahanglan nga mga utilities
Pag-instalar sa Go
Pag-download sa Go distribution
Pag-set sa mga variable sa palibot
Pagsusi sa bersyon sa Go
Pag-instalar sa Geth ug Swarm
Paghimo usa ka pribado nga blockchain
Pagsusi sa imong account ug balanse
Sumaryo sa leksyon

Leksyon 4. Mga account ug pagbalhin sa mga pundo tali sa mga accountTan-awa ug idugang ang mga account
Tan-awa ang usa ka lista sa mga account
Pagdugang og account
geth nga mga kapilian sa mando sa account
Mga password sa account
Cryptocurrency sa Ethereum
Mga Yunit sa Salapi sa Ethereum
Atong determinahon ang kasamtangan nga balanse sa atong mga account
Pagbalhin sa mga pondo gikan sa usa ka account ngadto sa lain
eth.sendTransaction nga pamaagi
Tan-awa ang kahimtang sa transaksyon
Resibo sa transaksyon
Sumaryo sa leksyon

Leksyon 5. Pagmantala sa imong unang kontrataMga kontrata sa Smart sa Ethereum
Smart Pagpatuman sa Kontrata
Ethereum Virtual Machine
Integrated development environment Remix Solidity IDE
Nagdagan nga kompilasyon
Pagtawag sa Mga Katungdanan sa Kontrata
Pagmantala sa usa ka kontrata sa usa ka pribadong network
Pagkuha sa kahulugan sa ABI ug ang binary code sa kontrata
Pagmantala sa kontrata
Pagsusi sa kahimtang sa transaksyon sa pagmantala sa kontrata
Pagtawag sa Mga Katungdanan sa Kontrata
Batch compiler solc
Pag-instalar sa solc sa Ubuntu
Pag-instalar sa solc sa Debian
Pag-compile sa kontrata sa HelloSol
Pagmantala sa kontrata
Pag-instalar sa solc sa Rasberian
Sumaryo sa leksyon

Leksyon 6. Mga kontrata sa Smart ug Node.jsPag-instalar sa Node.js
Pag-instalar sa Ubuntu
Pag-instalar sa Debian
Pag-instalar ug pagpadagan sa Ganache-cli
Pag-instalar sa Web3
Pag-instalar sa solc
Pag-instalar sa Node.js sa Rasberian
Script aron makakuha usa ka lista sa mga account sa console
Script alang sa pagmantala sa usa ka smart nga kontrata
Ilunsad ug kuhaa ang mga parameter
Pagkuha mga kapilian sa paglansad
Kompilasyon sa Kontrata
Pag-unblock sa imong account
Nag-load sa ABI ug binary code sa kontrata
Pagbanabana sa gikinahanglan nga kantidad sa gas
Paghimo usa ka butang ug pagsugod sa pagmantala sa usa ka kontrata
Pagpadagan sa script sa pagmantala sa kontrata
Pagtawag sa mga function sa smart contract
Posible ba nga i-update ang usa ka gipatik nga smart contract?
Nagtrabaho sa Web3 nga bersyon 1.0.x
Pagkuha og lista sa mga account
Pagmantala sa kontrata
Pagtawag sa Mga Katungdanan sa Kontrata
Pagbalhin sa mga pondo gikan sa usa ka account ngadto sa lain
Pagbalhin sa mga pondo sa kontrata nga account
Pag-update sa HelloSol smart contract
Paghimo og script aron makita ang balanse sa imong account
Pagdugang og tawag sa getBalance function sa call_contract_get_promise.js script
Nag-top up kami sa smart contract account
Sumaryo sa leksyon

Leksyon 7. Pasiuna sa TrufflePag-instalar sa Truffle
Paghimo og HelloSol nga proyekto
Paghimo sa Direktoryo sa Proyekto ug mga File
Direktoryo sa mga kontrata
Mga paglalin sa katalogo
Pagsulay sa direktoryo
truffle-config.js nga file
Pag-compile sa kontrata sa HelloSol
Pagsugod sa pagmantala sa usa ka kontrata
Pagtawag sa HelloSol Contract Functions sa usa ka Truffle Prompt
Ang pagtawag sa HelloSol contract function gikan sa JavaScript script nga nagpadagan sa Node.js
Pag-instalar sa truffle-contract module
Ang pagtawag sa mga function sa kontrata getValue ug getString
Ang pagtawag sa mga function sa kontrata setValue ug setString
Pagbag-o sa kontrata ug pagmantala pag-usab
Nagtrabaho sa Web3 nga bersyon 1.0.x
Paghimo og mga kausaban sa HelloSol smart contract
Mga script alang sa pagtawag sa mga pamaagi sa kontrata
Pagsulay sa Truffle
Pagsulay sa kalig-on
Pagsulay sa JavaScript
Sumaryo sa leksyon

Leksyon 8. Solidity Data TypesKontrata alang sa pagkat-on sa mga tipo sa datos
Mga tipo sa datos sa Boolean
Unsigned integers ug signed integers
Gitakdang mga numero sa punto
Address
Mga baryable sa komplikadong mga matang
Fixed Size Arrays
Dinamikong mga han-ay
Enumerasyon
Mga istruktura
Pagmapa sa mga diksyonaryo
Sumaryo sa leksyon

Leksyon 9. Paglalin sa mga kontrata sa pribadong network ug sa Rinkeby networkPag-publish og kontrata gikan sa Truffle ngadto sa pribadong Geth network
Pag-andam sa usa ka pribadong network node
Pag-andam og kontrata alang sa trabaho
Pag-compile ug pagbalhin sa usa ka kontrata sa Truffle network
Pagsugod sa lokal nga network migration geth
Pagkuha og mga artifact sa Truffle
Pagmantala sa usa ka kontrata gikan sa Truffle ngadto sa Rinkeby testnet
Pag-andam sa usa ka Geth node aron magtrabaho kauban si Rinkeby
Pag-synchronize sa node
Pagdugang og mga account
Pag-topping sa imong Rinkeby account gamit ang ether
Pagsugod sa paglalin sa kontrata sa network sa Rinkeby
Pagtan-aw sa impormasyon sa kontrata sa Rinkeby network
Truffle Console para sa Rinkeby Network
Sayon nga paagi sa pagtawag sa mga gimbuhaton sa kontrata
Pagtawag sa mga pamaagi sa kontrata gamit ang Node.js
Pagbalhin sa mga pondo tali sa mga account sa Truffle console para sa Rinkby
Sumaryo sa leksyon

Leksyon 10. Ethereum Swarm Decentralized Data StorageGiunsa pagtrabaho ang Ethereum Swarm?
Pag-instalar ug paglansad sa Swarm
Mga operasyon nga adunay mga file ug direktoryo
Pag-upload og File sa Ethereum Swarm
Pagbasa sa usa ka file gikan sa Ethereum Swarm
Tan-awa ang manifest sa usa ka gi-upload nga file
Nag-load sa mga direktoryo nga adunay mga subdirektoryo
Pagbasa sa usa ka file gikan sa na-download nga direktoryo
Paggamit sa usa ka publiko nga Swarm gateway
Pag-access sa Swarm gikan sa mga script sa Node.js
Perl Net::Ethereum::Swarm module
Pag-instalar sa Net :: Ethereum :: Swarm module
Pagsulat ug pagbasa sa datos
Sumaryo sa leksyon

Leksyon 11. Web3.py framework alang sa pagtrabaho uban sa Ethereum sa PythonPag-instalar sa Web3.py
Pag-update ug pag-instalar sa gikinahanglan nga mga pakete
Pag-instalar sa easysolc module
Pagpatik ug kontrata gamit ang Web3.py
Kompilasyon sa Kontrata
Pagkonektar sa usa ka provider
Ipatuman ang publikasyon sa kontrata
Pag-save sa address sa kontrata ug abi sa usa ka file
Pagpadagan sa script sa pagmantala sa kontrata
Mga Pamaagi sa Kontrata sa Pagtawag
Pagbasa sa adres ug abi sa usa ka kontrata gikan sa JSON file
Pagkonektar sa usa ka provider
Paghimo og Kontrata nga Bagay
Mga Pamaagi sa Kontrata sa Pagtawag
Truffle ug Web3.py
Sumaryo sa leksyon

Leksyon 12. Mga OrakuloMakasalig ba ang usa ka intelihente nga kontrata sa datos gikan sa gawas sa kalibutan?
Oracles isip mga tigpataliwala sa impormasyon sa blockchain
Gigikanan sa datos
Kodigo nga magrepresentar sa datos gikan sa tinubdan
Oracle alang sa pagrekord sa exchange rate sa blockchain
Kontrata sa USDRateOracle
Pag-update sa exchange rate sa usa ka smart nga kontrata
Paggamit sa usa ka Web Socket Provider
Naghulat alang sa RateUpdate nga panghitabo
Pagdumala sa RateUpdate nga panghitabo
Pagsugod sa usa ka pag-update sa datos sa usa ka smart nga kontrata
Sumaryo sa leksyon

Source: www.habr.com

Idugang sa usa ka comment