Ruka kwenda kwenye maudhui makuu

Kutuma Miamala Kwa Kutumia Web3

transactions
web3.js
alchemy
Beginner
Elan Halpern
4 Novemba 2020
9 minute read

Huu ni mwongozo rahisi kwa wanaoanza wa kutuma miamala ya Ethereum kwa kutumia Web3. Kuna hatua tatu kuu ili kutuma muamala kwa mnyororo wa bloku wa Ethereum: tengeneza, saini, na tangaza. Tutapitia zote tatu, tunatumai tutajibu maswali yoyote ambayo unaweza kuwa nayo! Katika somo hili, tutatumia Alchemy (opens in a new tab) kutuma miamala yetu kwa mnyororo wa Ethereum. Unaweza kufungua akaunti ya Alchemy bila malipo hapa (opens in a new tab).

KUMBUKA: Mwongozo huu ni wa kusaini miamala yako kwenye backend ya programu yako. Ikiwa unataka kuunganisha kusaini miamala yako kwenye frontend, angalia kuunganisha Web3 na mtoa huduma wa kivinjari (opens in a new tab).

Mambo ya Msingi

Kama wasanidi programu wengi wa mnyororo wa bloku wanapoanza, huenda umefanya utafiti fulani kuhusu jinsi ya kutuma muamala (kitu ambacho kinapaswa kuwa rahisi sana) na ukakutana na miongozo mingi, kila mmoja ukisema mambo tofauti na kukuacha ukiwa umezidiwa na kuchanganyikiwa. 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 binafsi

  • 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 binafsi, na hupaswi kamwe kushiriki ufunguo wako binafsi na nodi iliyohifadhiwa (au mtu yeyote kwa jambo hilo).
  • Unaweza kusoma kutoka kwenye mnyororo wa bloku kwa kutumia API ya msingi ya Alchemy, lakini ili kuandika humo utahitaji kutumia kitu kingine kusaini miamala yako kabla ya kuituma kupitia Alchemy (hii ni sawa kwa huduma nyingine yoyote ya nodi).

2. “Signer” ni nini?

  • Signers watasaini miamala kwa ajili yako kwa kutumia ufunguo wako binafsi. Katika somo hili tutakuwa tukitumia Alchemy web3 (opens in a new tab) kusaini muamala wetu, lakini unaweza pia kutumia maktaba nyingine yoyote ya web3.
  • Kwenye frontend, mfano mzuri wa signer itakuwa MetaMask (opens in a new tab), ambayo itasaini na kutuma miamala kwa niaba yako.

3. Kwa nini ninahitaji kusaini miamala yangu?

  • Kila mtumiaji anayetaka kutuma muamala kwenye mtandao wa Ethereum lazima asaini muamala (kwa kutumia ufunguo wake binafsi), ili kuthibitisha kuwa chimbuko la muamala huo ndilo linavyodaiwa kuwa.
  • Ni muhimu sana kulinda ufunguo huu binafsi, kwani kuwa na ufikiaji kwayo kunatoa udhibiti kamili juu ya akaunti yako ya Ethereum, kukuruhusu wewe (au mtu yeyote mwenye ufikiaji) kufanya miamala kwa niaba yako.

4. Ninalindaje ufunguo wangu binafsi?

  • Kuna njia nyingi za kulinda ufunguo wako binafsi na kuutumia kutuma miamala. Katika somo hili tutakuwa tukitumia faili ya .env. Hata hivyo, unaweza pia kutumia mtoa huduma tofauti anayehifadhi funguo za binafsi, kutumia faili ya keystore, au chaguo zingine.

5. Kuna tofauti gani kati ya eth_sendTransaction na eth_sendRawTransaction?

eth_sendTransaction na eth_sendRawTransaction zote ni kazi za API za Ethereum zinazotangaza muamala kwa mtandao wa Ethereum ili uongezwe kwenye bloku ya baadaye. Zinatofautiana katika jinsi zinavyoshughulikia usainishaji wa miamala.

Unapotumia web3, eth_sendRawTransaction hupatikana kwa kuita kazi web3.eth.sendSignedTransaction (opens in a new tab).

Hiki ndicho tutakachokuwa tukitumia katika somo hili.

6. Maktaba ya web3 ni nini?

Sawa, sasa kwa kuwa tumeshughulikia baadhi ya maswali haya, hebu tuendelee na somo. Jisikie huru kuuliza maswali wakati wowote katika discord (opens in a new tab) ya Alchemy!

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

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

  1. Fungua akaunti ya Alchemy bila malipo (opens in a new tab)
  2. Fungua akaunti ya MetaMask (opens in a new tab) (au pata anwani ya Ethereum)
  3. Fuata hatua hizi ili kusakinisha NodeJs na NPM (opens in a new tab)

Hatua za Kutuma Muamala wako

1. Fungua programu ya Alchemy kwenye testnet ya Sepolia

Nenda kwenye Dashibodi yako ya Alchemy (opens in a new tab) na uunde programu mpya, ukichagua Sepolia (au testnet nyingine yoyote) kwa mtandao wako.

2. Omba ETH kutoka kwa bomba la Sepolia

Fuata maagizo kwenye bomba la Sepolia la Alchemy (opens in a new tab) ili kupokea ETH. Hakikisha unajumuisha anwani yako ya Ethereum ya Sepolia (kutoka MetaMask) na si mtandao mwingine. Baada ya kufuata maagizo, hakikisha tena kuwa umepokea ETH kwenye mkoba wako.

3. Unda saraka mpya ya mradi na cd ndani yake

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

1mkdir sendtx-example
2cd sendtx-example

4. Sakinisha Alchemy Web3 (au maktaba yoyote ya web3)

Endesha amri ifuatayo katika saraka yako ya mradi ili kusakinisha Alchemy Web3 (opens in a new tab):

Kumbuka, ikiwa ungependa kutumia maktaba ya ethers.js, fuata maagizo hapa (opens in a new tab).

1npm install @alch/alchemy-web3

5. Sakinisha dotenv

Tutatumia faili ya .env kuhifadhi kwa usalama ufunguo wetu wa API na ufunguo binafsi.

1npm install dotenv --save

6. Tengeneza faili ya .env

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

  • Ili kupata URL yako ya API ya Alchemy, nenda kwenye ukurasa wa maelezo ya programu uliyotengeneza kwenye dashibodi yako, bofya "View Key" kwenye kona ya juu kulia, na uchukue URL ya HTTP.
  • Ili kupata ufunguo wako binafsi kwa kutumia MetaMask, angalia mwongozo huu (opens in a new tab).
1API_URL = "your-api-url"
2PRIVATE_KEY = "your-private-key"

7. Tengeneza faili ya sendTx.js

Safi, sasa kwa kuwa data yetu nyeti imelindwa katika faili ya .env, hebu tuanze kuandika msimbo. Kwa mfano wetu wa kutuma muamala, tutakuwa tukituma ETH kurudi kwenye bomba la Sepolia.

Tengeneza faili ya sendTx.js, ambapo tutasanidi na kutuma muamala wetu wa mfano, na kuongeza mistari ifuatayo ya msimbo ndani yake:

1async function main() {
2 require('dotenv').config();
3 const { API_URL, PRIVATE_KEY } = process.env;
4 const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
5 const web3 = createAlchemyWeb3(API_URL);
6 const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: badilisha anwani hii na anwani yako ya umma
7
8 const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // nonce huanza kuhesabu kutoka 0
9
10 const transaction = {
11 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // anwani ya bomba la kurudisha eth
12 'value': 1000000000000000000, // ETH 1
13 'gas': 30000,
14 'nonce': nonce,
15 // sehemu ya data ya hiari kutuma ujumbe au kutekeleza mkataba-erevu
16 };
17
18 const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY);
19
20 web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) {
21 if (!error) {
22 console.log("🎉 Hashi ya muamala wako ni: ", hash, "\n Angalia Mempool ya Alchemy ili kuona hali ya muamala wako!");
23 } else {
24 console.log("❗Kitu kilienda mrama wakati wa kuwasilisha muamala wako:", error)
25 }
26 });
27}
28
29main();
Onyesha yote

Hakikisha unabadilisha anwani kwenye mstari wa 6 na anwani yako mwenyewe ya umma.

Sasa, kabla ya kuanza kuendesha msimbo huu, hebu tuzungumzie baadhi ya vipengele hapa.

  • nonce : Ufafanuzi wa nonce hutumika kufuatilia idadi ya miamala iliyotumwa kutoka kwa anwani yako. Tunahitaji hii kwa madhumuni ya usalama na kuzuia mashambulizi ya kurudia (opens in a new tab). Ili kupata idadi ya miamala iliyotumwa kutoka kwa anwani yako tunatumia getTransactionCount (opens in a new tab).
  • transaction: Kitu cha muamala kina vipengele vichache tunavyohitaji kubainisha
    • to: Hii ni anwani tunayotaka kutuma ETH. Katika kesi hii, tunatuma ETH kurudi kwenye bomba la Sepolia (opens in a new tab) ambalo tuliomba awali.
    • value: Hii ni kiasi tunachotaka kutuma, kilichoainishwa katika Wei ambapo Wei 10^18 = ETH 1
    • gas: Kuna njia nyingi za kuamua kiasi sahihi cha gesi cha kujumuisha na muamala wako. Alchemy hata ina webhook ya bei ya gesi (opens in a new tab) kukuarifu bei ya gesi inaposhuka ndani ya kizingiti fulani. Kwa miamala ya Mtandao Mkuu, ni mazoea mazuri kuangalia kikadiriaji cha gesi kama ETH Gas Station (opens in a new tab) ili kuamua kiasi sahihi cha gesi cha kujumuisha. 21000 ni kiasi cha chini cha gesi ambacho operesheni kwenye Ethereum itatumia, kwa hivyo ili kuhakikisha muamala wetu utatekelezwa tunaweka 30000 hapa.
    • nonce: tazama ufafanuzi wa nonce hapo juu. Nonce huanza kuhesabu kutoka sifuri.
    • [SI LAZIMA] data: Hutumika kutuma taarifa za ziada na uhamisho wako, au kuita mkataba-erevu, hauhitajiki kwa uhamisho wa salio, angalia dokezo hapa chini.
  • signedTx: Ili kusaini kitu chetu cha muamala tutatumia mbinu ya signTransaction na PRIVATE_KEY yetu
  • sendSignedTransaction: Mara tu tunapokuwa na muamala uliosainiwa, tunaweza kuutuma ili ujumuishwe katika bloku inayofuata kwa kutumia sendSignedTransaction

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

  • Uhamisho wa salio: Tuma ETH kutoka anwani moja kwenda nyingine. Hakuna sehemu ya data inayohitajika, hata hivyo, ikiwa ungependa kutuma taarifa za ziada pamoja na muamala wako, unaweza kujumuisha taarifa hiyo katika umbizo la HEX katika sehemu hii.
    • Kwa mfano, tuseme tulitaka kuandika hashi ya hati ya IPFS kwenye mnyororo wa Ethereum ili kuipa muhuri wa muda usioweza kubadilika. Sehemu yetu ya data inapaswa kuonekana kama data: web3.utils.toHex('hashi ya IPFS'). Na sasa mtu yeyote anaweza kuuliza mnyororo na kuona ni lini hati hiyo iliongezwa.
  • Muamala wa mkataba-erevu: Tekeleza msimbo fulani wa mkataba-erevu kwenye mnyororo. Katika kesi hii, sehemu ya data inapaswa kuwa na kazi mahiri unayotaka kutekeleza, pamoja na vigezo vyovyote.

8. Endesha msimbo kwa kutumia node sendTx.js

Rudi kwenye terminal yako au mstari wa amri na uendeshe:

1node sendTx.js

9. Angalia muamala wako katika Mempool

Fungua ukurasa wa Mempool (opens in a new tab) kwenye dashibodi yako ya Alchemy na uchuje kwa programu uliyounda ili kupata muamala wako. Hapa ndipo tunaweza kutazama mpito wa muamala wetu kutoka hali ya kusubiri hadi hali ya kuchimbwa (ikiwa imefanikiwa) au hali ya kuachwa ikiwa haikufanikiwa. Hakikisha unaiweka kwenye "All" ili uweze kunasa miamala ya "mined", "pending", na "dropped". Unaweza pia kutafuta muamala wako kwa kutafuta miamala iliyotumwa kwa anwani 0x31b98d14007bdee637298086988a0bbd31184523 .

Ili kuona maelezo ya muamala wako mara tu umeupata, chagua hashi ya tx, ambayo inapaswa kukupeleka kwenye mwonekano unaofanana na huu:

Picha ya skrini ya mfuatiliaji wa Mempool

Kutoka hapo unaweza kuona muamala wako kwenye Etherscan kwa kubofya ikoni iliyozungushiwa duara nyekundu!

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

Kwa maoni na mapendekezo kuhusu mwongozo huu, tafadhali mtumie Elan ujumbe kwenye Discord (opens in a new tab) ya Alchemy!

Ilichapishwa awali katika https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy (opens in a new tab)

Ukurasa ulihaririwa mwisho: 18 Desemba 2025

Umesaidika na mafunzo haya?