Ruka hadi kwenye maudhui makuu
Change page

Kiwango cha Tokeni cha ERC-20

Utangulizi

Tokeni ni nini?

Tokeni zinaweza kuwakilisha karibu chochote katika Ethereum:

  • pointi za sifa katika jukwaa la mtandaoni
  • ujuzi wa mhusika katika mchezo
  • mali za kifedha kama hisa katika kampuni
  • sarafu ya fiat kama USD
  • aunsi ya dhahabu
  • na zaidi...

Kipengele chenye nguvu kama hiki cha Ethereum lazima kishughulikiwe na kiwango thabiti, sivyo? Hapo ndipo hasa ERC-20 inapotekeleza jukumu lake! Kiwango hiki kinaruhusu wasanidi programu kujenga programu za tokeni zinazoingiliana na bidhaa na huduma zingine. Kiwango cha ERC-20 pia kinatumika kutoa utendaji wa ziada kwa .

ERC-20 ni nini?

ERC-20 inaleta kiwango cha Tokheni Mbadala, kwa maneno mengine, zina sifa inayofanya kila Tokeni iwe sawa kabisa (kwa aina na thamani) na Tokeni nyingine. Kwa mfano, Tokeni ya ERC-20 inafanya kazi kama ETH, ikimaanisha kwamba Tokeni 1 ni na itakuwa sawa na Tokeni nyingine zote.

Mahitaji ya Awali

Kiini

ERC-20 (Ethereum Request for Comments 20), iliyopendekezwa na Fabian Vogelsteller mnamo Novemba 2015, ni Kiwango cha Tokeni kinachotekeleza API kwa ajili ya tokeni ndani ya Mikataba Mahiri.

Mifano ya utendaji ambayo ERC-20 inatoa:

  • kuhamisha tokeni kutoka akaunti moja hadi nyingine
  • kupata salio la sasa la tokeni la akaunti
  • kupata jumla ya usambazaji wa tokeni inayopatikana kwenye mtandao
  • idhinisha ikiwa kiasi cha tokeni kutoka kwenye akaunti kinaweza kutumiwa na akaunti ya mtu wa tatu

Ikiwa Mkataba Mahiri unatekeleza mbinu na matukio yafuatayo unaweza kuitwa Mkataba wa Tokeni wa ERC-20 na, ukishasambazwa, utawajibika kufuatilia tokeni zilizoundwa kwenye Ethereum.

Kutoka EIP-20 (opens in a new tab):

Mbinu

Matukio

event Transfer(address indexed _from, address indexed _to, uint256 _value)
event Approval(address indexed _owner, address indexed _spender, uint256 _value)

Mifano

Hebu tuone jinsi Kiwango kilivyo muhimu sana kurahisisha mambo kwetu kukagua Mkataba wowote wa Tokeni wa ERC-20 kwenye Ethereum. Tunahitaji tu Contract Application Binary Interface (ABI) ili kuunda kiolesura cha Tokeni yoyote ya ERC-20. Kama unavyoona hapa chini tutatumia ABI iliyorahisishwa, ili kuifanya iwe mfano rahisi kueleweka.

Mfano wa Web3.py

Kwanza, hakikisha umesakinisha maktaba ya Python ya Web3.py (opens in a new tab):

pip install web3

Masuala yanayojulikana

Suala la upokeaji wa tokeni za ERC-20

Kufikia tarehe 06/20/2024 angalau tokeni za ERC-20 zenye thamani ya $83,656,418 zilipotea kutokana na suala hili. Kumbuka kwamba utekelezaji halisi wa ERC-20 unakabiliwa na tatizo hili isipokuwa utekeleze seti ya vizuizi vya ziada juu ya kiwango kama ilivyoorodheshwa hapa chini.

Wakati tokeni za ERC-20 zinatumwa kwenye mkataba mahiri ambao haujaundwa kushughulikia tokeni za ERC-20, tokeni hizo zinaweza kupotea kabisa. Hili hutokea kwa sababu mkataba unaopokea hauna utendaji wa kutambua au kujibu tokeni zinazoingia, na hakuna utaratibu katika kiwango cha ERC-20 wa kuarifu mkataba unaopokea kuhusu tokeni zinazoingia. Njia kuu ambazo suala hili hujitokeza ni kupitia:

  1. Utaratibu wa hamisho la tokeni
  • Tokeni za ERC-20 zinahamishwa kwa kutumia fanksheni za transfer au transferFrom
    • Wakati mtumiaji anatuma tokeni kwenye anwani ya mkataba akitumia fanksheni hizi, tokeni zinahamishwa bila kujali kama mkataba unaopokea umeundwa kuzishughulikia
  1. Ukosefu wa arifa
    • Mkataba unaopokea haupokei arifa au wito wa kurudi (callback) kwamba tokeni zimetumwa kwake
    • Ikiwa mkataba unaopokea unakosa utaratibu wa kushughulikia tokeni (k.m., fanksheni mbadala au fanksheni maalum ya kusimamia upokeaji wa tokeni), tokeni zinakwama kabisa katika anwani ya mkataba
  2. Hakuna ushughulikiaji uliojengewa ndani
    • Kiwango cha ERC-20 hakijumuishi fanksheni ya lazima kwa mikataba inayopokea kutekeleza, na kusababisha hali ambapo mikataba mingi inashindwa kusimamia vizuri tokeni zinazoingia

Masuluhisho Yanayowezekana

Ingawa haiwezekani kuzuia suala hili kabisa na ERC-20 kuna mbinu ambazo zingeruhusu kupunguza kwa kiasi kikubwa uwezekano wa upotezaji wa tokeni kwa mtumiaji wa mwisho:

  • Tatizo la kawaida zaidi ni wakati mtumiaji anatuma tokeni kwenye anwani ya mkataba wa tokeni yenyewe (k.m., USDT iliyowekwa kwenye anwani ya mkataba wa tokeni wa USDT). Inapendekezwa kuzuia fanksheni ya transfer(..) ili kutengua majaribio kama haya ya hamisho. Fikiria kuongeza ukaguzi wa require(_to != address(this)); ndani ya utekelezaji wa fanksheni ya transfer(..).
  • Fanksheni ya transfer(..) kwa ujumla haijaundwa kwa ajili ya kuweka tokeni kwenye mikataba. Badala yake, muundo wa approve(..) & transferFrom(..) unatumika kuweka tokeni za ERC-20 kwenye mikataba. Inawezekana kuzuia fanksheni ya hamisho ili kutoruhusu kuweka tokeni kwenye mikataba yoyote kwayo, hata hivyo inaweza kuvunja uoanifu na mikataba inayochukulia kuwa tokeni zinaweza kuwekwa kwenye mikataba kwa kutumia fanksheni ya transfer(..) (k.m., mabwawa ya ukwasi ya Uniswap).
  • Kila wakati chukulia kwamba tokeni za ERC-20 zinaweza kuishia kwenye mkataba wako hata kama mkataba wako haupaswi kupokea yoyote. Hakuna njia ya kuzuia au kukataa amana za bahati mbaya upande wa mpokeaji. Inapendekezwa kutekeleza fanksheni ambayo ingeruhusu kutoa tokeni za ERC-20 zilizowekwa kwa bahati mbaya.
  • Fikiria kutumia viwango mbadala vya tokeni.

Baadhi ya viwango mbadala vimetokana na suala hili kama vile ERC-223 au ERC-1363.

Usomaji zaidi

Viwango vingine vya tokheni mbadala

Mafunzo: Jenga na ERC-20 kwenye Ethereum