Skip to main content

The Two Roles

Phylax is a Bittensor subnet on testnet netuid 486. Two participant roles drive the network.

Miner

Receives skill bundles from validators, runs the analysis pipeline, returns a Signed Skill Safety Attestation.

Validator

Dispatches tasks, verifies miner submissions, computes consensus, pushes weights on-chain.

Where Each Role Runs

RoleProcessTalks to
Minerneurons/miner.py axonValidators via dendrite
Validatorneurons/validator.py forward loopMiners via dendrite, subtensor via WebSocket
SubtensorSubstrate nodePublic Bittensor infrastructure

Trust Boundaries

The trust boundaries between miners, validators, and the chain are enforced by signatures and chain state, not by policy.
Miners sign every SSSA with their hotkey. Validators verify the signature against the miner’s on-chain UID. A miner cannot impersonate another miner. A miner cannot deny producing an SSSA they signed.
Validators sign the set_weights extrinsic with their hotkey. Only a hotkey with sufficient stake can dispatch the call. The chain enforces this.
Every dispatch carries a fresh 32 byte nonce. The validator derives three probe events from the nonce that the miner must echo in their sandbox. A miner cannot prepare these in advance. A miner who did not actually run the sandbox cannot produce them.

The Round Loop

Every round the validator runs this loop:
loop forever:
    tasks = fetch_round_tasks(count=12)
    bundles = prepare_bundles_concurrent(tasks)
    for task in tasks:
        group = select_verification_group(task.skill_type)
        responses = dispatch_concurrent(group, bundles[task])
        verified = [verify(r) for r in responses]
        scores = score_per_axis(verified)
        consensus = full_sssa_consensus(verified)
        emissions = scores * consensus * role * tier * early * bootstrap
    blend_into_running_scores(emissions)
    if blocks_since_last_set_weights > WEIGHT_UPDATE_INTERVAL:
        subtensor.set_weights(uids, weights)
    async: rerun_diverging_primaries(verified)
See Round Flow for the complete per round sequence.

What the Subnet Does

ResponsibilityHow
Sandbox detonationEach miner runs a sandbox image of their choice. Distribution across many miners makes large scale analysis economical.
Independent SSSA productionEach miner runs their own pipeline. Diversity makes the consensus signal meaningful.
Weight allocationBittensor’s incentive mechanism converts the per round scores into emission.
Adversarial pressureMiners are economically incentivised to find better pipelines. The competition drives quality up.

Network Properties

Phylax is launched on testnet. The mainnet UID will be announced separately. All economics described in Incentive Mechanism apply on testnet at unweighted TAO. Mainnet will recalibrate base weights and tier thresholds at launch.
The async sandbox rerun pulls miner Docker images. Validators are exposed to whatever the miner publishes. Miner images run in an unprivileged container with no network, no host bind mounts other than the bundle, and a strict resource ceiling.

What’s Next

Architecture

Process tree, traffic patterns, and failure modes.

Round Flow

The complete per round sequence.

Skill Types

The six skill types in detail.

Scoring

Per axis formulas and the full emission formula.