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.
- 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).
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>
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_classfor 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).
- Unseal / obtain the task only inside the attested worker environment (measurement-gated key paths when used).
- Fetch the assigned open-web target under policy (targets were pre-screened by the challenge policy gate).
- Produce a ScrapeProof with L1 attestation material and L2 cert + binding fields required by the challenge.
- Submit the sealed / attested result through the bridge path the operator publishes.
- Expect
/internal/v1/verifyoutcomes: 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.
| 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.
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 21080Optional canary fixtures: port 21090. Optional mock-master: port 21110.
Public checks: GET /health, GET /version.