A Linux server with any modern Linux distribution, 4cores, 8gb of ram and at least 20gb of SSD storage.
Althea chain can be run on Windows and Mac. Binaries are provided on the releases page. But validator instructions are not provided.
I also suggest an open notepad or other document to keep track of the keys you will be generating.
mkdir gravity-bin
cd gravity-bin
# the gravity chain binary itself
wget https://github.com/Gravity-Bridge/Gravity-Bridge/releases/download/v1.0.0/gravity-v0.1.5-linux-amd64
mv gravity-v0.1.5-linux-amd64 gravity
# Tools for the gravity bridge from the gravity repo
wget https://github.com/Gravity-Bridge/Gravity-Bridge/releases/download/v1.0.0/gbt
chmod +x *
sudo mv * /usr/bin/
At specific points during the testnet you may be told to 'update your orchestrator' or 'update your gravity binary'. In order to do that you can simply repeat the above instructions and then restart the affected software.
to check what version of the tools you have run gbt --version
the current latest version is gbt 1.0.0
Be sure to back up the phrase you get! You’ll need it in a bit. If you don't back up the phrase here just follow the steps again to generate a new key.
Note 'myvalidatorkeyname' is just the name of your key here, you can pick anything you like, just remember it later.
You'll be prompted to create a password, I suggest you pick something short since you'll be typing it a lot
cd $HOME
althea init mymoniker --chain-id althea-testnet2v3
althea keys add myvalidatorkeyname
wget https://github.com/althea-net/althea-chain/releases/download/v0.2.3/althea-testnet2v3-genesis.json
cp althea-testnet2v3-genesis.json $HOME/.althea/config/genesis.json
Change the seed field in ~/.althea/config/config.toml to contain the following:
seeds = "[email protected]:26656,3b8af242bf3bb82c203d1d8ef0949f8ca48767c8@althea-sentry-01.mahdisworld.net:26656,02c2b59771c3626f6744ab1fb1048ba967cb82cd@althea-sentry-02.mahdisworld.net:26656"
If we don't raise this value nodes will crash once the network grows large enough
sudo su -c "echo 'fs.file-max = 65536' >> /etc/sysctl.conf"
sysctl -p
sudo su -c "echo '* hard nofile 94000' >> /etc/security/limits.conf"
sudo su -c "echo '* soft nofile 94000' >> /etc/security/limits.conf"
sudo su -c "echo 'session required pam_limits.so' >> /etc/pam.d/common-session"
For this to take effect you'll need to (A) reboot (B) close and re-open all ssh sessions
To check if this has worked run
ulimit -n
If you see 1024
then you need to reboot
Ask what the current blockheight is in the chat
althea start
First find your address
althea keys list
Copy your address from the 'address' field and paste it into the command below remember to remove the <>
curl -vv -XPOST https://testnet2.althea.net/get_altg/<your address here without the brackets>
This will provide you 10 ALTG from the faucet storage.
althea tx staking create-validator \
--amount=50000000000ualtg \
--pubkey=$(althea tendermint show-validator) \
--moniker="put your validator name here" \
--chain-id=althea-testnet2v3 \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1" \
--gas="auto" \
--gas-adjustment=1.5 \
--gas-prices="1ualtg" \
--from=myvalidatorkeyname
If you see one line in the response you are validating. If you don't see any output from this command you are not validating. Check that the last command ran successfully.
Be sure to replace 'my validator key name' with your actual key name. If you want to double check you can see all your keys with 'althea keys list'
althea query staking validator $(althea keys show myvalidatorkeyname --bech val --address)
You are now validating on the Althea blockchain. But as a validator you also need to run the Gravity bridge components or you will be slashed and removed from the validator set after about 16 hours.
Delegate keys allow the for the validator private keys to be kept in secure storage while the Orchestrator can use it's own delegated keys for Gravity functions. The delegate keys registration tool will generate Ethereum and Cosmos keys for you if you don't provide any. These will be saved in your local config for later use.
**If you have set a minimum fee value in your ~/.althea/config/app.toml
modify the --fees
parameter to match that value!
gbt init
gbt -a althea keys register-orchestrator-address --validator-phrase "the phrase you saved earlier" --fees=125000ualtg
If you ran the above command skip this step this is an optional step for those who are using hardware security for their validator key. In order to register your keys you will use the althea
cli instead of gbt
. You will need to generate one ethereum key and one cosmos key yourself.
althea tx gravity set-orchestrator-address [validator key name] [orchestrator key name] [ethereum-address]
Both your Ethereum delegate key and your Cosmos delegate key will need some tokens to pay gas. On the Althea chain side you where sent some 'footoken' along with your ALTG. We're essentially using footoken as a gas token for this testnet.
In a production network only relayers would need Ethereum to fund relaying, but for this testnet all validators run relayers by default, allowing us to more easily simulate a lively economy of many relayers.
You should have received fifty thousand Althea Governance Token in ALTG and the same amount of footoken. We're going to send half of the footoken to the delegate address
To get the address for your validator key you can run the below, where 'myvalidatorkeyname' is whatever you named your key in the 'generate your key' step.
althea keys show myvalidatorkeyname
althea tx bank send myvalidatorkeyname <your delegate cosmos address> 25000000000ufootoken --chain-id=althea-testnet2v3
With the Althea side funded, now we need some Goerli Eth
curl -vv -XPOST https://testnet2.althea.net/get_eth/<your address here without the brackets>
We will be using Geth Ethereum light clients for this task. For production Gravity we suggest that you point your Orchestrator at a Geth light client and then configure your light client to peer with full nodes that you control. This provides higher reliability as light clients are very quick to start/stop and resync. Allowing you to for example rebuild an Ethereum full node without having days of Orchestrator downtime.
Geth full nodes do not serve light clients by default, light clients do not trust full nodes, but if there are no full nodes to request proofs from they can not operate. Therefore we are collecting the largest possible list of Geth full nodes from our community that will serve light clients.
If you have more than 40gb of free storage, an SSD and extra memory/CPU power, please run a full node and share the node url. If you do not, please use the light client instructions
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.6-576681f2.tar.gz
tar -xvf geth-linux-amd64-1.10.6-576681f2.tar.gz
cd geth-linux-amd64-1.10.6-576681f2
wget https://github.com/althea-net/althea-chain/raw/main/docs/althea/configs/geth-light-config.toml
./geth --syncmode "light" --goerli --http --config geth-light-config.toml
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.6-576681f2.tar.gz
tar -xvf geth-linux-amd64-1.10.6-576681f2.tar.gz
cd geth-linux-amd64-1.10.6-576681f2
wget https://github.com/althea-net/althea-chain/raw/main/docs/althea/configs/geth-full-config.toml
./geth --goerli --http --config geth-full-config.toml
You'll see this url, please note your ip and share both this node url and your ip in chat to add to the light client nodes list
INFO [06-10|14:11:03.104] Started P2P networking self=enode:https://71b8bb569dad23b16822a249582501aef5ed51adf384f424a060aec4151b7b5c4d8a1503c7f3113ef69e24e1944640fc2b422764cf25dbf9db91f34e94bf4571@127.0.0.1:30303
Finally you'll need to wait for several hours until your node is synced, you can not continue with the instructions until your node is synced.
Once 66% of the validator set has registered their delegate Ethereum key it is possible to deploy the Gravity Ethereum contract. Once deployed the Gravity contract address on Görli will be posted here
Here is the contract address! Move forward!
0xFA2f45c5C8AcddFfbA0E5228bDf7E8B8f4fD2E84
Now that the setup is complete you can start your Orchestrator. Use the Cosmos mnemonic generated in the 'register delegate keys' step and the Ethereum private key also generated in that step. You should setup your Orchestrator in systemd or elsewhere to keep it running and restart it when it crashes.
If your Orchestrator goes down for more than 16 hours during the testnet you will be slashed and booted from the active validator set.
Since you'll be running this a lot I suggest putting the command into a script, like so. The next version of the orchestrator will use a config file for these values and have encrypted key storage.
**If you have set a minimum fee value in your ~/.althea/config/app.toml
modify the --fees
parameter to match that value!
nano start-orchestrator.sh
#!/bin/bash
gbt -a althea orchestrator \
--fees 125000ufootoken \
--gravity-contract-address "0xFA2f45c5C8AcddFfbA0E5228bDf7E8B8f4fD2E84"
bash start-orchestrator.sh