Any laptop joins the consensus mesh. Validators verify Groth16 proofs in ~10 ms, vote in BFT consensus, and collect all withdrawal fees — no GPU, no datacenter.
Validators are verify-only nodes. Proof generation stays with the user. Validators run the Groth16 verifier, vote in BFT consensus, and settle state on-chain.
Runs verify_withdrawal_parts and verify_transfer_parts on every submitted proof. Groth16 over BLS12-381 — ~10 ms per proof on a single CPU core. No GPU needed.
Signs votes for valid proofs. A transfer or withdrawal settles only after a quorum of 7-of-10 validators vote it valid. Equivocation (double-voting) triggers on-chain slashing.
The Solana program calls distribute_fee on the leader after consensus. 100% of fees credited to pending_rewards on the leader's account, claimable any time.
Anyone with ≥ 1 SOL stake calls register_validator on-chain and connects to the Kademlia DHT mesh via the bootstrap anchor. No allowlist, no invitation required.
Leader node appends output commitments to the Merkle tree after a settled transfer. The rest of the validator set syncs the tree state and nullifier set for double-spend prevention.
Every node exposes /health, /ready, and /metrics (Prometheus) on a separate port. Systemd unit and monitoring guide in the docs.
Proof generation stays with the user. Validators only verify — a single CPU core handles Groth16 in ~10 ms, so any modern machine qualifies.
solana airdrop 2 <PUBKEY> --url https://api.devnet.solana.com to fund a keypair.
Stake is locked on-chain; call claim_rewards any time to withdraw accumulated earnings.
Full guide with systemd unit, log monitoring, and common pitfalls in the validator docs.
Build toolchain and native libs for libp2p and zk-SNARKs. On Debian/Ubuntu:
# Debian / Ubuntu
sudo apt-get install -y build-essential pkg-config libssl-dev \
protobuf-compiler clang libclang-dev cmake \
libc++-dev libc++abi-dev libstdc++-12-dev
# macOS (Homebrew)
brew install protobuf cmake openssl
Clone and build in release mode. The binary is target/release/occlude.
git clone https://github.com/occlude-labs/occlude-core.git
cd occlude-core
cargo build --release --bin occlude
Generate a fresh keypair and airdrop 2 SOL. The faucet allows 2 SOL every 8 hours.
solana-keygen new --no-bip39-passphrase -o ~/.config/solana/occlude-validator.json
solana airdrop 2 \
$(solana-keygen pubkey ~/.config/solana/occlude-validator.json) \
--url https://api.devnet.solana.com
Calls register_validator on the Anchor program. Devnet RPC and the canonical program ID are defaults.
./target/release/occlude validator register \
--keypair ~/.config/solana/occlude-validator.json
# Verify registration
./target/release/occlude validator status \
--keypair ~/.config/solana/occlude-validator.json
Copy the devnet template, edit the marked paths, then start. The Kademlia DHT fans out automatically from the bootstrap anchor.
# Copy template (sets bootstrap + bridge defaults)
cp scripts/devnet/validator.toml.example ~/.occlude/validator.toml
# Edit ~/.occlude/validator.toml — set keypair_path and data_dir
# Start the node
./target/release/occlude validator start \
--config ~/.occlude/validator.toml
# Bootstrap anchor (stable multiaddr)
# /ip4/67.205.142.8/tcp/9300/p2p/12D3KooWFf8xfNz77E9Ve4HnpyZkAHKAcUdw4LmagpFCYQD6R7WK
./target/release/occlude validator list
Current devnet snapshot. Mainnet pending MPC ceremony + external audit.
slash_validator call burning 1–100% of stake.
The active/passive coordinator failover keeps the mesh running with RTO under 30 s.
pending_rewards on your on-chain ValidatorAccount.
Call claim_rewards via the CLI at any time to withdraw to your wallet:
./target/release/occlude validator claim --keypair ~/.config/solana/occlude-validator.json
distribute_fee from the quorum daemon is tracked in
#164
and not yet wired. Until it ships, distribution requires a manual instruction.
8gPsR…TWrP. The remaining gates to mainnet are:
completion of the BGM17 multi-party ceremony (20–30 contributors), an external security audit,
and final output-note plumbing for the private compute layer.
Follow @occludelabs for updates.