Introducere
Ethereum a fost fondat de Vitalik Buterin în 2014, poziționându-se ca o platformă open-source pentru lansarea de aplicații descentralizate (DApps). Multe dintre motivațiile lui Buterin pentru crearea unui nou blockchain au provenit din lipsa de flexibilitate a protocolului Bitcoin.
De la lansare, blockchain-ul Ethereum a atras dezvoltatori, afaceri și antreprenori, dând naștere unei industrii în creștere de utilizatori care lansează contracte inteligente și aplicații distribuite.
În acest articol, ne vom uita la standardul ERC-20, un cadru important pentru crearea de jetoane. Deși este specific rețelei Ethereum, cadrul a inspirat și alte standarde blockchain, cum ar fi BEP-2 al Binance Chain.
Ce este standardul ERC-20?
În Ethereum, un ERC este o solicitare Ethereum pentru comentarii. Acestea sunt documente tehnice care conturează standardele de programare pe Ethereum. Ele nu trebuie confundate cu Ethereum Improvement Proposals (EIP), care, la fel ca BIP-urile Bitcoin, sugerează îmbunătățiri ale protocolului în sine. În schimb, ERC-urile urmăresc să stabilească convenții care să faciliteze interacțiunea aplicațiilor și a contractelor între ele.
Scris de Vitalik Buterin și Fabian Vogelsteller în 2015, ERC-20 propune un format relativ simplu pentru jetoanele bazate pe Ethereum. Urmând schița, dezvoltatorii nu trebuie să reinventeze roata. În schimb, ei pot construi pe o fundație deja folosită în industrie.
Odată ce noi jetoane ERC-20 sunt create, acestea sunt automat interoperabile cu serviciile și software-ul care acceptă standardul ERC-20 (portofele software, portofele hardware, schimburile etc.).
Trebuie remarcat faptul că standardul ERC-20 a fost dezvoltat într-un EIP (în special, EIP-20). Acest lucru s-a întâmplat la câțiva ani după propunerea inițială, datorită utilizării sale pe scară largă. Cu toate acestea, chiar și ani mai târziu, numele „ERC-20” a rămas.
O scurtă recapitulare despre jetoanele Ethereum
Spre deosebire de ETH (criptomoneda nativă a lui Ethereum), jetoanele ERC-20 nu sunt deținute de conturi. Token-urile există doar în cadrul unui contract, care este ca o bază de date autonomă. Specifică regulile pentru jetoane (adică, nume, simbol, divizibilitate) și păstrează o listă care mapează soldurile utilizatorilor la adresele lor Ethereum.
Pentru a muta jetoanele, utilizatorii trebuie să trimită o tranzacție la contract, cerându-i să-și aloce o parte din sold în altă parte. De exemplu, dacă Alice dorește să îi trimită lui Bob 5.000 de BinanceAcademyTokens, ea apelează o funcție din contractul inteligent BinanceAcademyToken, cerându-i să facă acest lucru.

Apelul ei este conținut în ceea ce pare a fi o tranzacție obișnuită Ethereum care plătește 0 ETH la contractul de simbol. Apelul este inclus într-un câmp suplimentar din tranzacție, care specifică ce vrea Alice să facă – în cazul nostru, transferă token-uri către Bob.
Chiar dacă nu trimite eter, ea trebuie să plătească o taxă exprimată în acesta pentru a avea tranzacția inclusă într-un bloc. Dacă nu are ETH, trebuie să obțină câteva înainte de a transfera jetoanele.
Iată un exemplu real al celor de mai sus pe Etherscan: cineva apelează la contractul BUSD. Puteți vedea că jetoanele au fost transferate și a fost plătită o taxă, chiar dacă câmpul Valoare arată că a fost trimis 0 ETH.
Acum că suntem la curent, să aruncăm o privire sub capotă pentru a înțelege mai bine structura unui contract tipic ERC-20.
Cum sunt create jetoanele ERC-20?

Pentru a fi compatibil cu ERC-20, contractul dvs. trebuie să includă șase funcții obligatorii: totalSupply, balanceOf, transfer, transferFrom, aprobare și alocație. În plus, puteți specifica funcții opționale, cum ar fi numele, simbolul și zecimală. S-ar putea să vă fie clar ce fac acele funcții din numele lor. Dacă nu, nu vă faceți griji - le vom descompune.
Mai jos sunt funcțiile așa cum apar în limbajul Solidity creat special de Ethereum.
totalSupply
funcția totalSupply() returnează vizualizarea publică (uint256)Când este apelată de un utilizator, funcția de mai sus returnează oferta totală de jetoane pe care o deține contractul.
echilibrulOf
funcția balanceOf(address _owner) returnează vizualizarea publică (uint256 sold)Spre deosebire de totalSupply, balanceOf preia un parametru (o adresă). Când este apelat, returnează soldul deținerii de jetoane ale acelei adrese. Amintiți-vă că conturile din rețeaua Ethereum sunt publice, așa că puteți interoga soldul oricărui utilizator cu condiția să cunoașteți adresa.
transfer
transfer de funcție (adresă _to, uint256 _value) returnări publice (succes bool)transfer transferă în mod adecvat jetoane de la un utilizator la altul. Aici, furnizați adresa la care doriți să trimiteți și suma de transferat.
Când este apelat, transferul declanșează ceva numit eveniment (transfer de eveniment, în acest caz), care, practic, îi spune blockchain-ului să includă o referință la acesta.
transfer de la
funcția transferFrom(adresa _de la, adresa _la, uint256 _value) returnări publice (succes bool)Funcția transferFrom este o alternativă la îndemână la transfer, care permite puțin mai multă programabilitate în aplicațiile descentralizate. La fel ca transferul, este folosit pentru a muta jetoane, dar acele jetoane nu trebuie neapărat să aparțină persoanei care apelează contractul.
Cu alte cuvinte, puteți autoriza pe cineva – sau alt contract — să transfere fonduri în numele dvs. Un posibil caz de utilizare implică plata pentru servicii bazate pe abonament, în care nu doriți să trimiteți manual o plată în fiecare zi/săptămână/lună. În schimb, lași doar un program să o facă pentru tine.
Această funcție declanșează același eveniment ca și transferul.
aproba
funcția approve (adresă _spender, uint256 _value) returnări publice (bool succes)aproba este o altă funcție utilă din punct de vedere al programabilității. Cu această funcție, puteți limita numărul de jetoane pe care un contract inteligent le poate retrage din soldul dvs. Fără el, riscați ca contractul să funcționeze defectuos (sau să fie exploatat) și să vă furați toate fondurile.
Luați din nou exemplul nostru de model de abonament. Să presupunem că aveți o cantitate imensă de BinanceAcademyTokens și doriți să configurați plăți recurente săptămânale către un DApp de streaming. Sunteți ocupat să citiți conținutul Binance Academy zi și noapte, așa că nu doriți să vă faceți timp în fiecare săptămână pentru a crea o tranzacție manual.
Aveți un sold masiv de BinanceAcademyTokens, depășind cu mult ceea ce este necesar pentru a plăti abonamentul. Pentru a preveni DApp să le epuizeze pe toate, puteți seta o limită cu aprobare. Să presupunem că abonamentul dvs. costă un BinanceAcademyToken pe săptămână. Dacă limitați valoarea aprobată la douăzeci de jetoane, atunci ați putea plăti automat abonamentul timp de cinci luni.
În cel mai rău caz, dacă DApp încearcă să vă retragă toate fondurile sau dacă se găsește o eroare, puteți pierde doar douăzeci de jetoane. Poate că nu este ideal, dar cu siguranță este mai atrăgător decât să-ți pierzi toate proprietățile.
Când este apelat, approve declanșează evenimentul de aprobare. Ca și evenimentul de transfer, acesta scrie date în blockchain.
indemnizatie
alocație de funcție (adresă _proprietar, adresă _cheltuitor) returnări de vizualizare publică (uint256 rămase)alocația poate fi utilizată împreună cu aprobarea. Când ați acordat permisiunea unui contract de a vă gestiona jetoanele, ați putea folosi aceasta pentru a verifica câte mai poate retrage. De exemplu, dacă abonamentul dvs. a folosit douăsprezece dintre cele douăzeci de jetoane aprobate, apelarea funcției de alocație ar trebui să returneze un total de opt.
Funcțiile opționale
Funcțiile discutate anterior sunt obligatorii. Pe de altă parte, numele, simbolul și zecimala nu trebuie incluse, dar vă pot face contractul ERC-20 puțin mai frumos. Respectiv, acestea vă permit să adăugați un nume care poate fi citit de om, să setați un simbol (adică, ETH, BTC, BNB) și să specificați la câte zecimale sunt divizibile jetoanele. De exemplu, jetoanele care sunt folosite ca monede pot beneficia mai mult de a fi mai divizibile decât un simbol care reprezintă proprietatea asupra unei proprietăți.
Consultați acest exemplu pe GitHub pentru a vedea aceste elemente într-un contract real.
Ce pot face jetoanele ERC-20?

Prin reunirea tuturor funcțiilor de mai sus, avem un contract ERC-20. Putem interoga oferta totală, verificăm soldurile, transferăm fonduri și putem acorda permisiuni altor DApps pentru a gestiona jetoanele pentru noi.
O mare parte a atractivității jetoanelor ERC-20 este flexibilitatea acestora. Convențiile stabilite nu limitează dezvoltarea, astfel încât părțile pot implementa caracteristici suplimentare și pot stabili parametri specifici pentru a se potrivi nevoilor lor.
Monede stabile
Monedele stabile (jetoane legate de monede fiat) folosesc adesea standardul de token ERC-20. Tranzacția la contractul BUSD la care am făcut referire mai devreme este un exemplu, iar majoritatea stablecoins-urilor majore sunt, de asemenea, disponibile în acest format.
Pentru o monedă stabilă tipică susținută de fiat, un emitent deține rezerve de euro, dolari etc. Apoi, pentru fiecare unitate din rezerva lor, emite un token. Aceasta înseamnă că, dacă 10.000 USD ar fi încuiați într-un seif, emitentul ar putea crea 10.000 de jetoane, fiecare rambursabil pentru 1 USD.
Acest lucru este destul de ușor de implementat în Ethereum, din punct de vedere tehnic. Un emitent pur și simplu lansează un contract cu 10.000 de jetoane. Apoi, le vor distribui utilizatorilor cu promisiunea că mai târziu vor putea răscumpăra jetoanele pentru o sumă proporțională de monedă fiat.
Utilizatorii pot face o serie de lucruri cu jetoanele lor – pot cumpăra bunuri și servicii sau le pot folosi în DApps. Alternativ, ar putea solicita emitentului să le schimbe imediat. În acest caz, emitentul arde jetoanele returnate (făcându-le inutilizabile) și retrage cantitatea corectă de fiat din rezervele lor.
Contractul care guvernează acest sistem, așa cum s-a menționat mai sus, este relativ simplist. Cu toate acestea, lansarea unei monede stabile necesită multă muncă pe factori externi, cum ar fi logistica, conformitatea cu reglementările etc.
Jetoane de securitate
Jetoanele de securitate sunt similare cu monedele stabile. La nivel de contract, ambele ar putea fi chiar identice, deoarece funcționează în același mod. Distincția are loc la nivelul emitentului. Jetoanele de securitate reprezintă valori mobiliare, cum ar fi acțiuni, obligațiuni sau active fizice. Adesea (deși nu este întotdeauna cazul), ei acordă deținătorului un fel de participație într-o afacere sau bun.
Jetoane utilitare
Jetoanele utilitare sunt probabil cele mai comune tipuri de jetoane găsite astăzi. Spre deosebire de cele două oferte anterioare, acestea nu sunt susținute de nimic. Dacă jetoanele susținute de active sunt ca acțiunile unei companii aeriene, atunci jetoanele de utilitate sunt ca programele de zbor frecvent: au o funcție, dar nu au valoare externă. Jetoanele utilitare pot satisface o multitudine de cazuri de utilizare, servind drept monedă în joc, combustibil pentru aplicații descentralizate, puncte de fidelitate și multe altele.
➠ Vrei să începi cu criptomoneda? Cumpărați eter pe Binance!
Puteți mine jetoane ERC-20?
Puteți extrage eterul (ETH), dar jetoanele nu pot fi extrase - spunem că sunt bătute atunci când sunt create altele noi. Când se lansează un contract, dezvoltatorii distribuie furnizarea conform planurilor și foii de parcurs.
De obicei, acest lucru se face printr-o ofertă inițială de monede (ICO), o ofertă inițială de schimb (IEO) sau o ofertă de jetoane de securitate (STO). Este posibil să întâlniți variații ale acestor acronime, dar aceste concepte sunt destul de asemănătoare. Investitorii trimit eter la adresa contractului și, în schimb, primesc noi token-uri. Banii colectați sunt folosiți pentru a finanța dezvoltarea ulterioară a proiectului. Utilizatorii se așteaptă să își poată folosi token-urile (fie imediat, fie la o dată ulterioară) sau să le revândă pentru profit pe măsură ce proiectul se dezvoltă.
Distribuția de jetoane nu trebuie să fie automatizată. Multe evenimente de crowdfunding permit utilizatorilor să plătească cu o serie de monede digitale diferite (cum ar fi BNB, BTC, ETH și USDT). Soldurile respective sunt apoi alocate adreselor furnizate de utilizatori.
Avantaje și dezavantaje ale jetoanelor ERC-20
Avantajele jetoanelor ERC-20
Fungibil
Jetoanele ERC-20 sunt fungibile - fiecare unitate este interschimbabilă cu alta. Dacă ați deține un BinanceAcademyToken, nu ar conta ce simbol specific aveți. L-ai putea schimba cu al altcuiva și ar fi în continuare identice din punct de vedere funcțional, la fel ca numerarul sau aurul.
Acest lucru este ideal dacă jetonul dvs. își propune să fie o monedă de orice fel. Nu ați dori unități individuale cu trăsături distinse, ceea ce le-ar face nefungibile. Acest lucru ar putea face ca unele jetoane să devină mai – sau mai puțin – valoroase decât altele, subminându-le scopul.
Flexibil
După cum am explorat în secțiunea anterioară, jetoanele ERC-20 sunt extrem de personalizabile și pot fi adaptate la multe aplicații diferite. De exemplu, pot fi folosite ca monedă în joc, în programe de puncte de loialitate, ca obiecte digitale de colecție sau chiar pentru a reprezenta arte plastice și drepturi de proprietate.
Popular
Popularitatea ERC-20 în industria criptomonedei este un motiv extrem de convingător pentru a-l folosi ca model. Există o multitudine de schimburi, portofele și contracte inteligente deja compatibile cu jetoanele nou-lansate. În plus, suportul și documentația pentru dezvoltatori sunt abundente.
Dezavantajele jetoanelor ERC-20
Scalabilitate
Ca și în cazul multor rețele de criptomonede, Ethereum nu este imun la durerile de creștere. În forma sa actuală, nu se scalează bine – încercarea de a trimite o tranzacție la orele de vârf duce la comisioane și întârzieri mari. Dacă lansați un token ERC-20 și rețeaua este aglomerată, utilizarea sa ar putea fi afectată.
Aceasta nu este o problemă exclusivă pentru Ethereum. Mai degrabă, este un compromis necesar în sistemele sigure și distribuite. Comunitatea intenționează să abordeze aceste probleme în migrarea la Ethereum 2.0, care va implementa upgrade-uri precum Ethereum Plasma și Ethereum Casper.
Aflați mai multe despre problemele de scalabilitate în Blockchain Scalability: Sidechains și canale de plată.
Escrocherii
Deși nu este o problemă cu tehnologia în sine, ușurința cu care poate fi lansat un token ar putea fi considerată un dezavantaj în unele privințe. Este nevoie de un efort minim pentru a crea un simbol ERC-20 simplu, ceea ce înseamnă că oricine ar putea face acest lucru - în bine sau în rău.
Ca atare, ar trebui să fiți atenți la ceea ce investiți. Există o serie de scheme Pyramid și Ponzi deghizate în proiecte blockchain. Faceți propria cercetare înainte de a investi pentru a ajunge la propriile concluzii cu privire la legitimitatea unei oportunitati.
ERC-20, ERC-1155, ERC-223, ERC-721 – care este diferența?
ERC-20 a fost primul (și, până în prezent, cel mai popular) standard de jetoane Ethereum, dar nu este în niciun caz singurul. De-a lungul anilor, au apărut multe altele, fie propunând îmbunătățiri ale ERC-20, fie încercând să atingă obiective diferite.
Unele dintre standardele mai puțin comune sunt cele utilizate în jetoanele nefungibile (NFT). Uneori, cazul dvs. de utilizare beneficiază de fapt de a avea jetoane unice cu atribute diferite. Dacă ați vrut să tokenizați o piesă de artă unică, un activ din joc etc., unul dintre aceste tipuri de contract ar putea fi mai atrăgător.
Standardul ERC-721, de exemplu, a fost folosit pentru DApp-ul CryptoKitties extrem de popular. Un astfel de contract oferă un API pentru ca utilizatorii să își creeze propriile jetoane nefungibile și să codifice metadate (imagini, descrieri etc.).
Standardul ERC-1155 ar putea fi văzut ca o îmbunătățire atât pentru ERC-721, cât și pentru ERC-20. Acesta prezintă un standard care acceptă atât jetoane fungibile, cât și nefungibile în același contract.
Alte opțiuni precum ERC-223 sau ERC-621 urmăresc îmbunătățirea gradului de utilizare. Primul implementează măsuri de protecție pentru a preveni transferurile accidentale de jetoane. Acesta din urmă adaugă funcții suplimentare pentru creșterea și scăderea ofertei de jetoane.
Pentru mai multe despre subiectul NFT-urilor, asigurați-vă că consultați A Guide to Crypto Collectibles and Non-Fungible Tokens (NFT-uri).
Gânduri de închidere
Standardul ERC-20 a dominat spațiul cripto-activelor de ani de zile și nu este greu de înțeles de ce. Cu relativă uşurinţă, oricine poate implementa un contract simplu pentru a se potrivi unei game largi de cazuri de utilizare (jetoane utilitare, monede stabile etc.). Acestea fiind spuse, ERC-20 nu are unele dintre caracteristicile aduse la viață de alte standarde. Rămâne de văzut dacă tipurile ulterioare de contracte îi vor lua locul.

