Validators
Register a Validator

Registering a Validator on Sei

Prerequisites

Before you register a validator, ensure that you have completed the following steps:

  1. Install the seid CLI: Follow the installation guide to set up the seid command-line interface.
  2. Set Up a Full Node: Ensure your full node is fully synced with the network. Refer to the full node setup guide.

Generate a Validator Key

Generate a new keypair for your validator:

seid keys add <name> [flags]

Flags:

      --account uint32           Account number for HD derivation
      --algo string              Key signing algorithm to generate keys for (default "secp256k1")
      --coin-type uint32         coin type number for HD derivation (default 118)
      --dry-run                  Perform action, but don't add key to local keystore
      --hd-path string           Manual HD Path derivation (overrides BIP44 config)
  -h, --help                     help for add
      --index uint32             Address index number for HD derivation
  -i, --interactive              Interactively prompt user for BIP39 passphrase and mnemonic
      --ledger                   Store a local reference to a private key on a Ledger device
      --multisig strings         List of key names stored in keyring to construct a public legacy multisig key
      --multisig-threshold int   K out of N required signatures. For use in conjunction with --multisig (default 1)
      --no-backup                Don't print out seed phrase (if others are watching the terminal)
      --nosort                   Keys passed to --multisig are taken in the order they're supplied
      --pubkey string            Parse a public key in JSON format and saves key info to <name> file.
      --recover                  Provide seed phrase to recover existing key instead of creating

Save the generated mnemonic phrase securely as it will be used to recover your keypair.

Create a Validator

Once your full node is synced, create a validator using the following command:

seid tx staking create-validator [flags]

Flags:

-a, --account-number uint             The account number of the signing account (offline mode only)
--amount string                       Amount of coins to bond
-b, --broadcast-mode string           Transaction broadcasting mode (sync|async|block) (default "sync")
--commission-max-change-rate string   The maximum commission change rate percentage (per day)
--commission-max-rate string          The maximum commission rate percentage
--commission-rate string              The initial commission rate percentage
--details string                      The validator's (optional) details
--dry-run                             ignore the --gas flag and perform a simulation of a transaction, but don't broadcast it (when enabled, the local Keybase is not accessible)
--fee-account string                  Fee account pays fees for the transaction instead of deducting from the signer
--fees string                         Fees to pay along with transaction; eg: 10uatom
--from string                         Name or address of private key with which to sign
--gas string                          gas limit to set per-transaction; set to "auto" to calculate sufficient gas automatically (default 200000)
--gas-adjustment float                 adjustment factor to be multiplied against the estimate returned by the tx simulation; if the gas limit is set manually this flag is ignored  (default 1)
--gas-prices string                   Gas prices in decimal format to determine the transaction fee (e.g. 0.1uatom)
--generate-only                       Build an unsigned transaction and write it to STDOUT (when enabled, the local Keybase only accessed when providing a key name)
-h, --help                            help for create-validator
--identity string                     The optional identity signature (ex. UPort or Keybase)
--ip string                           The node's public IP. It takes effect only when used in combination with --generate-only
--keyring-backend string              Select keyring's backend (os|file|kwallet|pass|test|memory) (default "os")
--keyring-dir string                  The client Keyring directory; if omitted, the default 'home' directory will be used
--ledger                              Use a connected Ledger device
--min-self-delegation string          The minimum self delegation required on the validator
--moniker string                      The validator's name
--node string                         <host>:<port> to tendermint rpc interface for this chain (default "tcp://localhost:26657")
--node-id string                      The node's ID
--note string                         Note to add a description to the transaction (previously --memo)
--offline                              Offline mode (does not allow any online functionality
-o, --output string                   Output format (text|json) (default "json")
--p2p-port string                     The node's public port. It takes effect only when used in combination with --generate-only
--pubkey string                       The validator's Protobuf JSON encoded public key
--security-contact string             The validator's (optional) security contact email
-s, --sequence uint                   The sequence number of the signing account (offline mode only)
--sign-mode string                    Choose sign mode (direct|amino-json), this is an advanced feature
--timeout-height uint                 Set a block timeout height to prevent the tx from being committed past a certain height
--website string                      The validator's (optional) website
-y, --yes                             Skip tx broadcasting prompt confirmation

Verify Your Validator

To verify your validator, use the following command:

seid query staking validator [validator-addr] [flags]

Check if Your Validator is in the Active Set

seid query tendermint-validator-set | grep "$(seid tendermint show-validator | jq -r .key)"

This command will display information about your validator, including its status and voting power.

Managing Your Validator

Edit Validator

You can edit your validator’s details using:

seid tx staking edit-validator [flags]

Flags

  -a, --account-number uint          The account number of the signing account (offline mode only)
  -b, --broadcast-mode string        Transaction broadcasting mode (sync|async|block) (default "sync")
      --commission-rate string       The new commission rate percentage
      --details string               The validator's (optional) details (default "[do-not-modify]")
      --dry-run                      ignore the --gas flag and perform a simulation of a transaction, but don't broadcast it (when enabled, the local Keybase is not accessible)
      --fee-account string           Fee account pays fees for the transaction instead of deducting from the signer
      --fees string                  Fees to pay along with transaction; eg: 10uatom
      --from string                  Name or address of private key with which to sign
      --gas string                   gas limit to set per-transaction; set to "auto" to calculate sufficient gas automatically (default 200000)
      --gas-adjustment float         adjustment factor to be multiplied against the estimate returned by the tx simulation; if the gas limit is set manually this flag is ignored  (default 1)
      --gas-prices string            Gas prices in decimal format to determine the transaction fee (e.g. 0.1uatom)
      --generate-only                Build an unsigned transaction and write it to STDOUT (when enabled, the local Keybase only accessed when providing a key name)
  -h, --help                         help for edit-validator
      --identity string              The (optional) identity signature (ex. UPort or Keybase) (default "[do-not-modify]")
      --keyring-backend string       Select keyring's backend (os|file|kwallet|pass|test|memory) (default "os")
      --keyring-dir string           The client Keyring directory; if omitted, the default 'home' directory will be used
      --ledger                       Use a connected Ledger device
      --min-self-delegation string   The minimum self delegation required on the validator
      --new-moniker string           The validator's name (default "[do-not-modify]")
      --node string                  <host>:<port> to tendermint rpc interface for this chain (default "tcp://localhost:26657")
      --note string                  Note to add a description to the transaction (previously --memo)
      --offline                      Offline mode (does not allow any online functionality
  -o, --output string                Output format (text|json) (default "json")
      --security-contact string      The validator's (optional) security contact email (default "[do-not-modify]")
  -s, --sequence uint                The sequence number of the signing account (offline mode only)
      --sign-mode string             Choose sign mode (direct|amino-json), this is an advanced feature
      --timeout-height uint          Set a block timeout height to prevent the tx from being committed past a certain height
      --website string               The validator's (optional) website (default "[do-not-modify]")
  -y, --yes                          Skip tx broadcasting prompt confirmation