Validator migration guide
Contents
Validator migration guide#
Follow this guide to become a validator on the Terra 2.0 chain. This guide walks you through making a gentx
file that will be added to the validator chain. A gentx
is a special transaction included in the genesis file that accomplishes three things:
Registers your validator account as a validator operator account.
Self-delegates the specified amount of LUNA tokens for staking.
Links the validator operator account with a Tendermint node pubkey used to sign blocks.
All validators that want to be included in the Terra 2.0 chain must follow the steps below.
Networks#
Terra 2.0 testnet:
pisco-1
Terra 2.0 mainnet:
phoenix-1
Supplemental Resources#
Timeline (Expected)#
Fri May 27 2022 18:00:00 GMT+0900 (KST)
Thu May 27 2022 09:00:00 GMT+0000 (UTC)
Share
preultimate-genesis.json
and start to collect gen_txs from the validators.Sat May 28 2022 12:00:00 GMT+0900 (KST)
Sat May 28 2022 03:00:00 GMT+0000 (UTC)
Finish collecting gen_txs and build & share
genesis.json
Sat May 28 2022 15:00:00 GMT+0900 (KST)
Sat May 28 2022 06:00:00 GMT+0000 (UTC)
Launch network
Snapshot#
This section covers how to take the pre- and post-attack snapshots. The following steps need to be run on your existing validator’s machine.
1. Stop your columbus-5
node:
sudo systemctl stop terrad
2. Clone, checkout, and install the Terra Core Genesis state exporter:
git clone https://github.com/terra-money/core-genesis-exporter
cd core-genesis-exporter
make install
3. Verify the exporter binary version:
terrad version --long
Which will return the following:
terrad version --long
name: terra
server_name: terrad
version: ""
commit: 2565577ccf47d1b11a82d77500a0cb880080a70c
build_tags: netgo,ledger
go: go version go1.18 darwin/arm64
4. Take the pre-attack snapshot:
terrad export --height 7544910 > pre-attack-snapshot.json
5. Take the post-attack snapshot:
terrad export --height 7790000 > post-attack-snapshot.json
6. Verify the SHA256 hash of the (sorted) pre-attack & post-attack export snapshots:
# pre-attack
jq -S -c -M '' pre-attack-snapshot.json | shasum -a 256
0ac0d5b8f7ea49e500d9033687a6720a99818e99280aba8f12f00b39832a0d5c
# post-attack
jq -S -c -M '' post-attack-snapshot.json | shasum -a 256
9d294b300eb3d936d9567eb128bc66651d196b07c37583e2e051b3bced965766
Penultimate Genesis#
The following steps need to be run on the same machine as your snapshot.
1. Clone and checkout genesis builder:
git clone https://github.com/terra-money/genesis-tools
2. Move pre-attack and post-attack snapshots into genesis-tools
:
mv ./pre-attack-snapshot.json ./post-attack-snapshot.json ./genesis-tools
3. Run genesis builder script:
# install dependency
pip3 install bech32
pip3 install python-dateutil
python3 ./src/genesis_builder.py \
./genesis-template.json \
./pre-attack-snapshot.json \
./post-attack-snapshot.json \
./genesis-validators.json \
--genesis-time=2022-05-28T06:00:00.000000Z \
--chain-id=phoenix-1 \
> penultimate-genesis.json
4. Verify the SHA256 of the (sorted) penultimate-genesis.json:
jq -S -c -M '' penultimate-genesis.json | shasum -a 256
def346f3ef21e5f484c4e8634918d527382115b871786bd794fac5dacdf46c63
Set up a new validator#
Set up a new validator on a new machine by following the steps outlined in the full node tutorial.
After configuring your general settings, continue to the next section.
GenTx#
Complete the following steps on your new validator’s machine.
1. Checkout and install the Terra 2.0 core:
# checkout and install
git clone https://github.com/terra-money/core
cd core
git checkout v2.0.0
make install
2. Verify the binary version:
terrad version --long
core: v2.0.0
git commit: [placeholder]
go.sum hash: [placeholder]
build tags: netgo ledger
3. Prepare your environment:
# install or move penultimate-genesis.json to server
wget https://phoenix-genesis.s3.us-west-1.amazonaws.com/penultimate-genesis.json
# move genesis to config location
mv ./penultimate-genesis.json ~/.terra/config/genesis.json
4. Execute GenTx:
terrad gentx validator 1000000uluna \
--chain-id="phoenix-1" \
--pubkey=$(terrad tendermint show-validator) \
--min-self-delegation="1"\
--security-contact="contact@aaa.services" \
--moniker=AAA \
--details="Trusted security provider for Terra Network and projects building on Terra." \
--identity="AAAAAAAAAAAA" \
--commission-rate="0.1" \
--commission-max-rate="0.2" \
--commission-max-change-rate="0.01" \
--node-id="validator-moniker" \
--ip="0.0.0.0"
5. Upload the generated GenTx file to this repository’s gentx folder via PR:
ls ~/.terra/config/gentx/*
Collect GenTxs#
The following steps need to be run on the same machine as your GenTx.
1. Download gentx files and change into the terra home config:
git clone https://github.com/terra-money/genesis-tools
cd genesis-tools
mv ./gentx/* ~/.terra/config/gentx/
2. Execute collect-gentxs
:
terrad collect-gentxs
3. Verify the SHA256 hash of the (sorted) final genesis:
jq -S -c -M '' ~/.terra/config/genesis.json | shasum -a 256
[placeholder]
Launch Network#
Execute the terrad
binary on your new validator’s machine and wait until network launch:
sudo systemctl start terrad