Subnet 2: DSperse

DSperse is Bittensor's Proof-of-Inference subnet, operated by Inference Labs, where miners generate zero-knowledge proofs of AI model outputs that validators cryptographically verify.

Subnet 2: DSperse

DSperse is Bittensor’s second subnet (netuid 2), operated by Inference Labs. Its goal is to build a Proof-of-Inference system — a peer-to-peer network for verifiable AI inference, where miners produce cryptographic zero-knowledge proofs alongside their model outputs so that validators and users can confirm the prediction came from a specific AI model without re-running the computation.

References: inference-labs-inc/subnet-2 (GitHub), taostats.io/subnets/2

How the Mechanism Works

DSperse uses zero-knowledge machine learning (zk-ML) to make AI inference verifiable. A model is compiled into a zk circuit — a mathematical representation that acts as a unique fingerprint. When a miner runs inference, it produces both the output and a zero-knowledge proof that the output was generated by that specific circuit.

The reward mechanism scores miners on:

  • Cryptographic integrity — the returned zk proof must be valid; an invalid proof is rejected.
  • Proof size — smaller proofs indicate more efficient circuit design.
  • Response time — faster proof generation earns a higher score.

This approach shifts the validation burden from re-running expensive inference to lightweight proof verification, making it feasible for validators to confirm every miner response. Scores feed into Yuma Consensus to determine per-epoch emissions.

The miner and validator are native Rust binaries communicating over HTTP and QUIC via btlightning. Binaries include a built-in auto-update mechanism that polls for new releases every five minutes and performs atomic binary replacement, so the process restarts with the latest version automatically.

References: inference-labs-inc/subnet-2 (GitHub), SN2 documentation

Participating as a Miner

Miners receive input data from validators, run inference using a custom AI model that has been compiled into a zk circuit, and return the output alongside the generated zero-knowledge proof.

The general setup flow:

  1. Register a hotkey on SN2:
    btcli subnet register --subtensor.network finney --netuid 2 \
      --wallet.name <coldkey> --wallet.hotkey <hotkey>
  2. Install the sn2-miner binary. The quickest path is the official install script, which detects your platform, downloads the latest release, and verifies the SHA256 checksum:
    curl -fsSL https://raw.githubusercontent.com/inference-labs-inc/subnet-2/main/install.sh | bash -s -- sn2-miner
    Alternatively, build from source (requires Rust) or run via Docker.
  3. Start the miner with PM2:
    pm2 start ./sn2-miner --name subnet-2-miner --kill-timeout 3000 -- \
      --wallet-name <coldkey> --wallet-hotkey <hotkey> --netuid 2

Docker Compose with Watchtower is also supported for automated image updates.

References: Quickstart (inference-labs-inc/subnet-2), GitHub Releases

Participating as a Validator

Validators distribute inference requests across registered miners, receive output-plus-proof pairs, and cryptographically verify each returned zero-knowledge proof. Because proof verification is computationally cheap relative to re-running inference, validators can check every miner response rather than sampling.

Validators score miners on proof validity, proof size, and response latency, then submit those scores as weights to the chain. Yuma Consensus aggregates validator weights into emissions.

Install and run the sn2-validator binary:

curl -fsSL https://raw.githubusercontent.com/inference-labs-inc/subnet-2/main/install.sh | bash -s -- sn2-validator
pm2 start ./sn2-validator --name subnet-2-validator -- \
  --wallet-name <coldkey> --wallet-hotkey <hotkey> --netuid 2

References: inference-labs-inc/subnet-2 (GitHub), SN2 dashboard (Weights & Biases)

On-Chain Identity

Subnet 2’s registered on-chain identity, verifiable via taostats.io/subnets/2:

Further Reading

Topics Subnets