Ruka hadi maudhui makuu

Kutuma Miamala kwa Kutumia viem

miamala
viem
Alchemy
Mwanzilishi
Elan Halpern
4 Novemba 2020
11 dakika za kusoma

Huu ni mwongozo rafiki kwa wanaoanza wa kutuma miamala ya Ethereum kwa kutumia maktaba ya viem (inafunguka katika kichupo kipya). Kuna hatua tatu kuu ili kutuma muamala kwenye mnyororo wa vitalu wa Ethereum: kuunda, kusaini, na kutangaza. Tutapitia zote tatu, kwa matumaini ya kujibu maswali yoyote ambayo unaweza kuwa nayo! Katika mafunzo haya, tutatumia Alchemy (inafunguka katika kichupo kipya) kutuma miamala yetu kwenye mnyororo wa Ethereum. Unaweza kuunda akaunti ya bure ya Alchemy hapa (inafunguka katika kichupo kipya).

KUMBUKA: Mwongozo huu ni kwa ajili ya kusaini miamala yako kwenye backend kwa ajili ya programu yako. Ikiwa unataka kujumuisha usainiji wa miamala yako kwenye frontend, angalia Kiolesura cha Kupanga Programu Tumizi (API) cha mtoa huduma wa MetaMask (inafunguka katika kichupo kipya).

Mambo ya Msingi

Kama watengenezaji wengi wa mnyororo wa vitalu wanapoanza kwa mara ya kwanza, unaweza kuwa umefanya utafiti kuhusu jinsi ya kutuma muamala (kitu ambacho kinapaswa kuwa rahisi sana) na kukutana na miongozo mingi, kila mmoja ukisema mambo tofauti na kukuacha ukiwa umelemewa na kuchanganyikiwa kidogo. Ikiwa uko katika hali hiyo, usijali; sote tulikuwa hapo wakati fulani! Kwa hivyo, kabla hatujaanza, hebu tuweke mambo machache sawa:

1. Alchemy haihifadhi funguo zako za siri

  • Hii inamaanisha kuwa Alchemy haiwezi kusaini na kutuma miamala kwa niaba yako. Sababu ya hii ni kwa madhumuni ya usalama. Alchemy haitakuuliza kamwe kushiriki ufunguo wako wa siri, na hupaswi kamwe kushiriki ufunguo wako wa siri na nodi inayopangishwa (au mtu yeyote kwa jambo hilo).
  • Unaweza kusoma kutoka kwenye mnyororo wa vitalu kwa kutumia API kuu ya Alchemy, lakini ili kuandika kwake utahitaji kutumia kitu kingine kusaini miamala yako kabla ya kuituma kupitia Alchemy (hii ni sawa kwa huduma yoyote nyingine ya nodi).

2. "Msaini" ni nini?

3. Kwa nini ninahitaji kusaini miamala yangu?

  • Kila mtumiaji anayetaka kutuma muamala kwenye mtandao wa Ethereum lazima asaini muamala (kwa kutumia ufunguo wao wa siri), ili kuthibitisha kuwa asili ya muamala ni yule anayedai kuwa.
  • Ni muhimu sana kulinda ufunguo huu wa siri, kwani kuwa na ufikiaji wake kunatoa udhibiti kamili juu ya akaunti yako ya Ethereum, kukurusu wewe (au mtu yeyote aliye na ufikiaji) kufanya miamala kwa niaba yako.

4. Ninalindaje ufunguo wangu wa siri?

  • Kuna njia nyingi za kulinda ufunguo wako wa siri na kuutumia kutuma miamala. Katika mafunzo haya tutatumia faili la .env. Hata hivyo, unaweza pia kutumia mtoa huduma tofauti anayehifadhi funguo za siri, kutumia faili la hifadhi ya funguo, au chaguzi nyingine.

5. Kuna tofauti gani kati ya eth_sendTransaction na eth_sendRawTransaction?

eth_sendTransaction na eth_sendRawTransaction zote ni kazi za Kiolesura cha Kupanga Programu Tumizi (API) cha Ethereum ambazo hutangaza muamala kwenye mtandao wa Ethereum ili uweze kuongezwa kwenye kitalu cha baadaye. Zinatofautiana katika jinsi zinavyoshughulikia usainiji wa miamala.

Unapotumia viem, eth_sendRawTransaction inafikiwa kwa kuita kazi ya sendRawTransaction (inafunguka katika kichupo kipya).

Hiki ndicho tutakachokuwa tukitumia katika mafunzo haya.

6. Maktaba ya Web3 ni nini?

Sawa, sasa kwa kuwa tumejibu baadhi ya maswali haya, hebu tuendelee na mafunzo. Jisikie huru kuuliza maswali wakati wowote kwenye Discord (inafunguka katika kichupo kipya) ya Alchemy!

7. Jinsi ya kutuma miamala salama, iliyoboreshwa kwa gesi, na ya siri?

KUMBUKA: Mwongozo huu unahitaji akaunti ya Alchemy, anwani ya Ethereum au mkoba wa MetaMask, Node.js, na npm iliyosakinishwa. Ikiwa sivyo, fuata hatua hizi:

  1. Unda akaunti ya bure ya Alchemy (inafunguka katika kichupo kipya)
  2. Unda akaunti ya MetaMask (inafunguka katika kichupo kipya) (au pata anwani ya Ethereum)
  3. Sakinisha Node.js na npm (inafunguka katika kichupo kipya)

Hatua za Kutuma Muamala Wako

1. Unda programu ya Alchemy kwenye mtandao wa majaribio wa Sepolia

Nenda kwenye Dashibodi yako ya Alchemy (inafunguka katika kichupo kipya) na uunde programu mpya, ukichagua Sepolia (au mtandao wa majaribio mwingine wowote) kwa mtandao wako.

2. Omba ETH kutoka kwenye bomba la Sepolia

Fuata maagizo kwenye bomba la Sepolia la Alchemy (inafunguka katika kichupo kipya) ili kupokea ETH, au tumia mojawapo ya mabomba ya Sepolia mengine. Mabomba hutoa kiasi kidogo (bomba la Alchemy hutoa 0.1 ETH kwa siku), ambacho kinatosha kwa mafunzo haya. Hakikisha unajumuisha anwani yako ya Ethereum ya Sepolia (kutoka MetaMask) na si mtandao mwingine. Baada ya kufuata maagizo, hakikisha mara mbili kwamba umepokea ETH kwenye mkoba wako.

3. Unda saraka mpya ya mradi na cd ndani yake

Unda saraka mpya ya mradi kutoka kwenye mstari wa amri (terminal kwa macs) na uende ndani yake:

mkdir sendtx-example
cd sendtx-example

4. Sakinisha viem (au maktaba yoyote ya Web3)

Endesha amri ifuatayo katika saraka yako ya mradi ili kusakinisha viem (inafunguka katika kichupo kipya):

Kumbuka, ikiwa ungependa kutumia maktaba ya Ethers.js, fuata maagizo hapa (inafunguka katika kichupo kipya).

npm init -y
npm install viem

5. Sakinisha dotenv

Tutatumia faili la .env kuhifadhi kwa usalama ufunguo wetu wa API na ufunguo wa siri.

npm install dotenv

6. Unda faili la .env

Unda faili la .env katika saraka yako ya mradi na uongeze yafuatayo (ukibadilisha "your-api-url" na "your-private-key")

  • Ili kupata URL ya Kiolesura cha Kupanga Programu Tumizi (API) chako cha Alchemy, nenda kwenye ukurasa wa maelezo ya programu ya programu uliyounda hivi punde kwenye dashibodi yako, bofya "View Key" kwenye kona ya juu kulia, na uchukue URL ya HTTP.
  • Ili kupata ufunguo wa siri wako kwa kutumia MetaMask, angalia mwongozo (inafunguka katika kichupo kipya) huu. Tumia akaunti ambayo inashikilia tu ETH ya mtandao wa majaribio.
API_URL="your-api-url"
PRIVATE_KEY="your-private-key"
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 toleo, ongeza .env yako kwenye faili la gitignore.

7. Unda faili la sendTx.js

Safi, sasa kwa kuwa tuna data yetu nyeti iliyolindwa katika faili la .env, hebu tuanze kuandika kodi. Kwa mfano wetu wa kutuma muamala, tutakuwa tukituma 0.001 ETH kwa anwani nyingine unayoidhibiti, kama vile akaunti ya pili katika MetaMask.

Unda faili la sendTx.js, ambalo ndipo tutakaposanidi na kutuma mfano wetu wa muamala, na uongeze mistari ifuatayo ya kodi kwake:

Hakikisha unabadilisha 0xYourSecondAddress na anwani unayotaka kutuma ETH kwake. Hati inatoa anwani yako mwenyewe (ya kutuma) kutoka kwenye PRIVATE_KEY, kwa hivyo huhitaji kuiingiza.

Sasa, kabla hatujaanza kuendesha kodi hii, hebu tuzungumze kuhusu baadhi ya vipengele hapa.

  • account: Akaunti ya ndani iliyoundwa kutoka kwenye ufunguo wa siri wako na privateKeyToAccount (inafunguka katika kichupo kipya). Kusaini kunafanyika kwenye mashine yako, na ufunguo wa siri hautumwi kamwe kwa Alchemy.
  • publicClient na walletClient: wateja wa viem wanaotuma maombi ya JSON-RPC kwenye URL yako ya Alchemy. Mteja wa umma anasoma kutoka kwenye mnyororo, na mteja wa mkoba huandaa na kusaini miamala kwa ajili ya akaunti yako.
  • nonce : Uainishaji wa nonsi unatumika kufuatilia idadi ya miamala iliyotumwa kutoka kwenye anwani yako. Tunahitaji hii kwa madhumuni ya usalama na kuzuia mashambulizi ya kurudia (replay attacks). Ili kupata idadi ya miamala iliyotumwa kutoka kwenye anwani yako tunatumia getTransactionCount (inafunguka katika kichupo kipya). viem pia ingekujazia hii, lakini tunaichukua waziwazi hapa ili kuonyesha inakotoka.
  • transaction: Kitu cha muamala kina vipengele vichache tunavyohitaji kubainisha. prepareTransactionRequest (inafunguka katika kichupo kipya) inatujazia mengine, ikiwa ni pamoja na chainId na sehemu za ada za EIP-1559 maxFeePerGas na maxPriorityFeePerGas, kulingana na hali ya sasa ya mtandao
    • to: Hii ni anwani tunayotaka kutuma ETH kwake.
    • value: Hiki ni kiasi tunachotaka kutuma, kilichobainishwa katika Wei ambapo 10^18 Wei = 1 ETH. parseEther (inafunguka katika kichupo kipya) inabadilisha kiasi cha ETH kuwa Wei kwa ajili yetu. Akaunti yako inahitaji zaidi kidogo ya hii, kwani pia inalipia gesi
    • gas: Kuna njia nyingi za kuamua kiasi sahihi cha gesi cha kujumuisha na muamala wako. Alchemy inasaidia webhooks (inafunguka katika kichupo kipya) ambazo zinaweza kukuarifu kuhusu shughuli mnyororoni. Kwa miamala ya Mtandao Mkuu, ni mazoezi mazuri kuangalia hali ya sasa ya gesi ili kuamua kiasi sahihi cha gesi cha kujumuisha. Hamisho la kawaida la ETH kwa anwani ya kawaida daima hutumia gesi 21000 haswa, ambayo ni kiwango cha chini kwa muamala wowote, kwa hivyo tunaweka 21000 hapa. Ikiwa utaacha gas nje, viem inakadiria kwa ajili yako.
    • nonce: angalia ufafanuzi wa nonsi hapo juu. Nonsi inaanza kuhesabu kutoka sifuri.
    • [SI LAZIMA] data: Inatumika kwa kutuma maelezo ya ziada na hamisho lako, au kuita mkataba mahiri, haihitajiki kwa uhamisho wa salio, angalia dokezo hapa chini.
  • signedTx: Ili kusaini kitu chetu cha muamala tutatumia mbinu ya signTransaction, ambayo inaisaini ndani kwa ndani na akaunti iliyoundwa kutoka kwenye PRIVATE_KEY yetu
  • sendRawTransaction: Mara tu tunapokuwa na muamala uliosainiwa, tunaweza kuutuma ili ujumuishwe katika kitalu kinachofuata kwa kutumia sendRawTransaction, ambayo inaita eth_sendRawTransaction
  • waitForTransactionReceipt: Inasubiri hadi muamala ujumuishwe katika kitalu na kurudisha stakabadhi yake

Dokezo kuhusu data Kuna aina mbili kuu za miamala inayoweza kutumwa katika Ethereum.

  • Hamisho la salio: Tuma ETH kutoka anwani moja hadi nyingine. Hakuna sehemu ya data inayohitajika, hata hivyo, ikiwa ungependa kutuma maelezo ya ziada pamoja na muamala wako, unaweza kujumuisha maelezo hayo katika muundo wa HEX katika sehemu hii.
    • Kwa mfano, hebu tuseme tulitaka kuandika heshi ya hati ya IPFS kwenye mnyororo wa Ethereum ili kuipa muhuri wa muda usiobadilika. Sehemu yetu ya data inapaswa kuonekana kama data: toHex("IPFS hash"), kwa kutumia toHex (inafunguka katika kichupo kipya) ya viem. Na sasa mtu yeyote anaweza kuuliza mnyororo na kuona wakati hati hiyo ilipoongezwa.
  • Muamala wa mkataba mahiri: Tekeleza baadhi ya kodi za mkataba mahiri kwenye mnyororo. Katika kesi hii, sehemu ya data inapaswa kuwa na kazi mahiri unayotaka kutekeleza, pamoja na vigezo vyovyote.

8. Endesha kodi kwa kutumia node sendTx.js

Nenda nyuma kwenye terminal yako au mstari wa amri na uendeshe:

node sendTx.js

9. Angalia muamala wako kwenye kichunguzi cha bloku

Hati inachapisha heshi ya muamala mara tu nodi inapokubali muamala, kisha inasubiri hadi ujumuishwe katika kitalu (kawaida ndani ya sekunde chache) na kuchapisha matokeo. Ili kuona maelezo, bandika heshi kwenye kichunguzi cha bloku cha Sepolia kama vile Sepolia Etherscan (inafunguka katika kichupo kipya) au Blockscout (inafunguka katika kichupo kipya). Hapo unaweza kutazama muamala ukitoka kwenye kusubiri hadi kujumuishwa, na kuona kiasi, ada na kitalu ulichotua.

Ikiwa utaona hitilafu ya insufficient funds badala yake, akaunti yako haina ETH ya Sepolia ya kutosha kufidia thamani pamoja na gesi. Rudi kwenye hatua ya 2 na uombe zaidi kutoka kwenye bomba.

Yippieeee! Umetuma muamala wako wa kwanza wa Ethereum kwa kutumia Alchemy 🎉

Kwa maoni na mapendekezo kuhusu mwongozo huu, tafadhali mtumie ujumbe Elan kwenye Discord (inafunguka katika kichupo kipya) ya Alchemy!

Ilichapishwa awali na Alchemy.