404-GEN Competition System

July 10, 2026 · View on GitHub

A decentralized 3D content generation competition running on Bittensor Subnet 17. Miners submit open-source solutions for AI-powered 3D model generation, and validators run transparent competitions to determine the best solution.

Competitions

Miners compete by providing the best 3D generation solution. Competition descriptions are in the Competitions/ folder.

Competition Mechanics

The competition follows a winner-stays-in format with a proof-of-work model:

  1. Miners generate: When a round opens, miners use published seed and prompts to generate 3D models and upload to their CDNs
  2. Validators collect: Submissions are downloaded and rendered for comparison
  3. VLM judges: A vision-language model compares outputs in pairwise duels
  4. Validators audit: Winners are verified by regenerating their outputs using the miner's Docker image on serverless GPUs

All competition state is stored in a public git repository, making every decision auditable and every transition traceable.

Stage Machine

The competition progresses through well-defined stages:

StageOwnerDescription
OPENsubmission-collectorSubmission window open, miners register on-chain
MINER_GENERATIONsubmission-collectorSeed published, miners generate and upload 3D files
DOWNLOADINGsubmission-collectorFetching 3D files from miner CDNs, rendering previews
DUELSjudge-serviceVLM-based pairwise comparisons, verification requests
FINALIZINGround-managerUpdating the leader and creating the next round schedule
FINISHEDCompetition complete, no further rounds
PAUSEDManual hold for inspection or intervention
FINALIZING ──► OPEN ──► MINER_GENERATION ──► DOWNLOADING ──► DUELS ──► FINALIZING
     │                                                                      │
     ▼                                                                      │
  FINISHED ◄────────────────────────────────────────────────────────────────┘

Services

ServiceDescription
submission-collectorMonitors the round schedule, collects miner submissions, downloads 3D files, renders previews. Owns OPEN, MINER_GENERATION, and DOWNLOADING stages.
generation-orchestratorVerifies miner outputs by regenerating them using miner Docker images on serverless GPUs. Also generates baseline outputs using the leader's image.
render-service-jsRenders miner Three.js submissions to multi-view PNG images via headless Chromium with WebGL.
miner-referenceReference miner implementation: specifications (API, output, runtime), a conformance validator, example fixtures, and a reference pod-side service.
image-distance-serviceComputes perceptual distance between images using DINOv3 embeddings. Used to verify regenerated outputs match submissions.
judge-serviceRuns VLM-based pairwise duels, requests verification for winners, selects the round winner. Owns the DUELS stage.
round-managerUpdates the global leader, creates new rounds with schedules, decides when the competition ends. Owns the FINALIZING stage.
vllmExternal vLLM instance hosting the vision-language model for pairwise comparisons.

State Files

All state is stored in the competition git repository.

Global State

FileWriterDescription
state.jsonAll stage ownersCurrent round number and stage
config.jsonCompetition configuration (dates, timing, thresholds)
leader.jsonround-managerLeader transition history with weights
prompts.txtGlobal prompt pool

Per-Round State (rounds/{round_number}/)

FileWriterDescription
schedule.jsonround-managerBlock window (earliest/latest reveal, generation deadline)
seed.jsonsubmission-collectorRandom seed for deterministic generation
prompts.txtsubmission-collectorSelected prompts for the round
submissions.jsonsubmission-collectorMiner submissions from chain
builds.jsongeneration-orchestratorDocker build status per miner
require_audit.jsonjudge-serviceMiners requiring output verification
generation_reports.jsongeneration-orchestratorGeneration reports (completed/rejected)
matches_matrix.csvjudge-serviceAll match results (margin values)
winner.jsonjudge-serviceFinal round winner

Per-Miner State (rounds/{round_number}/{hotkey}/)

FileWriterDescription
submitted.jsonsubmission-collectorDownloaded submission locations
generated.jsongeneration-orchestratorRegenerated output locations for verification
duels_*.jsonjudge-serviceDetailed match reports with per-prompt outcomes

Verification Pipeline

When a miner becomes a candidate winner, they are sent for verification:

  1. Build tracking: Monitor GitHub Actions for the miner's Docker image build
  2. Pod deployment: Deploy the image on a GPU pod via the batch generation API, using the hardware the miner declared in hardware.json (4×H200 by default)
  3. Regeneration: Send prompts in sequential batches (128 prompts, 4 batches of 32) with the same seed used in the round
  4. Validation & rendering: Each returned JavaScript module is statically analyzed, executed in a sandbox, and rendered via headless Chromium
  5. Comparison: Rendered outputs compared to submissions via VLM-based judging
  6. Verdict: Pass if regenerated outputs match submission quality

If verification fails, the timeline is discarded and alternative winners are evaluated.

Leader Transitions

The leader.json file tracks leadership history:

{
  "transitions": [
    {
      "hotkey": "5ABC123...",
      "effective_block": 12345,
      "weight": 1.0
    },
    {
      "hotkey": "5DEF456...",
      "effective_block": 12500,
      "weight": 1.0
    }
  ]
}

When a leader successfully defends, their weight decays (down to a floor). New winners start with weight 1.0.

Storage

  • Git repository: All state files and competition history
  • R2 (Cloudflare): Miner submissions and rendered PNG previews

GPU Providers

The generation-orchestrator supports multiple serverless GPU providers:

  • Targon: Default provider
  • Verda: Optional backup

Configure via GPU_PROVIDERS env var (e.g., "targon,verda" for Targon-first with Verda fallback).

Development

Each service uses Poetry for dependency management:

cd <service-directory>
poetry install
poetry poe lint

License

The provided code is MIT-licensed (see LICENSE).

The deployed system additionally depends on third-party AI models with their own licenses — most notably DINOv3 (Meta, gated, requires accepting Meta's license terms and supplying HF_TOKEN) and GLM-4.6V-Flash (Zhipu AI / Z.ai). See NOTICE.md for attributions, citations, and operator obligations.