A low-bandwidth, shortwave radio-compatible blockchain protocol using Alpenglow consensus.
Validators run Alpenglow consensus over real HF radio links (PACTOR modems), with persistent state, native transactions and tokens. A private testnet backs the explorer and the wallet.
Contributions welcomed!
Two validators over a simulated half-duplex PACTOR link:
cargo run -p bunker_coin_sim --bin pactor_consensus -- --simulated --half-duplex --rpc- The RPC is served on http://localhost:3001 (override with
BUNKER_RPC_ADDR) - See Explorer API Spec and Wallet RPC for endpoints
Two SCS Dragon DR-7400 PACTOR modems on two machines, one node per machine:
cargo build --release -p bunker_coin_sim --bin pactor_consensus
target/release/pactor_consensus --port /dev/ttyUSB0 --node 0 --mycall NODE0 --peercall NODE1 --frequency 14050.0 --reset --rpc
target/release/pactor_consensus --port /dev/ttyUSB0 --node 1 --mycall NODE1 --peercall NODE0 --frequency 14050.0 --resetEach node keeps its RocksDB state under ./data/ in its working directory, so give every node its own directory. Full guide: Running consensus over PACTOR.
crates/core(bunker_coin_core): accounts, transactions (transfers, tokens, staking), execution state, epochscrates/bunkerglow: Alpenglow consensus (Votor, Rotor, repair, BLS certificates, RocksDB storage), forked from the reference implementationcrates/radio: radio networking: PACTOR framing, link mux, Reed-Solomon coding, simulated HF networkcrates/scs_pactor: SCS PACTOR modem driver (USB serial hostmode, TCP, simulator)crates/rpc: REST + WebSocket explorer API and Solana-style JSON-RPC for walletscrates/sim: the node binary (pactor_consensus), simulations and hardware probescrates/vara,crates/lora_gateway,crates/gateway: VARA TNC client, LoRa transaction ingest and a simulated relay, not yet wired into the node
The web apps live in a bun workspace under apps/:
apps/explorer: block explorer (Next.js)apps/wallet: local-only web wallet (Next.js static export)apps/homepage: the website at bunkercoin.com (Next.js on Cloudflare via OpenNext)apps/app: the web app (Next.js on Cloudflare via OpenNext)packages/*: shared UI components and ESLint/TypeScript configs for the website apps
The Ledger hardware wallet app (C, Ledger SDK) lives in ledger/; see ledger/README.md.
bun install
bun run dev:explorer
bun run dev:wallet
bun run buildOn air, nodes talk PACTOR between SCS DR-7400 modems over HF, with no internet. The modem arbitrates half-duplex turns, and the node paces writes to the on-air rate and rides out fades with link-liveness and repair.
The simulated network models HF (shortwave) conditions:
- Global Bandwidth >> 50-2400 bps (depending on conditions)
- Packet Loss >> 5-50% (ionospheric effects)
- Latency >> 100-1000ms (propagation) ++ jitter
Erasure coding: Rotor splits blocks into 4 data / 6 total shreds of 1 KiB; the radio layer adds Reed-Solomon (2 data + 4 parity).
- Explorer API Spec: REST + WebSocket on :3001
- Wallet RPC: Solana-style JSON-RPC 2.0 and the native transaction format
- VARA and LoRa transports in the node
- More than two validators on air
- Remainders from the BunkerCoin spec
... (many more)
Core contributors welcomed! If you'd like to help shape the protocol from the ground up, get in touch.
- Alpenglow (A true piece of art)
- BunkerCoin Whitepaper:
bunker_coin.tex - BunkerCoin Whitepaper (PDF)
Ensure you have a recent stable Rust toolchain installed.
rustup update stable
cargo checkThe testnet is private and nothing is stabilised yet, expect rapid iteration.