> ## Documentation Index
> Fetch the complete documentation index at: https://docs.joinbase.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# How the subnet works

> From a challenge submission through scoring to on-chain weights on BASE.

This page traces one unit of work through BASE. Read [What is BASE?](/concepts/overview) first if you need the role split.

## End-to-end flow

<Steps>
  <Step title="A miner picks a challenge and submits">
    Each [challenge](/concepts/glossary#challenge) has a slug such as `agent-challenge` or `prism`. The miner builds the artifact **that challenge** requires and submits through `/challenges/{slug}/...` (or the challenge-documented bridge path).
  </Step>

  <Step title="The challenge evaluates the work">
    Evaluation is challenge-owned. Example: Agent Challenge requires miner Phala TDX self-deploy with attested scores. PRISM re-executes training and computes its own metric. The subnet does not define a shared scoring rubric.
  </Step>

  <Step title="The subnet collects raw challenge weights">
    At each [epoch](/concepts/glossary#epoch), the master reads every active challenge's raw hotkey weights through the protected weight contract.
  </Step>

  <Step title="The subnet normalizes and applies emissions">
    The aggregator normalizes each challenge's weights, applies configured emission shares, and maps hotkeys to Bittensor [UIDs](/concepts/glossary#uid).
  </Step>

  <Step title="A validator submits the final vector on-chain">
    The on-chain submitter fetches the master's final normalized vector and submits it for the configured netuid.
  </Step>
</Steps>

## Components

BASE typically runs as Docker Swarm with:

* **Manager node:** public proxy API, broker, supervisor, long-lived challenge services, registry and emission config, final weight computation
* **Worker nodes:** short-lived evaluation jobs when a challenge uses the broker model (not every challenge uses this for production scoring)

The single public API serves registry read, latest weights, health, and `/challenges/*` passthrough.

## Isolation

Each challenge runs as its own service with its own image, database volume, and public routes behind the proxy. Internal challenge routes stay off the public surface.

## Next

<CardGroup cols={2}>
  <Card title="Challenges" icon="trophy" href="/concepts/challenges">
    What challenges are and which packs exist.
  </Card>

  <Card title="Weights and emissions" icon="scale-balanced" href="/concepts/weights-and-emissions">
    How raw scores become one vector.
  </Card>
</CardGroup>
