🏗️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
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
Since the SEDA key file is used by the SEDA signer at the application layer of the chain, if you're using Horcrux, you must copy the SEDA key file to all your sentry nodes. Make sure that the signer is correctly loaded by checking the success log message on each sentry node.
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?