Loading
Loading
Neuron registration trends
Sparket is a Bittensor subnet that rewards miners for contributing valuable odds and outcome data to decentralized sports betting markets. Miners generate probability predictions for sports events and submit settled outcomes; validators score submissions against closing lines and realized results using a multi-dimensional Cobb-Douglas formula, emitting weights based on forecast accuracy, economic edge, timeliness, uniqueness, and marginal contribution.
Sparket uses a primary + auditor validator model. The primary validator (run by Sparket team) ingests paid SportsDataIO data, builds ground truth closing lines, scores all miner submissions against those lines and settled outcomes, computes rolling skill scores and weights, and exports scoring ledger checkpoints + deltas via authenticated HTTP endpoint. Auditor validators (anyone with vpermit + 100K alpha stake) fetch exported scoring data, independently verify outcome-based scores (Brier) and accumulator consistency, recompute weights deterministically using shared compute_weights() function, and set weights on chain.
Miners expose a Bittensor axon, receive connection info push from validators, request game/market data, generate probability predictions from their own data sources, submit odds in batches to validators, and submit outcomes after events settle. Validator-miner communication is gated by rate limiting (3 tiers: per-request, cooldown with exponential backoff, permanent blacklist), with proper backoff handling required on the miner side.
Scoring pipeline: (1) Ground truth closing lines built from provider consensus; (2) Per-submission economic scores (CLV, CLE, MES) vs close; (3) Per-submission outcome scores (Brier, PSS) vs realized result; (4) Time-adjusted aggregates with decay & shrinkage; (5) Calibration & sharpness computed; (6) Originality (SOS) & lead-lag measured; (7) Metrics normalized across miners; (8) Combined into intermediate dimensions (ForecastDim, SkillDim, EconDim); (9) Mapped to 5 Cobb-Douglas pillars with clamping; (10) SkillScore = Accuracy^0.5 × Edge^1.0 × Timeliness^0.5 × Uniqueness^1.5 × Marginal^1.0; (11) Hard accuracy floor: Brier > 0.30 → zero score; (12) L1 normalize, apply burn rate, encode to uint16 for chain weights. Multiplicative structure ensures weakness in any pillar significantly reduces total score — balanced miners outperform specialists.
The sections above were auto-generated from the GitHub repository and may not reflect the latest changes.
This information was auto-extracted from the GitHub repository and may be incomplete or out of date. Always refer to the subnet's GitHub repository for the latest instructions.
Holder & total-staked metrics as of 5h ago (hourly snapshot)
Miners require a registered hotkey and funded coldkey on the Bittensor network. Axon port must be reachable from the internet.
Primary validators require SportsDataIO subscription (~$600/month). Auditor validators need only 2-4 cores and 8GB RAM with no database or provider subscription.
Install uv Python toolchain and Python 3.10
curl -LsSf https://astral.sh/uv/install.sh | sh && uv python install 3.10
Clone the repository
git clone https://github.com/sparketlabs/sparket-subnet.git && cd sparket-subnet
Install all project dependencies using uv
uv sync --dev
Create a Bittensor wallet (skip if already have one)(optional)
btcli wallet create --wallet.name miner-wallet --wallet.hotkey default
Register hotkey on the subnet
btcli subnet register --wallet.name miner-wallet --wallet.hotkey default --netuid 2 --subtensor.chain_endpoint ws://your-subtensor:9945
Copy and edit environment file with SPARKET_ROLE=miner, SPARKET_AXON__HOST, SPARKET_AXON__PORT, and external IP if behind NAT
cp sparket/config/env.example .env && nano .env
Copy and configure miner YAML with market lists and cadence settings(optional)
cp sparket/config/miner.yaml sparket/config/miner.local.yaml && export SPARKET_MINER_CONFIG_FILE=$(pwd)/sparket/config/miner.local.yaml
Open the axon port on the firewall (UFW on Ubuntu)
sudo ufw allow 8094/tcp
Start the miner
source .venv/bin/activate && python sparket/entrypoints/miner.py
Pass the required mining interview to unlock base miner submission (base miner reference implementation only)(optional)
python -m sparket.tools.mining_interview
Install system dependencies (build tools, Node.js, pm2)
sudo apt update && sudo apt install -y build-essential git curl nodejs && sudo npm install -g pm2
Install Docker for managed PostgreSQL(optional)
curl -fsSL https://get.docker.com | sudo sh && sudo usermod -aG docker $USER
Install uv Python toolchain and Python 3.10
curl -LsSf https://astral.sh/uv/install.sh | sh && source ~/.bashrc && uv python install 3.10
Clone repository and sync dependencies
git clone https://github.com/sparketlabs/sparket-subnet.git && cd sparket-subnet && uv sync --dev
Configure .env with SPARKET_ROLE=validator, database settings, SDIO_API_KEY, and axon host/port
cp sparket/config/env.example .env && nano .env
Configure sparket.yaml with wallet, subtensor, database, and validator settings
cp sparket/config/sparket.example.yaml sparket/config/sparket.yaml && nano sparket/config/sparket.yaml
Run database migrations to create schema
DATABASE_URL='postgresql+asyncpg://user:pass@host:port/dbname' uv run alembic -c sparket/validator/database/alembic.ini upgrade head
Optional: run validator once in foreground to verify setup before PM2(optional)
uv run python sparket/entrypoints/validator.py
Start validator with PM2 and enable auto-restart on reboot
pm2 start ecosystem.config.js --only validator-local && pm2 save && pm2 startup
Open validator axon port (8093) and optional ledger port (8200 for auditor validators)
sudo ufw allow 8093/tcp && sudo ufw allow 8200/tcp