πEntangle
Omnichain Made Easy
Info
Public Endpoints
Explorer - Delegate / Stake for me !
https://explorer.entangle.fi/validators/entvaloper12spzgnh3aqrpnyv4kmev2qqkp3hszw7nw48jd9
Update system
sudo apt update
sudo apt-get install git curl build-essential make jq gcc snapd chrony lz4 tmux unzip bc -y
Install Go
rm -rf $HOME/go
sudo rm -rf /usr/local/go
cd $HOME
curl https://dl.google.com/go/go1.20.5.linux-amd64.tar.gz | sudo tar -C/usr/local -zxvf -
cat <<'EOF' >>$HOME/.profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GO111MODULE=on
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
EOF
source $HOME/.profile
go version
Install Node
cd $HOME
rm -rf entangle-blockchain
git clone https://github.com/Entangle-Protocol/entangle-blockchain.git
cd entangle-blockchain
git checkout main
make install
entangled version
Initialize Node
entangled init <Your_NodeName> --chain-id=entangle_33033-1
Download Genesis & Addrbook
curl -L -o addrbook.json https://raw.githubusercontent.com/Validator247/Entangle-Mainnet/main/addrbook.json
curl -L -o genesis.json https://raw.githubusercontent.com/Validator247/Entangle-Mainnet/main/genesis.json
Create Service
sudo tee /etc/systemd/system/entangled.service > /dev/null <<EOF
[Unit]
Description=entangled Daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$(which entangled) start --home /root/.entangled --chain-id entangle_33033-1
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable entangled
State Sync
Stop node and reset the data
sudo systemctl stop entangled cp $HOME/.entangled/data/priv_validator_state.json $HOME/.entangled/priv_validator_state.json.backup entangled tendermint unsafe-reset-all --home $HOME/.entangled --keep-addr-book
Configure the state sync
STATE_SYNC_RPC=https://entangle-rpc.validator247.com:443
LATEST_HEIGHT=$(curl -s $STATE_SYNC_RPC/block | jq -r .result.block.header.height)
SYNC_BLOCK_HEIGHT=$(($LATEST_HEIGHT - 1000))
SYNC_BLOCK_HASH=$(curl -s "$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r .result.block_id.hash)
sed -i \
-e "s|^enable *=.*|enable = true|" \
-e "s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|" \
-e "s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|" \
-e "s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|" \
$HOME/.entangled/config/config.toml
mv $HOME/.entangled/priv_validator_state.json.backup $HOME/.entangled/data/priv_validator_state.json
Restart Node & Check Logs
sudo systemctl restart entangled
sudo journalctl -u entangled -f -o cat
Snapshot
sudo systemctl stop entangled
cp $HOME/.entangled/data/priv_validator_state.json $HOME/.entangled/priv_validator_state.json.backup
entangled tendermint unsafe-reset-all --home ~/.entangled/ --keep-addr-book
curl https://snapshot.validatorvn.com/entangle/data.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.entangled
mv $HOME/.entangled/priv_validator_state.json.backup $HOME/.entangled/data/priv_validator_state.json
sudo systemctl restart entangled && sudo journalctl -u entangled -f -o cat
Launch Node
sudo systemctl restart entangled
journalctl -u entangled -f -o cat
Key management
Add new key
entangled keys add wallet
Recover existing key
entangled keys add wallet --recover
Get bech32 to hex wallet
echo "0x$(entangled debug addr $(entangled keys show wallet -a) | grep hex | awk '{print $3}')"
List all keys
entangled keys list
Delete key
entangled keys delete wallet
Export key to the file
entangled keys export wallet
Import key from the file
entangled keys import wallet wallet.backup
Wallet balance
entangled q bank balances $(entangled keys show wallet -a)
Token management
Withdraw rewards from all validators
entangled tx distribution withdraw-all-rewards --from wallet --chain-id entangle_33033-1 --gas-adjustment 1.4 --gas 500000 --gas-prices 10aNGL -y
Withdraw rewards and commissions from your validator
entangled tx distribution withdraw-rewards $(entangled keys show wallet --bech val -a) --commission --from wallet --chain-id entangle_33033-1 --gas-adjustment 1.4 --gas 500000 --gas-prices 10aNGL -y
Delegate tokens to yourself
entangled tx staking delegate $(entangled keys show wallet --bech val -a) 1000000000000000000aNGL --from wallet --chain-id entangle_33033-1 --gas-adjustment 1.4 --gas 500000 --gas-prices 10aNGL -y
Delegate tokens to validator
entangled tx staking delegate <TO_VALOPER_ADDRESS> 1000000000000000000aNGL --from wallet --chain-id entangle_33033-1 --gas-adjustment 1.4 --gas 500000 --gas-prices 10aNGL -y
Redelegate tokens to another validator
entangled tx staking redelegate $(entangled keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000000000000000aNGL --from wallet --chain-id entangle_33033-1 --gas-adjustment 1.4 --gas 500000 --gas-prices 10aNGL -y
Unbond tokens from your validator
entangled tx staking unbond $(entangled keys show wallet --bech val -a) 1000000000000000000aNGL --from wallet --chain-id entangle_33033-1 --gas-adjustment 1.4 --gas 500000 --gas-prices 10aNGL -y
Send tokens to the wallet
entangled tx bank send wallet <TO_WALLET_ADDRESS> 1000000000000000000aNGL --from wallet --chain-id entangle_33033-1 --gas-adjustment 1.4 --gas 500000 --gas-prices 10aNGL -y
Validator management
Validator info
entangled status 2>&1 | jq .ValidatorInfo
Validator details
entangled q staking validator $(entangled keys show wallet --bech val -a)
Check if validator key is correct
[[ $(entangled q staking validator $(entangled keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(entangled status | jq -r .ValidatorInfo.PubKey.value) ]] && echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"
List all active validators
entangled 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 all inactive validators
entangled 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
Edit existing validator
entangled tx staking edit-validator \ --new-moniker "YOUR_MONIKER_NAME" \ --identity "YOUR_KEYBASE_ID" \ --details "YOUR_DETAILS" \ --website "YOUR_WEBSITE_URL" \ --security-contact "YOUR_EMAIL_ADDRESS" \ --chain-id entangle_33033-1 \ --commission-rate 0.05 \ --from wallet \ --gas-adjustment 1.4 \ --gas 500000 \ --gas-prices 10aNGL \ -y
Jail reason
entangled query slashing signing-info $(entangled tendermint show-validator)
Unjail validator
entangled tx slashing unjail --from wallet --chain-id entangle_33033-1 --gas-adjustment 1.4 --gas 500000 --gas-prices 10aNGL -y
Governance
List all proposals
entangled query gov proposals
View proposal by ID
entangled query gov proposal 1
Vote βYESβ
entangled tx gov vote 1 yes --from wallet --chain-id entangle_33033-1 --gas-adjustment 1.4 --gas 500000 --gas-prices 10aNGL -y
Maintenance
Get sync info
entangled status 2>&1 | jq .SyncInfo
Enable Prometheus
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.entangled/config/config.toml
Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"10aNGL\"|" $HOME/.entangled/config/app.toml
Disable indexer
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.entangled/config/config.toml
Enable indexer
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.entangled/config/config.toml
Update pruning
sed -i -e 's|^pruning *=.*|pruning = "custom"|' $HOME/.entangled/config/app.tomlsed -i -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' $HOME/.entangled/config/app.tomlsed -i -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' $HOME/.entangled/config/app.tomlsed -i -e 's|^pruning-interval *=.*|pruning-interval = "10"|' $HOME/.entangled/config/app.toml
Filter peers and max peers
sed -i -e 's|^filter_peers *=.*|filter_peers = "true"|' $HOME/.entangled/config/config.tomlsed -i -e 's|^max_num_inbound_peers *=.*|max_num_inbound_peers = "50"|' $HOME/.entangled/config/config.tomlsed -i -e 's|^max_num_outbound_peers *=.*|max_num_outbound_peers = "20"|' $HOME/.entangled/config/config.toml
Update ports
CUSTOM_PORT=156sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.entangled/config/config.tomlsed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.entangled/config/app.toml
Reset chain data
entangled tendermint unsafe-reset-all --keep-addr-book --home $HOME/.entangled
Delete node
sudo systemctl stop entangledsudo systemctl disable entangledsudo rm -rf /etc/systemd/system/entangled.servicesudo systemctl daemon-reloadsudo rm -f $(which entangled)sudo rm -rf $HOME/.entangledsudo rm -rf $HOME/entangle-blockchain
Service Management
Status service
sudo systemctl status entangled
Start service
sudo systemctl start entangled
Stop service
sudo systemctl stop entangled
Restart service
sudo systemctl restart entangled
Logs service
sudo journalctl -u entangled -f --no-hostname -o cat
Reload service
sudo systemctl daemon-reload
Enable service
sudo systemctl enable entangled
Disable service
sudo systemctl disable entangled
Last updated