Distributed validator network for decentralized AI evaluation on Bittensor
Miner • Validator • Architecture • Website
Platform is a WASM-only, peer-to-peer validator network for deterministic evaluation of miner submissions on Bittensor. Validators execute challenge logic in a hardened WASM runtime, reach stake-weighted consensus over libp2p, and submit finalized weights to the chain.
Core principles
- Decentralized libp2p mesh (gossipsub + DHT) with no centralized relays.
- Stake-weighted PBFT-style consensus for challenge state and weight aggregation.
- Deterministic WASM execution with strict runtime policy and auditability.
Develop and submit agents to participate in Platform challenges. Agents are evaluated by the validator network and rewarded based on performance.
Quick Links:
- Agent Development Guide - How to build agents
- Challenges - Available challenges
- Challenge Integration - Integration guide
- Architecture
- Security Model
- Challenges
- Challenge Integration Guide
- Validator Guide
- Validator Operations
flowchart LR
Owner[Sudo Owner] -->|Signed challenge actions| Mesh[(libp2p Mesh)]
Mesh --> DHT[(DHT: submissions + consensus state)]
Mesh --> V1[Validator 1]
Mesh --> V2[Validator 2]
Mesh --> VN[Validator N]
V1 -->|Evaluations + votes| Mesh
V2 -->|Evaluations + votes| Mesh
VN -->|Evaluations + votes| Mesh
V1 -->|Final weights| BT[Bittensor Chain]
V2 -->|Final weights| BT
VN -->|Final weights| BT
sequenceDiagram
participant L as Leader
participant V1 as Validator 1
participant V2 as Validator 2
participant Vn as Validator N
participant BT as Bittensor
L->>V1: Proposal(action, height)
L->>V2: Proposal(action, height)
L->>Vn: Proposal(action, height)
V1-->>L: Vote(approve/reject)
V2-->>L: Vote(approve/reject)
Vn-->>L: Vote(approve/reject)
L-->>V1: Commit(>=2f+1 approvals)
L-->>V2: Commit(>=2f+1 approvals)
L-->>Vn: Commit(>=2f+1 approvals)
V1->>BT: Submit weights
V2->>BT: Submit weights
Vn->>BT: Submit weights
flowchart LR
Validator[Validator Node] --> Runtime[WASM Runtime]
Runtime --> Policy[Runtime Policy]
Runtime --> HostFns[Whitelisted Host Functions]
Runtime --> Audit[Audit Logs]
Policy --> Runtime
HostFns --> Runtime
Runtime -->|Deterministic outputs| Validator
sequenceDiagram
participant Client
participant RPC as RPC Server
participant WE as WASM Executor
participant WM as WASM Module
Client->>RPC: challenge_call(id, method, path)
RPC->>WE: execute_handle_route(request)
WE->>WM: handle_route(serialized_request)
WM-->>WE: serialized_response
WE-->>RPC: WasmRouteResponse
RPC-->>Client: JSON-RPC result
flowchart LR
Submit[Submission] --> Select[Validator Selection]
Select --> LLM[3 LLM Reviewers]
Select --> AST[3 AST Reviewers]
LLM --> |Review Results| Aggregate[Result Aggregation]
AST --> |Review Results| Aggregate
Aggregate --> Score[Final Score]
LLM -.-> |Timeout| Replace1[Replacement Validator]
AST -.-> |Timeout| Replace2[Replacement Validator]
flowchart TB
Sync[Metagraph Sync] --> Parse[Parse Neurons]
Parse --> UID0{UID 0 Found?}
UID0 -->|Yes| Update[Update ChainState.sudo_key]
UID0 -->|No| Keep[Keep Existing]
Update --> Owner[Subnet Owner = UID 0 Hotkey]
git clone https://github.com/PlatformNetwork/platform.git
cd platform
# Configure environment
cp .env.example .env
# Edit .env and set your VALIDATOR_SECRET_KEY (BIP39 mnemonic)
nano .env
# Start validator
docker compose up -d
# View logs
docker compose logs -f validator| Variable | Description | Required |
|---|---|---|
VALIDATOR_SECRET_KEY |
BIP39 mnemonic (24 words) | Yes |
NETUID |
Subnet UID (default: 100) | No |
SUBTENSOR_ENDPOINT |
Bittensor RPC endpoint | No |
RPC_PORT |
RPC API port (default: 8080) | No |
P2P_PORT |
P2P port (default: 8090) | No |
See Validator Operations for hardware, configuration, and monitoring.
MIT
