Téigh ar aghaidh chuig an bpríomhábhar
Change page

ERC-20 Caighdeán Chomhartha

Réamhrá

Cad is Comhartha ann?

Is féidir le comharthaí ionadaíocht a dhéanamh ar bheagnach rud ar bith in Ethereum:

  • pointí clú ar ardán ar líne
  • scileanna carachtair i gcluiche
  • sócmhainní airgeadais amhail scair i gcuideachta
  • airgeadra fiat cosúil le USD
  • unsa óir
  • agus tuilleadh...

Nach mór gné chomh chumhachtach de Ethereum a láimhseáil le caighdeán láidir? Sin é go díreach an ról atá ag ERC-20! Ligeann an caighdeán seo d’fhorbróirí feidhmchláir chomharthaí a thógáil atá idir-inoibritheach le táirgí agus seirbhísí eile. Úsáidtear an caighdeán ERC-20 freisin chun feidhmiúlacht bhreise a sholáthar do .

Cad é ERC-20?

Tugann an ERC-20 isteach caighdeán le haghaidh Comharthaí Idirmhalartacha, i bhfocail eile, tá maoin acu a fhágann go bhfuil gach Comhartha go díreach mar an gcéanna (i gcineál agus luach) le Comhartha eile. Mar shampla, feidhmíonn Comhartha ERC-20 díreach cosúil leis an ETH, rud a chiallaíonn go bhfuil 1 Chomhartha cothrom i gcónaí le gach Comhartha eile.

Réamhriachtanais

Comhlacht

Is Caighdeán Comhartha é an ERC-20 (Iarratas Ethereum ar Thuairimí 20), a mhol Fabian Vogelsteller i mí na Samhna 2015. Cuireann sé API le haghaidh comharthaí laistigh de Chonarthaí Cliste i bhfeidhm.

Feidhmiúlachtaí samplacha a sholáthraíonn ERC-20:

  • comharthaí a aistriú ó chuntas amháin go cuntas eile
  • iarmhéid comharthaíochta reatha an chuntais a fháil
  • soláthar iomlán an chomhartha atá ar fáil ar an líonra a fháil
  • a cheadú cibé an féidir le cuntas tríú páirtí méid dearbhán ó chuntas a chaitheamh

Má chuireann Conradh Cliste na modhanna agus na himeachtaí seo a leanas i bhfeidhm is féidir Conradh Comhartha ERC-20 a thabhairt air agus, nuair a imscartar é, beidh sé freagrach as súil a choinneáil ar na comharthaí cruthaithe ar Ethereum.

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

Modhanna

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)
Taispeáin gach rud
Cóip

Imeachtaí

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

Samplaí

Feicimis conas atá Caighdeán chomh tábhachtach chun go mbeadh sé simplí dúinn iniúchadh a dhéanamh ar aon Chonradh Chomhartha ERC-20 ar Ethereum. Níl uainn ach Comhéadan Dénártha Iarratas Conartha (ABI) chun comhéadan a chruthú d’aon Chomhartha ERC-20. Mar atá le feiceáil thíos bainfimid úsáid as ABI simplithe, chun sampla frithchuimilte íseal a dhéanamh de.

Sampla Web3.py

Ar dtús, déan cinnte go bhfuil Web3.py(opens in a new tab) leabharlann Python suiteáilte agat:

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" # Wrapped ether (WETH)
8
9acc_address = "0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11" # Uniswap V2: DAI 2
10
11# This is a simplified Contract Application Binary Interface (ABI) of an ERC-20 Token Contract.
12# It will expose only the methods: balanceOf(address), decimals(), symbol() and 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)
Taispeáin gach rud
Cóip

Saincheisteanna aitheanta

Saincheist ghlactha comhartha ERC-20

Nuair a sheoltar comharthaí ERC-20 chuig conradh cliste nach bhfuil deartha chun comharthaí ERC-20 a láimhseáil, is féidir na comharthaí sin a chailliúint go buan. Tarlaíonn sé seo toisc nach bhfuil an fheidhmiúlacht ag an gconradh fála chun na comharthaí isteach a aithint nó freagairt dóibh, agus níl aon mheicníocht sa chaighdeán ERC-20 chun fógra a thabhairt don chonradh fála faoi na comharthaí isteach. Is iad na príomhbhealaí a dtagann an cheist seo i gcrích ná trí:

  1. Meicníocht aistrithe comhartha
  • Aistrítear comharthaí ERC-20 ag baint úsáide as na feidhmeanna aistrithe nó transferFrom
    • Nuair a sheolann úsáideoir comharthaí chuig seoladh conartha ag baint úsáide as na feidhmeanna seo, aistrítear na comharthaí gan aird ar an bhfuil an conradh glactha deartha chun iad a láimhseáil
  1. Easpa fógra
    • Ní fhaigheann an conradh fála fógra nó aisghlao go bhfuil comharthaí seolta chuige
    • Mura bhfuil meicníocht ag an gconradh fála chun comharthaí a láimhseáil (m.sh. feidhm chúltaca nó feidhm thiomnaithe chun glacadh comharthaí a bhainistiú), tá na comharthaí i bhfostú go héifeachtach i seoladh an chonartha
  2. Gan láimhseáil ionsuite
    • Ní áirítear i gcaighdeán ERC-20 feidhm shainordaitheach chun conarthaí a fháil le cur chun feidhme, rud a fhágann nach féidir le go leor conarthaí comharthaí isteach a bhainistiú i gceart

D'eascair roinnt caighdeán malartacha as an gceist seo ar nós ERC-223

Tuilleadh léitheoireachta

Caighdeáin chomharthaí idirmhalartacha eile

An raibh an t-alt seo cabhrach?