В блокчейне CyberWay каждый может создавать собственные токены (в отличие от EOS, где это право имеют только валидаторы).

Токены приложения должны быть развёрнуты на отдельной учётной записи от cyber.token. При создании токенов разработчик может использовать эталонную реализацию контракта cyber.token в качестве основы, загрузив его содержимое в рабочее пространство для разработки.

1: Загрузите исходные файлы контракта

Войдите в каталог, созданный для контрактов, и загрузите в него копию удаленного репозитория с исходными файлами контрактов:

1 cd CONTRACTS_DIR
2 git clone https://github.com/cyberway/cyberway.contracts --branch <branch name> --single-branch

Репозиторий cyberway.contracts содержит несколько контрактов, но для создания токенов необходим именно контракт cyber.token:

1 cd cyberway.contracts/cyber.token

2: Создайте учётную запись для контракта

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

1 cleos create account chainik chainik.token <public key>

Параметры командной строки (например):

chainik - имя учётной записи для создаваемого контракта;

chainik.token - имя контракта токена, загруженного из репозитория cyberway.contracts с исходными файлами.

Например, контрактная учётная запись была создана с именем chainik.token.

3: Составьте контракт

В нашем примере это будет:

eosio-cpp -I include -o chainik.token.wasm src/chainik.token.cpp --abigen

Контракт компилируется в файл веб-ассемблера в формате wasm. Наличие опции --abigen указывает на то, что файл abi / chainik.token.abi также будет сгенерирован.

4: Установите контракт токена

cleos set contract chainik.token CONTRACTS_DIR/cyberway.contracts/chainik.token --abi abi/chainik.token.abi -p chainik.token@active

Параметр: chainik.token@active - это имя, которое будет использоваться для авторизации запроса.

Контракт токена будет считаться успешно установленным, если результирующий вывод выполняемой команды покажет информацию в форме:

1 executed transaction: ...
2 # eosio <= eosio::setcode {"account":"chainik.token","vmtype":0,"vmversion":0,"code":"<code>
3 # eosio <= eosio::setabi {"account":"chainik.token","abi":"<code>
4 warning: transaction executed locally, but may not be confirmed by the network yet ]

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

Для создания нового токена используйте действие create. Аргументом является тип токена symbol_name, который содержит два значения - максимальное значение предложения и символ токена. Призыв к этому действию имеет вид:

cleos push action chainik.token create '{"issuer":"chainik", "maximum_supply":"1000000000.0000 SYS"}' -p chainik.token@active

Параметр -p chainik.token@active разрешает контракту chainik.token выполнить это действие.

Создание токена считается успешным, если на мониторе появляется следующая информация:

1 executed transaction: <info>
2 # chainik.token <= chainik.token::create {"issuer":"olga","maximum_supply":"1000000000.0000 SYS"}

В результате будет создан новый токен SYS с точностью до четырех десятичных знаков. Максимально допустимое количество токенов в обращении должно быть ограничено до 1000000000. Для создания этого токена требуется разрешение контракта chainik.token. Имя chainik.token@active будет использоваться при авторизации запроса.

6: Выпуск токена

Автор токена может выдать токены уже существующей учётной записи, например, учетной записи с именем «alice», выполнив команду:

cleos push action chainik.token issue '[ "alice", "100.0000 SYS", "memo" ]' -p chainik@active

В результате выполнения команды должна появиться следующая информация:

1 executed transaction: ...
2 # chainik.token <= chainik.token::issue {"to":"user","quantity":"100.0000 SYS","memo":"memo"}
3 >> issue
4 # olga.token <= chainik.token::transfer {"from":"olga","to":"alice","quantity":"100.0000 SYS","memo":"memo"}
5 >> transfer
6 # chainik<= chainik.token::transfer {"from":"chainik","to":"alice","quantity":"100.0000 SYS","memo":"memo"}
7 # user <= chainik.token::transfer {"from":"chainik","to":"alice","quantity":"100.0000 SYS","memo":"memo"}

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

7: Перевод токенов

Токены могут быть переведены с баланса одной учётной записи на баланс другой учётной записи. Например, чтобы перевести сумму в 25 токенов с баланса учётной записи «alice» на баланс учетной записи «bob», вам необходимо ввести следующую команду в командную строку:

cleos push action chainik.token transfer '[ "alice", "bob", "25.0000 SYS", "m" ]' -p alice@active

Для выполнения этого действия вам необходимо разрешение от учётной записи отправителя «alice» - доступна опция -p alice @ active.

Передача токенов считается успешно завершенной, если по её окончании в командном окне появляется следующая информация:

1 executed transaction: ...
2 # chainik.token <= chainik.token::transfer {"from":"alice","to":"bob","quantity":"25.0000 SYS","memo":"Here you go bob!"}
3 >> transfer
4 # user <= chainik.token::transfer {"from":"alice","to":"bob","quantity":"25.0000 SYS","memo":"Here you go bob!"}
5 # tester <= chainik.token::transfer {"from":"alice","to":"bob","quantity":"25.0000 SYS","memo":"Here you go bob!"}

Для управления передачей токенов вы можете использовать вызов get_currency_balance, чтобы получить данные баланса отправителя и получателя, выполнив команду:

cleos get currency balance chainik.token alice SYS
cleos get currency balance chainik.token bob SYS

P.s.

Надеюсь, вполне понятно, что вместо названия токена chainik, нужно вводить то название, которое вы придумали сами для своей криптовалюты.

Хотя, если вам понравилось название chainik, можете брать - бренд не занят, и был использован только для примера и толики юмора.

Материал является переводом CyberWay Documentation, раздел Creating Tokens.