Principal Miner Guide
Step-by-step guide to becoming a principal miner on Cartha β register your hotkey, lock capital, set up automated rewards, and get listed for federated miners to find you.
Web Interface: Cartha
CLI: cartha-cli on PyPI Β· GitHub
Rewards Template: cartha-principal-miner-template
Overview
A principal miner operates a registered Bittensor hotkey on Cartha subnet (SN35). You lock USDC to provide liquidity for 0xMarkets and earn ALPHA emissions based on your deposit score.
You can run in two modes:
Private (Solo)
Lock only your own capital, receive 100% of emissions
Public (Investment Manager)
Accept capital from federated miners, charge a commission, distribute rewards
Most principal miners start private and go public once they're comfortable with operations.
Important Requirements
Minimum 100,000 USDC portfolio β Your total locked USDC across all positions (your own + all federated miners) must reach at least $100K before your miner starts receiving ALPHA emissions. Below this threshold, your hotkey is registered but earns nothing.
Always-on distribution node β If you run in public mode, the automated rewards node (Step 4) must stay running 24/7. It monitors epochs, sweeps ALPHA, and processes claims for your federated miners. If the node goes down, reward distribution stops until it's back online.
Prerequisites
Before you begin, make sure you have:
β EVM wallet (MetaMask or similar) on Base Mainnet with ETH and USDC β see the Miner Guide for wallet setup
β Python 3.11+ installed (for CLI registration)
β TAO in a Bittensor wallet (for subnet registration)
Step 1: Create a Bittensor Wallet
You need a Bittensor wallet (coldkey + hotkey) to register on the subnet.
This creates both a coldkey and hotkey. Important:
Save your mnemonic phrase β you cannot recover your wallet without it
Fund your wallet with TAO β required for subnet registration
See the Bittensor CLI docs for more on wallet management.
Step 2: Register to the Subnet
Register your hotkey to Cartha subnet (SN35).
Option A: Cartha CLI (Recommended)
Option B: btcli
After registration you'll see your hotkey SS58 address β save it, you'll need it for locking funds.
Step 3: Lock Funds
Now lock USDC to provide liquidity via the web interface.
Go to Cartha β "Become an LP"
Enter your hotkey (the SS58 address from Step 2)

Select a pool (BTC/USD, ETH/USD, GOLD/USD, etc.)

Enter amount and set lock duration (7β365 days)


Execute the transaction β two steps: Approve USDC, then Confirm Lock



Verify β your position should appear at liquidity.0xmarkets.io/positions within 30 seconds to 5 minutes

Lock by Thursday 23:00 UTC to be included in the next epoch. See Weekly Epochs for timing details.
100K minimum: Your miner won't start receiving ALPHA emissions until the total USDC locked under your hotkey (your own + all federated miners) reaches at least $100,000. Plan your initial capital and federated miner outreach accordingly.
Step 4: Set Up Automated Rewards (Public Mode)
If you want to accept federated miners, deploy the rewards system so they can track earnings and claim ALPHA directly from your dashboard.
Deploy the Template
This starts a PostgreSQL database, API server (port 8100), and epoch monitor.
Key Configuration
MINER_HOTKEY
Your Bittensor hotkey (SS58)
MINER_COLDKEY
Your Bittensor coldkey (SS58)
AGGREGATOR_HOTKEY
Aggregator hotkey for reward accumulation
WALLET_PASSWORD
Password to unlock your BT wallet
COMMISSION_RATE
Your commission (e.g. 0.03 for 3%)
MINER_NAME
Display name on the listing page
MINER_DESCRIPTION
Description shown on the listing page
See the template README for the full configuration reference.
This step is optional if you're mining solo (private mode). The rewards system is only needed to accept and distribute to federated miners.
Keep it running 24/7. The distribution node must stay online at all times. It monitors the Bittensor chain for new epochs, sweeps accumulated ALPHA, scores positions, and processes federated miner claims. If the node goes down, your federated miners can't receive or claim rewards until it's back up. Use a reliable VPS or cloud provider with monitoring and auto-restart (e.g. Docker restart policies, systemd, or cloud health checks).
Step 5: Apply to Get Listed
Once your rewards system is live, apply to be listed on the Principal Miners page so federated miners can discover you.
Go to liquidity.0xmarkets.io/principal-miners/apply and complete the 4-step application:
1. Identity

Name
Yes
Your miner's display name (e.g. "My Mining Operation")
Description
Yes
Describe your operation, experience, and what makes you a good principal miner (up to 500 characters)
Website
No
Your website URL
Discord
No
Discord invite link or username
Logo URL
No
Link to a square image (at least 128x128px)
2. Terms

Commission Rate (%)
Yes
Percentage of gross rewards you keep (0β100%). Most miners set 3β10%
Payout Schedule
Yes
How often you distribute β "Per Epoch (~72 min)" is the standard automated option
Min Lock Days
No
Minimum lock duration you accept from federated miners
Min Lock Amount (USDC)
No
Minimum deposit you accept
Additional Terms
No
Any extra conditions or notes for federated miners (up to 7,000 characters)
3. Operational

Miner Hotkey (SS58)
Yes
Your principal miner's Bittensor hotkey address (starts with 5)
Home EVM Address
Auto-filled
Your connected wallet address β commission payouts go to this address
Contact Email
Yes
Used for application status updates and communication
4. Review & Submit
Review all your details and submit. The Cartha team reviews applications and notifies you via email. Once approved, your miner appears on the Principal Miners page and federated miners can lock capital to your hotkey.
Check Your Status
Via Web Interface
Visit liquidity.0xmarkets.io/positions to see all your active positions.
Via CLI
Shows: miner state, active pools, amounts, expiry dates, and registration status.
Troubleshooting
"Hotkey not registered" or "Invalid hotkey"
Register your hotkey first with
cartha miner registerVerify correct network (
finney) and netuid (35)Make sure you have TAO for registration
Double-check the SS58 address you're entering
"Transaction failed" in MetaMask
Confirm you're on Base Mainnet (Chain ID: 8453)
Check ETH balance for gas
Check USDC balance
Make sure the Approve transaction completed before Lock
Position not showing after locking
Wait 30 seconds to 5 minutes for the verifier to process
Click Refresh on the "My Positions" page
Check the transaction on BaseScan if it persists
"Position already exists"
Use Top Up to add USDC to an existing position (same hotkey + pool + wallet)
Use Extend to increase lock duration
Or use a different EVM wallet for a separate position
Related Guides
Miner Guide (Overview) β Comparison of principal vs federated mining
Federated Miner Guide β For miners depositing into your pool
Miner Dashboard β Track your earnings and performance
Principal Miner Template β Open-source rewards system
Weekly Epochs β Epoch timing and scoring
Fees & Rewards β Full earnings breakdown
Last updated

