π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 -yInstall 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 versionInstall 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 versionInitialize Node
entangled init <Your_NodeName> --chain-id=entangle_33033-1Download 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 entangledState 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.jsonRestart Node & Check Logs
sudo systemctl restart entangled
sudo journalctl -u entangled -f -o catSnapshot
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 catLaunch Node
sudo systemctl restart entangled
journalctl -u entangled -f -o cat
Key management
Add new key
entangled keys add walletRecover existing key
entangled keys add wallet --recoverGet bech32 to hex wallet
echo "0x$(entangled debug addr $(entangled keys show wallet -a) | grep hex | awk '{print $3}')"List all keys
entangled keys listDelete key
entangled keys delete walletExport key to the file
entangled keys export walletImport key from the file
entangled keys import wallet wallet.backupWallet 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 -yWithdraw 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 -yDelegate 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 -yDelegate 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 -yRedelegate 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 -yUnbond 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 -ySend 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 -yValidator management
Validator info
entangled status 2>&1 | jq .ValidatorInfoValidator 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 | nlList 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 | nlEdit 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 \ -yJail 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 -yGovernance
List all proposals
entangled query gov proposalsView proposal by ID
entangled query gov proposal 1Vote βYESβ
entangled tx gov vote 1 yes --from wallet --chain-id entangle_33033-1 --gas-adjustment 1.4 --gas 500000 --gas-prices 10aNGL -yMaintenance
Get sync info
entangled status 2>&1 | jq .SyncInfoEnable Prometheus
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.entangled/config/config.tomlSet minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"10aNGL\"|" $HOME/.entangled/config/app.tomlDisable indexer
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.entangled/config/config.tomlEnable indexer
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.entangled/config/config.tomlUpdate 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.tomlFilter 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.tomlUpdate 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.tomlReset chain data
entangled tendermint unsafe-reset-all --keep-addr-book --home $HOME/.entangledDelete 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-blockchainService Management
Status service
sudo systemctl status entangledStart service
sudo systemctl start entangledStop service
sudo systemctl stop entangledRestart service
sudo systemctl restart entangledLogs service
sudo journalctl -u entangled -f --no-hostname -o catReload service
sudo systemctl daemon-reloadEnable service
sudo systemctl enable entangledDisable service
sudo systemctl disable entangledLast updated