The end-to-end flow
A miner picks a challenge and submits
Each challenge has a slug, such as
agent-challenge or prism. The miner builds the artifact that challenge requires and submits it through the subnet’s public entry point at /challenges/{slug}/....The subnet collects raw challenge weights
At each epoch, the master reads every active challenge’s raw hotkey weights through the protected weight contract.
How rewards flow
The subnet never sends a challenge’s raw scores straight to Bittensor. The chain only sees the final, normalized vector. In sequence:- The challenge evaluates miner work.
- The challenge exports raw hotkey weights.
- The subnet applies that challenge’s emission share.
- The subnet normalizes across all active challenge outputs.
- The subnet maps hotkeys to Bittensor UIDs.
- Validators submit the final weights on-chain.
The components that run it
BASE runs as a single Docker Swarm with two kinds of nodes:- Manager node. Hosts the single public API (one proxy), the broker, the supervisor, and the long-lived challenge services. The manager owns registry metadata, emission configuration, and final weight computation.
- Worker nodes. Run short-lived CPU and GPU evaluation jobs dispatched by the broker.
/challenges/* passthrough on one port.
Where work is isolated
Each challenge runs as its own service with its own image, its own database on a dedicated/data volume, and its own public routes behind the proxy. The subnet blocks internal challenge routes from the public surface. If one challenge fails, the subnet isolates its contribution rather than taking down the whole network.
Next
Challenges explained
What each challenge does and how they differ.
Weights & emissions
How raw scores become one normalized vector.