Sign inSign up

blinklabs/handshake-node

By blinklabs

•Updated 2 days ago

Handshake blockchain full node

Image
0

9.1K

blinklabs/handshake-node repository overview

⁠handshake-node

Build Status ISC License GoDoc

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.

⁠Current Status

The current release is 0.5.0 for Handshake mainnet. 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 authenticated inbound negotiation. Discovered outbound peers remain plaintext because address gossip is not a trusted identity-key source.
  • Mempool, mining, getblocktemplate, coinbase proof handling, and a Stratum v1 MVP server.
  • Authenticated JSON-RPC, websocket notifications, unsigned covenant constructors, hnsctl, and rpcclient support.
  • hsd-compatible claim and airdrop proof relay, submission RPCs, and expanded operational RPC coverage.
  • Handshake bloom filtering and partial Merkle proofs compatible with hsd.
  • Bounded mempool, peer queue, signature cache, and per-IP peer admission memory with operator-facing runtime metrics.
  • Configuration-free mainnet container startup, cgroup-aware CPU sizing, and multi-platform release artifacts.
  • A resumable hsd parity runner and pinned interoperability/recovery tests for mainnet-readiness validation.
  • Full-block Handshake P2P service suitable for cdnsd indexing.

⁠Requirements

Go⁠ 1.26.6 or newer. The module toolchain directive automatically selects a patched Go toolchain when supported.

⁠Build

git clone https://github.com/blinklabs-io/handshake-node.git
cd handshake-node
make build

To install the node and command-line tools into your Go binary directory:

go install -v . ./cmd/...

⁠Run

handshake-node

The 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:12037

Environment variables use the HANDSHAKE_NODE_ prefix, for example HANDSHAKE_NODE_RPCUSER and HANDSHAKE_NODE_RPCPASS.

⁠Ports

PortPurpose
12038Mainnet P2P
12037Mainnet RPC
12039Prometheus metrics, disabled by default
12040Stratum, 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.

⁠Test

make unit
make lint

Integration tests are run serially because the daemon harness allocates local ports:

go test -p 1 -v -tags=rpctest ./integration/...

⁠Documentation

⁠License

handshake-node is licensed under the copyfree⁠ ISC License. Upstream btcd-derived code is also ISC licensed.

Tag summary

Content type

Image

Digest

sha256:b669b76b1…

Size

17.5 MB

Last updated

2 days ago

docker pull blinklabs/handshake-node:main