Paano isulat ang iyong unang Kontrata sa Smart?



Alamin ang mga pangunahing kaalaman sa Pag-unlad ng Smart Kontrata at simulang isulat ang iyong unang matalinong kontrata. Malalaman mo rin kung paano subukan ang matalinong kontrata.

Nasa , nalaman mo ang tungkol sa kung ano ang mga Smart Contract, iba't ibang Mga Wika ng Kontrata ng Kontrata at kung paano mag-set up ng Kapaligiran sa Pag-unlad ng Kontrata ng Smart. Sa artikulong ito, matututunan mo kung paano bumuo ng iyong unang matalinong kontrata. Gagamitin koAng Remix IDE para sa pagbuo at pagsubok ng isang matalinong kontrata.

Sa ibaba ang mga paksa ay sakop sa tutorial ng pag-unlad na matalinong kontrata na ito:





Pagbuo ng iyong Smart Contract

Ang isang simpleng kontrata sa order ng pagbili ng order ay mabubuo bilang isang bahagi ng serye ng blog na ito. Habang umuusad ang seryeng ito at habang ipinakilala ang mga bagong konsepto ng wika ng pagiging solidong programa, ang pagbili ng order ng smart order ay magbabago at magpapabuti.



Istraktura ng Smart Kontrata

Ang solidity smart contract, sa kakanyahan, ay isang koleksyon ng mga sumusunod

  • data - na nagpapanatili ng kasalukuyang estado ng kontrata
  • pagpapaandar - na naglalapat ng lohika upang ilipat ang estado ng kontrata

Sinusundan ng mga solidong matalinong kontrata ang isang pamantayan ng istraktura. Ang anumang matalinong kontrata ay nagsisimula sa sumusunod na pahayag



Direktiba ng Pragma

Ang keyword na 'pragma' ay maaaring magamit upang paganahin ang ilang mga tampok ng compiler o tseke. Tinutukoy ng pahayag sa ibaba na ang pinagmulang file (matalinong kontrata) ay hindi magsasama sa tagatala nang mas maaga sa 0.4.0 at bersyon ng tagatala pagkatapos ng 0.6.0. Tinitiyak ng deklarasyong ito na walang hindi inaasahang pag-uugali na ipinakilala kapag ipinakilala ang isang bagong bersyon ng tagatala.

pragma solidity> = 0.4.0<=0.6.0 

Pagdeklara ng kontrata

Ang kontrata ay idineklara gamit ang keyword na 'kontrata'. Ito ay nagdedeklara ng isang walang laman na kontrata na kinilala sa pamamagitan ng pangalang 'PurchaseOrder'.

kontrata PurchaseOrder {}

Pag-iimbak ng nauugnay na data sa kontrata

Ang bawat kontrata o sa mga generic na termino bawat programa ay maaaring mangailangan upang mag-imbak ng ilang data. Ang pagdaragdag ng data sa programa ay nagbibigay dito ng antas ng kakayahang umangkop. Ang paglipat mula sa mga hard-coded na halaga sa programa patungo sa mga ibinigay na halaga ng gumagamit ay isang mahalagang tampok. Pinapayagan ka ng mga variable na iimbak ang data, lagyan ng label ang data, kunin ang data at manipulahin ang data.

Pag-unlad ng Smart Kontrata: Ipinakikilala ang Mga variable

Sa solidity, ang mga variable ay may dalawang uri

  1. Uri ng halaga: Ang uri ng mga variable na ito ay ipinapasa ng halaga, ibig sabihin, lagi silang nakopya kapag ginamit ito bilang mga argumento sa pag-andar o sa mga takdang-aralin. Halimbawa: mga integer, address ng boolean, atbp.
  2. Mga Uri ng Sanggunian: Ang uri ng variable na ito ay may mga kumplikadong uri at ipinapasa sa pamamagitan ng sanggunian, ang mga variable na ito ay hindi umaangkop sa 256 bit at kailangang pamahalaan nang maingat habang ang pagkopya sa kanila ay mahal.

Pagdaragdag ng data sa Smart Kontrata

Magdagdag tayo ng ilang variable ng data sa kontrata. Para sa bawat order ng pagbili, kailangang mayroong ilang dami ng produktong nauugnay dito. Magdagdag tayo ng isang variable na produkto_quantity na magiging ng uri ng data na integer o numero.

pagkakaiba sa pagitan ng xml at html

Ang variable na ipinakikilala namin ngayon ay isang unsigned integer at kinakatawan ng uint256, 256 dito ay nangangahulugan ng 256 bits storage.

  • U - hindi pinirmahan (nangangahulugang ang ganitong uri ay maaari lamang kumatawan sa mga positibong integer, hindi positibo at negatibong mga integer)
  • INT - integer
  • 256 - 256 na piraso ng laki
  • ang minimum na halagang uint256 ay maaaring italaga ay 0
  • maximum na halaga na maaaring italaga ang uint256 ay 2 ^ 256-1 [isang napakalaking numero]

Ang dami ng produkto ay isang positibong halaga lamang at ang kasalukuyang palagay ay tutugunan namin ang isang napakalaking halaga para sa dami ng produkto.

Ang variable na 'product_quantity' na idineklara ay bahagi ng estado ng kontrata at samakatuwid ay nagpatuloy o nakaimbak sa espasyo ng kontrata. Sa kasalukuyan, ang variable na ito ay magiging default sa halagang 0.

kontrata PurchaseOrder {uint256 product_quantity}

Pagtukoy sa tagapagbuo

Ang tagapagbuo ay tinatawag na kapag ang kontrata ay naka-deploy. Pinasimulan ng tagapagbuo ang kontrata na may ilang mga halaga. Sa kasalukuyang senaryo, ang dami ng produkto ay nakatakda sa 100, kapag ang kontrata ay ipinakalat. Ang isang parameterized na tagapagbuo ay maaari ring likhain sa pamamagitan ng pagpasa ng isang variable at pagsisimula ng product_quantity gamit ang naipasa na halaga.

Ang pangunahing punto na mapapansin dito ay ang access modifier na 'pampubliko' na nauugnay sa taga-buo. Tumutukoy ang pampublikong keyword na maaaring ma-access ng sinuman ang pagpapaandar na ito, hindi ito isang pinaghihigpitang pagpapaandar.

tagapagbuo () publiko {product_quantity = 100}

Pagdaragdag ng mga pag-andar

Magdagdag tayo ngayon ng pag-andar upang gawing interactive ang aming programa. Ang mga pagpapaandar ay kinokontrol na mga kakayahan na maaaring maidagdag sa isang programa. Ang anumang pag-andar ay naunahan ng pagpapaandar ng keyword. Pangkalahatang ganito ang hitsura ng deklarasyon ng pagpapaandar' pagpapaandar '.

Kumuha ng pagpapaandar

Ang isa sa mga pinaka-karaniwang kinakailangan, para sa alinman sa programa, ay basahin ang nakaimbak na halaga. Sa sumusunod na kontrata, kakailanganin naming basahin ang halagang 'product_quantity'. Upang maibigay ang kakayahang ito, idinagdag ang isang function na basahin o isang pagpapaandar na makakuha. Sa pagpapaandar na ito hindi kami gumagawa ng anumang pagmamanipula sa nakaimbak na halaga, kinukuha lang namin ang nakaimbak na halaga.

mga tutorial sa visual studio para sa mga nagsisimula

Iwaksi natin ngayon ang ating pagpapaandar (get_quantity)

Hindi. Keyword Halaga
isa get_quantity (){walang naipasa na mga parameter}
2 pampubliko{maaaring ma-access ng sinuman ang pagpapaandar}
3 tingnan{nangangahulugang binabasa lamang ng pagpapaandar ang estado ng kontrata, hindi binabago ang estado ng kontrata, samakatuwid tingnan ang}
4 nagbabalik ng isang variable ng uri uint256 {tinukoy kung ano ang ibinalik ng pagpapaandar}
function get_quantity () pagbabalik ng view ng publiko (uint256) {return product_quantity}

Mga pagpapaandar ng setter

Ang pagbabasa ng data ay kinakailangan at nagawa namin ito sa huling seksyon, ngunit ang karamihan sa senaryo ay nangangailangan din ng kakayahang magsulat / mag-update din ng data. Ang partikular na kakayahan ay ibinibigay sa pamamagitan ng pagdaragdag ng isang setter function. Ang pagpapaandar na ito ay tumatagal ng isang halaga mula sa gumagamit sa anyo ng isang input parameter. Gamit ang halagang ibinigay sa pagpapaandar ng gumagamit ang halaga ng variable na 'product_quantity' ay nakasulat sa / na-update.

Tanggalin natin ngayon ang itinakdang pagpapaandar natin (update_quantity)

Pagdaragdag ng isang pagpapaandar upang ma-update ang halaga ng dami ng produkto

Hindi. Keyword Halaga
isa update_quantity (halagang uint256){ang halaga ng parameter ng uri uint256 ay naipasa}
2 pampubliko{maaaring ma-access ng sinuman ang pagpapaandar}
3 Hindi kinakailangan tulad ng pag-update ng estado ng mga pagpapaandar
4 nagbabalik ng isang variable ng uri uint256 (tinukoy kung ano ang ibinalik ng pagpapaandar)
pag-andar update_quantity (halaga uint256) pampubliko {product_quantity = product_quantity + halaga}

Pinagsama ang lahat ng ito, ganito ang hitsura ng pangkalahatang kontrata.

pragma solidity> = 0.4.0<=0.6.0 contract PurchaseOrder{ uint256 product_quantity //state variable /*Called with the contract is deployed and initializes the value*/ constructor() public{ product_quantity = 100 } // Get Function function get_quantity() public view returns(uint256){ return product_quantity } // Set Function function update_quantity(uint256 value) public { product_quantity = product_quantity + value } } 

Pag-deploy ng Smart Kontrata

Oras upang subukan ang matalinong kontrata. Upang masubukan ang matalinong kontrata na ito, gagamitin namin Remix Online IDE .

Ang Remix ay isang online na palaruan para sa matalinong kontrata ng Ethereum . Ang Remix ay ganap na nakabase sa browser. Nagbibigay sa iyo ang Remix ng isang online IDE (Integrated development environment) kung saan maaari mong isulat ang iyong mga smart na kontrata. Nagbibigay sa iyo ang Remix ng isang kakayahan sa online na solidity compiler. Ang matalinong kontrata sa Remix IDE ay maaaring maiipon gamit ang isang tukoy na bersyon ng tagatala ng walang putol.

Nagbibigay din ang Remix ng kakayahan upang mabilis na masubukan ang matalinong kontrata.

Nagbibigay ang Remix ng isang kumpletong toolet upang simulan ang pagbuo ng matalinong kontrata at pagsubok ng unit ang matalinong kontrata, nang hindi nagsasagawa ng anumang pag-install sa iyong lokal na makina. Napakalaking paggamit nito para sa pagsisimula nang may pagiging matatag dahil kailangan lamang ng mga tagabuo na tumuon sa pagsusulat ng isang matalinong kontrata, sa halip mag-alala tungkol sa imprastraktura.

Sa Remix IDE ang kailangan mo lang ay isang browser at isang koneksyon sa internet upang makapagsimula sa pag-unlad ng matalinong kontrata. Mabilis na pag-unlad, pagsubok, at pagpapatunay ng isang ideya para sa isang matalinong kontrata.

Kamakailan-lamang na na-upgrade ng Remix ang kanilang UI.

Remix-UI-Smart-Contracts-Edureka

Mag-click sa icon ng file tulad ng naka-highlight sa imahe sa itaas, magbubukas ang file explorer.

  1. Ang pag-click sa icon na plus, maaaring lumikha ng isang bagong file, pangalanan ang file na PurchaseOrder.sol
  2. Lilikha ito ng walang laman na file na pinangalanang PurchaseOrder.sol, i-click at buksan ang file na ito.
  3. Kopyahin nating i-paste ang buong kontrata sa PurchaseOrder.sol.
  4. Mag-click sa pangalawang icon, sa kaliwang menu sa ibaba lamang ng icon ng file, dapat lumitaw ang pagpipilian ng solidity compiler.
  5. Sa ilalim ng label ng Compiler, piliin ang bersyon ng tagatala. Ang kasalukuyang napiling bersyon ay 0.5.8.
  6. I-post ang pagpipilian ng bersyon ng tagatala, mag-click sa 'Compile PurchaseOrder.sol'. Susubukan nito ang matalinong kontrata.

7. Kapag matagumpay na naipon ang matalinong kontrata, mag-click sa pindutang 'Mga Detalye ng Compilation' at ang mga sumusunod na detalye ay dapat na lumabas. Pag-ipon ng pag-post, dalawang pangunahing impormasyon ang ginawang magagamit

    • ABI - Application binary interface. Ito ay isang json file na tumutukoy sa lahat ng mga pamamaraan na nakalantad sa matalinong kontrata kasama ang meta data ng mga pamamaraan. Higit pa dito tatalakayin sa mga susunod na blog.
    • Bytecode- Ang code ng pagpapatakbo ng EVM (Ethereum virtual machine), ang lohika ng kontrata ng Smart ay na-convert sa bytecode sa pagtitipon.

8. Upang masubukan ang matalinong kontrata, kailangang ma-deploy ang matalinong kontrata. Upang mai-deploy ang matalinong pag-click sa kontrata sa susunod na icon sa kaliwang menu, sa ibaba ng icon ng pag-ipon. Lilitaw ang sumusunod na screen. Upang masubukan ang matalinong kontrata, kailangang ma-deploy ang matalinong kontrata. Upang mai-deploy ang matalinong pag-click sa kontrata sa susunod na icon sa kaliwang menu, sa ibaba ng icon ng pag-ipon. Lilitaw ang sumusunod na screen.

Pagpipilian sa Pag-deploy

Ang screen ng paglawak, nagbibigay ng isang pares ng mga pagpipilian, tingnan natin sila isa-isa.

  • Kapaligiran: Maaari itong maiisip ng isang pagpipilian na katulad ng pagpili upang bumili ng isang laptop mula sa alinman sa Amazon, Flipkart, Newegg (lahat ng mga ito ay online retailer) gumawa ka ng pagpipilian kung saan mo nais bumili, batay sa iyong kinakailangan. Katulad nito, sa kaso ng Remix, mayroon kaming pagpipilian kung saan i-deploy ang matalinong kontrata at subukan ang matalinong kontrata. Ang dropdown sa tabi ng label ng kapaligiran ay nagbibigay ng tatlong mga pagpipilian
    • Ang JavaScript VM - isang lokal na Ethereum solong node ay isinara sa memorya ng browser at nagbibigay ng 5 prefunded na mga account sa pagsubok na maaaring magamit para sa transaksyon (pag-deploy, pag-andar ng mga invoking)
    • Injected Web3 Provide - Nakasalalay ito sa MetaMask. Ang Metamask ay tulad ng isang broker o middleman, na nagpapahintulot sa mga web application na makipag-ugnay sa matalinong kontrata. Nagbibigay ang Metamask ng kakayahan upang pamahalaan ang mga pagkakakilanlan at pag-sign din sa mga transaksyon na ipapadala sa Ethereum network. Ang middleman na ito o 3rdmagbigay ng tulong sa iyo ang partido upang matukoy ang network ng blockchain na maipakalat ang matalinong kontrata.
    • Web3 Provider - kung nagpapatakbo ka ng isang lokal na Ethereum node at magagamit ang endpoint ng RPC, maaaring magamit ang pagpipiliang ito. Ang Smart kontrata ay mai-deploy sa lokal na node ng Ethereum.
  • Mga Account: Ang impormasyong ito ay napunan batay sa napiling kapaligiran. Halimbawa. Nagbibigay ang JavaScript VM ng 5 prefunded test account. Sa kaso ng Web3 provider at Injected Web3 ay hindi nagbibigay ng paunang natipid na mga account sa pagsubok.
  • Hangganan ng gas: Tinutukoy nito ang maximum na halaga ng Gas na nagpapasimula na handang gastusin para sa anumang transaksyon. Ito ang lugar upang mapangalagaan laban sa walang katapusang loop at maubos ang lahat ng mga pondo ng account sa kaso ng walang katapusang kondisyon ng loop.
  • Halaga: Ang halagang maaaring kailanganing ipadala sa kabuuan habang inilalagay ang matalinong kontrata. Ito ay isang opsyonal na halaga.

Upang maipamahagi ang kontrata, piliin ang pagpipiliang JavaScript VM, piliin ang unang account mula sa drop down ng mga account, tandaan ang balanse ng account (100 eter).

Tiyaking ang lalabas na matalinong pangalan ng kontrata ay PurchaseOrder, mag-click sa pag-deploy. Pangunahing mga pagkilos na mangyayari

def __init__ python

  1. Nagbabago ang balanse ng account mula sa 100 ether hanggang 99.999999 ether, ang halagang nawasak ay ang gastos sa transaksyon para sa pag-deploy ng matalinong kontrata.
  2. Sa ilalim ng nakakalat na kontrata lilitaw ang isang bagong tile para sa matalinong kontrata, na magbibigay din ng address ng bagong matalinong kontrata ng isang bagay tulad nito (0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. Sa window ng console ay lilitaw ang sumusunod na impormasyon
    1. Transaksyon hash - natatanging kinikilala ang paglawak ng kontrata
    2. Gastos sa transaksyon
    3. Address ng kontrata

Nakikipag-ugnay sa naka-deploy na kontrata

  1. Sa ilalim ng nakakalat na kontrata, ang pagsunod sa dalawang pamamaraan ng pakikipag-ugnayan ay magagamit na update_quantity at get_quantity.
  2. Parehong mga pamamaraan ng pakikipag-ugnayan na ito ang mga pampublikong pamamaraan na tinukoy sa kontrata na 'Purchase Order'.
  3. Ang pamamaraan sa pag-update ng dami ng 'update_quantity' ay nangangailangan ng isang input parameter, kaya't ang kahon ng pag-input.
  4. Kumuha ng dami ng paraan na 'get_quantity' na kumukuha ng halaga ng product_quantity.
  5. Suriin natin kung ano ang mangyayari kapag ang get_quantity ay tinawag, ipinakita ang halagang bumalik na 100, na naisaisa sa tagapagbuo. Hindi ito sanhi ng isang transaksyon na mangyari
  6. Humingi kami ng update_quantity at magbigay ng 30 bilang input. Ito ay sanhi ng isang transaksyon na mangyari

Sa madaling sabi, ang anumang operasyon na nagdudulot ng operasyon ng pagsusulat sa estado ng kontrata (ibig sabihin binabago ang mga variable ng kontrata) ay magreresulta sa isang transaksyon.

Ang anumang operasyon na binabasa lamang ang estado ng kontrata ay hindi sanhi ng isang transaksyon.

Konklusyon sa Pag-unlad ng Kontrata ng Kontrata

Sa pamamagitan nito, nilikha lamang namin ang aming unang matalinong kontrata, na kinakamot lamang ang ibabaw ng solidity. Ngayon lang natin nakita kung ano ang kinakailangan upang masubukan ang matalinong kontrata mula mismo sa pag-deploy ng matalinong kontrata hanggang sa pagpapasimula ng mga transaksyon.

Sa susunod na blog na kung saan ay isang pagpapatuloy ng mga serye ng pag-unlad ng matalinong kontrata, papasok kami nang mas malalim sa mga pangunahing pundasyon ng solididad, na lalalim sa isang mas malalim na pagsisid sa pag-deploy ng matalinong kontrata.

Sa pamamagitan nito, natapos ko ito Matalinong Kontrata development blog. Inaasahan kong nasiyahan ka sa pagbabasa ng blog na ito at nalaman mong nagbibigay-kaalaman ito.

Akof nais mong matutunan ang Mga Smart Contract, bumuo ng isang karera sa domain ng Blockchain at makakuha ng kadalubhasaan sa programa ng Ethereum, magpalista sa live-online dito, kasama yan ng 24 * 7 na suporta upang gabayan ka sa buong panahon ng iyong pag-aaral.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng 'Smart development development' at babalikan ka namin sa earliest.