Edit the configuration file at ~/.babylond/config/config.toml and modify the seeds and persistent_peers attributes to contain appropriate seeds and peers of your choice. The full list of Babylon approved seeds and peers can be found under the bbn-test-3 network info page.
Edit the configuration file at ~/.babylond/config/app.toml and modify the btc-network attribute to contain the appropriate BTC network parameters as below and iavl-cache-size=0 to handle caching issues.
iavl-cache-size=0[btc-config]network="signet"
On the same file, you can also modify the minimum-gas-prices attribute and set it to a value of your choosing. For example,
Validators are expected to submit a BLS signature at the end of each epoch. To do that, a validator needs to have a BLS key pair to sign information with.
Using the address that you created on the previous step ($ADDR variable):
This command will create a BLS key and add it to the ~/.babylond/config/priv_validator_key.json. This is the same file that stores the private key that the validator uses to sign blocks. Please ensure that this file is secured properly.
After creating a BLS key, you need to restart your node to load this key into memory. If you followed the setting up a node guide, you would have to
It is strongly recommended to modify the timeout_commit value under ~/.babylond/config/config.toml. This value specifies how long a validator will wait before commiting a block before starting on a new height. More information can be found here. Given that Babylon aims to have a 30 second time between blocks, set this value to:
Contrary to a vanilla Cosmos SDK chain, a validator for Babylon is created through the babylond tx checkpointing create-validator command. This command expects that a BLS validator key exists under the ~/.babylond/config/priv_validator_key.json.
To create the validator (using sample parameters):
where /path/to/validator.json contains
and pubkey can be obtained through the following command
In order to become an active validator, you need to have more ubbn tokens bonded than the last validator ordered by the tokens bonded (or the validator set to not be full) as well as have at least 1000000ubbn bonded.
On the Babylon system, one can become a validator only after an epoch ends. For the testnet, an epoch lasts for around 1 hour.
To verify that you have become a validator, first find your validator address:
where $KEYNAME is the name of the key that you used for the self-delegation (e.g. my-key on our example). This will return an address which you can use as the $ADDR variable to perform the following query:
If all goes well, you should see a response indicating the parameters that you specified on the create-validator transaction.
After the epoch ends and if you have enough stake to be an active validator, performing this query will return you a status BOND_STATUS_BONDED. Congrats! You are now a validator on the Babylon system.
# Note the variables
# - $CHAIN_ID the chain ID
# - $VAL_KEY the name of the key (with a test keyring backend) used for the validator
babylond tx checkpointing create-validator /path/to/validator.json \
--chain-id="$CHAIN_ID" \
--gas="auto" \
--gas-adjustment="1.5" \
--gas-prices="0.025ubbn" \
--from=$VAL_KEY
# - $AMOUNT the amount to delegate in ubbn, e.g. 1000000ubbn (must be less than the delegator's balance, and unit must be included)
{
"pubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"BnbwFpeONLqvWqJb3qaUbL5aoIcW3fSuAp9nT3z5f20="},
"amount": "$AMOUNT",
"moniker": "my-moniker",
"website": "https://myweb.site",
"security": "security-contact@gmail.com",
"details": "description of your validator",
"commission-rate": "0.10",
"commission-max-rate": "0.20",
"commission-max-change-rate": "0.01",
"min-self-delegation": "1"
}