Как создать свой токен EOS

Что такое токен EOS?

В отличие от Ethereum, на EOS токен входит в стандартный комплект смарт-контракта. Если на Ethereum есть токены стандарта ERC-20, то на смарт-контрактах EOS стандарт токена называется eosio.token. С помощью этого смарт-контракта вы сможете создавать свои токены, устанавливать их название и объем максимальной эмиссии, вводить какое-то их количество в обращение и пересылать с аккаунта на аккаунт. Токены EOS в блокчейне EOS выпускаются в соответствии с таким же контрактом.

Параметр «url» показывает, к какой ноде вы подключены. Информацию о конечных точках API можно узнать на официальном сайте проекта.

Установка cleos

Cleos — это утилита командной строки для взаимодействия с нодами EOS (nodeos) в REST API. Для того чтобы взаимодействовать с блокчейном EOS, необходимо отправлять команды в cleos. Установить cleos можно с помощью Docker, AWS Image или совместимого кода. В результате cleos будет установлен на вашем терминале.

Создание кошелька

«Кошельки — это клиентские программы, в которых хранятся ключи, связанные (или несвязанные) с правами на один или более аккаунт. В идеале у кошелька есть закрытое (зашифрованное) и открытое (расшифрованное) состояние, защищенное паролем с высокой энтропией. Репозиторий EOS оснащен интерфейсом командной строки cleos, которая связывает ноды с компонентом keosd», — из раздела «Аккаунты и Права».

Давайте создадим кошелек и назовем его Treasure

Пароль от этого кошелька нужно будет хранить в безопасном месте, потому что, если вы его потеряете, то никогда не сможете восстановить ключи, находящиеся в этом кошельке.

Теперь надо создать две пары ключей для обоих видов прав: права собственности и права активности. После этого мы импортируем их в наш кошелек.

Создание аккаунта

«Чтобы что-то делать в блокчейне EOS, нужно иметь в нем аккаунт. Аккаунт — это удобочитаемое имя, которая хранится в блокчейне. Он может принадлежать одному человеку или группе лиц в зависимости от настройки прав. Аккаунт необходим для совершения каких-либо транзакций в блокчейне», — из раздела «Аккаунты и Права».

По сути аккаунт — это набор публичных и приватных ключей, привязанных к конкретному имени. Ключи хранятся в кошельке. Аккаунты хранятся в блокчейне EOS.

Если у вас уже есть аккаунт с каким-то количеством EOS, то чтобы завести локальный аккаунт, вы просто набираете в командной строке cleos create account, но создать аккаунт в сети EOS Mainnet вы так не сможете. Для создания аккаунта в Mainnet вам нужна будет помощь кого-то, у кого такой аккаунт уже есть, и это не бесплатно.

Более того, вы можете создавать только аккаунты длиной 12 символов, используя строчные буквы от a до z и цифры от 1 до 5. Впрочем, это очень жесткие ограничения. Для создания более коротких аккаунтов вам придется участвовать в аукционах. Так как аккаунты EOS можно перепродавать, лучшие имена будут быстро захвачены компьютерными скваттерами. С учетом всего этого и для экономии времени и денег мы сейчас в учебных целях заведем аккаунт не в Mainnet, a в Testnet.

Тестовая сеть EOS Jungle Testnet — это почти точная копия Mainnet. Идите на jungle.cryptolions.io и нажмите на ссылку «Create Account». Вас попросят ввести имя аккаунта и два ключа. Используйте два публичных ключа, созданных ранее.

Подтвердите создание аккаунта:

Теперь нам надо купить немного оперативной памяти, чтобы опубликовать наш контракт. В блокчейне EOS есть специальная площадка, на которой память продается по рыночной цене с учетом спроса и предложения. Для людей с деньгами это отличная возможность заработать на спекуляции.

Переведите несколько токенов EOS на ваш счет с помощью крана EOS Jungle Testnet Faucet.

После этого наберите в командной строке cleos system buyram, чтобы купить оперативную память на токены EOS.

Создание контракта

Прежде всего нам надо загрузить наш контракт в блокчейн. Для этого надо набрать в командной строке cleos set contract и установить следующие параметры:

  • account — аккаунт, к которому относится контракт.
  • contract-dir — директория контракта.
  • wast-file — файл формата WAST или WASM, содержащий текстовую версию контракта.
  • abi-file — ABI описание контракта.

Как можно заметить, необходимо указывать файлы wast и abi. Если вы создаете контракт с помощью исходного кода, то можете найти их в папке ./build/contracts/eosio.token/. Для нашего удобства вот тут хранятся оба эти файла —  wast/abi. В командной строке set contract введем имя нашего аккаунта. Поскольку наши файлы wast/abi называются так же, как и директория, эти параметры можно опустить.

Теперь проверим, загрузился ли наш код, набрав команду get code ylvdeveloper.

Да, все в порядке.

Создание токена

Наконец мы можем создать и выпустить собственный токен. Для этого нам нужно выполнить действия create и issue в команде push action, указав следующие параметры:

  • contract — аккаунт, к которому привязан контракт.
  • action — действие, которое должно быть выполнено по этому контракту.
  • data — условия контракта.

Давайте создадим и выпустим в обращение токены YLV.

Мы только что создали токен YLV с максимальным объемом эмиссией 1 млн. Теперь положим 1000 токенов на аккаунт ylvdeveloper.

Проверим баланс.

Отлично. У нас есть контракт, и мы можем выпускать токены. Что нам еще нужно? Возможность переводить токены с одного аккаунта на другой. Наберем в cleos команды push action и transfer. Нам нужен аккаунт, на который мы переведем часть наших токенов. Создадим его точно так же, как мы создали ylvdeveloper. Теперь перешлем 100 токенов от ylvdeveloper к ylvio.

Сверим балансы:

Все прошло по плану.

Заключение

Мы прошли весь путь: от установки cleos и понимания того, как устроен стандарт eosio.token до выпуска собственных токенов и перевода их на другие аккаунты. Всего этого мы добились с помощью тестовой сети EOS Jungle Testnet, которая почти ничем не отличается от EOS Mainnet. В Mainnet все будет работать точно так же, только нужно будет использовать другие конечные точки API и заплатить за аккаунты и оперативную память.

Источник: cryptocurrency.tech

No votes yet.
Please wait...

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *