Become a prover
A Prova prover stores client files and posts cryptographic proofs that the bytes are still there. In return, the prover earns a slice of the deal's payment for every successful proof.
This page is for operators. If you're a client, see Welcome.
Quick reality check
Before you set up a prover, sanity-check the economics:
- Capacity: typical solo prover starts at 1–10 TB. You can scale to PB if you want.
- Bandwidth: a real symmetric link. You're fetching client uploads and serving retrievals.
- Stake: you must lock USDC equal to a percentage of the bytes you commit. If you fail proofs, this gets slashed.
- Net margin: ~$0.40-0.80 per TiB-month after fees, before electricity. See Earnings for the calculator.
It's a real business. Treat it like one.
Install
# Linux / macOS
curl -fsSL https://get.prova.network/prover | shThis drops provad in /usr/local/bin and creates /etc/prova/prover.toml with a starter config.
(Alternatively, build from source: git clone github.com/prova-network/prova && cd prover && go build ./cmd/provad.)
Configure
Edit /etc/prova/prover.toml:
[identity]
keystore_path = "/etc/prova/keystore.json"
# Or for local testing only: private_key_hex = "0x..."
[chain]
rpc_url = "https://mainnet.base.org"
chain_id = 8453
[chain.contracts]
storage_marketplace = "0x..."
prover_registry = "0x..."
prover_staking = "0x..."
[storage]
data_dir = "/var/lib/prova/pieces"
max_bytes = 10_000_000_000_000 # 10 TB
[http]
enabled = true
listen_addr = "0.0.0.0:443"
public_url = "https://prover.example.com"
cert_path = "/etc/letsencrypt/live/prover.example.com/fullchain.pem"
key_path = "/etc/letsencrypt/live/prover.example.com/privkey.pem"
[dashboard]
enabled = true
listen_addr = "127.0.0.1:8080"Register on-chain
provad --config /etc/prova/prover.toml register \
--capacity 10TB \
--price-per-tib-month 4.00 \
--regions "EU"This submits a registerProver(...) transaction and stakes USDC equal to your committed capacity. The amount needed depends on the contract's STAKE_RATIO parameter.
Start
systemctl enable --now provadOr run directly:
provad --config /etc/prova/prover.toml startThe daemon:
- Watches Base for
DealProposedevents targeting your address - Fetches client bytes from each deal's
sourceURL - Verifies the cid matches
- Posts the first proof, then every 30 seconds
- Serves retrievals on
/piece/{cid}over HTTPS
Status
provad --config /etc/prova/prover.toml statusprover 0xYourAddress
state active
capacity 10.0 TB committed, 4.2 TB stored (42%)
deals 127 active, 8 settled, 0 slashed
proofs last posted 12s ago, 99.94% success (last 7d)
balance 1,237.40 USDC available, 4,000.00 USDC stakedOr use the local dashboard at http://localhost:8080.
Operations
- Logs:
journalctl -u provad -f - Scale up: edit
max_bytesin config, runprovad register --capacity <new>to expand commitment + stake - Scale down: can only reduce capacity by un-pinning Settled deals. Active deals are obligations.
- Move servers: export the keystore, copy the
/var/lib/prova/piecesdirectory, and startprovadon the new box. The on-chain identity stays the same.
Source
github.com/prova-network/prova/tree/main/prover
The prover is Go, Apache-2.0 OR MIT. Forked from FilOzone's curio with attribution preserved, adapted for Base + ETH/USDC instead of Filecoin/FIL.