HELM is a compact UTXO ledger that ties transaction semantics to consensus via the Lead UTXO model. It includes a stack-based VM for programmable spending conditions and a Chained Mask Proof-of-Work for block production.
See WHITEPAPER.md for the full protocol rationale and design details.
Note
AI is used in the development and coding of this project.
- helm — Node binary. Boots and runs a local node, orchestrates networking, mempool, block assembly, consensus validation, and persistence.
- helm-core — Core library. Defines blocks, transactions, the UTXO model, validation rules, and the VM used to enforce spending conditions.
- helm-net — Networking layer. Implements libp2p-based peer discovery, gossip, mempool sync, and RPC endpoints consumed by the node.
- helm-db — Storage backend. Durable store for blocks, indices, and UTXO state; intended to be the node's pluggable persistence layer.
- helm-cli — Command-line tools. Small utilities to inspect peers/state, construct and sign transactions, and broadcast them to a running node.
- Rust (stable) + Cargo
gcc(for some deps)
Clone:
git clone https://github.com/snakedye/helm.git
cd helmcargo build --workspace --releaseBuild one crate:
cargo build -p helm --release- Create a 32-byte secret (hex, 64 chars), e.g.:
openssl rand -hex 32- Export and run:
export HELM_SECRET_KEY=<your-64-hex>
cargo run -p helm --releaseBuild the image:
docker build -t helm .
Run a node:
docker run -d --name helm-node \
-e HELM_SECRET_KEY=$(openssl rand -hex 32) \
-e HELM_MINING=true \
-p 3333:3333 \
helm
Override any configuration via environment variables or an env file:
docker run -d --name helm-node --env-file .env -p 3333:3333 helm
Persist chain data across restarts with a volume:
docker run -d --name helm-node \
-e HELM_SECRET_KEY=<your-64-hex> \
-p 3333:3333 \
-v helm-data:/home/helm \
helm
- The node reads configuration from .env or environment variables.
- Use
helm-clito inspect peers, construct and broadcast transactions:
cargo run -p helm-cli -- --help