---
sidebar_position: 3
title: Subnet emission
description: How Bittensor's per-tempo emission flows into Subnet 51, and how the three-pool split (rented / unrented / burn) works.
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Subnet emission

Subnet 51 receives a share of Bittensor's per-tempo (~72 minutes) TAO emission. Validators split that share across **three pools** — rented, unrented, and burn — and pay the result to providers as alpha.

<!-- protocol-layer-start -->

<details>
<summary>**Bittensor protocol layer** (general context)</summary>

Every {protocol.tempo_minutes_approx} minutes (~{protocol.tempo_blocks} blocks), Bittensor emits new TAO to the network:

- **{protocol.provider_emission_share_pct}%** to providers (the protocol's "miner" role)
- **{protocol.validator_staker_emission_share_pct}%** to validators and stakers
- **{protocol.subnet_owner_emission_share_pct}%** to subnet owners

Subnet 51 competes for the provider share alongside other subnets, then distributes its slice via **Yuma Consensus**. See <a href={links.bittensor_emissions}>Bittensor Emissions</a> and <a href={links.bittensor_yuma}>Yuma Consensus</a>.

</details>

<!-- protocol-layer-end -->

<!-- sn51-layer-start -->

## Subnet 51 layer

Each epoch the validator splits the SN51 provider emission into three pools.

### The three pools

| Pool | Share | Who earns | Live source of truth |
|------|-------|-----------|----------------------|
| **Rented** |  — fixed | Nodes whose GPU is currently rented | <a href={links.grafana_gpu_model_rate}>Grafana — GPU model rate</a> (per-model `gpu_portion`) |
| **Unrented** | 0 –  — dynamic | Unrented nodes of eligible GPU models | <a href={links.calculator}>Lium rewards calculator</a> (per-model USD/epoch) |
| **Burn** |  minus the unrented share | Designated burner UIDs only | — |

The unrented and burn pools share a  ceiling. When unrented activity grows, burn shrinks toward zero; when unrented activity is sparse, burn absorbs the slack.

### Rented pool

Distributed across rented nodes in proportion to a live per-model `gpu_portion`, which the validator updates from rental revenue every time the Lium platform reports a new figure. The current values are on the <a href={links.grafana_gpu_model_rate}>Grafana dashboard</a> — treat that as the live truth.

### Unrented pool

Distributed across unrented nodes of eligible GPU models. The eligible models, the per-`(model, gpu_count)` USD/hr prices, and the per-bucket supply caps all change over time as Lium tunes the validator's incentive parameters — so use the <a href={links.calculator}>rewards calculator</a> rather than memorizing a list. See [Rewards calculator](./calculator.mdx) for a walkthrough.

Eligibility is just three things: your GPU is **not currently rented**, its base model has a **positive bucket cap** (a per-model limit on how many unrented GPUs can earn from this pool), and your validator-assigned **score is > 0**.

<details>
<summary>**Burn pool** (ordinary providers do not earn from this pool)</summary>

The residual: burn share = total burn ceiling − unrented share. Distributed equally across designated burner UIDs.

</details>

### Sysbox is required

Sysbox is a hard precondition. Without `sysbox-runc` running on your node, your `sysbox_multiplier` is `0` and you earn nothing — from any pool. The legacy partial penalty (a 0.8× multiplier for non-sysbox rented nodes) only applied to rentals created **before** the cutoff at **2026-04-03 12:00 UTC**, which has now passed. See [Sysbox setup](../nodes/sysbox.md).

<details>
<summary>**What about my score?** (math details)</summary>

The math depends on which pool your node is earning from. The formulas below assume `sysbox-runc` is running on your node (without it, every score is `0`).

**Rented pool** (your GPU is currently rented):

```
mining_score = score × gpu_portion × gpu_count / total_gpu_count_of_model
incentive    = mining_share × mining_score / total_mining_score
```

`gpu_portion` is the live per-model value on the <a href={links.grafana_gpu_model_rate}>Grafana dashboard</a>. `total_gpu_count_of_model` is the total count of your GPU model across all rented nodes in the epoch — so your slice shrinks as more competitors of the same model come online.

**Unrented pool** (your GPU is unrented and its base model is eligible):

```
effective_rate = hourly_rate × unrented_cap_multiplier
incentive      = rental_share × gpu_count × effective_rate / total_rental_cost
```

`unrented_cap_multiplier = min(unrented_count_in_bucket, max_cap) / unrented_count_in_bucket` — cap dilution per `(base_model, gpu_count_bucket)`. If your bucket already has more unrented GPUs than its cap, every node in it scales down proportionally.

</details>

### How emissions arrive

Subnet 51 emission lands as **alpha tokens** in the subnet pool on-chain. You don't receive alpha directly — the billing system tracks earnings off-chain and transfers them to your coldkey via a stake-transfer transaction once per day. See [Getting Paid](./payouts.mdx).

### Where to monitor

- <a href={links.grafana_gpu_model_rate}>Grafana — GPU model rate</a> (live rented-pool portion per model)
- <a href={links.calculator}>Lium rewards calculator</a> (live unrented-pool USD/epoch per model)
- <a href={links.taomarketcap_providers}>TAO Market Cap — Subnet 51</a>
- <a href={links.subnetalpha_lium}>Subnet Alpha — Lium</a>
- <a href={links.taostats_subnets}>TAO Stats — Subnets</a>

On-chain weights update at the end of each tempo (~72 minutes). The Grafana dashboard updates continuously as the validator processes new rental-revenue messages.

<!-- sn51-layer-end -->
