> For the complete documentation index, see [llms.txt](https://docs.validator247.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.validator247.com/mainnet/entangle.md).

# Entangle

**Info**&#x20;

> [https://twitter.com/Entanglefi\
> https://discord.gg/entangle](<https://twitter.com/Entanglefi&#xA;https://discord.gg/entangle>)

## **Public Endpoints**

> RPC <https://entangle-rpc.validator247.com>
>
> API [ https://entangle-api.validator247.com](< https://entangle-api.validator247.com>)

## **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**&#x20;

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 <a href="#get-and-configure-the-state-sync-information" id="get-and-configure-the-state-sync-information"></a>

```
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&#x20;

```
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 <a href="#key-management" id="key-management"></a>

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 <a href="#token-management" id="token-management"></a>

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 <a href="#validator-management" id="validator-management"></a>

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 <a href="#governance" id="governance"></a>

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 <a href="#maintenance" id="maintenance"></a>

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 <a href="#service-management" id="service-management"></a>

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
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.validator247.com/mainnet/entangle.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
