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

deccli keys add ACCOUNT_NAME

, например

deccli keys add node-owner

, либо восстановить аккаунт с именем ACCOUNT_NAME из уже существующего мнемоника, командой

deccli keys add ACCOUNT_NAME --recover

Например,

deccli keys add node-owner --recover

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

decd gen-declare-candidate-tx

, в результате исполнения которой сформируется подписанная транзакция в виде JSON объекта, который далее будет включен в файл genesis.json.*

В команде требуется указать несколько флагов:

decd gen-declare-candidate-tx \ --sequence 0 \ --chain-id "decimal-mainnet-07-23-20-55" \ --amount "1500000000000000000000000del" \ --pubkey "dxvalconspub1zcjduepqny2jlxtkpy5cuudu79lkjfqrmaseqdkd7njdt0a4n8zflg57jflsg60x9h" \ --commission-rate "0.1275" \ --reward-addr "dx1mtlnpmwf8zr6pek6gq25nv45x2890sne2ap0cc" \ --moniker "My local test validator" \ --website "myvalidator.com" \ --identity "6A0D65E29A4CBC8E" \ --security-contact "email: [email protected]" \ --details "The best validator ever" \ --node-id "$(decd tendermint show-node-id)" \ --name node-owner \

, где :

  • sequence - всегда равен 0
  • chain-id - актуальный идентификатор chain-id тестовой или рабочей сети
  • amount - стейк валидатора в соответствующем формате, в данном случае стейк равен 1 500 000 DEL
  • pubkey - здесь указывается публичный ключ вашей развёрнутой ноды. Воспользуйтесь командой 'decd tendermint show-validator' , чтобы получить этот ключ.
  • commission-rate - размер комиссии, которую берёт валидатор с вознаграждений делегированных ему монет, в данном случае комиссия составляет 12,75%
  • reward-addr - адрес, на который будет начисляться вознаграждение за работу валидатора. Если данная строка отсутствует либо адрес не указан, то вознаграждение будет начисляться на адрес, с которого производится декларирование кандидата
  • moniker - название валидатора, которое будет отображаться в сервисах Decimal
  • website - веб сайт валидатора, параметр необязательный
  • identity - идентификатор валидатора в системах Keybase или UPort для отображения аватара, например, для Keybase это строка из 16 символов
  • security-contact - контактные данные валидатора по вопросам безопасности
  • details - дополнительное текстовое описание валидатора, опционально
  • node-id - идентификатор развёрнутой ноды. Если декларирование делается непосредственно с декларируемой ноды, то можно найти его непосредственно в файле node_info.json либо воспользоваться командой decd tendermint show-node-id. Если же декларирование происходит с другой ноды, то нужно найти идентификатор ноды в файле декларируемой ноды
  • name - имя аккаунта, который подписывает транзакцию. Мы его создавали/восстанавливали выше, командой deccli keys add

Результат исполнения вышеописанной команды будет выглядеть вот так (с поправкой на актуальные данные):

{ "type": "cosmos-sdk/StdTx", "value": { "msg": [ { "type": "validator/declare_candidate", "value": { "commission": "0.127500000000000000", "validator_addr": "dxvaloper1tvqxh4x7pedyqpzqp9tdf068k4q9j2hmddu9z5", "reward_addr": "dx1mtlnpmwf8zr6pek6gq25nv45x2890sne2ap0cc", "pub_key": { "type": "tendermint/PubKeyEd25519", "value": "mRUvmXYJKY5xvPF/aSQD32GQNs305NW/tZnEn6Kekn8=" }, "stake": { "denom": "del", "amount": "1500000000000000000000000" }, "description": { "moniker": "My local test validator", "identity": "6A0D65E29A4CBC8E", "website": "myvalidator.com", "security_contact": "email: [email protected]", "details": "The best validator ever" } } } ], "fee": { "amount": [], "gas": "200000" }, "signatures": [ { "pub_key": { "type": "tendermint/PubKeySecp256k1", "value": "At2s2CHimonx45uDImfnbTI6Xo2qZJ/Tye0+AioQ38uO" }, "signature": "xRROS9sw3IaDdfcrOQtXzEh17thcGoZkZ6DsSZecgekexNXiVOJvPpbnzVAuMP6De3WxJxoKrW+pbBRbz3LFFg==" } ], } }