Validators

Run a validator on a Raspberry Pi.

Paraloom validators verify Groth16 proofs and vote on blocks — roughly ten milliseconds of work, no GPU, no specialized silicon. The bar isn’t horsepower, it’s uptime: the node has to stay on and reachable, so an always-on box like a Raspberry Pi or a ~$5/mo cloud VM beats a desktop that sleeps. Slashing penalizes nodes that drop offline.

Hardware

What you actually need.

CPU2 cores · x86_64 or arm64Apple Silicon, Raspberry Pi 5, modest server
Memory8 GB minimum, 16 GB recommendedconsensus + nullifier set + RocksDB cache
Disk120 GB SSDfsync-backed; HDD will lag at hot writes
Network100 Mbit symmetriclibp2p gossipsub, modest peak
Operating systemLinux · macOSsigned binaries; Windows via WSL2
Setup

From zero to validating in four shells.

$ build

Build the CLI

One binary does everything: paraloom, with a validator subcommand for each verb (register, start, status, list, unregister). Build it from source — release binaries are still pre-mainnet.

git clone https://github.com/paraloom-labs/paraloom-core.git
cd paraloom-core
cargo build --release --bin paraloom
$ fund

Fund a devnet wallet

Registration stakes 1 SOL and pays transaction fees, so fund the wallet with at least 2 SOL. The devnet faucet gives 2 SOL every 8 hours.

solana-keygen new --no-bip39-passphrase \
  -o ~/.config/solana/paraloom-validator.json
solana airdrop 2 \
  $(solana-keygen pubkey ~/.config/solana/paraloom-validator.json) \
  --url https://api.devnet.solana.com
$ register

Stake and register on-chain

validator register stakes 1 SOL into a per-validator PDA, records your pubkey in the on-chain registry, and seeds reputation at 1000. Devnet RPC and the program ID are the defaults — just pass your keypair.

./target/release/paraloom validator register \
  --keypair ~/.config/solana/paraloom-validator.json
$ start

Start the node

Copy the config template — it wires the bootstrap anchor and program ID — edit the marked paths, and set a dedicated devnet RPC (the public endpoint rate-limits and stalls the listener). Then start: the node dials the anchor, joins the Kademlia DHT, and listens on TCP/9300.

mkdir -p ~/.paraloom
cp scripts/devnet/validator.toml.example ~/.paraloom/validator.toml
# edit: identity_path, data_dir, authority_keypair_path, solana_rpc_url

./target/release/paraloom validator start \
  --config ~/.paraloom/validator.toml
Reputation & slashing

Skin in the game, recorded in protocol.

Validators earn reputation over time by being available, correct, and non-equivocating. Withdrawal consensus is gated by reputation: higher-reputation nodes carry more weight. Adversarial behaviour is recorded as on-protocol slashing evidence.

Equivocationconflicting signed votestwo votes at same height → slash
Persistent unavailabilityN missed heartbeatswindow-configurable
Reputation weightearned over uptimeno shortcut, no buy-in
Trusted setup

The MPC ceremony runs in the open.

Paraloom’s Groth16 proving keys come from a multi-party computation. Anyone can contribute; each contribution adds randomness and is recorded with a verifiable transcript. Mainnet does not activate until the ceremony completes and the transcript is independently verified.

# contribute to the ceremony
$ paraloom-ceremony-contribute \
    --circuit deposit \
    --in transcript-prev.bin \
    --out my-contribution.bin \
    --entropy "$(head -c 64 /dev/urandom | base64)"
  ✓ contribution recorded
  ✓ transcript appended  (your hash: 7f3a…ae9b)

# verify the full chain
$ paraloom-ceremony-verify --transcript transcript.bin
  ✓ all contributions valid
  ✓ DLEQ checks pass

Devnet is open. Mainnet is gated by the ceremony.

Devnet validators are running today; you can join, sync, and verify the test cohort without permission. Mainnet activation waits on the MPC ceremony completion and external security audit.