Ruka kwenda kwenye maudhui makuu
Change page

ERC-20 ishara kiwango

Ukurasa ulihaririwa mwisho: 26 Februari 2026

Utangulizi

Ishara Ni Nini?

Ishara inaweza kuwakilisha kitu chochote katika Ethereum:

  • sifa hatua katika jukwaa Mtandao
  • ujuzi wa tabia katika mchezo
  • mali ya kifedha kama sehemu katika kampuni
  • sarafu ya fedha kama USD
  • pauni moja ya dhahabu
  • na zaidi...

Kama kipengele nguvu ya Ethereum lazima kuangaliwa na kiwango imara, haki? Hiyo ni hasa ambapo ERC-20 ina jukumu yake! Kiwango hiki kuruhusu watengenezaji kujenga maombi ishara kwamba ni kulingana na bidhaa nyingine na huduma. Kiwango cha ERC-20 pia hutumiwa kutoa utendaji zaidi kwa .

ERC-20 ni nini?

Ya ERC-20 utangulizi kiwango kwa badilishwa ishara, kwa maneno mengine, wana mali ambayo kueneza kila ishara kuwa hasa sawa (katika aina na thamani) kama ishara nyingine. Kwa mfano, ERC-20 ishara vitendo tu kama ETH, maana yake ni kwamba 1 ishara ni na siku zote itakuwa sawa na ishara nyingine zote.

Mahitaji ya awali

Mwili

ERC-20 (Ethereum Ombi la Maoni 20), kupendekeza na Fabian Vogelsteller mnamo Novemba 2015, ni Kiwango cha ishara ambacho kutekeleza API kwa ishara ndani ya Mikataba erevu.

Mfano utendaji ERC-20 hutoa:

  • kuhamisha ishara kutoka hifadhi ya fedha moja hadi nyingine
  • kupata usawa wa sasa ishara ya hifadhi ya fedha
  • kupata ugavi jumla ya ishara inapatikana kwenye Mtandao
  • kupitisha kama kiasi cha ishara kutoka hifadhi ya fedha inaweza kutumika kwa hifadhi ya mtu wa tatu

Kama erevu mkataba kutekeleza mbinu kufuatia na matukio inaweza kuitwa ERC-20 ishara ya mkataba na, mara moja kupelekwa, ni itakuwa na jukumu la kufuatilia ishara iliyoundwa kwenye Ethereum.

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

Mbinu

1function name() public view returns (string)
2function symbol() public view returns (string)
3function decimals() public view returns (uint8)
4function totalSupply() public view returns (uint256)
5function balanceOf(address _owner) public view returns (uint256 balance)
6function transfer(address _to, uint256 _value) public returns (bool success)
7function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
8function approve(address _spender, uint256 _value) public returns (bool success)
9function allowance(address _owner, address _spender) public view returns (uint256 remaining)
Onyesha yote

Matukio

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

Mifano

Hebu angalia jinsi kiwango ni muhimu sana kufanya jambo rahisi kwa ajili yetu ya kukagua yoyote ERC-20 ishara ya mkataba juu ya Ethereum. Sisi tu haja ya Mkataba wa Maombi jozi Mtandao (ABI) kujenga Mtandao kwa yoyote ERC-20 ishara. Ama unaweza Tazama chini kutumia ABI rahisi, kuifanya mfano wa msuguano mdogo.

Mfano wa Web3.py

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

1pip install web3
1from web3 import Web3
2
3
4w3 = Web3(Web3.HTTPProvider("https://cloudflare-eth.com"))
5
6dai_token_addr = "0x6B175474E89094C44Da98b954EedeAC495271d0F" # DAI
7weth_token_addr = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" # Ether iliyofungwa (WETH)
8
9acc_address = "0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11" # Uniswap V2: DAI 2
10
11# Huu ni Kiolesura Kilichorahisishwa cha Programu ya Mkataba (ABI) ya Mkataba wa Tokeni wa ERC-20.
12# Itaonyesha tu mbinu: balanceOf(address), decimals(), symbol() na totalSupply()
13simplified_abi = [
14 {
15 'inputs': [{'internalType': 'address', 'name': 'account', 'type': 'address'}],
16 'name': 'balanceOf',
17 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
18 'stateMutability': 'view', 'type': 'function', 'constant': True
19 },
20 {
21 'inputs': [],
22 'name': 'decimals',
23 'outputs': [{'internalType': 'uint8', 'name': '', 'type': 'uint8'}],
24 'stateMutability': 'view', 'type': 'function', 'constant': True
25 },
26 {
27 'inputs': [],
28 'name': 'symbol',
29 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}],
30 'stateMutability': 'view', 'type': 'function', 'constant': True
31 },
32 {
33 'inputs': [],
34 'name': 'totalSupply',
35 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
36 'stateMutability': 'view', 'type': 'function', 'constant': True
37 }
38]
39
40dai_contract = w3.eth.contract(address=w3.to_checksum_address(dai_token_addr), abi=simplified_abi)
41symbol = dai_contract.functions.symbol().call()
42decimals = dai_contract.functions.decimals().call()
43totalSupply = dai_contract.functions.totalSupply().call() / 10**decimals
44addr_balance = dai_contract.functions.balanceOf(acc_address).call() / 10**decimals
45
46# DAI
47print("===== %s =====" % symbol)
48print("Total Supply:", totalSupply)
49print("Addr Balance:", addr_balance)
50
51weth_contract = w3.eth.contract(address=w3.to_checksum_address(weth_token_addr), abi=simplified_abi)
52symbol = weth_contract.functions.symbol().call()
53decimals = weth_contract.functions.decimals().call()
54totalSupply = weth_contract.functions.totalSupply().call() / 10**decimals
55addr_balance = weth_contract.functions.balanceOf(acc_address).call() / 10**decimals
56
57# WETH
58print("===== %s =====" % symbol)
59print("Total Supply:", totalSupply)
60print("Addr Balance:", addr_balance)
Onyesha yote

Masuala yanayojulikana

Suala la upokeaji wa tokeni ya ERC-20

Kufikia 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 vikwazo vya ziada juu ya kiwango kama ilivyoorodheshwa hapa chini.

Wakati ishara za ERC-20 kutumwa kwa mkataba mzuri ambao hakuna iliyoundwa kushughulikia ishara za ERC-20, ishara hizo zinaweza kupotea kabisa. Hii hutokea kwa sababu ya kupokea mkataba hana utendaji wa kutambua au kujibu ishara inayoingia, na hakuna utaratibu katika ERC-20 kiwango kuwajulisha kupokea mkataba kuhusu ishara inayoingia. Njia kuu suala hili inachukua sura ni kupitia:

  1. Ishara uhamisho utaratibu
  • ERC-20 ishara ni kuhamisha kwa kutumia uhamisho au uhamisho kutoka kazi
    • Wakati mtumiaji tuma ishara kwa anwani ya mkataba kwa kutumia kazi hizi, ishara ni kuhamisha bila kujali kama mkataba kupokea ni iliyoundwa kushughulikia yao
  1. Ukosefu wa taarifa
    • Mkataba kupokea haina kupokea taarifa au wito nyuma kwamba ishara wamekuwa alituma yake
    • Kama mkataba kupokea haina utaratibu wa kushughulikia ishara (kwa mfano, kazi ya kurudi au kazi ya kujitolea kusimamia mapokezi ishara), ishara ni ufanisi kukwama katika anwani ya mkataba
  2. Hakuna kujengwa katika utunzaji
    • Kiwango ERC-20 haina ni pamoja na kazi ya lazima kwa ajili ya kupokea mikataba ya kutekeleza, na kusababisha hali ambapo mikataba mengi ni hawawezi kusimamia ishara inayokuja vizuri

Suluhisho inawezekana

Wakati haiwezekani kuzuia suala hili na ERC-20 kabisa kuna mbinu ambayo kuruhusu kwa kiasi kikubwa kupunguza uwezekano wa kupoteza ishara kwa mtumiaji wa mwisho:

  • Tatizo la kawaida zaidi ni wakati mtumiaji anapotuma tokeni kwenye anwani ya mkataba wa tokeni yenyewe (k.m., USDT imewekwa kwenye anwani ya mkataba wa tokeni ya USDT). Inapendekezwa kuzuia kazi ya transfer(..) ili kurudisha majaribio kama hayo ya uhamisho. Fikiria kuongeza uhakiki wa require(_to != address(this)); ndani ya utekelezaji wa kazi ya transfer(..).
  • Kazi ya transfer(..) kwa ujumla haikuundwa kwa ajili ya kuweka tokeni kwenye mikataba. kukubali(..) Mfumo wa & transferFrom(..)hutumika kuweka tokeni za ERC-20 kwenye mikataba badala yake. Inawezekana kuzuia kazi ya uhamisho ili kutoruhusu kuweka tokeni kwenye mikataba yoyote nayo, hata hivyo inaweza kuvunja uoanifu na mikataba ambayo inachukulia kuwa tokeni zinaweza kuwekwa kwenye mikataba kwa kutumia kazi yatrasnfer(..)` (k.m., mabwawa ya ukwasi ya Uniswap).
  • Njia kudhani kwamba ERC-20 ishara inaweza kumaliza katika mkataba wako hata kama mkataba huo si lazima milele kupokea yoyote. Hakuna njia ya kuzuia au kukataa amana ya bahati mbaya juu ya mwisho wa wapokeaji. Kushauriwa kutekeleza kazi ambayo kuruhusu kuchimba ishara za ERC-20 zilizowekwa kwa bahati mbaya.
  • Fikiria kutumia viwango vya ishara mabadala.

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

Masomo zaidi

Viwango vingine vya tokeni vinavyoweza kubadilishwa

Je! makala haya yamekusaidia?