User Guides
Purpose and Scope
Section titled “Purpose and Scope”This page provides practical guidance for users interacting with the SN106 Bittensor subnet system. It covers two primary user types: miners who provide concentrated liquidity and earn emissions, and validators who operate the reward calculation and weight submission infrastructure.
For technical implementation details, see System Architecture. For detailed configuration reference, see Configuration. For development and contribution information, see Development Setup.
Miner Workflow Guide
Section titled “Miner Workflow Guide”Miners participate in SN106 by providing concentrated liquidity to wAlpha/wTAO trading pairs on Solana and staking their position NFTs to earn emissions based on position quality and subnet performance.
Miner User Journey
Section titled “Miner User Journey”graph TD
subgraph "Token Bridging Phase"
START["Miner with Bittensor Tokens"]
BRIDGE["VoidAI Bridge<br/>bridge.voidai.com"]
WRAPPED["wAlpha + wTAO<br/>Solana Tokens"]
end
subgraph "Liquidity Provision Phase"
RAYDIUM["Raydium CLMM<br/>raydium.io"]
POOL_SELECT["Select wAlpha/wTAO Pool<br/>Choose Price Range"]
POSITION_NFT["Receive Position NFT<br/>Concentrated Liquidity"]
end
subgraph "Staking Phase"
SN106_CONTRACT["SN106 Smart Contract<br/>Solana Program"]
STAKE_NFT["Stake Position NFT<br/>Enter Reward System"]
ACTIVE_POSITION["Active Earning Position"]
end
subgraph "Reward Generation"
POSITION_SCORING["Position Quality Scoring<br/>Width + Distance + Liquidity"]
SUBNET_PERFORMANCE["Subnet Alpha Performance<br/>Price-based Weights"]
EMISSIONS["SN106 Emissions<br/>Based on Combined Score"]
end
START --> BRIDGE
BRIDGE --> WRAPPED
WRAPPED --> RAYDIUM
RAYDIUM --> POOL_SELECT
POOL_SELECT --> POSITION_NFT
POSITION_NFT --> SN106_CONTRACT
SN106_CONTRACT --> STAKE_NFT
STAKE_NFT --> ACTIVE_POSITION
ACTIVE_POSITION --> POSITION_SCORING
ACTIVE_POSITION --> SUBNET_PERFORMANCE
POSITION_SCORING --> EMISSIONS
SUBNET_PERFORMANCE --> EMISSIONS
Sources: README.md:22-50
Step-by-Step Miner Instructions
Section titled “Step-by-Step Miner Instructions”| Step | Action | Technical Details | Result |
|---|---|---|---|
| 1 | Bridge Tokens | Visit bridge.voidai.com, bridge alpha tokens and TAO from Bittensor to Solana | Receive wAlpha and wTAO tokens on Solana |
| 2 | Access Raydium | Navigate to raydium.io, select Concentrated Liquidity (CLMM) | Access to Solana DEX interface |
| 3 | Select Pool | Choose wAlpha/wTAO pairs for specific subnet tokens | Target specific alpha token pools |
| 4 | Set Range | Choose liquidity range (narrower ranges = higher potential rewards) | Define price concentration strategy |
| 5 | Provide Liquidity | Deposit tokens and receive position NFT | Obtain stakeable NFT position |
| 6 | Stake NFT | Stake position NFT to SN106 smart contract on Solana | Enter SN106 reward system |
Reward Calculation Factors
Section titled “Reward Calculation Factors”Miner emissions depend on multiple factors that are evaluated by the validator system:
- Position Concentration: Narrower price ranges receive higher scores
- Market Proximity: Positions closer to current tick price score higher
- Liquidity Amount: Larger liquidity contributions increase base score
- Subnet Performance: Alpha token price performance affects pool allocation
- In-Range Status: Active positions receive prioritized scoring
Sources: README.md:41-46
Validator Operation Guide
Section titled “Validator Operation Guide”Validators run the core infrastructure that monitors liquidity positions, calculates miner rewards, and submits weights to the Subtensor chain every 20 minutes.
Validator System Architecture
Section titled “Validator System Architecture”graph TD
subgraph "Validator Process npm_run_validator"
MAIN["validator/index.ts<br/>Main Orchestration"]
TIMER["20-Minute Execution Cycle<br/>Automated Scheduling"]
CONFIG_LOAD["config/environment.ts<br/>Load Configuration"]
end
subgraph "Data Collection Layer"
CHAIN_FILTER["getEnabledChains()<br/>Multi-chain Selection"]
SOLANA_FETCH["Solana Data Fetcher<br/>Raydium CLMM Positions"]
HOTKEY_MAP["Hotkey to UID Mapping<br/>Bittensor Identity"]
TICK_DATA["Current Tick Data<br/>Market State"]
end
subgraph "Scoring Engine"
NFT_SCORE["NFT Position Scoring<br/>Width + Distance + Liquidity"]
POOL_WEIGHTS["Pool Weight Calculator<br/>Subnet Performance"]
MINER_AGGREGATION["Miner Weight Aggregation<br/>Per-miner Totals"]
end
subgraph "Weight Submission"
EMA_SMOOTHING["EMA Weight Management<br/>Historical Smoothing"]
BURN_CALC["Burn Calculation<br/>95% to UID 0"]
SUBTENSOR_SUB["setWeightsOnSubtensor<br/>Chain Submission"]
WEIGHT_HISTORY["weights/weights_history.json<br/>Audit Trail"]
end
MAIN --> TIMER
MAIN --> CONFIG_LOAD
TIMER --> CHAIN_FILTER
CHAIN_FILTER --> SOLANA_FETCH
MAIN --> HOTKEY_MAP
MAIN --> TICK_DATA
SOLANA_FETCH --> NFT_SCORE
TICK_DATA --> NFT_SCORE
NFT_SCORE --> POOL_WEIGHTS
POOL_WEIGHTS --> MINER_AGGREGATION
MINER_AGGREGATION --> EMA_SMOOTHING
EMA_SMOOTHING --> BURN_CALC
BURN_CALC --> SUBTENSOR_SUB
SUBTENSOR_SUB --> WEIGHT_HISTORY
Sources: README.md:140-147
System Requirements
Section titled “System Requirements”| Component | Minimum | Recommended |
|---|---|---|
| CPU | 4 cores | 8 cores |
| RAM | 8GB | 16GB |
| Storage | 50GB+ SSD | 100GB+ SSD |
| Network | 50+ Mbps | 100+ Mbps |
| OS | Linux/macOS/Windows | Ubuntu 22.04 LTS |
Required Dependencies
Section titled “Required Dependencies”| Software | Version | Purpose |
|---|---|---|
Node.js | v18.0.0+ | Runtime environment |
npm | v8.0.0+ | Package management |
Git | Latest | Repository access |
Blockchain Access Requirements
Section titled “Blockchain Access Requirements”| Network | Status | RPC Access Required |
|---|---|---|
| Solana | Active | Mainnet/Devnet RPC endpoint |
| Ethereum | Coming Soon | Mainnet RPC endpoint |
| Base | Coming Soon | Base network RPC endpoint |
| Subtensor | Required | Bittensor network WebSocket |
Sources: README.md:53-81
Environment Configuration
Section titled “Environment Configuration”Critical environment variables that must be configured in .env:
# Subtensor ConfigurationSUBTENSOR_WS_URL=wss://your-subtensor-endpointVALIDATOR_HOTKEY_URI=your-hotkey-uri-or-mnemonicNETUID=106
# Solana ConfigurationSOLANA_RPC_ENDPOINT=https://your-solana-rpcSN106_SVM_PROGRAM_ID=your-program-idRAYDIUM_CLMM_PROGRAM_ID=your-clmm-program-id
# Burn MechanismBURN_PERCENTAGE=95Hotkey Format Support
Section titled “Hotkey Format Support”The VALIDATOR_HOTKEY_URI accepts multiple formats:
- Mnemonic:
word1 word2 word3 ... word12 - Private Key:
0x1234...(hex format) - URI:
//Aliceor other Polkadot-style URIs
Sources: README.md:104-132
Installation and Deployment
Section titled “Installation and Deployment”# Clone repositorygit clone <repository-url>cd sn106
# Install dependenciesnpm install
# Configure environmentcp .env.example .envnano .env
# Start validatornpm run validatorValidator Operation Cycle
Section titled “Validator Operation Cycle”The validator executes the following operations every 20 minutes:
- Data Collection: Fetch NFT positions from
getEnabledChains() - Performance Analysis: Calculate current tick data and position metrics
- Weight Calculation: Determine miner weights via scoring algorithms
- Burn Application: Apply 95% burn to UID 0, distribute 5% to miners
- Subtensor Submission: Submit weights via
setWeightsOnSubtensor - History Logging: Save submission to
weights/weights_history.json
Monitoring and Maintenance
Section titled “Monitoring and Maintenance”| Monitoring Area | Location | Purpose |
|---|---|---|
| Operation Logs | Console output | Real-time operation status |
| Weight History | weights/weights_history.json | Submission audit trail |
| Health Checks | Automatic | Connection monitoring and reconnection |
| Performance Metrics | Log output | Batch processing and operation timing |
The validator includes automatic error recovery, exponential backoff for failed operations, and comprehensive logging for debugging and monitoring purposes.
Sources: README.md:148-168