Работа с консольным интерфейсом

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

Интерфейс позволяет безопасно хранить ключи (каждый ключ зашифрован паролем), подписывать транзакции и получать любую информацию из блокчейна.

Все примеры команд начинаются с "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"
}

Другие команды консольного интерфейса смотрите здесь