Chain ID | Latest Version Tag | Custom Port |
---|---|---|
umee-1 | v6.0.2 | 162 |
Setup validator name
Replace YOUR_MONIKER_GOES_HERE with your validator name
MONIKER="YOUR_MONIKER_GOES_HERE"
Install dependencies
Update system and install build tools
sudo apt -q update
sudo apt -qy install curl git jq lz4 build-essential
sudo apt -qy upgrade
Install Go
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.20.8.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)
Download and build binaries
# Clone project repository
cd $HOME
rm -rf umee
git clone https://github.com/umee-network/umee.git
cd umee
git checkout v6.0.2
# Build binaries
make build
# Prepare binaries for Cosmovisor
mkdir -p $HOME/.umee/cosmovisor/genesis/bin
mv build/umeed $HOME/.umee/cosmovisor/genesis/bin/
rm -rf build
# Create application symlinks
sudo ln -s $HOME/.umee/cosmovisor/genesis $HOME/.umee/cosmovisor/current -f
sudo ln -s $HOME/.umee/cosmovisor/current/bin/umeed /usr/local/bin/umeed -f
Install Cosmovisor and create a service
# Download and install Cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0
# Create service
sudo tee /etc/systemd/system/umeed.service > /dev/null << EOF
[Unit]
Description=umee node service
After=network-online.target
[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.umee"
Environment="DAEMON_NAME=umeed"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/.umee/cosmovisor/current/bin"
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable umeed
Initialize the node
# Set node configuration
umeed config chain-id umee-1
umeed config keyring-backend file
umeed config node tcp://localhost:16257
# Initialize the node
umeed init $MONIKER --chain-id umee-1
# Download genesis and addrbook
curl -Ls https://snapshots.kjnodes.com/umee/genesis.json > $HOME/.umee/config/genesis.json
curl -Ls https://snapshots.kjnodes.com/umee/addrbook.json > $HOME/.umee/config/addrbook.json
# Add seeds
sed -i -e "s|^seeds *=.*|seeds = \"400f3d9e30b69e78a7fb891f60d76fa3c73f0ecc@umee.rpc.kjnodes.com:16259\"|" $HOME/.umee/config/config.toml
# Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.1uumee\"|" $HOME/.umee/config/app.toml
# Set pruning
sed -i \
-e 's|^pruning *=.*|pruning = "custom"|' \
-e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
-e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
-e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
$HOME/.umee/config/app.toml
# Set custom ports
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:16258\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:16257\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:16260\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:16256\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":16266\"%" $HOME/.umee/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:16217\"%; s%^address = \":8080\"%address = \":16280\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:16290\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:16291\"%; s%:8545%:16245%; s%:8546%:16246%; s%:6065%:16265%" $HOME/.umee/config/app.toml
Download latest chain snapshot
curl -L https://snapshots.kjnodes.com/umee/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.umee
[[ -f $HOME/.umee/data/upgrade-info.json ]] && cp $HOME/.umee/data/upgrade-info.json $HOME/.umee/cosmovisor/genesis/upgrade-info.json
Start service and check the logs
sudo systemctl start umeed && sudo journalctl -u umeed -f --no-hostname -o cat
Set up validator
Set password that will be used for keyring encryption
KEYRING_PASSWORD="KEY_PASSWORD_GOES_HERE"
Create new keys and save 24 word mnemonic phrases
umeed keys add wallet --keyring-backend os
umeed keys add pricefeeder --keyring-backend os
Set variables
VALOPER_ADDRESS=$(echo -e $KEYRING_PASSWORD | umeed keys show wallet --bech val -a --keyring-backend os)
WALLET_ADDRESS=$(echo -e $KEYRING_PASSWORD | umeed keys show wallet -a --keyring-backend os)
PRICEFEEDER_WALLET_ADDRESS=$(echo -e $KEYRING_PASSWORD | umeed keys show pricefeeder --keyring-backend os -a)
# Check variables
echo VALOPER_ADDRESS=$VALOPER_ADDRESS,WALLET_ADDRESS=$WALLET_ADDRESS,PRICEFEEDER_WALLET_ADDRESS=$PRICEFEEDER_WALLET_ADDRESS | tr "," "\n"
Top up all wallets with tokens
Mainnet
You can buy tokens at app.osmosis.zone
Testnet
You can get free testnet tokens at faucet.umee.cc
Please make sure you have adjusted moniker, identity, details and website to match your values.
Create validator
umeed tx staking create-validator \
--amount 1000000uumee \
--pubkey $(umeed tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id umee-1 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.1uumee \
--keyring-backend os \
-y
Set up Price Feeder
To run pricefeeder you validator should be in active set. Otherwise price feeder will not vote on periods.
Install the pricefeeder binary and create directory for pricefeeder configuration
cd $HOME && rm umee-price-feeder -rf
git clone https://github.com/ojo-network/price-feeder umee-price-feeder
cd umee-price-feeder
git checkout umee/v2.1.6-1
make build
sudo mv ./build/price-feeder /usr/local/bin/umee-price-feeder
rm $HOME/.umee-price-feeder -rf
mkdir $HOME/.umee-price-feeder
curl -s https://raw.githubusercontent.com/ojo-network/price-feeder/umee/umee-provider-config/currency-pairs.toml > $HOME/.umee-price-feeder/config.toml
echo >> $HOME/.umee-price-feeder/config.toml
curl -s https://raw.githubusercontent.com/ojo-network/price-feeder/umee/umee-provider-config/deviation-thresholds.toml >> $HOME/.umee-price-feeder/config.toml
echo >> $HOME/.umee-price-feeder/config.toml
curl -s https://raw.githubusercontent.com/ojo-network/price-feeder/umee/umee-provider-config/endpoints.toml >> $HOME/.umee-price-feeder/config.toml
echo >> $HOME/.umee-price-feeder/config.toml
curl -s https://raw.githubusercontent.com/ojo-network/price-feeder/umee/price-feeder.example.toml >> $HOME/.umee-price-feeder/config.toml
Delegate pricefeeder responsibility
As a validator, if you’d like another account to post prices on your behalf (i.e. you don’t want your validator mnemonic sending txs), you can delegate pricefeeder responsibilities to another address.
umeed tx oracle delegate-feed-consent $WALLET_ADDRESS $PRICEFEEDER_WALLET_ADDRESS --from wallet --chain-id umee-1 --gas-adjustment 1.4 --gas auto --gas-prices 0.1uumee --keyring-backend os -y
Check linked pricefeeder address
umeed q oracle feeder-delegation $VALOPER_ADDRESS
Set pricefeeder configuration values
sed -i "s/^listen_addr *=.*/listen_addr = \"0.0.0.0:7173\"/;\
s/^address *=.*/address = \"$PRICEFEEDER_WALLET_ADDRESS\"/;\
s/^chain_id *=.*/chain_id = \"umee-1\"/;\
s/^validator *=.*/validator = \"$VALOPER_ADDRESS\"/;\
s/^backend *=.*/backend = \"os\"/;\
s|^dir *=.*|dir = \"$HOME/.umee\"|;\
s|^grpc_endpoint *=.*|grpc_endpoint = \"localhost:16290\"|;\
s|^tmrpc_endpoint *=.*|tmrpc_endpoint = \"http://localhost:16257\"|;\
s|^global-labels *=.*|global-labels = [[\"chain_id\", \"umee-1\"]]|;\
s|^service-name *=.*|service-name = \"umee-price-feeder\"|;" $HOME/.umee-price-feeder/config.toml
Setup the systemd service
sudo tee /etc/systemd/system/umee-price-feeder.service > /dev/null <<EOF
[Unit]
Description=Umee Price Feeder
After=network-online.target
[Service]
User=$USER
ExecStart=$(which umee-price-feeder) $HOME/.umee-price-feeder/config.toml --skip-provider-check
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="PRICE_FEEDER_PASS=$KEYRING_PASSWORD"
[Install]
WantedBy=multi-user.target
EOF
Register and start the systemd service
sudo systemctl daemon-reload
sudo systemctl enable umee-price-feeder
sudo systemctl restart umee-price-feeder
View pricefeeder logs
journalctl -fu umee-price-feeder -o cat
Successfull Log examples:
7:44AM INF broadcasting vote exchange_rates=AKT:0.632477588300087586,ATOM:8.591490618553537965,BNB:243.252713494212930704,CBETH:1792.599999999970127864,CMST:0.999185734558637436,CRO:0.053629553506297260,DAI:0.999569070166267878,DOT:4.544437895344887995,ETH:1724.773151486244206211,IST:0.999384188114831391,JUNO:0.259821458085642918,LUNA:0.578108199020789095,MARS:0.064858062976693934,MATIC:0.599571270188518918,OSMO:0.493834708042865655,UMEE:0.004402062318991282,USDC:0.999944581565716618,USDT:0.999684418289508992,WAXL:0.396607248244127972,WBTC:26414.542206458596892482,qATOM:8.883589379536654343,stATOM:9.821303693813542246,stOSMO:0.545307005347711889,stkATOM:9.212703995756135715 feeder=umee18paa370ju8c8qddqw9plvdzdtxkpvlczu95mtn module=oracle validator=umeevaloper1da5dttrjz7fqruvz9y9a40w5gjcc4rgk9lk8v4
7:44AM INF successfully broadcasted tx module=oracle_client tx_code=0 tx_hash=76386BFCED51D280F26767D9A9D000F70D055F6A66B89D55187E74B60AEBA8CC tx_height=0
Also you can check that your pricefeeder-wallet is doing transactions on chain at Chain Explorer
Price Feeder Transactions
Useful commands
Check current voting windows progress
umeed q oracle slash-window
Check missed oracle votes per slashing window
umeed q oracle miss-counter $VALOPER_ADDRESS
Special thanks to mzonder#5844