SubnetOwnerCut

Storage Plain v133 → v411

Owner cut fraction from emissions , encoded as u16. To get the fraction: value / u16::MAX (i.e. value / 65535). NOT basis points (10000) or percent (100).

Explore chain
Queried by: subnet ownersvalidatorsanalytics

The Big Picture

Subnet owners receive a fraction of subnet emissions as payment for running the subnet. This parameter sets that fraction network-wide, encoded as u16 / u16::MAX.

Use Cases

  • Calculate owner earnings (divide by 65535 first!)
  • Research subnet economics
  • Compare with validator earnings

From Chain Metadata

ITEM( subnet_owner_cut )

Purpose & Usage

Purpose

Define what portion of subnet emissions goes to subnet owners. Stored as a u16 normalised to u16::MAX = 100% per the runtime's `get_float_subnet_owner_cut` helper.

Common Query Patterns

  • Single value query
  • Divide by 65535 (u16::MAX) to get fraction; multiply by 100 for percent

Stored Value

value (u16)

Decoding the value

u16 (normalised: value / u16::MAX = fraction)

Subtensor encodes percentage-like u16 fields as `value / u16::MAX`. e.g. 32767 ≈ 50%, 65535 = 100%.

Common bug
Indexers commonly divide by 10000 (assuming basis points) or 100 (assuming percent), yielding values ~6.55x too large. Verified via `Self::get_float_subnet_owner_cut` in pallets/subtensor/src/utils/misc.rs which divides by u16::MAX.
const fraction = (value as number) / 65535;

Code Examples

import { createClient, Binary } from "polkadot-api";
import { getWsProvider } from "polkadot-api/ws";
import { sub } from "@polkadot-api/descriptors"; // generated by: npx papi add sub -w wss://entrypoint-finney.opentensor.ai:443

const client = createClient(getWsProvider("wss://entrypoint-finney.opentensor.ai:443"));
const api = client.getTypedApi(sub);

// Query SubnetOwnerCut storage (no keys - plain value)
const result = await api.query.SubtensorModule.SubnetOwnerCut.getValue();
console.log("SubnetOwnerCut:", result);

Version History

v133 block 1,404,224 Added
v149 block 3,014,339 Internal re-bind
v278–v289 · runtime versions skipped on chain (never deployed)
v290 block 5,947,548 Internal re-bind Current

Runtime Info

View Source
Pallet
SubtensorModule
Storage Kind
Plain
First Version
v133
Current Version
v411