Wstęp

Ethereum zostało założone przez Vitalika Buterina w 2014 roku i pozycjonuje się jako platforma typu open source do uruchamiania zdecentralizowanych aplikacji (DApps). Wiele motywacji Buterina do stworzenia nowego blockchainu wynikało z braku elastyczności protokołu Bitcoin.

Od momentu uruchomienia blockchain Ethereum przyciąga programistów, firmy i przedsiębiorców, tworząc rosnącą branżę użytkowników uruchamiających inteligentne kontrakty i aplikacje rozproszone.

W tym artykule przyjrzymy się normie ERC-20, ważnej strukturze tworzenia tokenów. Chociaż jest to specyficzne dla sieci Ethereum, framework zainspirował także inne standardy blockchain, takie jak BEP-2 Binance Chain.


Co to jest norma ERC-20?

W Ethereum ERC to prośba o komentarz Ethereum. Są to dokumenty techniczne określające standardy programowania w Ethereum. Nie należy ich mylić z propozycjami ulepszeń Ethereum (EIP), które podobnie jak BIP Bitcoina sugerują ulepszenia samego protokołu. Zamiast tego celem ERC jest ustanowienie konwencji ułatwiających wzajemną interakcję wniosków i umów.

ERC-20, którego autorami są Vitalik Buterin i Fabian Vogelsteller w 2015 r., proponuje stosunkowo prosty format tokenów opartych na Ethereum. Postępując zgodnie z zarysem, programiści nie muszą wymyślać koła na nowo. Zamiast tego mogą zbudować fundament stosowany już w całej branży.

Po utworzeniu nowych tokenów ERC-20 automatycznie współpracują one z usługami i oprogramowaniem obsługującym standard ERC-20 (portfele programowe, portfele sprzętowe, giełdy itp.).

Należy zauważyć, że norma ERC-20 została rozwinięta w EIP (w szczególności EIP-20). Stało się to kilka lat po pierwotnej propozycji ze względu na jej powszechne zastosowanie. Jednak nawet po latach nazwa „ERC-20” została.


Szybkie podsumowanie tokenów Ethereum

W przeciwieństwie do ETH (natywnej kryptowaluty Ethereum), tokeny ERC-20 nie są przechowywane na kontach. Tokeny istnieją tylko w ramach kontraktu, który działa jak samodzielna baza danych. Określa zasady dotyczące tokenów (tj. nazwę, symbol, podzielność) i prowadzi listę, która mapuje salda użytkowników na ich adresy Ethereum.

Aby przenieść tokeny, użytkownicy muszą wysłać transakcję do kontraktu, prosząc go o alokację części salda gdzie indziej. Na przykład, jeśli Alicja chce wysłać Bobowi 5000 tokenów BinanceAcademyToken, wywołuje funkcję w inteligentnym kontrakcie BinanceAcademyToken, prosząc go o to.


Users interacting with a smart contract


Jej wywołanie jest zawarte w czymś, co wygląda na zwykłą transakcję Ethereum, która płaci 0 ETH do kontraktu tokenowego. Wywołanie jest zawarte w dodatkowym polu transakcji, które określa, co Alicja chce zrobić – w naszym przypadku przekazać tokeny Bobowi.

Mimo że nie wysyła eteru, to i tak musi uiścić opłatę w nim wyrażoną, aby jej transakcja została uwzględniona w bloku. Jeśli nie ma ETH, musi je zdobyć przed przesłaniem tokenów.

Oto rzeczywisty przykład powyższej sytuacji w Etherscan: ktoś dzwoni do kontraktu BUSD. Widać, że tokeny zostały przesłane i opłata została uiszczona, mimo że pole Wartość pokazuje, że wysłano 0 ETH.

Skoro już jesteśmy na bieżąco, zajrzyjmy pod maskę, aby lepiej zrozumieć strukturę typowego kontraktu ERC-20.


Jak tworzone są tokeny ERC-20?


Illustration of an ERC-20 token being created


Aby Twoja umowa była zgodna z ERC-20, musi zawierać sześć obowiązkowych funkcji: totalSupply, BalanceOf, transfer, transferFro, zatwierdzenie i dodatek. Ponadto można określić funkcje opcjonalne, takie jak nazwa, symbol i liczba dziesiętna. Może być dla ciebie jasne, co robią te funkcje, na podstawie ich nazw. Jeśli nie, nie martw się – rozbijemy je.

Poniżej znajdują się funkcje pojawiające się w specjalnie opracowanym języku Solidity Ethereum.


całkowita podaż

funkcja totalSupply() zwraca widok publiczny (uint256)

Powyższa funkcja wywołana przez użytkownika zwraca całkowitą podaż tokenów posiadanych przez kontrakt.


saldo

funkcja BalanceOf(adres _właściciel) zwraca widok publiczny (saldo uint256)

W przeciwieństwie do totalSupply, BalanceOf przyjmuje parametr (adres). Po wywołaniu zwraca saldo zasobów tokenów tego adresu. Pamiętaj, że konta w sieci Ethereum są publiczne, więc możesz sprawdzić saldo dowolnego użytkownika, jeśli znasz jego adres.


przenosić

funkcja transfer(adres _to, uint256 _value) zwraca publiczne (bool sukces)

transfer trafnie przenosi tokeny od jednego użytkownika do drugiego. Tutaj podajesz adres, na który chcesz wysłać pieniądze oraz kwotę do przelewu.

Po wywołaniu transfer wyzwala coś, co nazywa się zdarzeniem (w tym przypadku transferem zdarzenia), które w zasadzie nakazuje łańcuchowi blokowemu załączenie odniesienia do niego.


przenieść z

funkcja transferFrom(adres _od, adres _do, uint256 _wartość) zwraca publiczne (bool sukces)

Funkcja transferFrom jest przydatną alternatywą dla transferu, która umożliwia nieco większe możliwości programowania w zdecentralizowanych aplikacjach. Podobnie jak transfer, służy do przenoszenia tokenów, ale tokeny te niekoniecznie muszą należeć do osoby wywołującej kontrakt.

Innymi słowy, możesz upoważnić kogoś – lub inną umowę – do transferu środków w Twoim imieniu. Możliwy przypadek użycia obejmuje 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, aby program zrobił to za Ciebie.

Ta funkcja wyzwala to samo zdarzenie co transfer.


zatwierdzić

funkcja zatwierdzenia (adres _spender, uint256 _wartość) zwraca publiczne (bool sukces)

zatwierdź to kolejna użyteczna funkcja z punktu widzenia programisty. Dzięki tej funkcji możesz ograniczyć liczbę tokenów, które inteligentny kontrakt może pobrać z Twojego salda. Bez tego ryzykujesz nieprawidłowe działanie umowy (lub jej wykorzystanie) i kradzież wszystkich Twoich środków.

Weźmy jeszcze raz nasz przykład modelu subskrypcyjnego. Załóżmy, że masz ogromną liczbę tokenów BinanceAcademyTokens i chcesz skonfigurować cotygodniowe płatności cykliczne do strumieniowej aplikacji DApp. Jesteś zajęty czytaniem treści Akademii Binance dzień i noc, więc nie chcesz co tydzień tracić czasu na ręczne tworzenie transakcji.

Masz ogromne saldo tokenów BinanceAcademy, znacznie przekraczające kwotę potrzebną do opłacenia subskrypcji. Aby zapobiec wyczerpaniu ich wszystkich przez DApp, możesz ustawić limit za pomocą zatwierdzenia. Załóżmy, że Twoja subskrypcja kosztuje jeden BinanceAcademyToken tygodniowo. Jeśli ograniczysz zatwierdzoną wartość do dwudziestu tokenów, subskrypcja będzie opłacana automatycznie przez pięć miesięcy.

W najgorszym przypadku, jeśli DApp spróbuje wypłacić wszystkie Twoje środki lub 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 wszystkich posiadanych zasobów.

Po wywołaniu Apply wyzwala zdarzenie zatwierdzenia. Podobnie jak zdarzenie transferu, zapisuje dane do łańcucha bloków.


dodatek

dodatek funkcji (adres _właściciel, adres _sender) zwroty widoku publicznego (pozostało uint256)

dodatek może być używany w połączeniu z zatwierdzeniem. Kiedy udzieliłeś umowie pozwolenia na zarządzanie swoimi tokenami, możesz użyć tego, aby sprawdzić, ile może jeszcze wypłacić. Na przykład, jeśli Twoja subskrypcja wykorzystała dwanaście z dwudziestu zatwierdzonych tokenów, wywołanie funkcji limitu powinno zwrócić łącznie osiem.


Funkcje opcjonalne

Funkcje omówione wcześniej są obowiązkowe. Z drugiej strony nazwa, symbol i liczba dziesiętna nie muszą być uwzględniane, ale mogą sprawić, że Twoja umowa ERC-20 będzie nieco ładniejsza. Odpowiednio pozwalają na dodanie czytelnej dla człowieka nazwy, ustawienie symbolu (np. ETH, BTC, BNB) oraz określenie, do ilu miejsc dziesiętnych dzielą się tokeny. Na przykład tokeny używane jako waluty mogą zyskać więcej na tym, że są bardziej podzielne niż token reprezentujący własność nieruchomości.


Sprawdź ten przykład na GitHubie, aby zobaczyć te elementy w prawdziwej umowie.


Co potrafią tokeny ERC-20?


Illustration of various uses of ERC-20 tokens


Łącząc wszystkie powyższe funkcje, otrzymaliśmy kontrakt ERC-20. Możemy sprawdzać całkowitą podaż, sprawdzać salda, przesyłać środki i udzielać uprawnień innym DAppom do zarządzania tokenami w naszym imieniu.

Dużą częścią atrakcyjności tokenów ERC-20 jest ich elastyczność. Przedstawione konwencje nie ograniczają rozwoju, więc strony mogą wdrożyć dodatkowe funkcje i ustawić określone parametry zgodnie ze swoimi potrzebami.


Stablecoiny

Stablecoiny (tokeny powiązane z walutami fiducjarnymi) często wykorzystują standard tokena ERC-20. Transakcja na kontrakcie BUSD, o której wspominaliśmy wcześniej, jest jednym z przykładów, a większość głównych monet typu stablecoin jest również dostępna w tym formacie.

W przypadku typowej monety typu stablecoin opartej na fiat emitent posiada rezerwy w euro, dolarach itp. Następnie dla każdej jednostki w swojej rezerwie emituje token. Oznacza to, że gdyby w skarbcu znajdowało się 10 000 dolarów, emitent mógłby stworzyć 10 000 tokenów, każdy wymienialny na 1 dolara.

Z technicznego punktu widzenia jest to dość łatwe do wdrożenia w Ethereum. Emitent po prostu uruchamia kontrakt na 10 000 tokenów. Następnie rozdadzą je użytkownikom z obietnicą, że będą mogli później wymienić tokeny na proporcjonalną kwotę w walucie fiducjarnej.

Użytkownicy mogą robić wiele rzeczy za pomocą swoich tokenów – mogą kupować towary i usługi lub używać ich w DApps. Alternatywnie mogą zażądać od emitenta ich natychmiastowej wymiany. W takim przypadku emitent spala zwrócone tokeny (czyniąc je bezużytecznymi) i pobiera odpowiednią ilość fiat ze swoich rezerw.

Umowa regulująca ten system, jak wspomniano powyżej, jest stosunkowo uproszczona. Jednak uruchomienie stablecoina wymaga dużo pracy związanej z czynnikami zewnętrznymi, takimi jak logistyka, zgodność z przepisami itp.


Tokeny bezpieczeństwa

Tokeny zabezpieczające są podobne do monet stabilnych. Na poziomie umowy oba mogą być nawet identyczne, ponieważ funkcjonują 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) przyznają posiadaczowi jakiś udział w przedsiębiorstwie lub towarze.


Tokeny użytkowe

Tokeny użytkowe są prawdopodobnie najczęstszym rodzajem tokenów spotykanych obecnie. W przeciwieństwie do poprzednich dwóch ofert, nie są one niczym poparte. Jeśli tokeny zabezpieczone aktywami są jak akcje linii lotniczych, to 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ą zaspokoić niezliczone przypadki użycia, służąc jako waluta w grze, paliwo dla zdecentralizowanych aplikacji, punkty lojalnościowe i wiele więcej.


➠ Chcesz rozpocząć przygodę z kryptowalutą? Kup eter na Binance!


Czy można wydobywać tokeny ERC-20?

Możesz wydobywać eter (ETH), ale tokenów nie można wydobywać – mówimy, że są bite, gdy tworzone są nowe. Po uruchomieniu kontraktu deweloperzy rozdzielają dostawy zgodnie ze swoimi planami i planem działania.

Zwykle odbywa się to poprzez wstępną ofertę monet (ICO), wstępną ofertę wymiany (IEO) lub ofertę tokenu zabezpieczającego (STO). Możesz natknąć się na odmiany tych akronimów, ale te pojęcia są dość podobne. Inwestorzy wysyłają ether na adres kontraktu i w zamian otrzymują nowe tokeny. Zebrane pieniądze zostaną przeznaczone na finansowanie dalszego rozwoju projektu. Użytkownicy oczekują, że będą mogli wykorzystać swoje tokeny (od razu lub w późniejszym terminie) lub odsprzedać je z zyskiem w miarę rozwoju projektu.

Dystrybucja tokenów nie musi być zautomatyzowana. Wiele wydarzeń związanych z finansowaniem społecznościowym umożliwia użytkownikom płacenie szeregiem różnych walut cyfrowych (takich jak BNB, BTC, ETH i USDT). Odpowiednie salda są następnie przydzielane do adresów podanych przez użytkowników.


Plusy i minusy tokenów ERC-20

Plusy tokenów ERC-20

Zamienny

Tokeny ERC-20 są wymienne – każda jednostka jest wymienna z inną. Jeśli posiadasz token BinanceAcademyToken, nie ma znaczenia, jaki konkretnie token posiadasz. Mógłbyś wymienić go na czyjś inny, a nadal byłby funkcjonalnie identyczny, tak jak gotówka czy złoto.

Jest to idealne rozwiązanie, jeśli Twój token ma być pewnego rodzaju walutą. Nie chciałbyś pojedynczych jednostek z rozpoznawalnymi cechami, które sprawiłyby, że nie byłyby zamienne. Może to spowodować, że niektóre tokeny staną się bardziej – lub mniej – wartościowe od innych, co podważy ich cel.


Elastyczny

Jak pisaliśmy w poprzedniej sekcji, tokeny ERC-20 można w dużym stopniu dostosowywać i dostosowywać do wielu różnych zastosowań. Można ich na przykład używać jako waluty w grach, w programach punktów lojalnościowych, jako cyfrowe przedmioty kolekcjonerskie, a nawet do reprezentowania dzieł sztuki i praw własności.


Popularny

Popularność ERC-20 w branży kryptowalut jest bardzo przekonującym powodem, aby wykorzystać go jako wzór. Istnieje mnóstwo giełd, portfeli i inteligentnych kontraktów już kompatybilnych z nowo wprowadzonymi tokenami. Co więcej, wsparcie dla programistów i dokumentacja są obfite.


Wady tokenów ERC-20

Skalowalność

Podobnie jak w przypadku wielu sieci kryptowalut, Ethereum nie jest odporne na rosnące bóle. W obecnej formie nie skaluje się dobrze – próba wysłania transakcji w godzinach szczytu wiąże się z wysokimi opłatami i opóźnieniami. Jeśli uruchomisz token ERC-20 i sieć zostanie przeciążona, może to mieć wpływ na jej użyteczność.

Nie jest to problem występujący wyłącznie w Ethereum. Jest to raczej konieczny kompromis w zakresie bezpiecznych, rozproszonych systemów. 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ść Blockchain: Sidechains i kanały płatności.


Oszustwa

Chociaż nie jest to problem związany z samą technologią, łatwość uruchomienia tokena może być pod pewnymi względami uważana za wadę. Stworzenie prostego tokena ERC-20 wymaga minimalnego wysiłku, co oznacza, że ​​każdy może to zrobić – na dobre i na złe.

Dlatego powinieneś uważać na to, w co inwestujesz. Istnieje wiele schematów Pyramid i Ponzi udających projekty blockchain. Przed dokonaniem inwestycji przeprowadź własne badania, aby wyciągnąć własne wnioski na temat tego, czy dana szansa jest uzasadniona.

ERC-20, ERC-1155, ERC-223, ERC-721 – jaka jest różnica?

ERC-20 był pierwszym (i jak dotąd najpopularniejszym) standardem tokena Ethereum, ale w żadnym wypadku nie jest 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 tokenach niewymiennych (NFT). Czasami Twój przypadek użycia faktycznie zyskuje na posiadaniu 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 popularnej aplikacji DApp CryptoKitties. Taka umowa zapewnia interfejs API, dzięki któremu użytkownicy mogą tworzyć własne, niezamienne tokeny i kodować metadane (obrazy, opisy itp.).

Standard ERC-1155 można postrzegać jako ulepszenie zarówno w stosunku do ERC-721, jak i ERC-20. Określa standard obsługujący zarówno tokeny zamienne, jak i niezamienne w tej samej umowie.

Inne opcje, takie jak ERC-223 lub ERC-621, mają na celu poprawę użyteczności. Ten pierwszy wdraża zabezpieczenia zapobiegające przypadkowym transferom tokenów. Ten ostatni dodaje dodatkowe funkcje zwiększające i zmniejszające podaż tokenów.

Więcej informacji na temat NFT znajdziesz w A Guide to Crypto Collectibles and Non-Fungible Tokens (NFT).


Zamykanie myśli

Standard ERC-20 od lat dominuje w przestrzeni aktywów kryptograficznych 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, monety stablecoin itp.). To powiedziawszy, w ERC-20 brakuje niektórych funkcji powołanych do życia przez inne standardy. Czas pokaże, czy ich miejsce zastąpią kolejne rodzaje kontraktów.