handshake-node is a Handshake (HNS) blockchain full node written in Go. It is a fork of btcd, but its target behavior is the Handshake network: Handshake block headers, proof-of-work, transactions, covenants, name state, P2P transport, mining, and RPCs.
This is not a Bitcoin node, and it does not include a wallet. Wallet software must manage keys, signing, coin selection, and wallet state externally.
The current release is 0.1.1-rc1, a mainnet release candidate. It includes:
- Handshake mainnet and regtest chain parameters.
- Blake2b/SHA3 Handshake proof-of-work and 236-byte block headers.
- Handshake transaction outputs with address and covenant data.
- Name covenant validation, Urkel-backed name state, and name proof RPCs.
- Brontide P2P transport with plaintext fallback for compatibility work.
- Mempool, mining,
getblocktemplate, coinbase proof handling, and a Stratum v1 MVP server. - Authenticated JSON-RPC, websocket notifications, unsigned covenant
constructors,
hnsctl, andrpcclientsupport. - Full-block Handshake P2P service suitable for cdnsd indexing.
Go 1.25 or newer.
git clone https://github.com/blinklabs-io/handshake-node.git
cd handshake-node
make buildTo install the node and command-line tools into your Go binary directory:
go install -v . ./cmd/...handshake-nodeThe daemon can start with no configuration, but production deployments should set explicit RPC credentials and review listener settings:
handshake-node \
--rpcuser=myuser \
--rpcpass=mypassword \
--rpclisten=127.0.0.1:12037Environment variables use the HANDSHAKE_NODE_ prefix, for example
HANDSHAKE_NODE_RPCUSER and HANDSHAKE_NODE_RPCPASS.
| Port | Purpose |
|---|---|
| 12038 | Mainnet P2P |
| 12037 | Mainnet RPC |
| 12039 | Prometheus metrics, disabled by default |
| 12040 | Stratum, disabled by default |
RPC is authenticated and TLS-enabled by default. Do not expose RPC, metrics, or
Stratum listeners publicly without reviewing the security options in
docs/configuration.md.
make unit
make lintIntegration tests are run serially because the daemon harness allocates local ports:
go test -p 1 -v -tags=rpctest ./integration/...- Configuration
- Controlling the node with hnsctl
- JSON-RPC API
- Mining
- Wallet integration
- cdnsd integration
- Docker
handshake-node is licensed under the copyfree ISC License. Upstream btcd-derived code is also ISC licensed.