Руководство по cleos (how-to)¶
Ниже собраны пошаговые заметки по cleos: подключение к нодам и кошельку, ключи, аккаунты, ресурсы, транзакции и смарт-контракты. Каждый подраздел соответствует бывшей отдельной странице.
С чего начать в теории: концептуальная модель COOPOS → аккаунты и разрешения → ключи и подписи → действия и транзакции. Сетевые уровни (P2P, HTTP API, SHiP): сетевые слои и интерфейсы.
Ресурсы NET, CPU и RAM в COOPOS
Актуальный способ — действие eosio.system::powerup через cleos push action (раздел ниже). Разделы про buyram, delegatebw, undelegatebw и стейк оставлены как legacy для совместимости со старыми инструкциями и другими сетями EOSIO.
Оглавление¶
- Подключение к сети
- Кошелёк
- Пара ключей
- Список ключей
- Импорт ключа
- Создание аккаунта
- Данные аккаунта
- Мультисиг
- Связать разрешение
- Отвязать разрешение
- Информация о блоке
- Информация о транзакции
- Таблицы
- Отправка транзакции
- Перевод токена
- Ресурсы: powerup (актуально)
- Покупка RAM (legacy)
- Делегирование NET (legacy)
- Делегирование CPU (legacy)
- Снятие делегирования NET (legacy)
- Снятие делегирования CPU (legacy)
- Unstake NET (legacy)
- Unstake CPU (legacy)
- Стейк ресурса (legacy)
- Развёртывание контракта
- Голосование
Подключение к сети¶
Обзор¶
На этой странице показано, как направить cleos на конкретный хост nodeos или keosd, чтобы выполнить нужную команду против удалённого или нестандартного API. Для этого используются необязательные аргументы --url и --wallet-url с HTTP-адресом и портом сервиса.
Адрес и порт по умолчанию
Если необязательные аргументы не заданы (т.е. без --url или --wallet-url), cleos пытается подключиться к локальным nodeos или keosd на 127.0.0.1 и порту по умолчанию 8888.
Перед началом¶
- Установлена поддерживаемая версия
cleos.
Шаги¶
Подключение к nodeos¶
Подключение к keosd¶
Кошелёк¶
Обзор¶
Здесь описано, как создать кошелёк keosd через cleos wallet create и сохранить пароль в файл — чтобы затем импортировать ключи и подписывать транзакции из CLI.
Перед началом¶
Убедитесь, что выполнены следующие требования:
- Ознакомьтесь с командой
cleos wallet createи её параметрами. - Ознакомьтесь с остальными командами
cleos wallet. - Установлена поддерживаемая версия
cleos.
Примечание
cleos входит в состав ПО COOPOS. При установке COOPOS устанавливается и cleos.
- Нужны базовые понятия: аккаунты и разрешения, ключи и подписи.
Шаги¶
Выполните шаг ниже.
Создайте кошелёк по умолчанию или с именем и сохраните пароль кошелька в файл:
Здесь file_to_save_pwd — имя файла, в который записывается пароль кошелька, а named_wallet — необязательный параметр для имени кошелька.
Ниже приведены примеры.
- Создать кошелёк по умолчанию и сохранить пароль в файл
default_wallet.pwd:
Пример вывода
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
saving password to default_wallet.pwd
- Создать именованный кошелёк
my_walletи сохранить пароль в файлmy_wallet.pwd:
Пример вывода
Creating wallet: my_wallet
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
saving password to my_wallet.pwd
Пара ключей¶
Обзор¶
В этом руководстве описано, как создать пару ключей (открытый и закрытый) для подписи транзакций в блокчейне COOPOS.
Перед началом¶
Убедитесь, что выполнены следующие требования:
- Установлена поддерживаемая версия
cleos. - Нужны базовые понятия: ключи и подписи; модель аккаунта — аккаунты и разрешения.
Состав COOPOS
Утилита cleos входит в пакет COOPOS: при установке из исходников она собирается вместе с nodeos и keosd.
Справка по командам¶
См. справку по использованию cleos и опциям:
- команда
cleos create keyи её параметры
Процедура¶
Ниже показано, как создать пару открытого/закрытого ключа, вывести её в консоль и сохранить в файл:
- Создайте пару и выведите её в консоль:
Где:
--to-console— опция для вывода пары ключей в консоль
Пример вывода
Private key: 5KPzrqNMJdr6AX6abKg*******************************cH
Public key: EOS4wSiQ2jbYGrqiiKCm8oWR88NYoqnmK4nNL1RCtSQeSFkGtqsNc
- Создайте пару и сохраните её в файл:
--file— опция для сохранения пары ключей в файлFILE_TO_SAVEKEY— имя файла для сохранения пары ключей
Пример вывода
Чтобы посмотреть сохранённую пару в файле:
Private key: 5K7************************************************
Public key: EOS71k3WdpLDeqeyqVRAAxwpz6TqXwDo9Brik5dQhdvvpeTKdNT59
Итог¶
Следуя этим шагам, вы создаёте пары открытого/закрытого ключа, выводите их в консоль и сохраняете в файл.
Список ключей¶
Обзор¶
В этом руководстве описано, как вывести список всех открытых ключей и пар открытый/закрытый в кошельке keosd по умолчанию — чтобы проверить, какие ключи доступны для подписи, и при необходимости скопировать открытый ключ. Эти ключи используются для авторизации транзакций в блокчейне COOPOS.
В примере показаны все открытые ключи и пары, хранящиеся в существующем кошельке по умолчанию.
Перед началом¶
Убедитесь, что выполнены следующие требования:
- Создайте кошелёк по умолчанию командой
cleos wallet create. Инструкции — в разделе Кошелёк. - Создайте пару ключей (см. Пара ключей) и при необходимости импортируйте закрытый ключ в кошелёк.
- Ознакомьтесь с командами
cleos wallet. - Установлена поддерживаемая версия
cleos.
Примечание
cleos входит в состав ПО COOPOS. При установке COOPOS устанавливается и cleos.
- Нужны базовые понятия: ключи и подписи в модели COOPOS.
Справка по командам¶
См. справку по использованию cleos и опциям:
- команда
cleos wallet keysи её параметры - команда
cleos wallet private_keysи её параметры
Процедура¶
Ниже показано, как вывести все открытые ключи и пары открытый/закрытый в кошельке keosd по умолчанию:
-
Откройте кошелёк по умолчанию:
-
Разблокируйте кошелёк по умолчанию. Будет запрошен пароль:
-
Введите пароль, заданный при создании кошелька по умолчанию:
Если пароль верный, кошелёк разблокируется: -
Выведите все открытые ключи в кошельке по умолчанию:
Пример вывода -
Выведите все пары открытый/закрытый в кошельке по умолчанию. Будет запрошен пароль:
-
Введите пароль, заданный при создании кошелька по умолчанию:
Пример вывода
Если пароль верный, выводятся пары открытый/закрытый:
Внимание
Никогда не раскрывайте закрытые ключи в продуктивной среде.
Примечание
Если команды ничего не выводят, убедитесь, что вы создали пары ключей и импортировали закрытые ключи в кошелёк.
Итог¶
Следуя этим шагам, вы получаете список всех открытых ключей и пар открытый/закрытый в кошельке keosd по умолчанию.
Устранение неполадок¶
При выполнении cleos wallet open / cleos wallet unlock может появиться такая ошибка CLI:
No wallet service listening on ***. Cannot automatically start keosd because keosd was not found.
Failed to connect to keosd at unix:///Users/xxx.xxx/eosio-wallet/keosd.sock; is keosd running?
Чтобы устранить ошибку, убедитесь, что на машине запущена утилита keosd:
Импорт ключа¶
Обзор¶
В этом руководстве описано, как импортировать закрытый ключ в кошелёк keosd по умолчанию, чтобы cleos мог подписывать транзакции от имени соответствующего аккаунта в блокчейне COOPOS.
Перед началом¶
Убедитесь, что выполнены следующие требования:
- Создайте кошелёк по умолчанию командой
cleos wallet create. Инструкции — в разделе Кошелёк. - Откройте и разблокируйте созданный кошелёк.
- Ознакомьтесь с командой
cleos wallet import. - Установлена поддерживаемая версия
cleos. - Нужны базовые понятия: ключи и подписи в модели COOPOS.
Состав COOPOS
cleos входит в пакет COOPOS; при установке из исходников ставится вместе с nodeos и keosd.
Справка по командам¶
См. справку по использованию cleos и опциям:
- cleos wallet import — команда и параметры
Процедура¶
Ниже показано, как импортировать закрытый ключ в существующий кошелёк keosd по умолчанию:
-
Выполните команду импорта закрытого ключа в кошелёк по умолчанию. Будет запрошен закрытый ключ:
-
Введите закрытый ключ и нажмите Enter.
Пример вывода
Команда подтверждает успешный импорт, выводя соответствующий открытый ключ:
Итог¶
Следуя этим шагам, вы импортируете закрытый ключ в кошелёк по умолчанию.
Создание аккаунта¶
Обзор¶
В этом руководстве описано, как создать новый аккаунт блокчейна COOPOS с помощью CLI cleos. Аккаунты нужны для развёртывания смарт-контрактов и других операций в блокчейне. Создайте один или несколько аккаунтов при настройке среды разработки.
В примере создаётся аккаунт bob, авторизованный системным аккаунтом по умолчанию eosio, через cleos.
Перед началом¶
Убедитесь, что выполнены следующие требования:
- Установлена поддерживаемая версия
cleos. - Изучите раздел аккаунты и разрешения и ключи и подписи.
- Нужны базовые понятия: связка публичного ключа с
owner/activeна аккаунте — в тех же разделах. - Создайте пары открытого/закрытого ключа для разрешений
ownerиactiveаккаунта.
Состав COOPOS
cleos входит в пакет COOPOS; при установке из исходников ставится вместе с nodeos и keosd.
Справка по командам¶
См. справку по использованию cleos и опциям:
- команда
cleos create accountи её параметры
Процедура¶
Ниже показано, как создать аккаунт bob, авторизованный системным аккаунтом eosio.
- Выполните команду для создания аккаунта bob:
eosio— системный аккаунт, авторизующий создание нового аккаунтаbob— имя нового аккаунта в соответствии с правилами имён и разрешенийEOS87TQ...AoLGNN— открытый ключ владельца или уровень разрешения для нового аккаунта (обязательно)
Кто может создать аккаунт
Нужен уже существующий аккаунт-создатель с правом вызвать newaccount. В чистой тестовой сети для этого обычно используют системный аккаунт eosio. В продуктовой сети COOPOS создание новых аккаунтов идёт по правилам регистратора — см. ресурсы и регистрация.
Пример вывода
executed transaction: 4d65a274de9f809f9926b74c3c54aadc0947020bcfb6dd96043d1bcd9c46604c 200 bytes 166 us
# eosio <= eosio::newaccount {"creator":"eosio","name":"bob","owner":{"threshold":1,"keys":[{"key":"EOS87TQktA5RVse2EguhztfQVEh6X...
warning: transaction executed locally, but may not be confirmed by the network yet ]
Итог¶
Следуя этим шагам, вы создаёте новый аккаунт COOPOS в своей среде.
Данные аккаунта¶
Обзор¶
В этом руководстве описано, как запросить информацию об аккаунте COOPOS через cleos get account — квоты RAM, полосы NET/CPU и дерево разрешений. В примере запрашиваются данные аккаунта eosio.
Перед началом¶
- Установлена поддерживаемая версия
cleos.
Примечание
Утилита cleos входит в состав ПО COOPOS. При установке COOPOS устанавливается и cleos.
- Полезно заранее прочитать аккаунты и разрешения и ключи и подписи.
Справка по командам¶
См. справку по использованию cleos и опциям:
- команда
cleos get accountи её параметры
Процедура¶
Ниже показано, как запросить информацию об аккаунте eosio:
- Выполните команду:
eosio— имя системного аккаунта по умолчанию в блокчейне COOPOS.
Пример вывода
created: 2018-06-01T12:00:00.000
privileged: true
permissions:
owner 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
active 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
memory:
quota: unlimited used: 3.004 KiB
net bandwidth:
used: unlimited
available: unlimited
limit: unlimited
cpu bandwidth:
used: unlimited
available: unlimited
limit: unlimited
Поля аккаунта
В зависимости от сети COOPOS набор полей аккаунта может отличаться — это определяется развёрнутым системным контрактом.
Мультисиг¶
Обзор¶
На этой странице показан пример настройки разрешения active аккаунта так, чтобы для действий требовались подписи нескольких аккаунтов (порог и веса в authority). Это основа для мультиподписи при работе через cleos.
Перед началом¶
-
У вас есть аккаунт.
-
Выделено достаточно ресурсов для выполнения транзакции.
-
Установлена поддерживаемая версия
cleos. -
Нужны базовые понятия: аккаунты и разрешения, ключи и подписи, транзакции.
Шаги¶
cleos set account permission multisig active '{\"threshold\" : 1, \"accounts\" :[{\"permission\":{\"actor\":\"eosio\",\"permission\":\"active\"},\"weight\":1},{\"permission\":{\"actor\":\"customera\",\"permission\":\"active\"},\"weight\":1}]}' owner -p multisig@owner
Связать разрешение¶
Обзор¶
Здесь показано, как привязать отдельное разрешение к конкретному действию (action) контракта через cleos set action permission — чтобы для вызова, например, transfer использовался не active, а специальное минимально необходимое разрешение.
Перед началом¶
-
Установлена поддерживаемая версия
cleos. -
Нужны базовые понятия: аккаунты и разрешения, ключи и подписи, действие (action) и транзакция — транзакции.
Шаги¶
Свяжите уровень разрешения permlvl с действием transfer контракта hodlcontract:
Отвязать разрешение¶
Обзор¶
Здесь показано, как убрать привязку разрешения к действию контракта (cleos set action permission с NULL), вернув для этого действия поведение по умолчанию.
Перед началом¶
-
Установлена поддерживаемая версия
cleos. -
Нужны базовые понятия: аккаунты и разрешения, ключи и подписи, транзакции.
Шаги¶
Удалите связанный уровень разрешения у действия transfer контракта hodlcontract:
Информация о блоке¶
Обзор¶
Здесь показано, как запросить у API nodeos полные данные блока по номеру или по идентификатору — чтобы проверить время, подпись производителя, состав транзакций и связь с предыдущим блоком при отладке или мониторинге сети.
Перед началом¶
Убедитесь, что выполнены следующие требования:
- Ознакомьтесь с командой
cleos get blockи её параметрами. - Установлена поддерживаемая версия
cleos.
Примечание
cleos входит в состав ПО COOPOS. При установке COOPOS устанавливается и cleos.
- Полезно знать, как блоки формируются и распространяются по сети, и общие идеи протокола консенсуса в COOPOS.
Шаги¶
Выполните шаг ниже.
Получите полную информацию о блоке:
Здесь block_number_or_id — номер блока или идентификатор блока.
Ниже приведены примеры.
- Запросить в тестовой сети полную информацию о блоке с номером
48351112или с ID02e1c7888a92206573ae38d00e09366c7ba7bc54cd8b7996506f7d2a619c43ba:
Пример вывода
См. раздел среда разработки и тестовые сети{
"timestamp": "2021-01-28T17:58:59.500",
"producer": "inith",
"confirmed": 0,
"previous": "02e1c78787ff4d4ce6124831b936bb4ef6015e470868a535f1c6e04f3afed8a1",
"transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000",
"action_mroot": "1bf9d17b5a951cbb6d0a8324e4039744db4137df498abd53046ea26fa74d73c9",
"schedule_version": 1,
"new_producers": null,
"producer_signature": "SIG_K1_JxFfxGA1wZx9LCVjbrBb5nxTuJai7RUSiwRXyY866fYvZZyRtdmQFn9KJCqVHFAiYEsJpDb6dhTmHNDwipJm4rDiyhEmGa",
"transactions": [],
"id": "02e1c7888a92206573ae38d00e09366c7ba7bc54cd8b7996506f7d2a619c43ba",
"block_num": 48351112,
"ref_block_prefix": 3493375603
}
- Запросить в тестовой сети полную информацию о блоке с ID
02e1c7888a92206573ae38d00e09366c7ba7bc54cd8b7996506f7d2a619c43ba:
Пример вывода
cleos -u https://choiceofyourprovider get block 02e1c7888a92206573ae38d00e09366c7ba7bc54cd8b7996506f7d2a619c43ba
{
"timestamp": "2021-01-28T17:58:59.500",
"producer": "inith",
"confirmed": 0,
"previous": "02e1c78787ff4d4ce6124831b936bb4ef6015e470868a535f1c6e04f3afed8a1",
"transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000",
"action_mroot": "1bf9d17b5a951cbb6d0a8324e4039744db4137df498abd53046ea26fa74d73c9",
"schedule_version": 1,
"new_producers": null,
"producer_signature": "SIG_K1_JxFfxGA1wZx9LCVjbrBb5nxTuJai7RUSiwRXyY866fYvZZyRtdmQFn9KJCqVHFAiYEsJpDb6dhTmHNDwipJm4rDiyhEmGa",
"transactions": [],
"id": "02e1c7888a92206573ae38d00e09366c7ba7bc54cd8b7996506f7d2a619c43ba",
"block_num": 48351112,
"ref_block_prefix": 3493375603
}
Информация о транзакции¶
Обзор¶
В этом руководстве описано, как получить по ID полные данные транзакции в COOPOS — например, чтобы разобрать действия, подписи и след в блоке после отладки или инцидента.
В примере запрашиваются данные транзакции, связанной с созданием аккаунта bob.
Перед началом¶
Убедитесь, что выполнены следующие требования:
* Установлена поддерживаемая версия cleos.
Примечание
cleos входит в состав ПО COOPOS. При установке COOPOS устанавливается и cleos.
- Полезно заранее знать, как устроены транзакции в блокчейне COOPOS.
Справка по командам¶
См. справку по использованию cleos и опциям:
- команда
cleos get transactionи её параметры
Процедура¶
Ниже показано, как получить информацию о транзакции, связанной с созданием аккаунта bob.
- Запросите транзакцию по ID:
- Здесь
870a6b6e38...dada9b1— идентификатор транзакции создания аккаунта bob.
Пример вывода
Команда cleos возвращает подробные данные транзакции:
{
"id": "870a6b6e3882061ff0f64016e1eedfdd9439e2499bf978c3fb29fcedadada9b1",
"trx": {
"receipt": {
"status": "executed",
"cpu_usage_us": 3493,
"net_usage_words": 25,
"trx": [
1,{
"signatures": [
"SIG_K1_KYEvKx3nC81H6brKXHNjhrw32rNtTC2dP6nYFjZvj1N3k7KSU4CXBTJyiXd38ANu2ZPTUf66qUghUp5Jarkhiqdx3D8pwf"
],
"compression": "none",
"packed_context_free_data": "",
"packed_trx": "0c252e60fe001fe2acca00000000010000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed3232660000000000ea30550000000000000e3d01000000010002dfcee032f2e84bfc8ecc5c10fffb870ec1c690c1f3fdae3d8b7d65690b6455560100000001000000010002dfcee032f2e84bfc8ecc5c10fffb870ec1c690c1f3fdae3d8b7d65690b6455560100000000"
}
]
},
"trx": {
"expiration": "2021-02-18T08:27:56",
"ref_block_num": 254,
"ref_block_prefix": 3400327711,
"max_net_usage_words": 0,
"max_cpu_usage_ms": 0,
"delay_sec": 0,
"context_free_actions": [],
"actions": [{
"account": "eosio",
"name": "newaccount",
"authorization": [{
"actor": "eosio",
"permission": "active"
}
],
"data": {
"creator": "eosio",
"name": "bob",
"owner": {
"threshold": 1,
"keys": [{
"key": "EOS6b4ENeXffuKGmsk3xCk3kbFM5M8dcANrUa9Mj9RzKLNhPKhzyj",
"weight": 1
}
],
"accounts": [],
"waits": []
},
"active": {
"threshold": 1,
"keys": [{
"key": "EOS6b4ENeXffuKGmsk3xCk3kbFM5M8dcANrUa9Mj9RzKLNhPKhzyj",
"weight": 1
}
],
"accounts": [],
"waits": []
}
},
"hex_data": "0000000000ea30550000000000000e3d01000000010002dfcee032f2e84bfc8ecc5c10fffb870ec1c690c1f3fdae3d8b7d65690b6455560100000001000000010002dfcee032f2e84bfc8ecc5c10fffb870ec1c690c1f3fdae3d8b7d65690b64555601000000"
}
],
"transaction_extensions": [],
"signatures": [
"SIG_K1_KYEvKx3nC81H6brKXHNjhrw32rNtTC2dP6nYFjZvj1N3k7KSU4CXBTJyiXd38ANu2ZPTUf66qUghUp5Jarkhiqdx3D8pwf"
],
"context_free_data": []
}
},
"block_time": "2021-02-18T08:27:27.000",
"block_num": 256,
"last_irreversible_block": 305,
"traces": [{
"action_ordinal": 1,
"creator_action_ordinal": 0,
"closest_unnotified_ancestor_action_ordinal": 0,
"receipt": {
"receiver": "eosio",
"act_digest": "2640ce4d4a789393dec3b7938cea2f78c5669498d0d22adeab9204c489c2cfd6",
"global_sequence": 256,
"recv_sequence": 256,
"auth_sequence": [[
"eosio",
256
]
],
"code_sequence": 0,
"abi_sequence": 0
},
"receiver": "eosio",
"act": {
"account": "eosio",
"name": "newaccount",
"authorization": [{
"actor": "eosio",
"permission": "active"
}
],
"data": {
"creator": "eosio",
"name": "bob",
"owner": {
"threshold": 1,
"keys": [{
"key": "EOS6b4ENeXffuKGmsk3xCk3kbFM5M8dcANrUa9Mj9RzKLNhPKhzyj",
"weight": 1
}
],
"accounts": [],
"waits": []
},
"active": {
"threshold": 1,
"keys": [{
"key": "EOS6b4ENeXffuKGmsk3xCk3kbFM5M8dcANrUa9Mj9RzKLNhPKhzyj",
"weight": 1
}
],
"accounts": [],
"waits": []
}
},
"hex_data": "0000000000ea30550000000000000e3d01000000010002dfcee032f2e84bfc8ecc5c10fffb870ec1c690c1f3fdae3d8b7d65690b6455560100000001000000010002dfcee032f2e84bfc8ecc5c10fffb870ec1c690c1f3fdae3d8b7d65690b64555601000000"
},
"context_free": false,
"elapsed": 1565,
"console": "",
"trx_id": "870a6b6e3882061ff0f64016e1eedfdd9439e2499bf978c3fb29fcedadada9b1",
"block_num": 256,
"block_time": "2021-02-18T08:27:27.000",
"producer_block_id": null,
"account_ram_deltas": [{
"account": "bob",
"delta": 2724
}
],
"except": null,
"error_code": null
}
]
}
Note
Для запроса информации о транзакции нужен экземпляр nodeos с включёнными плагином history и плагином history API.
Итог¶
Следуя этим шагам, вы получаете информацию о транзакции по её идентификатору.
Устранение неполадок¶
Если в nodeos в файле config.ini не включены плагин history и плагин history API, команда cleos get transaction с ID завершится ошибкой, например:
Error 3110003: Missing History API Plugin
Ensure that you have eosio::history_api_plugin added to your node's configuration!
Error Details:
History API plugin is not enabled
Чтобы устранить ошибку, включите плагин history и плагин history API, затем выполните команду снова.
Таблицы¶
Обзор¶
Здесь показана команда cleos get table для чтения строк таблицы состояния смарт-контракта по аккаунту контракта, scope и имени таблицы — удобно для отладки и инспекции данных на цепи.
Перед началом¶
-
Установлена поддерживаемая версия
cleos. -
Нужны базовые понятия: аккаунт контракта, таблицы и scope — состояние и хранение данных.
Шаги¶
Отправка транзакции¶
Обзор¶
На этой странице описано, как отправить (push) готовую транзакцию в сеть через cleos push transaction: вы формируете JSON транзакции и передаёте его файлом или строкой. Это нужно, когда транзакция уже собрана и её остаётся только подписать и доставить в nodeos.
Перед началом¶
- Установлена поддерживаемая версия
cleos. - Нужны базовые понятия: что такое транзакция и как собрать корректный JSON транзакции (поля
expiration,ref_block_*,actionsи т.д.).
Шаги¶
- Создайте JSON-фрагмент с валидной транзакцией, например:
{
"expiration": "2019-08-01T07:15:49",
"ref_block_num": 34881,
"ref_block_prefix": 2972818865,
"max_net_usage_words": 0,
"max_cpu_usage_ms": 0,
"delay_sec": 0,
"context_free_actions": [],
"actions": [{
"account": "eosio.token",
"name": "transfer",
"authorization": [{
"actor": "han",
"permission": "active"
}
],
"data": "000000000000a6690000000000ea305501000000000000000453595300000000016d"
}
],
"transaction_extensions": [],
"context_free_data": []
}
- Можно также использовать для поля
dataчитаемый JSON.
Читаемый JSON в data
Если в data задан читаемый JSON, cleos запрашивает нужные ABI через API nodeos; это создаёт дополнительную нагрузку на nodeos.
{
"expiration": "2019-08-01T07:15:49",
"ref_block_num": 34881,
"ref_block_prefix": 2972818865,
"max_net_usage_words": 0,
"max_cpu_usage_ms": 0,
"delay_sec": 0,
"context_free_actions": [],
"actions": [{
"account": "eosio.token",
"name": "transfer",
"authorization": [{
"actor": "han",
"permission": "active"
}
],
"data": {
"from": "han",
"to": "eosio",
"quantity": "0.0001 SYS",
"memo": "m"
}
}
],
"transaction_extensions": [],
"context_free_data": []
}
- Выполните команду:
- Отправить транзакцию из JSON:
Перевод токена¶
Обзор¶
Здесь показано, как выполнить перевод основного токена сети через контракт eosio.token командой cleos transfer — типовая операция между аккаунтами при подключении к рабочей ноде.
Перед началом¶
-
Установлена поддерживаемая версия
cleos. -
Вы переводите токен, созданный контрактом eosio.token, и контракт eosio.token развёрнут в сети, к которой вы подключены.
-
Нужны базовые понятия: транзакции. Имейте в виду: переводы токенов на цепи необратимы.
Шаги¶
Чтобы перевести 0.0001 SYS на аккаунт bob с аккаунта alice, выполните:
Ресурсы: powerup (актуально)¶
В сети COOPOS ресурсы NET, CPU и RAM выдаются действием контракта eosio.system — powerup. Отдельной подкоманды cleos system powerup в справке может не быть; действие отправляют через cleos push action.
Сигнатура действия¶
| Поле | Тип | Смысл |
|---|---|---|
payer |
имя | Кто платит токенами |
receiver |
имя | Кому начисляются ресурсы |
days |
uint32 |
Срок аренды в днях — совпадает с powerup_days в состоянии рынка |
payment |
актив | Сумма в основном токене сети |
transfer |
bool |
Режим передачи ресурсов (для registrator / eosio.system при регистрации и др.) |
Подробнее: Ресурсы сети, регистрация и контракты.
Примеры cleos push action¶
cleos -u https://ВАША_НОДА push action eosio.system powerup \
'["ПЛАТЕЛЬЩИК", "ПОЛУЧАТЕЛЬ", ДНИ, "1.0000 SYS", false]' -p ПЛАТЕЛЬЩИК@active
Обработка очереди истёкших аренд:
cleos -u https://ВАША_НОДА push action eosio.system powerupexec \
'["ВЫЗЫВАЮЩИЙ", 100]' -p ВЫЗЫВАЮЩИЙ@active
См. также¶
- Справка по подкомандам
cleos system: system (в т.ч.buyram,delegatebw,rex— описание интерфейса; фактическое поведение сети задаёт контрактeosio.system).
Покупка RAM¶
Устарело (deprecated) для COOPOS
В сети COOPOS квоты RAM вместе с NET/CPU выдаются через powerup (актуальные примеры). Команда cleos system buyram относится к старой модели и приведена ниже только для справки и для других развёртываний EOSIO.
Обзор¶
Здесь показано, как купить RAM на аккаунт через cleos system buyram — чтобы хватило квоты на развёртывание контракта, таблицы состояния и рост данных на цепи.
Перед началом¶
-
У вас есть аккаунт.
-
Развёрнуты и используются эталонные системные контракты из репозитория
eosio.contractsдля управления системными ресурсами. -
На аккаунте достаточно токенов.
-
Установлена поддерживаемая версия
cleos. -
Разблокируйте кошелёк.
Шаги¶
Купить RAM на сумму 0.1 SYS для аккаунта alice:
Делегирование NET¶
Устарело (deprecated) для COOPOS
Для NET (и CPU) в COOPOS используется eosio.system::powerup (раздел выше). cleos system delegatebw — legacy-модель стейка/делегирования.
Обзор¶
Здесь показано, как делегировать пропускную способность сети (NET) с одного аккаунта на другой через cleos system delegatebw — чтобы выделить NET получателю, при необходимости задействовав и CPU в той же команде.
Перед началом¶
Убедитесь, что выполнены следующие требования:
- Ознакомьтесь с командой
cleos system delegatebwи её параметрами. - Установлена поддерживаемая версия
cleos.
Примечание
cleos входит в состав ПО COOPOS. При установке COOPOS устанавливается и cleos.
- Развёрнуты и используются эталонные системные контракты из репозитория
reference-contractsдля управления системными ресурсами. - Нужны базовые понятия: аккаунт и системные ресурсы NET/CPU в COOPOS.
Шаги¶
Выполните шаг ниже.
Делегируйте пропускную способность сети (NET) с исходного аккаунта на аккаунт-получатель:
Здесь from — аккаунт, с которого делегируется пропускная способность, receiver — аккаунт-получатель, а stake_net_quantity и/или stake_cpu_quantity — объём токенов в стейке для NET и/или CPU соответственно.
Ниже приведены примеры.
- Делегировать 0.01 SYS на пропускную способность сети (NET) от
bobкalice:
Пример вывода
executed transaction: 5487afafd67bf459a20fcc2dbc5d0c2f0d1f10e33123eaaa07088046fd18e3ae 192 bytes 503 us
# eosio <= eosio::delegatebw {"from":"bob","receiver":"alice","stake_net_quantity":"0.0100 SYS","stake_cpu_quantity":"0.0000 SYS"...
# eosio.token <= eosio.token::transfer {"from":"bob","to":"eosio.stake","quantity":"0.0010 SYS","memo":"stake bandwidth"}
# bob <= eosio.token::transfer {"from":"bob","to":"eosio.stake","quantity":"0.0010 SYS","memo":"stake bandwidth"}
# eosio.stake <= eosio.token::transfer {"from":"bob","to":"eosio.stake","quantity":"0.0010 SYS","memo":"stake bandwidth"}
Делегирование CPU¶
Обзор¶
Здесь показано, как делегировать пропускную способность CPU с одного аккаунта на другой через cleos system delegatebw — чтобы выделить CPU получателю (при необходимости в той же транзакции можно указать и NET).
Перед началом¶
Убедитесь, что выполнены следующие требования:
- Ознакомьтесь с командой
cleos system delegatebwи её параметрами. - Установлена поддерживаемая версия
cleos.
Примечание
cleos входит в состав ПО COOPOS. При установке COOPOS устанавливается и cleos.
- Развёрнуты и используются эталонные системные контракты из репозитория
reference-contractsдля управления системными ресурсами. - Нужны базовые понятия: аккаунт и системные ресурсы NET/CPU в COOPOS.
Шаги¶
Выполните шаг ниже.
Делегируйте пропускную способность CPU с исходного аккаунта на аккаунт-получатель:
Здесь from — аккаунт, с которого делегируется пропускная способность, receiver — аккаунт-получатель, а stake_net_quantity и/или stake_cpu_quantity — объём токенов в стейке для NET и/или CPU соответственно.
Ниже приведены примеры.
- Делегировать 0.01 SYS на пропускную способность CPU от
bobкalice:
Пример вывода
executed transaction: 5487afafd67bf459a20fcc2dbc5d0c2f0d1f10e33123eaaa07088046fd18e3ae 192 bytes 503 us
# eosio <= eosio::delegatebw {"from":"bob","receiver":"alice","stake_net_quantity":"0.0000 SYS","stake_cpu_quantity":"0.0100 SYS"...
# eosio.token <= eosio.token::transfer {"from":"bob","to":"eosio.stake","quantity":"0.0010 SYS","memo":"stake bandwidth"}
# bob <= eosio.token::transfer {"from":"bob","to":"eosio.stake","quantity":"0.0010 SYS","memo":"stake bandwidth"}
# eosio.stake <= eosio.token::transfer {"from":"bob","to":"eosio.stake","quantity":"0.0010 SYS","memo":"stake bandwidth"}
Снятие делегирования NET¶
Устарело (deprecated) для COOPOS
Снятие стейка через undelegatebw относится к legacy-модели. В COOPOS ресурсы NET/CPU задаются powerup (актуально).
Обзор¶
Здесь показано, как снять делегирование NET с аккаунта получателя обратно на аккаунт, который изначально делегировал ресурс (cleos system undelegatebw). Снять делегирование может только исходный делегатор.
Перед началом¶
-
Установлена поддерживаемая версия
cleos. -
Развёрнуты и используются эталонные системные контракты из репозитория
eosio.contractsдля управления системными ресурсами. -
Нужны базовые понятия: аккаунт и системные ресурсы NET/CPU.
Шаги¶
Снять делегирование 0.01 SYS пропускной способности сети с аккаунта alice обратно на аккаунт bob:
Вывод должен быть примерно таким:
executed transaction: e7e7edb6c5556de933f9d663fea8b4a9cd56ece6ff2cebf056ddd0835efa6606 184 bytes 452 us
# eosio <= eosio::undelegatebw {"from":"alice","receiver":"bob","unstake_net_quantity":"0.01 EOS","unstake_cpu_qu...
warning: transaction executed locally, but may not be confirmed by the network yet ]
Снятие делегирования CPU¶
Обзор¶
Здесь показано, как снять делегирование CPU с аккаунта получателя обратно на аккаунт-делегатор (cleos system undelegatebw). Снять делегирование может только тот аккаунт, который изначально делегировал ресурс.
Перед началом¶
-
Установлена поддерживаемая версия
cleos. -
Развёрнуты и используются эталонные системные контракты из репозитория
eosio.contractsдля управления системными ресурсами. -
Нужны базовые понятия: аккаунт и системные ресурсы NET/CPU.
Шаги¶
Снять делегирование 0.01 SYS пропускной способности CPU с аккаунта alice обратно на аккаунт bob:
Вывод должен быть примерно таким:
executed transaction: e7e7edb6c5556de933f9d663fea8b4a9cd56ece6ff2cebf056ddd0835efa6606 184 bytes 452 us
# eosio <= eosio::undelegatebw {"from":"alice","receiver":"bob","unstake_net_quantity":"0.0000 EOS","unstake_cpu_qu...
warning: transaction executed locally, but may not be confirmed by the network yet ]
Unstake NET¶
Устарело (deprecated) для COOPOS
Используйте powerup (актуально). Раздел ниже — legacy.
Обзор¶
Здесь показано, как вывести стейк NET со своего аккаунта через cleos system undelegatebw. Снять делегирование может только тот аккаунт, который изначально делегировал ресурс.
Перед началом¶
-
Установлена поддерживаемая версия
cleos. -
Развёрнуты и используются эталонные системные контракты из репозитория
eosio.contractsдля управления системными ресурсами. -
Нужны базовые понятия: аккаунт и системные ресурсы NET/CPU.
Шаги¶
Вывести стейк 0.01 SYS пропускной способности сети с аккаунта alice:
Вывод должен быть примерно таким:
executed transaction: e7e7edb6c5556de933f9d663fea8b4a9cd56ece6ff2cebf056ddd0835efa6606 184 bytes 452 us
# eosio <= eosio::undelegatebw {"from":"alice","receiver":"alice","unstake_net_quantity":"0.01 EOS","unstake_cpu_qu...
warning: transaction executed locally, but may not be confirmed by the network yet ]
Unstake CPU¶
Устарело (deprecated) для COOPOS
Используйте powerup (актуально). Раздел ниже — legacy.
Обзор¶
Здесь показано, как вывести стейк CPU со своего аккаунта через cleos system undelegatebw. Снять делегирование может только тот аккаунт, который изначально делегировал ресурс.
Перед началом¶
-
Установлена поддерживаемая версия
cleos. -
Развёрнуты и используются эталонные системные контракты из репозитория
eosio.contractsдля управления системными ресурсами. -
Нужны базовые понятия: аккаунт и системные ресурсы NET/CPU.
Шаги¶
Вывести стейк 0.01 SYS пропускной способности CPU с аккаунта alice:
Вывод должен быть примерно таким:
executed transaction: e7e7edb6c5556de933f9d663fea8b4a9cd56ece6ff2cebf056ddd0835efa6606 184 bytes 452 us
# eosio <= eosio::undelegatebw {"from":"alice","receiver":"alice","unstake_net_quantity":"0.0000 EOS","unstake_cpu_qu...
warning: transaction executed locally, but may not be confirmed by the network yet ]
Стейк ресурса¶
Устарело (deprecated) для COOPOS
Для своего аккаунта в COOPOS ресурсы выдаются через powerup (раздел выше). delegatebw на себя — legacy.
Обзор¶
Здесь приведены примеры, как застейкать NET и/или CPU на свой же аккаунт через cleos system delegatebw — чтобы увеличить доступные ресурсы для транзакций и хранения состояния контрактов.
Перед началом¶
-
Установлена поддерживаемая версия
cleos. -
Развёрнуты и используются эталонные системные контракты из репозитория
eosio.contractsдля управления системными ресурсами. -
Нужны базовые понятия: аккаунт и системные ресурсы NET/CPU.
Шаги¶
Застейкать 0.01 SYS пропускной способности CPU для alice:
Застейкать 0.01 SYS пропускной способности сети (NET) для alice:
Развёртывание контракта¶
Обзор¶
На этой странице описано, как развернуть WASM и ABI смарт-контракта на аккаунте в сети COOPOS командой cleos set contract — обычный шаг после сборки контракта в среде разработки.
Перед началом¶
-
Установлена поддерживаемая версия
cleos. -
Разблокируйте кошелёк, в котором есть закрытый ключ аккаунта контракта.
Шаги¶
Выполните:
Подставьте вместо contract_folder путь к каталогу с контрактом.
Имя контракта по умолчанию
По умолчанию cleos считает именем контракта последний сегмент пути в contract_folder и ожидает файлы .wasm и .abi с таким именем. Это можно переопределить необязательными параметрами wasm-file и abi-file.
Голосование¶
Обзор¶
Здесь показано, как отдать голос за одного или нескольких производителей блоков через cleos system voteproducer в сети с классическим контрактом eosio.system.
Перед началом¶
-
Установлена поддерживаемая версия
cleos. -
Развёрнуты и используются эталонные системные контракты из репозитория
eosio.contractsдля управления системными ресурсами. -
Полезно знать, кто такие производители блоков и как в вашей сети устроено голосование; общий контекст — в разделах ноды и делегаты и протоколы.
-
Разблокируйте кошелёк.
Шаги¶
Если вы голосуете за blockproducer1 и blockproducer2 с аккаунта eosiotestts2, выполните:
Вывод должен быть примерно таким: