Skip to content

Latest commit

 

History

4,565 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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.

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.

About

Handshake Blockchain Node

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages