> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tavchain.safeney.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Run a full node

> Follow Tavchain Testnet from genesis with the native node client.

Run a non-validator full node to verify the chain and query your own local RPC. No wallet, faucet claim, staking deposit or account passphrase is needed to follow the network. Validator registration is separate; this guide does not enroll a validator.

> [!NOTE]
>
> This is the earlier Linux x86-64 installation for client `1.8.1-tavchain.eval1`, retained for its matching [systemd guide](https://docs.tavchain.safeney.com/tavchain/operate/node-service.md). For a new node, choose [Docker or a native bundle](https://docs.tavchain.safeney.com/tavchain/operate.md); both include the current network configuration. You do not need to follow this manual procedure for those packages.

Wallets and applications can use [public RPC](https://docs.tavchain.safeney.com/tavchain/connect.md) without installing a node.

For Linux ARM64 and Windows x86-64 binaries, or the newer statically linked Linux x86-64 build, follow [Run a native node](https://docs.tavchain.safeney.com/tavchain/operate/node-native.md). The instructions below retain the earlier Linux x86-64 client release.

## Before you start

Use a dedicated Linux x86-64 host or user account. This binary requires a compatible glibc loader and references symbols through glibc 2.34. This earlier archive is Linux x86-64 only; other tested native targets are listed in [Run a native node](https://docs.tavchain.safeney.com/tavchain/operate/node-native.md). Wallets and applications can use public RPC without running a node.

You need persistent SSD storage, reliable outbound internet, accurate system time, curl, tar, sha256sum and Python3 for readable JSON. The tested profile retains full history, so disk use grows with the chain. Leave free disk and inode headroom and monitor growth. Hardware requirements depend on workload; no measured general capacity minimum is published for this release.

The network is unaudited and centrally operated. Test TAV has no monetary value.

## Download and verify the release

Download into a fresh directory. You need OpenSSH with `ssh-keygen -Y verify`. Stop if any verification command fails.

```bash theme={null}
set -e
mkdir tavchain-node-download
cd tavchain-node-download
export TAVCHAIN_RELEASE_URL=https://testnet.tavchain.safeney.com/downloads/tavchain-node-1.8.1-tavchain.eval1
curl --fail --location --remote-name "$TAVCHAIN_RELEASE_URL/RELEASE.json"
curl --fail --location --remote-name "$TAVCHAIN_RELEASE_URL/RELEASE.json.sig"
curl --fail --location --remote-name "$TAVCHAIN_RELEASE_URL/release1_ed25519.pub"
awk 'NR==1 {print $1 " " $2}' release1_ed25519.pub > trusted-release.pub
test "$(ssh-keygen -lf trusted-release.pub | awk '{print $2}')" = 'SHA256:rZRDFiztp0bd51gCAI/qKBGxkOKl9Fv52UWdbUpUQRM'
printf 'safeney-tavchain-releases namespaces="tavchain-release-v1" %s\n' "$(cat trusted-release.pub)" > local-allowed-signers
ssh-keygen -Y verify -f local-allowed-signers -I safeney-tavchain-releases -n tavchain-release-v1 -s RELEASE.json.sig < RELEASE.json
```

```bash theme={null}
set -e
curl --fail --location --remote-name "$TAVCHAIN_RELEASE_URL/tavchain-node-1.8.1-tavchain.eval1-linux-amd64.tar.gz"
python3 -c 'import json; m=json.load(open("RELEASE.json")); n="tavchain-node-1.8.1-tavchain.eval1-linux-amd64.tar.gz"; print(m["files"][n]["sha256"]+"  "+n)' | sha256sum --check
```

```bash theme={null}
set -e
tar -xzf tavchain-node-1.8.1-tavchain.eval1-linux-amd64.tar.gz
cd tavchain-node
sha256sum --check SHA256SUMS
./bin/tavchaind version --long
```

The fingerprint must match your trusted Tavchain release-key record. The local signer list uses that checked key, not a blindly trusted download. The signed manifest authenticates the archive hash; internal checksums check extracted files. The 50.84 MB node bundle is sufficient to run; [source/dependency downloads](https://docs.tavchain.safeney.com/tavchain/operate/network-assets.md) are separate.

## Select the new network files

The unchanged client archive also contains historical network files. Before initialization, download and verify the separate [771002 network package](https://docs.tavchain.safeney.com/tavchain/operate/network-assets.md) using its signed `NETWORK-RELEASE.json` and the same trusted release-key fingerprint. Do not use the archive's old embedded genesis.

After all network-package signatures and hashes pass, from the extracted `tavchain-node` directory:

```bash theme={null}
set -e
mkdir network-771002
cd network-771002
export TAVCHAIN_NETWORK_URL=https://testnet.tavchain.safeney.com/downloads/tavchain-network-771002-1
for file in genesis.json config.toml app.toml peers.txt network.json README.md VERIFY.md SHA256SUMS tavchain-network-771002-1.tar.gz NETWORK-RELEASE.json NETWORK-RELEASE.json.sig release1_ed25519.pub; do
  curl --fail --location --remote-name "$TAVCHAIN_NETWORK_URL/$file"
done
awk 'NR==1 {print $1 " " $2}' release1_ed25519.pub > trusted-release.pub
test "$(ssh-keygen -lf trusted-release.pub | awk '{print $2}')" = 'SHA256:rZRDFiztp0bd51gCAI/qKBGxkOKl9Fv52UWdbUpUQRM'
printf 'safeney-tavchain-releases namespaces="tavchain-release-v1" %s\n' "$(cat trusted-release.pub)" > local-allowed-signers
ssh-keygen -Y verify -f local-allowed-signers -I safeney-tavchain-releases -n tavchain-release-v1 -s NETWORK-RELEASE.json.sig < NETWORK-RELEASE.json
python3 -c 'import json; m=json.load(open("NETWORK-RELEASE.json")); print("\n".join(v["sha256"]+"  "+k for k,v in m["files"].items()))' | sha256sum --check
cd ..
cp network-771002/genesis.json network-771002/config.toml network-771002/app.toml network/
```

If a download is unavailable or verification fails, stop; do not fall back to a predecessor genesis. The final genesis hash must be `a101ab9ccf1478757af8a69d832548ea1167e552fe6d6ef6621a77447a54e924`.

## Initialize a fresh node

Use a fresh directory, never a production validator home. Run as an ordinary user. The native init command creates a private P2P identity and an unused consensus key. Keep those files private; do not copy validator keys or reuse a validator's signer state.

```bash theme={null}
umask 077
export TAVCHAIN_NODE_HOME="$HOME/.tavchain-testnet-fullnode"
test ! -e "$TAVCHAIN_NODE_HOME" || { echo 'Choose a fresh node directory'; exit 1; }
./bin/tavchaind init my-tavchain-node --chain-id tavchaintestnet_771002-1 --default-denom atav --home "$TAVCHAIN_NODE_HOME"
cp network/genesis.json network/config.toml network/app.toml "$TAVCHAIN_NODE_HOME/config/"
```

The start command sets your public node label with `--moniker`. The package contains network configuration, not private keys or existing ledger state.

## Start and sync

Check that ports 29656/29657/29645/29646 are unused before starting. All listeners bind to 127.0.0.1; the node connects outbound to the listed public peers. No firewall opening or public RPC is required for this guide.

```bash theme={null}
./bin/tavchaind start --home "$TAVCHAIN_NODE_HOME" --moniker my-tavchain-node --genesis_hash a101ab9ccf1478757af8a69d832548ea1167e552fe6d6ef6621a77447a54e924
```

Keep this terminal open. In a second terminal, check native status and peers:

```bash theme={null}
set -e
curl --fail --silent --show-error http://127.0.0.1:29657/status | python3 -m json.tool
curl --fail --silent --show-error http://127.0.0.1:29657/net_info | python3 -m json.tool
```

Expect native network tavchaintestnet\_771002-1, advancing height and at least one peer. When caught up, sync\_info.catching\_up becomes false. Your full node's validator\_info.voting\_power should be 0: that is normal for an unregistered observer. An existing registered validator with zero voting power needs a different diagnosis.

Check the local EVM chain ID:

```bash theme={null}
set -e
curl --fail --silent --show-error http://127.0.0.1:29645/ -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
```

Expect 0xbc3ba (771002). Compare a block hash at one fixed height through your local RPC and the public RPC; comparing two moving latest heights is inconclusive. See [Monitor a node](https://docs.tavchain.safeney.com/tavchain/operate/monitoring.md#compare-a-fixed-block) for the complete read-only comparison.

## Stop and restart

Press Ctrl+C in the node terminal and wait for shutdown before starting it again. Use the same home and start command. The node should resume retained state and catch up; do not run init again, replace its genesis or delete its data.

To run the node in the background, follow [Run a node as a service](https://docs.tavchain.safeney.com/tavchain/operate/node-service.md). The service guide describes background operation, graceful shutdown and restart behavior.

## If it does not sync

Follow [Troubleshoot a node](https://docs.tavchain.safeney.com/tavchain/operate/troubleshooting.md) for startup, peer, RPC and storage symptoms, and [Monitor a node](https://docs.tavchain.safeney.com/tavchain/operate/monitoring.md) for continuing readiness checks.

Check the selected release/genesis, local port conflicts, outbound peer connectivity, clock and available disk/inodes. A disconnected or catching-up node is not ready for application use. Keep native/EVM RPC on loopback. Do not use reset, pruning, snapshot replacement or validator-key copying as a first response.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.