🏗️Validator Onboarding

SEDA Chain validators perform various signing duties for the SEDA Protocol.

Contents

Syncing Node Create-Validator Transaction SEDA Key File Without Encryption

Syncing Node

If you use Horcrux signing service, make sure to use v3.3.0 or greater since several validators have reported unstable signing with an older version.

We advise you to close the RPC ports if you are running a validator node.

In order to create your validator, first make sure your node fully synced to the latest block height of the network.

You can check by using the following command:

curl -s localhost:26657/status | jq .result | jq .sync_info

In the output of the above command make sure catching_up is false

“catching_up”: false

Create-Validator Transaction

Create a validator.json file and fill in the parameters of the create-validator transaction:

{
    "pubkey": $(sedad tendermint show-validator),
    "amount": "1000000000000000000000000000000000aseda", 
    "moniker": "the moniker for your validator",
    "identity": "optional identity signature (ex. UPort or Keybase) This key will be used by block explorers to identify the validator.",
    "website": "validator's (optional) website",
    "security": "validator's (optional) security contact email",
    "details": "validator's (optional) details",
    "commission-rate": "0.1",
    "commission-max-rate": "0.2",
    "commission-max-change-rate": "0.01",
    "min-self-delegation": "1" 
}

Starting with v1.0.0, SEDA Chain requires validators to generate SEDA Keys and register their public keys to perform signing duties beyond consensus signing. SEDA Keys currently consist of a single secp256k1 key used to sign batches.

The create-validator transaction will automatically generate SEDA Keys, save the key file, and register the public keys. Before executing the transaction, check the relevant app configurations and modify them in app.toml as necessary.

sedad config get app seda.enable-seda-signer 
sedad config get app seda.allow-unencrypted-seda-keys
sedad config get app seda.seda-key-file # path to key file from node directory

# You must enable SEDA signer.
sedad config set app seda.enable-seda-signer true
# We recommend that you encrypt your SEDA key file.
sedad config set app seda.allow-unencrypted-seda-keys false

We recommend that you fully set up the node(s) for validation with SEDA key signer before sending the create-validator transaction. To accomplish this, run the create-validator transaction with the --generate-only flag to generate a SEDA key file without actually sending a transaction.

sedad tx staking create-validator validator.json \
    --from <wallet-name> --chain-id <chain-id> \
    --gas auto --gas-prices 10000000000aseda --gas-adjustment 2.0 \
    --generate-only

Take note of the encryption key for the SEDA key file. This encryption key should be set as an environment variable SEDA_KEYS_ENCRYPTION_KEY in the node environment. In a basic setup, this means stopping the node, executing the export command, and re-starting the node so that the environment variable gets picked up by the node.

export SEDA_KEYS_ENCRYPTION_KEY=ajfUfrdnrFRkej9OXTDb1IMdrIWkDN3P7CWKz5It20I=+g9ZQ=
sedad start

If you are using systemctl to run the node, add the environment variable by editing the service file, reload the daemon, then restart the node service.

If the signer has been set up correctly, the following message should appear in the log:

3:34PM INF successfully loaded SEDA signer module=server

Once your validation setup is ready, send a create-validator transaction with the --key-file flag pointing to the SEDA key file and the --key-file-custom-encryption-key flag. The latter flag will prompt you to enter the encryption key.

sedad tx staking create-validator validator.json \
    --from <wallet-name> --chain-id <chain-id> \
    --gas auto --gas-prices 10000000000aseda --gas-adjustment 2.0 \
    --key-file ~/.sedad/config/seda_keys.json \
    --key-file-custom-encryption-key

You can find your validator operator address using the following command, which you can advertise to receive delegations:

sedad keys show <wallet-name> --bech val -a

SEDA Key File Without Encryption

Although we advise against this approach, you may generate and use the SEDA key file without encryption.

First, change the allow-unencrypted-seda-keys configuration under the [seda] section of the app.toml file to true. Alternatively, run the following command:

sedad config set app seda.allow-unencrypted-seda-keys true

Then, run the create-validator transaction with the --key-file-no-encryption flag.

sedad tx staking create-validator validator.json \
    --from <wallet-name> --chain-id <chain-id> \
    --gas auto --gas-prices 10000000000aseda --gas-adjustment 2.0 \
    --key-file-no-encryption

Last updated

Was this helpful?