Trading subnets
A trade is one transaction from your own wallet to Bittensor's staking precompile. There is no token approval, no router, and no bridge.
How to trade
- Open Trade and pick a subnet, or search for it in the market rail.
- Connect your wallet, then switch to Bittensor when the panel asks.
- Enter an amount. Buying, you enter TAO to spend; selling, you enter alpha to sell.
- Check what you receive and the price impact, then confirm in your wallet.
What actually happens
Buying calls addStake(hotkey, amount, netuid) and selling calls removeStake(hotkey, amount, netuid) on the staking precompile at 0x805. Amounts are in RAO, one billionth of a TAO.
Neither call carries value. Subtensor runs its EVM over the same balances the Substrate side uses, so the TAO the precompile spends is already the balance your wallet shows. That is also why there is no approval step: nothing is an ERC20 in this path.
Where your position lives
Your alpha is held by the Substrate account your EVM address maps to, derived as blake2_256("evm:" + address). Nobody holds a private key for that account. The only way to move its balance is a transaction signed by the EVM address it was derived from, which is your wallet.
Price and slippage
Each subnet is a pool of TAO and alpha whose product stays constant. A trade moves along that curve, so the price you get is the average across the move, not the spot price, and it worsens with size.
The panel quotes from the pool's reserves read straight out of Bittensor's own state, so You receive and Price impact are the real numbers for the size you typed, priced by the same values the trade settles against. No market data provider sits in between, which is also why a quote still works when prices and charts elsewhere on the page do not.
| Impact | Reading |
|---|---|
| Under 1% | Normal for the size relative to the pool. |
| 1% to 5% | Large for this pool. Consider splitting the order. |
| Over 5% | You are moving the market. Shown in red. |
Slippage
The trade carries an on-chain price limit, so it cannot fill at a materially worse price than quoted even if the market moves between signing and inclusion. Max slippage in the panel sets how much movement is tolerated; the default is 1%.
The limit is measured from the execution price rather than the spot price, because a trade walks the curve by design. Your tolerance therefore covers only the network's staking fee and whatever moves before the transaction lands, not the impact you were already shown.
In the rare case the app cannot read the pool, it says so and the trade falls back to an unprotected call rather than inventing a limit from a price it does not have.
Which subnets are tradable
Every subnet with a pool. Trading takes a netuid and needs no contract deployed for it, so there is no list to be added to and no "coming soon" state.
Fees
- Astrid takes nothing on a subnet trade. The call goes straight to the precompile.
- Gas in TAO, which is small on Bittensor but not zero. Leave a little spare rather than staking your whole balance.
- The curve. Price impact is not a fee, but it is what a large trade costs you.
- Validator take. Staked alpha earns emissions through a validator, which can keep a share of them. The hotkey trades are staked to is listed on the compliance page, and its take is public on chain.
Selling
Switch the panel to Sell and enter alpha. TAO is credited back to the same wallet in the same transaction. There is no unbonding period and no queue.
NextGetting TAO →