Въведение в токени ERC-20
Начало
Статии
Въведение в токени ERC-20

Въведение в токени ERC-20

Напреднал
Публикувано Jul 31, 2020Актуализирано Dec 28, 2022
12m

Въведение

Ethereum е основан от Виталик Бутерин през 2014 г., като се позиционира като платформа с отворен код за стартиране на децентрализирани приложения (DApps). Много от мотивите на Бутерин за създаване на нов блокчейн произтичат от липсата на гъвкавост на биткойн протокола.

От стартирането си блокчейнът на Ethereum привлече разработчици, бизнеси и предприемачи, създавайки нарастваща индустрия от потребители, които стартират интелигентни договори и разпределени приложения.

В тази статия ще разгледаме стандарта ERC-20, важна рамка за създаване на токени. Въпреки че е специфична за мрежата на Ethereum, рамката вдъхнови и други стандарти за блокчейн, като BEP-2 на Binance Chain.


Какво представлява стандартът ERC-20?

В Ethereum ERC е Заявка на Ethereum за коментари. Това са технически документи, които очертават стандартите за програмиране на Ethereum. Те не трябва да се бъркат с предложенията за подобрение на Ethereum (EIP), които, подобно на BIP на Bitcoin, предполагат подобрения на самия протокол. Вместо това ERC се стремят да установят конвенции, които улесняват взаимодействието на приложенията и договорите помежду си.

Създаден от Виталик Бутерин и Фабиан Фогелстелер през 2015 г., ERC-20 предлага сравнително прост формат за базирани на Ethereum токени. Следвайки схемата, разработчиците не трябва да преоткриват колелото. Вместо това те могат да изградят основа, която вече се използва в индустрията.

След като бъдат създадени нови токени ERC-20, те автоматично са съвместими с услуги и софтуер, поддържащи стандарта ERC-20 (софтуерни портфейли, хардуерни портфейли, борси и др.).

Трябва да се отбележи, че стандартът ERC-20 е разработен в EIP (по-специално EIP-20). Това се случи няколко години след първоначалното предложение поради широкото му използване. Въпреки това, дори години по-късно, името „ERC-20“ се задържа.


Бързо обобщение на токените на Ethereum

За разлика от ETH (нативната криптовалута на Ethereum), токените ERC-20 не се държат от акаунти. Токените съществуват само в договор, който е като самостоятелна база данни. Той определя правилата за токените (т.е. име, символ, делимост) и поддържа списък, който съпоставя балансите на потребителите с техните Ethereum адреси.

За да преместят токени, потребителите трябва да изпратят трансакция към договора с молба за разпределение на част от техния баланс на друго място. Например, ако Алис иска да изпрати на Боб 5000 BinanceAcademyToken, тя извиква функция в интелигентния договор BinanceAcademyToken, като я моли да направи това.



Нейното обаждане се съдържа в нещо, което изглежда е обикновена трансакция в Ethereum, която плаща 0 ETH към договора за токен. Обаждането е включено в допълнително поле в трансакцията, което посочва какво иска да направи Алис – в нашия случай да прехвърли токени на Боб.

Въпреки че не изпраща Ether, тя все пак трябва да плати такса, деноминирана в него, за да включи трансакцията си в блок. Ако тя няма ETH, трябва да вземе определено количество, преди да прехвърли токените.

Ето пример от реалния свят за горното в Etherscan: някой е пуснал заявка към BUSD договора. Можете да видите, че токените са прехвърлени и е платена такса, въпреки че полето Стойност показва, че са изпратени 0 ETH.

Сега, когато знаем детайлите, нека да надникнем под булото, за да разберем по-добре структурата на типичен ERC-20 договор. 


Как се създават токените ERC-20?



За да бъде съвместим с ERC-20, вашият договор трябва да включва шест задължителни функции: общо предлагане, баланс на, прехвърляне, прехвърляне от, одобряване и разрешение. Освен това можете да зададете допълнителни функции, като име, символ и десетичен знак. Може да ви е ясно какво правят тези функции от имената им. Ако не, не се притеснявайте – ще направим разбивка. 

По-долу са функциите, както се появяват в специално изградения език Solidity за целите на Ethereum.


общо предлагане

function totalSupply() public view returns (uint256)
Когато се извиква от потребител, горната функция връща общото предлагане на токени, които договорът притежава.


баланс на 

function balanceOf(address _owner) public view returns (uint256 balance)
За разлика от общо предлагане , баланс на приема параметър (адрес). Когато бъде извикан, той връща баланса на токените на този адрес. Не забравяйте, че акаунтите в мрежата на Ethereum са публични, така че можете да питате за баланса на всеки потребител, при условие че знаете адреса.


прехвърляне

function transfer(address _to, uint256 _value) public returns (bool success)
прехвърляне подходящо прехвърля токени от един потребител на друг. Тук посочвате адреса, на който искате да изпратите, и сумата за превод.
Когато се извика, трансферът задейства нещо, наречено събитие (прехвърляне на събитие, в този случай), което основно казва на блокчейна да включи препратка към него.


прехвърляне от

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
Функцията прехвърляне от е удобна алтернатива на превода, която позволява малко повече програмируемост в децентрализирани приложения. Подобно на прехвърляне, той се използва за преместване на токени, но не е задължително тези токени да принадлежат на лицето, което извиква договора. 

С други думи, можете да упълномощите някого – или друг договор – да превежда средства от ваше име. Възможен случай на използване включва плащане за абонаментни услуги, при които не искате да изпращате ръчно плащане всеки ден/седмица/месец. Вместо това просто позволявате на програма да го прави вместо вас.

Тази функция задейства същото събитие като прехвърлянето.


одобряване

function approve(address _spender, uint256 _value) public returns (bool success)
одобряване е друга полезна функция от гледна точка на програмируемостта. С тази функция можете да ограничите броя на токените, които интелигентен договор може да изтегли от вашия баланс. Без него рискувате договорът да функционира неправилно (или да бъде експлоатиран) и да открадне всичките ви средства. 

Вземете отново нашия пример за модел на абонамент. Да предположим, че имате огромно количество BinanceAcademyTokens и искате да настроите ежеседмични повтарящи се плащания към стрийминг DApp. Вие сте заети да четете съдържанието на Binance Academy ден и нощ, така че не искате да отделяте време всяка седмица, за да създавате ръчно трансакция.

Имате огромен баланс от BinanceAcademyTokens, далеч надвишаващ това, което е необходимо за плащане на абонамента. За да попречите на DApp да източва всички тях, можете да зададете лимит с одобряване. Да предположим, че вашият абонамент струва един BinanceAcademyToken на седмица. Ако сте ограничили одобрената стойност на двадесет токена, тогава можете да накарате абонамента си да бъде платен автоматично за пет месеца.

В най-лошия случай, ако DApp се опита да изтегли всичките ви средства или ако бъде открита грешка, можете да загубите само двадесет токена. Може и да не е идеално, но със сигурност е по-привлекателно, отколкото да загубите всичките си притежания.

Когато бъде извикан, одобряване задейства събитието за одобрение. Подобно на събитието за прехвърляне, той записва данни в блокчейна.


разрешение 

function allowance(address _owner, address _spender) public view returns (uint256 remaining)
разрешение може да се използва във връзка с одобряване. Когато сте дали разрешение на договор да управлява вашите токени, можете да го използвате, за да проверите колко все още може да тегли. Например, ако вашият абонамент е изразходвал дванадесет от вашите двадесет одобрени токена, извикването на функцията за разрешение трябва да върне общо осем.


Избираеми функции

Обсъдените по-рано функции са задължителни. От друга страна името, символът и десетичната запетая не е необходимо да се включват, но те могат да направят вашия ERC-20 договор малко по-красив. Съответно, те ви позволяват да добавите име, което може бъде прочетено от човек, да зададете символ (т.е. ETH, BTC, BNB) и да укажете на колко десетични знака се делят токените. Например токените, които се използват като валути, могат да извлекат повече ползи от факта, че са по-делими, отколкото токен, който представлява собственост върху имущество.


Вижте този пример в GitHub, за да видите тези елементи в реален договор.


Какво могат да правят токените ERC-20?



Като обединим всички функции по-горе, получаваме ERC-20 договор. Можем да направим запитване за общото предлагане, да проверяваме балансите, да прехвърляме средства и да даваме разрешения на други DApps да управляват токени вместо нас.

Голяма част от привлекателността на токените ERC-20 е тяхната гъвкавост. Изложените конвенции не ограничават развитието, така че страните могат да прилагат допълнителни функции и да задават специфични параметри, за да отговарят на своите нужди.


Стейбълкойни

Стейбълкойните (токени, обвързани с фиатни валути) често използват стандарта за токени ERC-20. Трансакцията към договора BUSD, която споменахме по-рано, е един пример и повечето основни стейбълкойни също са налични в този формат.

За типичен стейбълкойн, обезпечен с фиатни средства, издателят държи резерви от евро, долари и т.н. След това за всяка единица в техния резерв те издават токен. Това означава, че ако 10 000 долара са заключени в трезор, издателят може да създаде 10 000 токена, всеки от които може да бъде осребрен за $1.

Това технически погледнато е доста лесно за изпълнение в Ethereum. Един издател просто стартира договор с 10 000 токена. След това той ще ги разпредели на потребителите с обещанието, че по-късно могат да осребрят токените за пропорционално количество фиатна валута. 

Потребителите могат да правят редица неща със своите токени – могат да купуват стоки и услуги или да ги използват в DApps. Също така могат да поискат издателят да ги обмени веднага. В този случай издателят изгаря върнатите токени (прави ги неизползваеми) и изтегля правилното количество фиатни средства от своите резерви.

Договорът, който управлява тази система, както беше споменато по-горе, е относително опростен. Въпреки това, стартирането на стейбълкойн изисква много работа по външни фактори като логистика, спазване на нормативните изисквания и т.н.


Токени за сигурност

Токените за сигурност са подобни на стейбълкойните. На ниво договор и двете могат да бъдат дори идентични, тъй като функционират по един и същи начин. Разграничението се появява на ниво издател. Токените за сигурност представляват ценни книжа, като акции, облигации или физически активи. Често (въпреки че не винаги е така) те предоставят на притежателя някакъв дял в бизнес или стока.


Помощни токени

Помощните токени са може би най-често срещаните видове токени днес. За разлика от предишните две предложения, те не са подкрепени с нищо. Ако токените, обезпечени с активи, са като акции в авиокомпания, тогава помощните токени са като програми за редовни пътници: те изпълняват функция, но нямат външна стойност. Помощните токени могат да се погрижат за безброй случаи на използване, служейки като валута в играта, гориво за децентрализирани приложения, точки за лоялност и много други.



Можете ли да копаете токени ERC-20?

Можете да копаете Ether (ETH), но токените не могат да се копаят – казваме, че са изсечени, когато се създават нови. Когато се стартира договор, разработчиците разпределят доставките според своите планове и пътна карта.
Обикновено това се прави чрез първоначално предлагане на криптовалута (ICO), първоначално предлагане на обмен (IEO) или предлагане на токени за сигурност (STO). Може да срещнете вариации на тези съкращения, но понятията са доста сходни. Инвеститорите изпращат Ether до адреса на договора и в замяна получават нови токени. Събраните пари се използват за финансиране на по-нататъшното развитие на проекта. Потребителите очакват да могат да използват своите токени (незабавно или на по-късна дата) или да ги препродадат за печалба, докато проектът се развива.

Не е необходимо разпределението на токени да бъде автоматизирано. Много събития за групово финансиране позволяват на потребителите да плащат с редица различни цифрови валути (като BNB, BTC, ETH и USDT). След това съответните салда се разпределят на адресите, предоставени от потребителите.


Плюсове и минуси на токените ERC-20

Плюсове на токените ERC-20

Заменими

Токени ERC-20 са заменими – всяка единица е взаимозаменяема с друга. Ако притежавате BinanceAcademyToken, няма да има значение какъв конкретен токен имате. Можете да го размените за някой друг и той пак ще бъде функционално идентичен, точно като пари в брой или злато.

Това е идеално, ако вашият токен има за цел да бъде някаква валута. Не бихте искали отделни единици с отличителни черти, което би ги направило незаменими. Това може да накара някои токени да станат повече – или по-малко –ценни от други, подкопавайки предназначението им.


Гъвкави

Както разгледахме в предишния раздел, токените ERC-20 са много адаптивни и могат да бъдат пригодени за много различни приложения. Например, те могат да се използват като валута в играта, в програми за точки за лоялност, като цифрови колекционерски предмети или дори да представляват изобразително изкуство и права на собственост.


Популярни

Популярността на ERC-20 в крипто индустрията е изключително убедителна причина да го използвате като проект. Има множество борси, портфейли и интелигентни договори, които вече са съвместими с наскоро пуснати токени. Нещо повече, има изобилие от поддръжка и документация за разработчици. 


Недостатъците на токените ERC-20

Мащабируемост

Както при много мрежи за криптовалути, Ethereum не е имунизиран срещу нарастващите болки. В сегашния си вид той не се мащабира добре – опитът за изпращане на трансакция в пиковите часове води до високи такси и забавяния. Ако стартирате токен ERC-20 и мрежата се претовари, използваемостта му може да бъде засегната.

Това не е проблем само за Ethereum. По-скоро това е необходим компромис при сигурни, разпределени системи. Общността планира да се справи с тези проблеми при миграцията към Ethereum 2.0, която ще приложи надстройки като Ethereum Plasma и Ethereum Casper.
Научете повече за проблемите с мащабируемостта в Мащабируемост на блокчейн: странични вериги и канали за плащане.


Измами

Въпреки че не е проблем със самата технология, лекотата, с която може да бъде стартиран токен, е възможно да се счита за недостатък в някои отношения. Необходими са минимални усилия, за да се създаде прост токен ERC-20, което означава, че всеки може да го направи – за добро или за лошо.

При това положение трябва да внимавате с това, в което инвестирате. Има редица пирамиди и схеми на Понци, маскирани като блокчейн проекти.  Направете свое собствено проучване, преди да инвестирате, за да си направите собствени заключения относно легитимността на дадена възможност.

 

ERC-20, ERC-1155, ERC-223, ERC-721 – каква е разликата?

ERC-20 беше първият (и към днешна дата най-популярният) стандарт за токени на Ethereum, но в никакъв случай не е единственият. През годините се появиха много други, които или предлагат подобрения на ERC-20, или се опитват да постигнат изцяло различни цели.

Някои от по-рядко срещаните стандарти са тези, използвани в незаменими токени (NFT). Понякога вашият случай на използване всъщност се възползва от наличието на уникални токени с различни атрибути. Ако искате да токенизирате единствено по рода си произведение на изкуството, актив в играта и т.н., един от тези видове договори може да е по-привлекателен.

Стандартът ERC-721, например, беше използван за изключително популярното CryptoKitties DApp. Такъв договор предоставя API за потребителите да създават свои собствени незаменими токени и да кодират метаданни (изображения, описания и т.н.). 

Стандартът ERC-1155 може да се разглежда като подобрение както на ERC-721, така и на ERC-20. Той очертава стандарт, който поддържа както заменими, така и незаменими токени в един и същи договор.

Други опции като ERC-223 или ERC-621 имат за цел да подобрят използваемостта. Първият прилага предпазни мерки за предотвратяване на случайни прехвърляния на токени. Последният добавя допълнителни функции за увеличаване и намаляване на предлагането на токени.

За повече информация по темата за NFT, не забравяйте да разгледате Ръководство за крипто колекционерство и незаменими токени (NFT).


Заключителни мисли

Стандартът ERC-20 доминира в пространството на крипто активите от години и не е трудно да се разбере защо. С относителна лекота всеки може да внедри прост договор, който да отговаря на широк спектър от случаи на използване (помощни токени, стейбълкойни и т.н.). Въпреки това на ERC-20 липсват някои от функциите, създадени от други стандарти. Остава да видим дали следващи видове договори ще заемат неговото място.