The Union network is a highly efficient zero-disclosure infrastructure layer for universal messaging, asset transfers, NFT and DeFi. It is based on consensus verification and does not depend on trusted third parties, multisignatures or computational multilateral cryptography.
Minimum system requirements:
Installation script:
wget -O uniont https://raw.githubusercontent.com/111STAVR111/props/main/Union/uniont && chmod +x uniont && ./uniont
Server preparation:
sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc chrony liblz4-tool -y
Go 1.21.6 Installation:
ver="1.21.6"
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
go version
Build 10.06.24:
cd $HOME && mkdir -p go/bin/
wget https://uniont.binary.stavr.tech/union/uniond
chmod +x uniond
mv uniond $HOME/go/bin/
uniond --home $HOME/.union version --long
Initialization:
uniond --home $HOME/.union init STAVR_guide --chain-id union-testnet-8
Creating or restoring a wallet:
uniond keys add <walletname>
OR
uniond keys add <walletname> --recover
Loading Genesis:
wget -O $HOME/.union/config/genesis.json "https://raw.githubusercontent.com/111STAVR111/props/main/Union/genesis.json"
sha256sum $HOME/.union/config/genesis.json
Configuring minimum gas price and connection settings:
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = "0.0muno"/;" ~/.union/config/app.toml
external_address=$(wget -qO- eth0.me)
sed -i.bak -e "s/^external_address *=.*/external_address = "$external_address:26656"/" $HOME/.union/config/config.toml
peers=""
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = "$peers"/" $HOME/.union/config/config.toml
seeds=""
sed -i.bak -e "s/^seeds =.*/seeds = "$seeds"/" $HOME/.union/config/config.toml
sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 50/g' $HOME/.union/config/config.toml
sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 10/g' $HOME/.union/config/config.toml
Trimming data (optional):
pruning="custom"
pruning_keep_recent="1000"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = "$pruning"/" $HOME/.union/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = "$pruning_keep_recent"/" $HOME/.union/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = "$pruning_keep_every"/" $HOME/.union/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = "$pruning_interval"/" $HOME/.union/config/app.toml
Disabling indexing (optional):
indexer="null"
sed -i -e "s/^indexer *=.*/indexer = "$indexer"/" $HOME/.union/config/config.toml
Loading addrbook:
wget -O $HOME/.union/config/addrbook.json "https://raw.githubusercontent.com/111STAVR111/props/main/Union/addrbook.json"
Creating a service file:
sudo tee /etc/systemd/system/uniond.service > /dev/null <<EOF
[Unit]
Description=uniond
After=network-online.target
[Service]
User=$USER
ExecStart=$(which uniond) start --home /root/.union
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
StateSync Union Testnet
SNAP_RPC=https://union.rpc.t.stavr.tech:443
peers="59d554ab6bee4d814afb3e15af4031df19b2084c@union-t.seed.stavr.tech:4256"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = "$peers"/" $HOME/.union/config/config.toml
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height);
BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000));
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)
echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|1true| ;
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|1"$SNAP_RPC,$SNAP_RPC"| ;
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|1$BLOCK_HEIGHT| ;
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|1"$TRUST_HASH"| ;
s|^(seeds[[:space:]]+=[[:space:]]+).*$|1""|" $HOME/.union/config/config.toml
uniond tendermint unsafe-reset-all --home /root/.union
wget -O $HOME/.union/config/addrbook.json "https://raw.githubusercontent.com/111STAVR111/props/main/Union/addrbook.json"
systemctl restart uniond && journalctl -u uniond -f -o cat
Refresh testnet snapshots every 5 hours
cd $HOME
apt install lz4
sudo systemctl stop uniond
cp $HOME/.union/data/priv_validator_state.json $HOME/.union/priv_validator_state.json.backup
rm -rf $HOME/.union/data
curl -o - -L https://union-t.snapshot.stavr.tech/union-snap.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.union --strip-components 2
curl -o - -L https://union-t.wasm.stavr.tech/wasm-union.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.union --strip-components 2
mv $HOME/.union/priv_validator_state.json.backup $HOME/.union/data/priv_validator_state.json
wget -O $HOME/.union/config/addrbook.json "https://raw.githubusercontent.com/obajay/nodes-Guides/main/Projects/Union/addrbook.json"
sudo systemctl restart uniond && journalctl -u uniond -f -o cat
sudo systemctl daemon-reload
sudo systemctl enable uniond
sudo systemctl restart uniond && sudo journalctl -fu uniond -o cat
#pubkey
uniond tendermint show-validator --home /root/.union
cd $HOME
nano validator.json
{
"pubkey": {#pubkey},
"amount": "1000000muno",
"moniker": "STAVR_Guide",
"identity": "",
"website": "",
"security": "",
"details": "",
"commission-rate": "0.1",
"commission-max-rate": "0.2",
"commission-max-change-rate": "0.1",
"min-self-delegation": "1"
}
uniond --home /root/.union tx staking create-validator /root/validator.json --from Wallet_name --chain-id union
sudo systemctl stop uniond
sudo systemctl disable uniond
rm /etc/systemd/system/uniond.service
sudo systemctl daemon-reload
cd $HOME
rm -rf .union
rm -rf $(which uniond)
Check node status
uniond status 2>&1 | jq .NodeInfo
uniond status 2>&1 | jq .SyncInfo
uniond status 2>&1 | jq .ValidatorInfo
View node logs
sudo journalctl -fu uniond -o cat
Check service status
sudo systemctl status uniond
Restart service
sudo systemctl restart uniond
Stop service
sudo systemctl stop uniond
Start the service
sudo systemctl start uniond
Reboot/shutdown/enable
sudo systemctl daemon-reload
sudo systemctl disable uniond
sudo systemctl enable uniond
Your Peer
echo $(uniond tendermint show-node-id)'@'$(wget -qO- eth0.me)':'$(cat $HOME/.union/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
Create a new key or restore an existing key
uniond keys add Wallet_Name
OR
uniond keys add Wallet_Name --recover
Check all keys
uniond keys list
Check balance
uniond query bank balances union...addressjkl1yjgn7z09ua9vms259j
Edit Validator
uniond tx staking edit-validator
--new-moniker "Name"
--identity "Keybase_ID"
--details "Description"
--website "Site"
--security-contact "Email"
--chain-id union-testnet-8
--commission-rate 0.05
--from Wallet_Name
--gas 350000 -y
Your Valoper-Address
uniond keys show Wallet_Name --bech val
Your Valcons-Address
uniond tendermint show-address
Validator Info
uniond query staking validator unionvaloperaddress......
Jail Info
uniond query slashing signing-info $(uniond tendermint show-validator)
Unjail
uniond tx slashing unjail --from Wallet_Name --chain-id union-testnet-8 --gas 350000 -y
List of active validators
uniond q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " t " + .description.moniker' | sort -gr | nl
List of inactive validators
uniond q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_UNBONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " t " + .description.moniker' | sort -gr | nl
Check if your key matches the validator(Win
- Good. Lose
- Bad).
VALOPER=Enter_Your_valoper_Here
[[ $(uniond q staking validator $VALOPER -oj | jq -r .consensus_pubkey.key) = $(uniond status | jq -r .ValidatorInfo.PubKey.value) ]] && echo -e "nYou winn" || echo -e "nYou losen"
Output all rewards from all validators
uniond tx distribution withdraw-all-rewards --from Wallet_Name --chain-id union-testnet-8 --gas 350000 -y
Output rewards and commissions from your validator
uniond tx distribution withdraw-rewards unionvaloper1amxp0k0hg4edrxg85v07t9ka2tfuhamhldgf8e --from Wallet_Name --gas 350000 --chain-id=union-testnet-8 --commission -y
Delegate tokens to your validator
uniond tx staking delegate unionvaloper........ "100000000"muno --from Wallet_Name --gas 350000 --chain-id=union-testnet-8 -y
Delegate tokens to another validator
uniond tx staking delegate unionvaloper........ "100000000"muno --from Wallet_Name --gas 350000 --chain-id=union-testnet-8 -y
Re-delegate tokens to another validator
uniond tx staking redelegate unionvaloper........ unionvaloper........ "100000000"muno --from Wallet_Name --gas 350000 --chain-id=union-testnet-8 -y
Decouple tokens from validator
uniond tx staking unbond unionvaloper........ "100000000"muno --from Wallet_Name --gas 350000 --chain-id=union-testnet-8 -y
Transfer tokens from wallet to wallet
uniond tx bank send unionaddress............ unionaddress........... "1000000000000000000"muno --gas 350000 --chain-id=union-testnet-8 -y
View all offers
uniond query gov proposals
View a specific offer
uniond query gov proposal 1
Vote in favor
uniond tx gov vote 1 yes --from Wallet_Name --gas 350000 --chain-id=union-testnet-8 -y
Vote against
uniond tx gov vote 1 no --from Wallet_Name --gas 350000 --chain-id=union-testnet-8 -y
Abstain from voting
uniond tx gov vote 1 abstain --from Wallet_Name --gas 350000 --chain-id=union-testnet-8 -y
Vote against with veto
uniond tx gov vote 1 no_with_veto --from Wallet_Name --gas 350000 --chain-id=union-testnet-8 -y
Example: Union -> Osmosis
uniond tx ibc-transfer transfer transfer channel-2 Your_OSMOaddress............ "100000"muno --from Your_Union_Wallet ---gas 350000 --fees 7000"muno" --chain-id=union-testnet-8 -y