# WCAHT Validator Bundle (Linux)

Everything you need to run a WCAHT validator and join the live chain
(genesis `d6aecfbd…`, protocol 7, chain id 7789). **Compiled binary — no source.**

## Contents
| File | Purpose |
|---|---|
| `wcaht-blockchain` | Linux release binary (the exact code the live validators run). Verify its SHA-256 against the value published on the download page. |
| `config/genesis.json` | Canonical genesis. **Do not edit.** |
| `config/node_new_config.json` | Node config — fill in the 2 `REPLACE_…` fields; bootstrap already points at the live voters. |
| `new_launch.sh` | Launcher (sets validator mode, env, sync peers). |

## Steps

1. **Provision** — Ubuntu (8+ cores, 16 GB+). Open ports `8901/tcp`, `8001/udp`, `9001/udp`.
   ```bash
   chmod +x wcaht-blockchain new_launch.sh
   ```

2. **Generate your identity** (unique per node):
   ```bash
   WCAHT_ALLOW_PLAINTEXT_KEYS=1 ./wcaht-blockchain --keygen --name node_new --out-dir config
   # or the bundled wcaht-keygen if present. Note the printed pubkey.
   ```
   ⚠️ `node_id` must be this pubkey — never a friendly name.

3. **Fill the config** — in `config/node_new_config.json` set `node_id` (the pubkey),
   `node_ip` and `public_endpoint` (`<public-ip>:8001:9001`). Set the same in `new_launch.sh`.

4. **Start & sync** (non-voting until registered):
   ```bash
   ./new_launch.sh
   curl -s http://127.0.0.1:8901/health | python3 -c "import sys,json;d=json.load(sys.stdin);print('behind',d['sync']['blocks_behind'])"
   ```
   Wait for `blocks_behind ≈ 0`. Genesis hash **must** be `d6aecfbd…`, or it cannot peer.

5. **Fund** — on dashboard.denvion.com, use the faucet to send ~110 WCAHT to your node pubkey
   (covers the 100 WCAHT self-stake + registration fee).

6. **Import your identity into the dashboard wallet** — import `config/node_new-validator-keypair.json`.
   ⚠️ The wallet you register with **must** be your node's identity key.

7. **Register** — dashboard wallet: *Check Node Online* → stake `100`, commission e.g. `5` →
   **Register as Validator**.

8. **Wait one epoch** (up to ~19 h) → auto-activated. Verify on the dashboard / `getVoteAccounts`
   that your node appears as an active voter.

## Rules
- **One validator at a time** — fully synced + voting before starting the next.
- Bootstrap/sync only from an active voter, never an observer.
- Keep an encrypted offline backup of your identity keypair — it cannot be recovered.
