> For the complete documentation index, see [llms.txt](https://moltad.gitbook.io/nodehashcoin/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://moltad.gitbook.io/nodehashcoin/run-a-node.md).

# Run a node

The NodeHashCoin validation node is TypeScript. Same package on Cloudflare, AWS, GCP, and a VPS.

A validation node checks blocks and transactions, serves miners over HTTPS/WebSocket, and (on a VM) can speak P2P with other nodes. Cloudflare is one **deployment** of that package — not a different protocol.

Public source: [github.com/chrisgu/nodehashcoin-node](https://github.com/chrisgu/nodehashcoin-node) (standalone clone, TypeScript only, no git submodules).

{% hint style="warning" %}
Do not run hashing on a shared Cloudflare Workers account. The Worker is a gateway and chain index. BLAKE3 work belongs on miners (browser or Node.js), not on Worker CPU.
{% endhint %}

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td>Cloudflare</td><td>Workers + Durable Objects / D1 / R2 for headers and the UTXO index.</td><td><code>cloud</code></td></tr><tr><td>AWS</td><td>Node 22 on Elastic Beanstalk, ECS, or an EC2 VM with Docker.</td><td><code>aws</code></td></tr><tr><td>Google Cloud</td><td>Cloud Run or a Compute Engine VM running the same image.</td><td><code>google</code></td></tr><tr><td>VPS</td><td>Any Linux host: Docker or systemd + Node 22.</td><td><code>hard-drive</code></td></tr></tbody></table>

## What every node does

* Verifies **BLAKE3** proofs and **Ed25519** signatures
* Refuses a genesis hash that does not match the baked-in genesis
* Serves miner work over HTTPS/WebSocket
* Exposes read RPC for wallets and the explorer

TCP peer-to-peer is for VM nodes. Workers are HTTP-only and have CPU limits, so they store chain state in Durable Objects or D1/R2 instead of a long-lived Bitcoin-style daemon.

```mermaid
flowchart TD
  miner["Browser or Node miner"] --> gw["HTTPS / WebSocket gateway"]
  gw --> core["TypeScript validation node"]
  core --> cf["Cloudflare Worker + DO / D1 / R2"]
  core --> vm["AWS / GCP / VPS Node 22"]
```
