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 softwareportfele typu hardwaregieł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 „ERC-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ć – w 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ś – lub 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 PlasmaEthereum 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 – jaka 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.