Skip to content

Latest commit

 

History

History
80 lines (55 loc) · 3.51 KB

File metadata and controls

80 lines (55 loc) · 3.51 KB

Miner guide

This page is a short product entry point for miners and operators wiring scrape workers into the relay BASE challenge.

relay scores verifiable scrape results. Credit reaches get_weights only when authenticity (L1 multi-TEE RATS + L2 certificate and report-data binding) opens. Secondary factors (completeness, geo, anti-bot / integrity) adjust scores and standing; they do not replace the authenticity gate.

Prerequisites

  • A Bittensor / BASE hotkey capable of miner-signed auth
  • An enclave worker stack that can satisfy the scrape capability (for example basecrawl) with an allowlisted measurement
  • Access to the challenge’s public and (via the coordination plane) internal work surfaces as operated by your validators

Bare SDK scrapes outside a TEE prove nothing under the default posture. See ../WITNESS_PROXY.md for the optional degraded non-TEE tier (disabled by default).

Register

Public registration uses miner-signed headers (not the internal shared bearer):

POST /miners/register
X-Hotkey: <ss58>
X-Signature: <sr25519 over canonical request>
X-Nonce: <single-use>
X-Timestamp: <unix or ISO-8601 within skew>

Work units

Pending scrape assignments are exposable as work units on the coordination plane:

GET /internal/v1/work_units
Authorization: Bearer <operator token>
X-Base-Challenge-Slug: relay

Each unit typically includes:

  • work_unit_id / task identifiers
  • sealed task ciphertext (target lives inside the seal; host plane does not publish confidential plaintext targets)
  • formats, required zone, nonce, deadline, difficulty
  • canary flag and capability (workers are routed for scrape capability such as basecrawl.scrape)
  • optional allowed_proxy_class for class-aware L5 attribution

Miners and validators pull assignable units, dispatch them to enclave workers, and later fold or submit terminal results via the bridge (work_units/result, work_units/fold on the internal API as operated by the challenge).

Complete a scrape and prove it

  1. Unseal / obtain the task only inside the attested worker environment (measurement-gated key paths when used).
  2. Fetch the assigned open-web target under policy (targets were pre-screened by the challenge policy gate).
  3. Produce a ScrapeProof with L1 attestation material and L2 cert + binding fields required by the challenge.
  4. Submit the sealed / attested result through the bridge path the operator publishes.
  5. Expect /internal/v1/verify outcomes: L0 sanity → L1 → L2 for the authenticity gate, then L3–L5 factor evaluation.

If authenticity is closed, that unit contributes zero economic credit regardless of completeness claims.

What validators score

Factor Role for miners
Authenticity (L1+L2) Hard gate; must open for reward eligibility
Completeness / quorum / canary (L4) Fullness and consistency of the assigned work
Geo (L3) Zone / latency composition confidence
Anti-bot / integrity (L5) Integrity standing; forgery-class failures can slash
Penalties / audit Replay-audit sampling and dispute paths

Full layering: ../architecture.md. Honesty and residual risks: ../THREAT_MODEL.md.

Local operator run (for integrators)

When you operate a local challenge instance for integration tests:

uv sync --extra dev
uv run uvicorn relay.app:app --host 0.0.0.0 --port 21080

Optional canary fixtures: port 21090. Optional mock-master: port 21110.

Public checks: GET /health, GET /version.