Wprowadzenie Do Token贸w ERC-20
Strona G艂贸wna
Artyku艂y
Wprowadzenie Do Token贸w ERC-20

Wprowadzenie Do Token贸w ERC-20

艢rednio zaawansowany
Opublikowane Jul 31, 2020Zaktualizowane Dec 28, 2022
12m

Spis Tre艣ci


Wprowadzenie

Ethereum zosta艂o za艂o偶one przez Vitalika Buterina w 2014 roku, pozycjonuj膮c si臋 jako platforma聽open-source do uruchamiania zdecentralizowanych aplikacji (DApps). Motywacja Buterina do stworzenia nowego聽blockchaina wynika艂a z braku elastyczno艣ci protoko艂u聽Bitcoina.
Od momentu uruchomienia, blockchain Ethereum przyci膮gn膮艂 programist贸w, firmy i przedsi臋biorc贸w, daj膮c pocz膮tek rosn膮cej bran偶y u偶ytkownik贸w uruchamiaj膮cych聽smart kontrakty i aplikacje rozproszone.
W tym artykule przyjrzymy si臋 standardowi聽ERC-20, wa偶nej platformie programistycznej tworzenia聽token贸w. Chocia偶 jest ona specyficzna dla sieci Ethereum, to zainspirowa艂a r贸wnie偶 inne standardy blockchain, takie jak聽BEP-2 Binance Chain.


Czym jest standard ERC-20?

W Ethereum ERC oznacza Ethereum Request for Comments. S膮 to dokumenty techniczne, kt贸re przedstawiaj膮 standardy programowania w Ethereum. Nie nale偶y ich myli膰 z Ethereum Improvement Proposals (EIP), kt贸re podobnie jak BIP Bitcoina sugeruj膮 ulepszenia samego protoko艂u. Zamiast tego ERC d膮偶膮 do ustanowienia konwencji, kt贸ra u艂atwi wzajemn膮 interakcj臋 mi臋dzy aplikacjami i kontraktami.

Stworzone przez Vitalika Buterina i Fabiana Vogelstellera w 2015 roku, ERC-20 proponuje stosunkowo prosty format token贸w opartych na Ethereum. Post臋puj膮c zgodnie z konspektem, programi艣ci nie musz膮 na nowo odkrywa膰 ko艂a. Zamiast tego mog膮 zbudowa膰 na fundamencie, kt贸ry jest ju偶 u偶ywany w ca艂ej bran偶y.

Po utworzeniu nowych token贸w ERC-20 s膮 one automatycznie interoperacyjne z us艂ugami i oprogramowaniem obs艂uguj膮cym standard ERC-20 (portfele typu software,聽portfele typu hardware,聽gie艂dy itp.).

Nale偶y zauwa偶y膰, 偶e standard ERC-20 zosta艂 rozwini臋ty w EIP (w szczeg贸lno艣ci EIP-20). Sta艂o si臋 to kilka lat po pierwotnej propozycji ze wzgl臋du na jej szerokie zastosowanie. Jednak nawet po latach nazwa 鈥濫RC-20鈥 zosta艂a.


Szybkie podsumowanie token贸w Ethereum

W przeciwie艅stwie do ETH (natywna kryptowaluta Ethereum) tokeny ERC-20 nie s膮 przechowywane na kontach. Tokeny istniej膮 tylko w kontrakcie, kt贸ry przypomina samodzieln膮 baz臋 danych. Okre艣la zasady token贸w (tj. nazw臋, symbol, podzielno艣膰) i prowadzi list臋, kt贸ra mapuje salda u偶ytkownik贸w na ich adresy Ethereum.

Chc膮c przenie艣膰 tokeny, u偶ytkownicy musz膮 wys艂a膰 transakcj臋 do kontraktu, prosz膮c go o alokacj臋 cz臋艣ci salda w inne miejsce. Na przyk艂ad, je艣li Alice chce wys艂a膰 Bobowi 5,000 Token贸w Binance Academy, wywo艂uje funkcj臋 wewn膮trz smart kontraktu Tokena Binance Academy z pro艣b膮 o zrobienie tego.



Jej wezwanie jest zawarte w czym艣, co wydaje si臋 by膰 zwyk艂膮 transakcj膮 Ethereum, kt贸ra p艂aci 0 ETH kontraktowi tokenu. Wywo艂anie zawarte jest w dodatkowym polu w transakcji, kt贸re okre艣la, co Alice chce zrobi膰 鈥撀爓 naszym przypadku przes艂a膰 tokeny do Boba.

Mimo 偶e nie wysy艂a ETH, musi zap艂aci膰 denominowan膮 w nim op艂at臋, aby jej transakcja zosta艂a uwzgl臋dniona w聽bloku. Je艣li nie ma ETH, musi je zdoby膰 przed przeniesieniem token贸w.
Oto realny przyk艂ad na Etherscan: kto艣 kupuje kontrakt BUSD. Mo偶esz zobaczy膰, 偶e tokeny zosta艂y przekazane i zap艂acono op艂at臋, mimo 偶e pole聽Warto艣膰聽pokazuje, 偶e wys艂ano 0 ETH.

Teraz gdy jeste艣my na bie偶膮co, sp贸jrzmy pod mask臋, aby lepiej zrozumie膰 struktur臋 typowego kontraktu ERC-20.聽


Jak powstaj膮 tokeny ERC-20?



Aby Tw贸j kontrakt by艂 zgodny z ERC-20, musi zawiera膰 sze艣膰 obowi膮zkowych funkcji: totalSupply, balanceOf, transfer, transferFrom, approve i allowance. Ponadto mo偶na okre艣li膰 funkcje opcjonalne, takie jak name, symbol i decimal. Mo偶e by膰 dla Ciebie jasne, co robi膮 te funkcje z ich nazw. Je艣li nie, nie martw si臋 鈥 rozwiniemy je.聽

Poni偶ej znajduj膮 si臋 funkcje, kt贸re pojawiaj膮 si臋 w specjalnie zbudowanym j臋zyku Ethereum, Solidity.


totalSupply

function totalSupply() public view returns (uint256)
Wywo艂ana przez u偶ytkownika, powy偶sza funkcja zwraca ca艂kowit膮 poda偶 token贸w, kt贸re zawiera kontrakt.


balanceOf聽

function balanceOf(address _owner) public view returns (uint256 balance)
W przeciwie艅stwie do totalSupply, balanceOf przyjmuje parametr (adres). Po wywo艂aniu zwraca saldo zasob贸w tokena tego adresu. Pami臋taj, 偶e konta w sieci Ethereum s膮 publiczne, wi臋c mo偶esz sprawdzi膰 saldo dowolnego u偶ytkownika, pod warunkiem, 偶e znasz adres.


transfer

function transfer(address _to, uint256 _value) public returns (bool success)
transfer trafnie przenosi tokeny od jednego u偶ytkownika do drugiego. Tutaj podajesz adres, na kt贸ry chcesz wys艂a膰 i kwot臋 do przelewu.
Po wywo艂aniu transfer wyzwala co艣, co nazywa si臋 zdarzeniem (w tym przypadku zdarzenie transferu), w zasadzie m贸wi膮c blockchainowi, aby zawiera艂 odniesienie do niego.


transferFrom

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
Funkcja transferFrom to wygodna alternatywa dla transferu, kt贸ra umo偶liwia nieco wi臋ksz膮 programowalno艣膰 w zdecentralizowanych aplikacjach. Podobnie jak transfer, s艂u偶y do przenoszenia token贸w, ale te tokeny niekoniecznie musz膮 nale偶e膰 do osoby kupuj膮cej kontrakt. 聽

Innymi s艂owy, mo偶esz upowa偶ni膰 kogo艣 鈥撀爈ub inny kontrakt聽鈥 do przesy艂ania 艣rodk贸w w Twoim imieniu. Obejmuje to na przyk艂ad p艂acenie za us艂ugi oparte na subskrypcji, w przypadku kt贸rych nie chcesz r臋cznie wysy艂a膰 p艂atno艣ci ka偶dego dnia/tygodnia/miesi膮ca. Zamiast tego po prostu pozwalasz programowi zrobi膰 to za Ciebie.

Ta funkcja wyzwala to samo zdarzenie co transfer.


approve

function approve(address _spender, uint256 _value) public returns (bool success)
approve to kolejna u偶yteczna funkcja z punktu widzenia programowalno艣ci. Dzi臋ki niej mo偶esz ograniczy膰 liczb臋 token贸w, kt贸re inteligentny kontrakt mo偶e pobra膰 z Twojego salda. Bez tego ryzykujesz, 偶e kontrakt nie b臋dzie dzia艂a膰 (lub zostanie wykorzystany) i Twoje fundusze zostan膮 skradzione.聽
We藕my ponownie przyk艂ad modelu subskrypcji. Za艂贸偶my, 偶e masz ogromn膮 liczb臋 Token贸w Binance Academy i chcesz skonfigurowa膰 cotygodniowe p艂atno艣ci cykliczne do streamingowej聽DApp. Jeste艣 zaj臋ty czytaniem artyku艂贸w Akademii Binance dzie艅 i noc, wi臋c nie chcesz co tydzie艅 po艣wi臋ca膰 czasu na r臋czne tworzenie transakcji.
Posiadasz ogromne saldo Token贸w Binance Academy, znacznie przekraczaj膮ce to, co jest potrzebne do op艂acenia subskrypcji. Aby zapobiec wyczerpaniu ich wszystkich przez DApp, mo偶esz ustawi膰 limit za pomoc膮 funkcji approve. Za艂贸偶my, 偶e Twoja subskrypcja kosztuje jeden Token Binance Academy tygodniowo. Je艣li ograniczysz zatwierdzon膮 warto艣膰 do dwudziestu token贸w, mo偶esz automatycznie op艂aci膰 subskrypcj臋 przez pi臋膰 miesi臋cy.

W najgorszym przypadku, je艣li DApp spr贸buje wyp艂aci膰 wszystkie Twoje 艣rodki lub je艣li zostanie znaleziony b艂膮d, mo偶esz straci膰 tylko dwadzie艣cia token贸w. Mo偶e nie jest to idealne rozwi膮zanie, ale z pewno艣ci膮 jest bardziej atrakcyjne ni偶 utrata ca艂ego maj膮tku.

Po wywo艂aniu approve wyzwala zdarzenie zatwierdzenia. Podobnie jak zdarzenie transferu, zapisuje dane w 艂a艅cuchu blok贸w.


allowance聽

function allowance(address _owner, address _spender) public view returns (uint256 remaining)
allowance mo偶e by膰 u偶ywany w po艂膮czeniu z approve. Po udzieleniu kontraktowi zgody na zarz膮dzanie swoimi tokenami w umowie mo偶esz sprawdzi膰, ile z nich mo偶e jeszcze wycofa膰. Na przyk艂ad, je艣li Twoja subskrypcja wyczerpa艂a dwana艣cie z dwudziestu zatwierdzonych token贸w, wywo艂anie funkcji allowance powinno zwr贸ci膰 艂膮cznie osiem.


Funkcje opcjonalne

Om贸wione wcze艣niej funkcje s膮 obowi膮zkowe. Z drugiej strony, name, symbol i decimal nie musz膮 by膰 uwzgl臋dniane, ale mog膮 sprawi膰, 偶e Tw贸j kontrakt ERC-20 b臋dzie nieco 艂adniejszy. Odpowiednio, pozwalaj膮 one na dodanie czytelnej dla cz艂owieka nazwy, ustawienie symbolu (np. ETH, BTC, BNB) oraz okre艣lenie, na ile miejsc dziesi臋tnych tokeny s膮 podzielne. Na przyk艂ad tokeny u偶ywane jako waluty mog膮 skorzysta膰 na tym, 偶e s膮 bardziej podzielne ni偶 token, kt贸ry reprezentuje w艂asno艣膰 nieruchomo艣ci.


Sprawd藕 ten聽przyk艂ad w serwisie GitHub, aby zobaczy膰 te elementy w prawdziwym kontrakcie.


Co mog膮 zrobi膰 tokeny ERC-20?



艁膮cz膮c wszystkie powy偶sze funkcje, otrzymali艣my kontrakt ERC-20. Mo偶emy zapyta膰 o聽ca艂kowit膮 poda偶, sprawdzi膰 salda, przela膰 艣rodki i udzieli膰 pozwolenia innym聽DApps'om na zarz膮dzanie naszymi tokenami.

Du偶膮 cz臋艣ci膮 atrakcyjno艣ci token贸w ERC-20 jest ich elastyczno艣膰. Przedstawione konwencje nie ograniczaj膮 rozwoju, wi臋c strony mog膮 wdra偶a膰 dodatkowe funkcje i ustawia膰 okre艣lone parametry w zale偶no艣ci od swoich potrzeb.


Stablecoiny

Stablecoiny (tokeny powi膮zane z聽walutami fiducjarnymi) cz臋sto u偶ywaj膮 standardu token贸w ERC-20. Transakcja do kontraktu BUSD, o kt贸rym wspominali艣my wcze艣niej, jest jednym z przyk艂ad贸w. Wi臋kszo艣膰 g艂贸wnych stablecoin贸w jest r贸wnie偶 dost臋pna w tym formacie.

W przypadku typowego stablecoina zabezpieczonego w walucie fiat, emitent posiada rezerwy w euro, dolarach itp. Nast臋pnie dla ka偶dej jednostki z rezerwy emituje token. Oznacza to, 偶e gdyby 10,000 USD zosta艂o zamkni臋te w skarbcu, emitent m贸g艂by stworzy膰 10,000 token贸w, z kt贸rych ka偶dy mo偶e zosta膰 wymieniony na 1 USD.

Technicznie rzecz bior膮c, jest to do艣膰 艂atwe do wdro偶enia w Ethereum. Wystawca po prostu uruchamia kontrakt z 10,000 tokenami. Nast臋pnie przekazuje je u偶ytkownikom z obietnic膮, 偶e b臋d膮 mogli p贸藕niej wymieni膰 je na proporcjonaln膮 kwot臋 w walucie fiducjarnej.聽

U偶ytkownicy s膮 w stanie robi膰 wiele rzeczy za pomoc膮 swoich token贸w 鈥 kupowa膰 towary i us艂ugi lub u偶ywa膰 ich w DApps. Ewentualnie mog膮 za偶膮da膰 od emitenta ich natychmiastowej wymiany. W takim przypadku emitent聽spala zwr贸cone tokeny (czyni膮c je bezu偶ytecznymi) i pobiera odpowiedni膮 kwot臋 fiat z ich rezerw.

Kontrakt reguluj膮cy ten system, jak wspomniano powy偶ej, jest stosunkowo uproszczony. Jednak uruchomienie stablecoina wymaga du偶o pracy nad czynnikami zewn臋trznymi, takimi jak logistyka, zgodno艣膰 z przepisami itp.


Token akcyjne

Tokeny akcyjne s膮 podobne do stablecoin贸w. Na poziomie kontraktu oba mog膮 by膰 nawet identyczne, poniewa偶 dzia艂aj膮 w ten sam spos贸b. Rozr贸偶nienie nast臋puje na poziomie emitenta. Tokeny zabezpieczaj膮ce reprezentuj膮 papiery warto艣ciowe, takie jak akcje, obligacje lub aktywa fizyczne. Cz臋sto (cho膰 nie zawsze tak jest) daj膮 posiadaczowi jaki艣 udzia艂 w biznesie lub aktywie.


Tokeny u偶ytkowe

Tokeny u偶ytkowe nale偶膮 obecnie do najpopularniejszego rodzaju token贸w. W przeciwie艅stwie do poprzednich dw贸ch typ贸w, te nie s膮 niczym poparte lub zabezpieczone. Je艣li tokeny zabezpieczone aktywami s膮 jak akcje w firmie lotniczej, w贸wczas tokeny u偶ytkowe s膮 jak programy dla os贸b cz臋sto podr贸偶uj膮cych: pe艂ni膮 funkcj臋, ale nie maj膮 warto艣ci zewn臋trznej. Tokeny u偶ytkowe mog膮 s艂u偶y膰 do niezliczonych przypadk贸w u偶ycia, na przyk艂ad, jako聽waluta w grze, paliwo dla zdecentralizowanych aplikacji, punkty lojalno艣ciowe i wiele wi臋cej.



Czy mo偶esz wydobywa膰 tokeny ERC-20?

Mo偶esz wydobywa膰 ether (ETH), ale nie zrobisz tego samego z tokenami 鈥 m贸wimy, 偶e s膮 one wybijane, gdy tworzy si臋 nowe. Po uruchomieniu kontraktu deweloperzy rozdzielaj膮 dostawy zgodnie ze swoimi planami i harmonogramem.
Zwykle odbywa si臋 to za po艣rednictwem聽Initial Coin Offering (ICO),聽Initial Exchange Offering (IEO) lub Security Token Offering (STO). Mo偶esz napotka膰 r贸偶ne odmiany tych akronim贸w, ale poj臋cia te s膮 do艣膰 podobne. Inwestorzy wysy艂aj膮 ETH na adres kontraktu i w zamian otrzymuj膮 nowe tokeny. Zebrane pieni膮dze s膮 przeznaczone na dalszy rozw贸j projektu. U偶ytkownicy oczekuj膮, 偶e b臋d膮 mogli u偶ywa膰 swoich token贸w (natychmiast lub p贸藕niej) lub odsprzedawa膰 je z zyskiem w miar臋 rozwoju projektu.

Dystrybucja tokenu nie musi by膰 zautomatyzowana. Wiele wydarze艅 zwi膮zanych z finansowaniem spo艂eczno艣ciowym umo偶liwia u偶ytkownikom p艂acenie za pomoc膮 szeregu r贸偶nych walut cyfrowych (takich jak BNB, BTC, ETH i USDT). Nast臋pnie odpowiednie salda s膮 przypisywane do adres贸w podanych przez u偶ytkownik贸w.


Zalety i wady token贸w ERC-20

Zalety token贸w ERC-20

Zamienne

Tokeny ERC-20 s膮聽zamienne 鈥 ka偶da jednostka jest wymienna z inn膮. Je艣li posiadasz Tokeny Binance Academy, nie b臋dzie mia艂o znaczenia, jaki konkretny token trzymasz w swoim portfelu. Mo偶esz go wymieni膰 na dowolny inny, a nadal b臋d膮 funkcjonalnie identyczne - tak jak got贸wka czy z艂oto.

Jest to idealne rozwi膮zanie, je艣li Tw贸j token ma by膰 jak膮艣 walut膮. Nie chcia艂by艣 pojedynczych jednostek z wyr贸偶niaj膮cymi si臋 cechami, co sprawi艂oby, 偶e nie by艂yby zamienne. Mo偶e to spowodowa膰, 偶e niekt贸re tokeny stan膮 si臋 mniej lub bardziej warto艣ciowe ni偶 inne, podwa偶aj膮c ich cel.


Elastyczne

Jak przeanalizowali艣my w poprzedniej sekcji, tokeny ERC-20 s膮 wysoce konfigurowalne i mog膮 by膰 dostosowywane do wielu r贸偶nych aplikacji. Na przyk艂ad nic nie stoi na przeszkodzie, aby u偶ywa膰 ich jako waluty w grze, w programach lojalno艣ciowych, jako聽cyfrowych przedmiot贸w kolekcjonerskich, a nawet do reprezentowania dzie艂 sztuki i praw w艂asno艣ci.


Popularne

Popularno艣膰 ERC-20 w bran偶y kryptowalut jest niezwykle wa偶nym powodem, do ich zastosowania w swoim projekcie. Istnieje mn贸stwo gie艂d, portfeli i smart kontrakt贸w, kt贸re s膮 ju偶 zgodne z nowo uruchomionymi tokenami. Ponadto, mo偶na liczy膰 na bogat膮 dokumentacj臋 i wsparcie dla programist贸w.聽


Wady token贸w ERC-20

Skalowalno艣膰

Podobnie jak w przypadku wielu sieci kryptowalut, Ethereum nie jest odporne na b贸le rozwojowe. W obecnej formie nie skaluje si臋 dobrze 鈥 pr贸by wys艂ania transakcji w godzinach szczytu skutkuj膮 wysokimi op艂atami i op贸藕nieniami. Je艣li uruchomisz token ERC-20 i sie膰 zostanie przeci膮偶ona, mo偶e to mie膰 wp艂yw na jego u偶yteczno艣膰.

Nie jest to problem wy艂膮cznie znany z Ethereum. Jest to raczej niezb臋dny kompromis w bezpiecznych, rozproszonych systemach. Spo艂eczno艣膰 planuje rozwi膮za膰 te problemy podczas migracji do聽Ethereum 2.0, kt贸ra wdro偶y aktualizacje, takie jak聽Ethereum Plasma i聽Ethereum Casper.
Dowiedz si臋 wi臋cej o problemach ze skalowalno艣ci膮 w聽Skalowalno艣膰 Blockchaina:聽艁a艅cuchy Boczne i Kana艂y P艂atno艣ci.


Oszustwa

Chocia偶 sama technologia nie jest problemem, 艂atwo艣膰, z jak膮 mo偶na uruchomi膰 token, mo偶e by膰 pod pewnymi wzgl臋dami uznana za wad臋. Stworzenie prostego tokena ERC-20 wymaga minimalnego wysi艂ku, co oznacza, 偶e ka偶dy mo偶e to zrobi膰 鈥 w dobrym lub w z艂ym celu.

W zwi膮zku z tym powiniene艣 uwa偶a膰 na to, w co inwestujesz. Istnieje wiele聽schemat贸w Piramid i Ponzi'ego udaj膮cych projekty blockchain.聽Przeprowad藕 badania przed zainwestowaniem, aby wyci膮gn膮膰 w艂asne wnioski na temat tego, czy okazja jest uzasadniona.

ERC-20, ERC-1155, ERC-223, ERC-721 鈥撀爅aka jest r贸znica?

ERC-20 by艂 pierwszym (i do tej pory najpopularniejszym) standardem token贸w Ethereum, ale bynajmniej nie jedynym. Z biegiem lat pojawi艂o si臋 wiele innych, proponuj膮cych ulepszenia ERC-20 lub pr贸buj膮cych osi膮gn膮膰 zupe艂nie inne cele.

Niekt贸re z mniej powszechnych standard贸w to te stosowane w聽non-fungible tokens (NFT). Czasami Tw贸j przypadek u偶ycia faktycznie korzysta z posiadania unikalnych token贸w o r贸偶nych atrybutach. Je艣li chcesz tokenizowa膰 jedyne w swoim rodzaju dzie艂o sztuki, zas贸b w grze itp., jeden z tych typ贸w kontrakt贸w mo偶e by膰 bardziej atrakcyjny.
Na przyk艂ad standard聽ERC-721 zosta艂 wykorzystany w niezwykle popularnym DApp CryptoKitties. Taki kontrakt zapewnia聽API dla u偶ytkownik贸w do wybijania w艂asnych niezamienialnych token贸w i kodowania metadanych (obraz贸w, opis贸w itp.).聽

Norm臋 ERC-1155 mo偶na uzna膰 za ulepszenie zar贸wno w przypadku ERC-721, jak i ERC-20. Przedstawia standard, kt贸ry obs艂uguje zar贸wno zamienne, jak i niewymienialne tokeny w tym samym kontrakcie.

Inne opcje, takie jak ERC-223 lub ERC-621, maj膮 na celu popraw臋 u偶yteczno艣ci. Pierwsza implementuje zabezpieczenia zapobiegaj膮ce przypadkowym transferom token贸w. Ten ostatni dodaje dodatkowe funkcje do zwi臋kszania i zmniejszania poda偶y token贸w.

Aby dowiedzie膰 si臋 wi臋cej na temat NFT, sprawd藕聽Przewodnik po Kolekcjonerskich Kryptowalutach i Niezamiennych Tokenach (NFT).


Przemy艣lenia ko艅cowe

Standard ERC-20 od lat dominuje w obszarze aktyw贸w krypto i nietrudno zrozumie膰 dlaczego. Ze wzgl臋dn膮 艂atwo艣ci膮 ka偶dy mo偶e wdro偶y膰 prosty kontrakt, dostosowany do szerokiego zakresu zastosowa艅 (tokeny u偶ytkowe, stablecoiny itp.). To powiedziawszy, w ERC-20 brakuje niekt贸rych funkcji wprowadzonych do 偶ycia przez inne standardy. Czas poka偶e, czy jego miejsce zajm膮 kolejne rodzaje kontrakt贸w.