Ruka hadi kwenye maudhui makuu

Mkataba Mahiri wa Hello World kwa Wanaoanza

Solidity
Hardhat
Alchemy
mikataba mahiri
kusambaza
Mwanzilishi
elanh
31 Machi 2021
12 dakika za kusoma

Ikiwa wewe ni mgeni katika uundaji wa mnyororo wa vitalu na hujui pa kuanzia, au ikiwa unataka tu kuelewa jinsi ya kusambaza na kuingiliana na mikataba mahiri, mwongozo huu ni kwa ajili yako. Tutapitia hatua za kuunda na kusambaza mkataba mahiri rahisi kwenye mtandao wa majaribio wa Sepolia kwa kutumia mkoba wa mtandaoni wa MetaMask (opens in a new tab), Solidity (opens in a new tab), Hardhat (opens in a new tab), na Alchemy (opens in a new tab) (usijali ikiwa bado huelewi maana ya haya yote, tutayaeleza).

Katika sehemu ya 2 ya mafunzo haya tutapitia jinsi tunavyoweza kuingiliana na mkataba wetu mahiri pindi utakapokuwa umesambazwa hapa, na katika sehemu ya 3 tutaangazia jinsi ya kuuchapisha kwenye Etherscan.

Ikiwa una maswali wakati wowote jisikie huru kuwasiliana nasi kwenye Discord ya Alchemy (opens in a new tab)!

Hatua ya 1: Unganisha kwenye mtandao wa Ethereum

Kuna njia nyingi za kutuma maombi kwenye mnyororo wa Ethereum. Ili kurahisisha, tutatumia akaunti ya bure kwenye Alchemy, jukwaa la wasanidi wa mnyororo wa vitalu na API inayoturuhusu kuwasiliana na mnyororo wa Ethereum bila kulazimika kuendesha nodi zetu wenyewe. Jukwaa hili pia lina zana za wasanidi za ufuatiliaji na uchanganuzi ambazo tutazitumia katika mafunzo haya ili kuelewa kinachoendelea kiufundi katika usambazaji wa mkataba wetu mahiri. Ikiwa bado huna akaunti ya Alchemy, unaweza kujisajili bila malipo hapa (opens in a new tab).

Hatua ya 2: Unda programu yako (na ufunguo wa API)

Pindi utakapounda akaunti ya Alchemy, unaweza kuzalisha ufunguo wa API kwa kuunda programu. Hii itaturuhusu kutuma maombi kwenye mtandao wa majaribio wa Sepolia. Ikiwa hufahamu mitandao ya majaribio, angalia ukurasa huu.

  1. Nenda kwenye ukurasa wa "Create new app" (Unda programu mpya) katika Dashibodi yako ya Alchemy kwa kuchagua "Select an app" (Chagua programu) kwenye upau wa kusogeza na kubofya "Create new app"

Hello world create app

  1. Ipe programu yako jina la “Hello World”, toa maelezo mafupi, na uchague matumizi, k.m., "Infra & Tooling." Kisha, tafuta "Ethereum" na uchague mtandao.

create app view hello world

  1. Bofya "Next" (Inayofuata) ili kuendelea, kisha “Create app” (Unda programu) na ndivyo hivyo! Programu yako inapaswa kuonekana kwenye menyu kunjuzi ya upau wa kusogeza, ikiwa na Ufunguo wa API unaopatikana kwa ajili ya kunakiliwa.

Hatua ya 3: Unda akaunti ya Ethereum (anwani)

Tunahitaji akaunti ya Ethereum ili kutuma na kupokea miamala. Kwa mafunzo haya, tutatumia MetaMask, mkoba wa mtandaoni kwenye kivinjari unaotumika kudhibiti anwani ya akaunti yako ya Ethereum. Pata maelezo zaidi kuhusu miamala.

Unaweza kupakua MetaMask na kuunda akaunti ya Ethereum bila malipo hapa (opens in a new tab). Unapounda akaunti, au ikiwa tayari una akaunti, hakikisha umebadilisha kwenda kwenye mtandao wa majaribio wa "Sepolia" ukitumia menyu kunjuzi ya mtandao (ili tusiwe tunashughulika na pesa halisi).

Ikiwa huoni Sepolia kwenye orodha, nenda kwenye menyu, kisha Advanced (Kina) na usogeze chini ili kuwasha "Show test networks" (Onyesha mitandao ya majaribio). Katika menyu ya kuchagua mtandao, chagua kichupo cha "Custom" (Maalum) ili kupata orodha ya mitandao ya majaribio na uchague "Sepolia."

metamask sepolia example

Hatua ya 4: Ongeza Etha kutoka kwenye bomba

Ili kusambaza mkataba wetu mahiri kwenye mtandao wa majaribio, tutahitaji ETH bandia. Ili kupata ETH ya Sepolia unaweza kwenda kwenye maelezo ya mtandao wa Sepolia ili kutazama orodha ya mabomba mbalimbali. Ikiwa moja haifanyi kazi, jaribu nyingine kwani wakati mwingine zinaweza kukauka. Inaweza kuchukua muda kupokea ETH yako bandia kutokana na msongamano wa mtandao. Unapaswa kuona ETH kwenye akaunti yako ya MetaMask muda mfupi baadaye!

Hatua ya 5: Angalia Salio lako

Ili kuhakikisha salio letu lipo, hebu tutume ombi la eth_getBalance kwa kutumia zana ya kutunga ya Alchemy (opens in a new tab). Hii itarejesha kiasi cha ETH kwenye mkoba wetu. Baada ya kuweka anwani ya akaunti yako ya MetaMask na kubofya “Send Request” (Tuma Ombi), unapaswa kuona jibu kama hili:

{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }

KUMBUKA: Matokeo haya yapo katika Wei na si ETH. Wei inatumika kama kiasi kidogo zaidi cha Etha. Ubadilishaji kutoka Wei hadi ETH ni: 1 eth = 1018 Wei. Kwa hivyo tukibadilisha 0x2B5E3AF16B1880000 kuwa desimali tunapata 5*10¹⁸ ambayo ni sawa na 5 ETH.

Phew! Pesa zetu bandia zote zipo .

Hatua ya 6: Anzisha mradi wetu

Kwanza, tutahitaji kuunda folda kwa ajili ya mradi wetu. Nenda kwenye mstari wako wa amri na uandike:

mkdir hello-world
cd hello-world

Kwa kuwa sasa tuko ndani ya folda ya mradi wetu, tutatumia npm init kuanzisha mradi. Ikiwa bado hujasakinisha npm, fuata maagizo ya usakinishaji wa Node.js (opens in a new tab) (tutahitaji Node.js na npm kwa mafunzo haya).

npm init

Haijalishi sana jinsi unavyojibu maswali ya usakinishaji, hivi ndivyo tulivyofanya kwa marejeleo:

Idhinisha package.json na tuko tayari kuendelea!

Hatua ya 7: Pakua Hardhat (opens in a new tab)

Hardhat ni mazingira ya uundaji ya kukusanya, kusambaza, kujaribu, na kutatua programu yako ya Ethereum. Inasaidia wasanidi wanapounda mikataba mahiri na programu tumizi zilizogatuliwa (dapps) kwenye kompyuta zao kabla ya kusambaza kwenye mnyororo wa moja kwa moja.

Ndani ya mradi wetu wa hello-world endesha:

npm install --save-dev hardhat

Angalia ukurasa huu kwa maelezo zaidi kuhusu maagizo ya usakinishaji (opens in a new tab).

Hatua ya 8: Unda mradi wa Hardhat

Ndani ya folda ya mradi wetu endesha:

npx hardhat

Kisha unapaswa kuona ujumbe wa kukaribisha na chaguo la kuchagua unachotaka kufanya. Chagua “create an empty hardhat.config.js” (unda hardhat.config.js tupu):

Hii itazalisha faili la hardhat.config.js kwa ajili yetu ambapo tutabainisha mipangilio yote ya mradi wetu (katika hatua ya 13).

Hatua ya 9: Ongeza folda za mradi

Ili kuweka mradi wetu ukiwa umepangiliwa tutaunda folda mbili mpya. Nenda kwenye saraka kuu ya mradi wako katika mstari wako wa amri na uandike:

mkdir contracts
mkdir scripts
  • contracts/ ni mahali ambapo tutaweka faili la msimbo wa mkataba wetu mahiri wa hello world
  • scripts/ ni mahali ambapo tutaweka hati za kusambaza na kuingiliana na mkataba wetu

Hatua ya 10: Andika mkataba wetu

Unaweza kuwa unajiuliza, ni lini hasa tutaandika msimbo?? Kweli, tuko hapa, katika hatua ya 10.

Fungua mradi wa hello-world katika kihariri chako unachokipenda (sisi tunapenda VSCode (opens in a new tab)). Mikataba mahiri huandikwa katika lugha inayoitwa Solidity ambayo ndiyo tutakayotumia kuandika mkataba wetu mahiri wa HelloWorld.sol.‌

  1. Nenda kwenye folda ya “contracts” na uunde faili jipya linaloitwa HelloWorld.sol
  2. Hapa chini kuna sampuli ya mkataba mahiri wa Hello World kutoka Taasisi ya Ethereum ambao tutautumia kwa mafunzo haya. Nakili na ubandike yaliyomo hapa chini kwenye faili lako la HelloWorld.sol, na uhakikishe unasoma maoni ili kuelewa kile mkataba huu unafanya:

Huu ni mkataba mahiri rahisi sana ambao huhifadhi ujumbe unapoundwa na unaweza kusasishwa kwa kuita chaguo la kukokotoa la update.

Hatua ya 11: Unganisha MetaMask na Alchemy kwenye mradi wako

Tumeunda mkoba wa MetaMask, akaunti ya Alchemy, na kuandika mkataba wetu mahiri, sasa ni wakati wa kuunganisha vyote vitatu.

Kila muamala unaotumwa kutoka kwenye mkoba wako wa mtandaoni unahitaji sahihi kwa kutumia ufunguo wako wa siri wa kipekee. Ili kuipa programu yetu ruhusa hii, tunaweza kuhifadhi kwa usalama ufunguo wetu wa siri (na ufunguo wa API wa Alchemy) katika faili la mazingira.

Ili kujifunza zaidi kuhusu kutuma miamala, angalia mafunzo haya kuhusu kutuma miamala kwa kutumia Web3.

Kwanza, sakinisha kifurushi cha dotenv katika saraka ya mradi wako:

npm install dotenv --save

Kisha, unda faili la .env katika saraka kuu ya mradi wetu, na uongeze ufunguo wako wa siri wa MetaMask na URL ya API ya HTTP ya Alchemy ndani yake.

get alchemy api key

Nakili URL ya API ya Alchemy

Faili lako la .env linapaswa kuonekana hivi:

API_URL = "https://eth-sepolia.g.alchemy.com/v2/your-api-key"
PRIVATE_KEY = "your-metamask-private-key"

Ili kuunganisha haya kwenye msimbo wetu, tutarejelea vigeu hivi katika faili letu la hardhat.config.js katika hatua ya 13.

Usifanye commit ya .env! Tafadhali hakikisha kamwe hushiriki au kufichua faili lako la .env kwa mtu yeyote, kwani unaweka siri zako hatarini kwa kufanya hivyo. Ikiwa unatumia udhibiti wa matoleo, ongeza .env yako kwenye faili la gitignore.

Hatua ya 12: Sakinisha Ethers.js

Ethers.js ni maktaba inayorahisisha kuingiliana na kutuma maombi kwenye Ethereum kwa kufunga mbinu za kawaida za JSON-RPC na mbinu zinazofaa zaidi kwa mtumiaji.

Hardhat inafanya iwe rahisi sana kujumuisha Programu-jalizi (opens in a new tab) kwa zana za ziada na utendaji uliopanuliwa. Tutatumia programu-jalizi ya Ethers (opens in a new tab) kwa usambazaji wa mkataba (Ethers.js (opens in a new tab) ina mbinu safi sana za usambazaji wa mkataba).

Katika saraka ya mradi wako andika:

npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0"

Pia tutahitaji ethers katika hardhat.config.js yetu katika hatua inayofuata.

Hatua ya 13: Sasisha hardhat.config.js

Tumeongeza vitegemezi na programu-jalizi kadhaa hadi sasa, sasa tunahitaji kusasisha hardhat.config.js ili mradi wetu uzitambue zote.

Sasisha hardhat.config.js yako ili ionekane hivi:

Hatua ya 14: Kusanya mkataba wetu

Ili kuhakikisha kila kitu kinafanya kazi hadi sasa, hebu tukusanye mkataba wetu. Kazi ya compile ni mojawapo ya kazi zilizojengewa ndani za hardhat.

Kutoka kwenye mstari wa amri endesha:

npx hardhat compile

Unaweza kupata onyo kuhusu SPDX license identifier not provided in source file , lakini hakuna haja ya kuwa na wasiwasi kuhusu hilo — tunatumai kila kitu kingine kinaonekana vizuri! Ikiwa sivyo, unaweza kutuma ujumbe kila wakati kwenye Discord ya Alchemy (opens in a new tab).

Hatua ya 15: Andika hati yetu ya kusambaza

Kwa kuwa sasa mkataba wetu umeandikwa na faili letu la usanidi liko tayari, ni wakati wa kuandika hati yetu ya kusambaza mkataba.

Nenda kwenye folda ya scripts/ na uunde faili jipya linaloitwa deploy.js , ukiongeza yaliyomo yafuatayo ndani yake:

Hardhat inafanya kazi nzuri sana ya kueleza kile ambacho kila moja ya mistari hii ya msimbo inafanya katika mafunzo yao ya Mikataba (opens in a new tab), tumetumia maelezo yao hapa.

const HelloWorld = await ethers.getContractFactory("HelloWorld");

ContractFactory katika ethers.js ni dhana inayotumika kusambaza mikataba mahiri mipya, kwa hivyo HelloWorld hapa ni kiwanda cha matukio ya mkataba wetu wa hello world. Unapotumia programu-jalizi ya hardhat-ethers, matukio ya ContractFactory na Contract huunganishwa kwa mtia saini wa kwanza kwa chaguomsingi.

const hello_world = await HelloWorld.deploy();

Kuita deploy() kwenye ContractFactory kutaanzisha usambazaji, na kurejesha Promise inayotatuliwa kuwa Contract. Hiki ni kipengee ambacho kina mbinu kwa kila moja ya chaguo za kukokotoa za mkataba wetu mahiri.

Hatua ya 16: Sambaza mkataba wetu

Hatimaye tuko tayari kusambaza mkataba wetu mahiri! Nenda kwenye mstari wa amri na uendeshe:

npx hardhat run scripts/deploy.js --network sepolia

Kisha unapaswa kuona kitu kama:

Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570

Tukienda kwenye Etherscan ya Sepolia (opens in a new tab) na kutafuta anwani ya mkataba wetu tunapaswa kuweza kuona kwamba umesambazwa kwa ufanisi. Muamala utaonekana kama hivi:

etherscan contract

Anwani ya From inapaswa kulingana na anwani ya akaunti yako ya MetaMask na anwani ya To (Kwenda) itasema “Contract Creation” (Uundaji wa Mkataba) lakini tukibofya kwenye muamala tutaona anwani ya mkataba wetu katika sehemu ya To:

etherscan transaction

Hongera! Umetoka tu kusambaza mkataba mahiri kwenye mnyororo wa Ethereum 🎉

Ili kuelewa kinachoendelea kiufundi, hebu twende kwenye kichupo cha Explorer (Kichunguzi) katika dashibodi yetu ya Alchemy (opens in a new tab). Ikiwa una programu nyingi za Alchemy hakikisha unachuja kulingana na programu na uchague “Hello World”. hello world explorer

Hapa utaona simu chache za JSON-RPC ambazo Hardhat/Ethers ilitufanyia kiufundi tulipopiga simu kwenye chaguo la kukokotoa la .deploy(). Mbili muhimu za kutaja hapa ni eth_sendRawTransaction (opens in a new tab), ambalo ni ombi la kuandika mkataba wetu kwenye mnyororo wa Sepolia, na eth_getTransactionByHash (opens in a new tab) ambalo ni ombi la kusoma taarifa kuhusu muamala wetu kwa kutumia heshi (mtindo wa kawaida wakati wa miamala). Ili kujifunza zaidi kuhusu kutuma miamala, angalia mafunzo haya kuhusu kutuma miamala kwa kutumia Web3

Hiyo ndiyo yote kwa sehemu ya 1 ya mafunzo haya, katika sehemu ya 2 tutaingiliana na mkataba wetu mahiri kwa kusasisha ujumbe wetu wa awali, na katika sehemu ya 3 tutachapisha mkataba wetu mahiri kwenye Etherscan ili kila mtu ajue jinsi ya kuingiliana nao.

Unataka kujifunza zaidi kuhusu Alchemy? Angalia tovuti (opens in a new tab) yetu. Hutaki kamwe kukosa sasisho? Jisajili kwa jarida letu hapa (opens in a new tab)! Hakikisha pia unajiunga na Discord (opens in a new tab) yetu..