Ruka hadi kwenye maudhui makuu
Change page

Kuingiliana na mikataba mahiri

Sio lazima kila wakati uandike na kusambaza mkataba wako mahiri. Mara nyingi kama msanidi programu, utataka kuingiliana na mikataba mahiri ambayo wengine tayari wamesambaza kwenye mtandao wa Ethereum.

Ukurasa huu unashughulikia njia mbili za kimsingi za kuingiliana na mkataba mahiri—kusoma data na kuandika data—na zana unazohitaji kufanya yote mawili.

Mahitaji ya awali

Unapaswa kuelewa:

Njia mbili za kuingiliana na mkataba mahiri

Kuingiliana na mkataba mahiri kunagawanywa katika makundi mawili:

Kusoma kutoka kwenye mkataba

Kusoma ni operesheni ya bure ambayo haiundi muamala na haibadilishi hali yoyote kwenye mnyororo wa vitalu.

Unaposoma kutoka kwenye mkataba, unauliza tu data ambayo tayari ipo. Kwa mfano:

  • Kuangalia salio la tokeni ya ERC-20
  • Kusoma bei ya sasa kutoka kwenye soko la kubadilishana lililogatuliwa
  • Kupata mmiliki wa NFT

Kwa sababu usomaji haubadilishi hali, haugharimu gesi na unaweza kufanywa na mtu yeyote bila kuhitaji ETH.

Kuandika kwenye mkataba

Kuandika ni operesheni ya kubadilisha hali ambayo inahitaji muamala na inagharimu gesi.

Unapoandika kwenye mkataba, unachochea utendakazi unaobadilisha hali ya mnyororo wa vitalu. Kwa mfano:

  • Kuhamisha tokeni
  • Kubadilishana tokeni kwenye soko la kubadilishana lililogatuliwa
  • Ufuzi wa NFT

Kuandika kila wakati kunahitaji:

  1. Akaunti Inayomilikiwa na Nje (EOA) yenye ETH ya kutosha kwa ajili ya gesi
  2. Muamala uliosainiwa na ufunguo wa siri wa akaunti
  3. Muamala kuchimbwa na kujumuishwa kwenye kitalu

Kwa udhanifu wa akaunti, akaunti ya mkataba mahiri inaweza pia kuanzisha uandishi, na mlipiaji anaweza kulipia gesi kwa niaba ya mtumiaji—hivyo EOA inayoshikilia ETH haihitajiki kwa lazima.

Kuelewa ABI za mkataba

Ili kuingiliana na mkataba mahiri, programu yako inahitaji kujua nini mkataba unaweza kufanya. Hapa ndipo Application Binary Interface (ABI) inapoingia.

ABI ni hati ya JSON inayoelezea:

  • Kila utendakazi ambao mkataba unaonyesha (jina, pembejeo, matokeo)
  • Kila tukio ambalo mkataba unaweza kutoa
  • Jinsi ya kusimba na kusimbua data unapozungumza na mkataba

Fikiria ABI kama mwongozo wa maagizo wa mkataba—bila hiyo, programu yako haijui ni utendakazi gani upo au ni vigezo gani wanavyotarajia.

Wapi pa kupata ABI ya mkataba

  • Mikataba iliyothibitishwa kwenye Etherscan - Etherscan (inafunguka katika kichupo kipya) inaonyesha kiotomatiki ABI kwa msimbo wa chanzo uliothibitishwa
  • Kutoka kwa msanidi programu - miradi mingi huchapisha ABI zao kwenye nyaraka zao au vifurushi vya npm
  • Tengeneza kutoka kwenye chanzo - ikiwa una msimbo wa chanzo wa Solidity, unaweza kuukusanya ili kutoa ABI

Zana na maktaba za kuingiliana na mikataba

Wasanidi programu kwa kawaida hutumia maktaba ya JavaScript/TypeScript kuingiliana na mikataba kutoka kwenye programu ya wavuti, mazingira ya nyuma, au hati.

Maktaba za mteja (JavaScript/TypeScript)

Maktaba za mazingira ya nyuma

Mfano: kusoma salio la tokeni kwa kutumia Viem

Mfano: kutuma muamala kwa kutumia ethers.js

Matukio na kumbukumbu

Mikataba mahiri inaweza kutoa matukio kuashiria kwamba jambo fulani limetokea. Programu yako inaweza kusikiliza matukio haya ili kujibu kwa wakati halisi.

Kuiga miamala

Kabla ya kutuma muamala, unaweza kuuiga ili kuangalia ikiwa utafaulu—na kuona thamani yake ya kurejesha—bila kutumia gesi. Hii ni muhimu kwa kupata makosa mapema na kwa kuhakiki matokeo.

Maktaba nyingi za mteja zinaunga mkono hili kupitia eth_call:

// Kwa kutumia Viem
const result = await client.simulateContract({
  address: contractAddress,
  abi,
  functionName: 'swap',
  args: [amountIn],
  account: userAddress,
})

Mikoba na kusaini

Katika programu tumizi iliyogatuliwa (dapp), mkoba wa mtumiaji (kama MetaMask, Rainbow, au WalletConnect) hushughulikia kusaini. Husimamii funguo za siri moja kwa moja.

Maktaba za mkoba na zana za muunganisho hudhanifu hili ili uweze kuzingatia kujenga mantiki ya programu yako.

Usomaji zaidi