# Генезис транзакция валидатора

Перед тем, как приступить к генерации транзакции по декларированию валидатора вам понадобиться аккаунт, который будет подписывать транзакцию в консольном клиенте. Для этого требуется либо создать новый аккаунт со случайно сгенерированным мнемоником и с именем 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=="
      }
    ],
  }
}