Loading
Loading

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.
Sandbox execution: 1 GB RAM, 15 CPU-minutes per daily basket (~250 episodes), read-only filesystem, --network=none. Reference baseline runs on CPU; GPU optional for larger models.
Validator runs three processes: HTTP API (long-lived), daily settle loop (once per day), heartbeat (every 3-4 hours). Requires persistent disk for ledger feeds.
Clone repository and install miner dependencies
git clone https://github.com/ippcteam/SN21-adtao.git && cd SN21-adtao && pip install -e ".[miner]"
Create Bittensor wallet (coldkey and hotkey)
btcli wallet new_coldkey --wallet.name my_miner && btcli wallet new_hotkey --wallet.name my_miner --wallet.hotkey default
Register hotkey on subnet (testnet 466; use netuid 21 for mainnet finney)
btcli subnet register --netuid 466 --wallet.name my_miner --wallet.hotkey default --subtensor.network test
Generate ed25519 signing key for miner identity
python scripts/sn21_keys.py generate --role miner --output ~/sn21-miner.pem
Register ed25519 key binding on chain
python scripts/sn21_keys.py register --role miner --network test --netuid 466 --wallet-name my_miner --wallet-hotkey default --key ~/sn21-miner.pem
Download rich training data v2 (29,129 episodes, all change types, 7/14/28-day outcomes)
curl -L -o SN21_rich_training_v2.jsonl https://github.com/ippcteam/SN21-adtao/releases/download/training-v2-2026-08/SN21_rich_training_v2.jsonl
Train reference XGBoost model on sample data (10 episodes for pipeline check)(optional)
python scripts/train_example_model.py --data-file data/training/training_episodes.json
Build and push container image to registry, record digest
cd reference_model && docker build -t sn21-miner:v1 . && docker push ghcr.io/<you>/sn21-miner:v1
Smoke-test container locally with same flags as subnet sandbox
docker run --rm -i --network=none --memory=1g --read-only sn21-miner:v1 < basket.jsonl > predictions.jsonl
Commit digest on chain: sn21-model:v1:<repo>@sha256:<64hex>
python -c "import bittensor as bt; wallet = bt.wallet(name='my_miner', hotkey='default'); sub = bt.subtensor(network='test'); sub.commit(wallet=wallet, netuid=466, data='sn21-model:v1:ghcr.io/<you>/sn21-miner@sha256:<digest>')"
Clone repository and install full package
git clone https://github.com/ippcteam/SN21-adtao.git && cd SN21-adtao && pip install -e .
Create Bittensor wallet for validator
btcli wallet new_coldkey --wallet.name my_validator && btcli wallet new_hotkey --wallet.name my_validator --wallet.hotkey default
Register validator hotkey on subnet
btcli subnet register --netuid 466 --wallet.name my_validator --wallet.hotkey default --subtensor.network test
Generate ed25519 key for validator
python scripts/sn21_keys.py generate --role validator --output ~/.sn21/keys/validator.pem
Register ed25519 binding on chain
python scripts/sn21_keys.py register --role validator --network test --netuid 466 --wallet-name my_validator --wallet-hotkey default --key ~/.sn21/keys/validator.pem
Process A: Start HTTP API daemon (long-lived) for episodes and daily receipts
export SN21_LEDGER_ROOT=/var/lib/sn21_ledger SN21_ED25519_KEY_FILE=~/.sn21/keys/validator.pem && hope-validator-api --host 0.0.0.0 --port 8080 --network test --netuid 466 --wallet-name my_validator --wallet-hotkey default
Process B: Run daily settle loop (once per day after basket delivery) - OPERATOR ONLY
python3 scripts/run_daily_loop.py --shadow-root /var/lib/sn21_ledger --ledger-root /var/lib/sn21_ledger
Process C: Run activity-floor heartbeat (every 3-4 hours via cron) to prevent ActivityCutoff pruning
hope-validator-heartbeat --network test --netuid 466 --wallet-name my_validator --wallet-hotkey default