Работа с консольным интерфейсом
Консольный интерфейс можно использовать для взаимодействия с блокчейном как через локальную ноду, так и через удаленную.
Интерфейс позволяет безопасно хранить ключи (каждый ключ зашифрован паролем), подписывать транзакции и получать любую информацию из блокчейна.
Все примеры команд начинаются с "plancoincli"
Обратите внимание, что сумму amount всегда нужно делить на 1 000 000 (1 миллион) для получения реальной цифры - блокчейн всегда оперирует big int вместо float из-за разницы в округлении float на разных платформах.
Конфигурация
Для конфигурации интерфейса необходимо выполнить несколько команд:
plancoincli config chain-id plancoin-2 - устанавливает необходимый «chain-id».
plancoincli config node tcp://localhost:26657 - адрес ноды, с которой будет работать интерфейс. Если локальная нода не запущена, используйте адрес "tcp://node.plancoin.com:26657"
plancoincli config trust-node true - режим доверия к ноде, позволяет ускорить взаимодействие при отправке транзакций.
plancoincli config output json - вся информация из интерфейса будет выводиться в формате JSON.
plancoincli config indent true - выставляет отступы для JSON.
Работа с ключами
Ключи хранятся в зашифрованном виде на вашем жестком диске, если ключей несколько, то для каждого ключа используется пароль мастер-ключа, который был создан самым первым в Вашем интерфейсе. Очень важно хранить mnemonic коды ключей и пароли на бумаге в безопасном месте, т.к. при утере этих данных восстановить ключи будет невозможно.
Ключи создаются командой: plancoincli keys add {имяключа}
После этого интерфейс запросит дважды ввести пароль для шифровки ключа, а затем отобразит mnemonic фразу.
~# plancoincli keys add example Enter keyring passphrase: { "name": "example", "type": "local", "address": "plan13gskp0mhn664zz6ax200nj3evural04p5pd68z", "pubkey": "planpub1addwnpepqgt840gr9atpm5kvcvfhlu2gc0zzzrg0sv97kq8yex6g6x9rrflgu6q8d06", "mnemonic": "hat used flush lamp grass metal nation avoid scrap vapor trend property tilt bubble velvet slice alter enemy address laugh auction verify menu fury" }
Для просмотра списка всех ключей используется команда plancoincli keys list
~# plancoincli keys list Enter keyring passphrase: { "name": "example", "type": "local", "address": "plan13gskp0mhn664zz6ax200nj3evural04p5pd68z", "pubkey": "planpub1addwnpepqgt840gr9atpm5kvcvfhlu2gc0zzzrg0sv97kq8yex6g6x9rrflgu6q8d06" }
При утере ключа, его можно восстановить по записанной mnemonic при помощи команды:
plancoincli keys add {имяключа} --recover
Имя ключа может быть отличным от оригинального. После ввода команды потребуется ввести пароль, а затем mnemonic.
~# plancoincli keys add example --recover Enter keyring passphrase: override the existing name example [y/N]: y > Enter your bip39 mnemonic hat used flush lamp grass metal nation avoid scrap vapor trend property tilt bubble velvet slice alter enemy address laugh auction verify menu fury { "name": "example", "type": "local", "address": "plan13gskp0mhn664zz6ax200nj3evural04p5pd68z", "pubkey": "planpub1addwnpepqgt840gr9atpm5kvcvfhlu2gc0zzzrg0sv97kq8yex6g6x9rrflgu6q8d06" }
Получение информации об аккаунте
plancoincli query account {адрес}
~# plancoincli query account plan19exe8re2dtjg22s96h4c8asw8hg5qe56pd8js4 { "type": "cosmos-sdk/Account", "value": { "address": "plan19exe8re2dtjg22s96h4c8asw8hg5qe56pd8js4", "coins": [ { "denom": "plan", "amount": "1000070833" } ], "public_key": "planpub1addwnpepqw40k9682hd37n244faqks2qhtt3lnu5lggnkfp4fyryzt9z39qggzdja62", "account_number": 24, "sequence": 1 } }
Для просмотра параметров структуры, кол-во последователей и максимального уровня, используется команда:
plancoincli query structure get {адрес} plan
~# plancoincli query structure get plan1jx6qcwup0y2t5zjxa5nuk9cmqtewe2grcwzm53 plan { "owner": "plan1jx6qcwup0y2t5zjxa5nuk9cmqtewe2grcwzm53", "balance": "140382546928", "followers": "137", "max_level": "100" }
Просмотр параметров майнинга, производится командой:
plancoincli query posmining get {адрес}
~# plancoincli query posmining get plan1jx6qcwup0y2t5zjxa5nuk9cmqtewe2grcwzm53 { "coin": "plan", "posmined": "27914310", "posmining": { "owner": "plan1jx6qcwup0y2t5zjxa5nuk9cmqtewe2grcwzm53", "daily_percent": "8", "structure_coff": "280", "posmined": "10029558", "last_transaction": "2020-11-17T06:17:58.204420864Z", "last_charged": "2020-11-21T18:15:17.070080424Z" }, "coins_per_time": { "day": "2240864", "hour": "93369", "minute": "1556", "second": "25" }, "savings_coff": "0" }
Поле "posmined" показывает, какая сумма намайнена на момент последнего блока.
Поле "daily_percent" отображает дневной процент майнинга.
Поле "structure_coff" отображает коэффициент структуры.
Поле "coins_per_time" отображает, сколько монет будет намайнено за день (day), час (hour), минуту (minute) и секунду (second).
Поле "savings_coff" отображает коэффициент HOLD
Поля "daily_percent", "structure_coff", и "savings_coff" необходимо делить на 100 для получения реального значения.
Транзакции
Транзакции отправляются командой:
plancoincli tx send {отправитель} {получатель} {сумма}plan --from {имяключа} --fees {комиссия}plan --gas auto --gas-adjustment 1.5
Обращаем внимание, что {сумма} и {комиссия} должны быть умножены на 1 миллион. 1 plan = 1000000plan для консольной команды.
~# plancoincli tx send plan1gtu2x44p4r7c4h2hd7aswk500u54d2hu4qvyzj plan1h2r8yxam5c08fkeldsptp3j5wyyg0qhplwzx7x 1000000plan --from example --fees 1000plan --gas auto --gas-adjustment 1.5 Enter keyring passphrase: gas estimate: 196021 { "chain_id": "plancoin", "account_number": "7", "sequence": "23", "fee": { "amount": [ { "denom": "plan", "amount": "1000" } ], "gas": "196021" }, "msgs": [ { "type": "cosmos-sdk/MsgSend", "value": { "from_address": "plan1gtu2x44p4r7c4h2hd7aswk500u54d2hu4qvyzj", "to_address": "plan1h2r8yxam5c08fkeldsptp3j5wyyg0qhplwzx7x", "amount": [ { "denom": "plan", "amount": "1000000" } ] } } ], "memo": "" } confirm transaction before signing and broadcasting [y/N]: y Enter keyring passphrase: { "height": "0", "txhash": "F0B896ACB96C0640BD26A684CA1A6D870BB3BC656A84051E586AF6E55C4E34B5", "raw_log": "[]" }
Команда для получения статуса транзакции по хэшу plancoincli query tx {хэш}
~# plancoincli query tx F0B896ACB96C0640BD26A684CA1A6D870BB3BC656A84051E586AF6E55C4E34B5 { "height": "183161", "txhash": "F0B896ACB96C0640BD26A684CA1A6D870BB3BC656A84051E586AF6E55C4E34B5", "raw_log": "[{\"msg_index\":0,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"send\"},{\"key\":\"sender\",\"value\":\"plan1gtu2x44p4r7c4h2hd7aswk500u54d2hu4qvyzj\"},{\"key\":\"module\",\"value\":\"bank\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"plan1h2r8yxam5c08fkeldsptp3j5wyyg0qhplwzx7x\"},{\"key\":\"amount\",\"value\":\"1000000plan\"}]}]}]", "logs": [ { "msg_index": 0, "log": "", "events": [ { "type": "message", "attributes": [ { "key": "action", "value": "send" }, { "key": "sender", "value": "plan1gtu2x44p4r7c4h2hd7aswk500u54d2hu4qvyzj" }, { "key": "module", "value": "bank" } ] }, { "type": "transfer", "attributes": [ { "key": "recipient", "value": "plan1h2r8yxam5c08fkeldsptp3j5wyyg0qhplwzx7x" }, { "key": "amount", "value": "1000000plan" } ] } ] } ], "gas_wanted": "196021", "gas_used": "129373", "tx": { "type": "cosmos-sdk/StdTx", "value": { "msg": [ { "type": "cosmos-sdk/MsgSend", "value": { "from_address": "plan1gtu2x44p4r7c4h2hd7aswk500u54d2hu4qvyzj", "to_address": "plan1h2r8yxam5c08fkeldsptp3j5wyyg0qhplwzx7x", "amount": [ { "denom": "plan", "amount": "1000000" } ] } } ], "fee": { "amount": [ { "denom": "plan", "amount": "1000" } ], "gas": "196021" }, "signatures": [ { "pub_key": { "type": "tendermint/PubKeySecp256k1", "value": "AjKUK8weLN6q8wb7bSTpR0Yo4XJR3MaYLAUomA4yygRJ" }, "signature": "V3zm8c5aIW9yk1Ev2JZmGYW4zixRSomy2nTnzRq7OZxAGxzivHjw/KvijSijmEgJpWc67re9L0lzSHaU6XYh4Q==" } ], "memo": "" } }, "timestamp": "2020-11-29T17:55:56Z" }
Другие команды консольного интерфейса смотрите здесь