ParaloomPARALOOM

Quick Start

Build paraloom-core, run the test suite, and join devnet.

Quick start

This walkthrough builds paraloom-core from source, runs the 407-test suite, and points you at the next concrete thing to try (devnet validator, MPC ceremony contribution, or a local privacy E2E).

Prerequisites

Requirement
OSLinux, macOS, or Windows (WSL2)
Rust1.78+ (rustup default stable)
Solana CLI1.18+ — only needed for the on-chain program build
RAM8 GB minimum (16 GB recommended for full test suite)
Disk20 GB free (RocksDB, build artifacts, test ledger)

1. Clone

git clone https://github.com/paraloom-labs/paraloom-core.git
cd paraloom-core

2. Build

The L2 Rust crate and the on-chain Anchor program build separately — they pin different Solana SDK versions on purpose.

# L2 / validator binaries
cargo build --release

# On-chain Anchor program (optional — only if you'll deploy your own)
cd programs/paraloom
anchor build
cd ../..

The release build produces these binaries in target/release/:

BinaryWhat it does
paraloomUnified CLI — validator, wallet, and compute subcommands
paraloom-ceremony-contributeMPC contribution tool
paraloom-ceremony-verifyMPC transcript verifier
paraloom-ceremony-finalizeExtract proving keys from finalized transcript

3. Run the test suite

cargo test --all --all-targets

Expected output (abbreviated):

   test result: ok. 407 passed; 0 failed; 0 ignored

If you only want a smoke test:

cargo test --lib privacy::circuits

4. Pick a path

Now you have a working build. What you do next depends on why you're here:

Local privacy E2E

This is the fastest way to see deposit → private transfer → withdraw end-to-end without touching devnet.

# Terminal 1: Solana localnet
solana-test-validator

# Terminal 2: spin up 5 paraloom validators
./scripts/localnet/start-all.sh

# Terminal 3: run the privacy E2E flow
./scripts/localnet/test-privacy-e2e.sh

When you're done:

./scripts/localnet/stop-all.sh

The E2E script exercises:

  • Anchor program deploy + bridge initialization
  • 5-validator registration with stake
  • A real deposit (SOL → shielded pool, with Groth16 proof)
  • An in-pool transfer (consume 1 commitment, mint 2 with new owners)
  • A withdrawal (proof + nullifier PDA init + replay-protected expiration_slot)
  • Verification that final balances match expectations

Test source: tests/validator_privacy_e2e.rs.

Devnet

Pre-mainnet validator participation happens on devnet, through the unified paraloom CLI. To join:

# Build the CLI
cargo build --release --bin paraloom

# Create and fund a wallet (faucet gives 2 SOL per 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 on-chain (devnet RPC + program ID are the defaults; stakes 1 SOL)
./target/release/paraloom validator register \
  --keypair ~/.config/solana/paraloom-validator.json

# Start the node (config in the validator guide)
./target/release/paraloom validator start --config ~/.paraloom/validator.toml

Verify with ./target/release/paraloom validator status --keypair ~/.config/solana/paraloom-validator.json, or list the whole set with paraloom validator list.

See Validator guide for the full setup, the validator.toml template, hardware sizing, and reputation/slashing implications.

Verifying release binaries

If you'd rather use a signed release than build from source:

curl -LO https://github.com/paraloom-labs/paraloom-core/releases/latest/download/paraloom-linux-amd64
curl -LO https://github.com/paraloom-labs/paraloom-core/releases/latest/download/SHA256SUMS{,.sig,.crt}

cosign verify-blob \
  --certificate SHA256SUMS.crt --signature SHA256SUMS.sig \
  --certificate-identity-regexp 'https://github.com/paraloom-labs/paraloom-core/.*' \
  --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
  SHA256SUMS

sha256sum -c SHA256SUMS --ignore-missing
chmod +x paraloom-linux-amd64

Full supply-chain story in Releases.

On this page