Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 3 additions & 8 deletions docs/learn/chain-rate-limits.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,14 @@ This rate limit prevents frequent changes to delegate take percentages.
- Chain State Variable: `TxDelegateTakeRateLimit`
- Error message: [`DelegateTxRateLimitExceeded`](../errors/subtensor.md#delegatetxratelimitexceeded)


### Hotkey swap rate limit

This rate limit prevents a user from swapping a hotkey too frequently. Hotkey swaps are subject to **two separate rate limits** that must both be satisfied:

- Rate Limit:
- Rate Limit:
- General transaction: 1 block (12 seconds)
- Per-subnet: 36,000 blocks (~5 days)
- Chain State Variables:
- Chain State Variables:
- `TxRateLimit` (general transaction rate limit)
- `HotkeySwapOnSubnetInterval` (global interval constant, not queryable from chain state)
- Source Code: [swap_hotkey.rs](https://github.com/opentensor/subtensor/blob/main/pallets/subtensor/src/swap/swap_hotkey.rs#L52-56)
Expand Down Expand Up @@ -74,7 +73,6 @@ This rate limit controls how frequently subnet owners can modify hyperparameters
- Chain State Variable: `OwnerHyperparamRateLimit`
- Error message: [`TxRateLimitExceeded`](../errors/subtensor.md#txratelimitexceeded)


### Weights version key rate limit

This rate limit controls the frequency of weights version key updates.
Expand Down Expand Up @@ -117,7 +115,6 @@ This rate limit controls how frequently a user can perform staking operations (a
- Chain State Variable: `StakingOperationRateLimiter` (Bool, since limit is 1 operation)
- Error message: [`StakingOperationRateLimitExceeded`](../errors/subtensor.md#stakingoperationratelimitexceeded)


### Child hotkey operations rate limit

This rate limit controls how frequently a parent hotkey can set or revoke child hotkeys on a specific subnet. Note that revoking children is implemented by calling `set_children` with an empty list, so both operations share the same rate limit.
Expand Down Expand Up @@ -146,7 +143,6 @@ This rate limit controls how frequently neurons can update their serving informa
- Chain State Variable: `ServingRateLimit`
- Error message: [`ServingRateLimitExceeded`](../errors/subtensor.md#servingratelimitexceeded)


### Weights setting rate limit

This rate limit controls how frequently a subnet validator can set weights to the network. Appears as `weights_rate_limit` in the subnet's hyperparameters. For more information, see [subnet hyperparameters](../subnets/subnet-hyperparameters.md#weightsratelimit--commitmentratelimit).
Expand Down Expand Up @@ -183,5 +179,4 @@ When querying OTF-provided lite nodes, the following rate limits apply. We stron
- Any OTF-provided lite node will rate limit the requests to one request per second, per IP address. Note that this rate limit may change dynamically based on the network or application requirements.
- A request can be either WS/WSS or HTTP/HTTPS.
- If you exceed the rate limit, you will receive the error code 429. You will then have to wait until the rate limit window has expired.
- You can avoid OTF-lite node rate limits by running your own local lite node. You can run a lite node either [Using Docker](../subtensor-nodes/using-docker.md#using-lite-nodes) or [Using Source](../subtensor-nodes/using-source#lite-node-on-mainchain).

- You can avoid OTF-lite node rate limits by running your own local lite node. You can run a lite node either [Using Docker](../subtensor-nodes/run/using-docker.md#using-lite-nodes) or [Using Source](../subtensor-nodes/run/using-docker#lite-node-on-mainchain).
9 changes: 7 additions & 2 deletions docs/subtensor-api/constants.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
---
title: Constants
description: "This page contains compile-time runtime constants for the Subtensor runtime and their respective values."
---

# Constants

This page contains compile-time runtime constants for the Bittensor (Subtensor) runtime. Accessible via `api.consts.<Pallet>.<constant_name>`. Values read live from node.
This page contains compile-time runtime constants for the Subtensor runtime and their respective values. Accessible via `api.consts.<Pallet>.<constant_name>`. Values read live from node.

:::info
Generated from a live snapshot of the Subtensor runtime on **2026-04-13**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
Generated from a live snapshot of the Subtensor runtime on **2026-04-15**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
:::

- **[aura](#aura)**
Expand Down
9 changes: 7 additions & 2 deletions docs/subtensor-api/errors.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
---
title: Errors
description: "This page contains error variants returned by the Subtensor runtime."
---

# Errors

This page contains error variants returned by the Bittensor (Subtensor) runtime. Accessible via `api.errors.<Pallet>.<ErrorName>`.
This page contains error variants returned by the Subtensor runtime. Accessible via `api.errors.<Pallet>.<ErrorName>`.

:::info
Generated from a live snapshot of the Subtensor runtime on **2026-04-13**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
Generated from a live snapshot of the Subtensor runtime on **2026-04-15**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
:::

- **[adminUtils](#adminutils)**
Expand Down
9 changes: 7 additions & 2 deletions docs/subtensor-api/events.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
---
title: Events
description: "The following page contains runtime events emitted by the Subtensor runtime."
---

# Events

The following page contains runtime events emitted by the Bittensor (Subtensor) runtime. Accessible via `api.events.<Pallet>.<EventName>`.
The following page contains runtime events emitted by the Subtensor runtime. Accessible via `api.events.<Pallet>.<EventName>`.

:::info
Generated from a live snapshot of the Subtensor runtime on **2026-04-13**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
Generated from a live snapshot of the Subtensor runtime on **2026-04-15**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
:::

- **[adminUtils](#adminutils)**
Expand Down
9 changes: 7 additions & 2 deletions docs/subtensor-api/extrinsics.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
---
title: Extrinsics
description: "The following sections contain Extrinsic methods that are part of the Subtensor runtime."
---

# Extrinsics

The following sections contain Extrinsic methods that are part of the Bittensor (Subtensor) runtime. On the API, these are exposed via `api.tx.<Pallet>.<call_name>`.
The following sections contain Extrinsic methods that are part of the Subtensor runtime. On the API, these are exposed via `api.tx.<Pallet>.<call_name>`.

:::info
Generated from a live snapshot of the Subtensor runtime on **2026-04-13**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
Generated from a live snapshot of the Subtensor runtime on **2026-04-15**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
:::

- **[adminUtils](#adminutils)**
Expand Down
9 changes: 7 additions & 2 deletions docs/subtensor-api/rpc.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
---
title: RPC
description: "This page shows JSON-RPC methods available on the Subtensor node."
---

# RPC

This page shows JSON-RPC methods available on a Bittensor (Subtensor) node. Accessible via `api.rpc.<namespace>.<method_name>`.
This page shows JSON-RPC methods available on the Subtensor node. Accessible via `api.rpc.<namespace>.<method_name>`.

:::info
Generated from a live snapshot of the Subtensor runtime on **2026-04-13**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
Generated from a live snapshot of the Subtensor runtime on **2026-04-15**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
:::

- **[author](#author)**
Expand Down
9 changes: 7 additions & 2 deletions docs/subtensor-api/runtime.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
---
title: Runtime Calls
description: "This page includes runtime API calls exposed by the Subtensor runtime."
---

# Runtime Calls

This page includes runtime API calls exposed by the Bittensor (Subtensor) runtime. Accessible via `api.call.<RuntimeApi>.<method_name>`.
This page includes runtime API calls exposed by the Subtensor runtime. Accessible via `api.call.<RuntimeApi>.<method_name>`.

:::info
Generated from a live snapshot of the Subtensor runtime on **2026-04-13**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
Generated from a live snapshot of the Subtensor runtime on **2026-04-15**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
:::

- **[accountNonceApi](#accountnonceapi)**
Expand Down
9 changes: 7 additions & 2 deletions docs/subtensor-api/storage.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
---
title: Storage
description: "This page contains storage query definitions for the Subtensor runtime."
---

# Storage

This page contains storage query definitions for the Bittensor (Subtensor) runtime. Accessible via `api.query.<Pallet>.<storage_item>`.
This page contains storage query definitions for the Subtensor runtime. Accessible via `api.query.<Pallet>.<storage_item>`.

:::info
Generated from a live snapshot of the Subtensor runtime on **2026-04-13**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
Generated from a live snapshot of the Subtensor runtime on **2026-04-15**. Connected to: `wss://entrypoint-finney.opentensor.ai:443`
:::

- **[adminUtils](#adminutils)**
Expand Down
44 changes: 22 additions & 22 deletions docs/subtensor-nodes/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: "Subtensor Node Basics"

import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
import { SdkVersion } from "../sdk/_sdk-version.mdx";
import { SdkVersion } from "../sdk/\_sdk-version.mdx";

# Subtensor Node Basics

Expand All @@ -30,49 +30,51 @@ style={{width: 550}}

## Lite node vs archive node

A public subtensor node refers to an internet-connected computer that is synchronized with the Bittensor blockchain database. A **lite node** or an **archive node** is a type of public subtensor node.
A public subtensor node refers to an internet-connected computer that is synchronized with the Bittensor blockchain database. A **lite node** or an **archive node** is a type of public subtensor node.

:::tip a subtensor node is not a neuron
A subtensor node is different from a Bittensor neuron. A Bittensor neuron is either a subnet validator node or a subnet miner node&mdash;it exists in a subnet, and it does not contain blockchain database.
A subtensor node is different from a Bittensor neuron. A Bittensor neuron is either a subnet validator node or a subnet miner node&mdash;it exists in a subnet, and it does not contain blockchain database.
:::

Normally, a node in Bittensor blockchain must always be synchronized to the latest blockchain ledger state. Such a blockchain node accomplishes this by holding a copy of the entire Bittensor blockchain database, from the genesis block all the way to the current block. However, holding an entire copy of blockchain ledger state, which is continuously increasing in size, can be expensive. Hence, two types of nodes, a lite node and an archive node, are defined for subtensor, as below:

### Lite node

A **lite node** is configured to perform warp synchronization, which primarily syncs with the blocks that have been finalized, and not the entire blockchain.
A **lite node** is configured to perform warp synchronization, which primarily syncs with the blocks that have been finalized, and not the entire blockchain. They retain only recent data, offer limited historical access, and use significantly less storage.

A lite node is suitable for miners, most neurons, block validators, and subnet validators.

:::tip flags for lite node
Use `--sync=warp` when starting a subtensor node. See [Using Source Code](./using-source.md#run-the-subtensor-node).
Use `--sync=warp` when starting a subtensor node. See [Using Source Code](./run/using-source.md#run-the-subtensor-node).
:::

The lite node warps (jumps) directly to the latest finalized block, downloading the complete blockchain state at that point. The purpose of a lite node is to get up and running quickly and serve, with minimal storage requirements, as a local entry point into the Bittensor mainchain or testchain.
The lite node warps (jumps) directly to the latest finalized block, downloading the complete blockchain state at that point. The purpose of a lite node is to get up and running quickly and serve, with minimal storage requirements, as a local entry point into the Bittensor mainchain or testchain.

**Verification of chain history**: To ensure blockchain validity, a lite node downloads and verifies finality proofs all the way back to the genesis block (the first block). These proofs confirm the legitimacy of the chain's history without processing every single block.

**Verification of chain history**: To ensure blockchain validity, a lite node downloads and verifies finality proofs all the way back to the genesis block (the first block). These proofs confirm the legitimacy of the chain's history without processing every single block.
**Background fill**: The lite node, while actively participating in the network, still downloads and processes historical blocks in the background to build the complete blockchain database. This download happens when the node is less busy.

**Background fill**: The lite node, while actively participating in the network, still downloads and processes historical blocks in the background to build the complete blockchain database. This download happens when the node is less busy.

:::tip lite node for a subnet miner
A subnet miner should use a local lite node to communicate with the Bittensor blockchain.
:::
:::tip lite node for a subnet miner
A subnet miner should use a local lite node to communicate with the Bittensor blockchain.
:::

### Archive node

On the other hand, an **archive node** downloads and validates all the Bittensor blockchain blocks from genesis up to the most recent block.
On the other hand, an **archive node** downloads and validates all the Bittensor blockchain blocks from genesis up to the most recent block. Archive nodes store the entire blockchain history, providing full state access for tasks requiring historical data, such as analytics and audits.

Archive nodes are suitable for block explorers, indexers, analytics, and querying data older blocks.

:::tip flags for archive node
Use `--sync=full` and `--pruning archive` when starting a subtensor node. See [Using Source Code](./using-source.md#run-the-subtensor-node).
Use `--sync=full` and `--pruning archive` when starting a subtensor node. See [Using Source Code](./run/using-source.md#run-the-subtensor-node).
:::

The full synchronization performed by an archive node can be significantly slower than warp sync (done by a lite node) as it involves processing every block. Also, archive nodes require substantially more storage space due to the complete historical data.

:::tip archive node for a blockchain explorer
Applications such as Bittensor blockchain explorer, for example, [TAO.app](https://tao.app) that require access to historical blockchain data use an archive node.
:::


:::tip archive node for a blockchain explorer
Applications such as Bittensor blockchain explorer, for example, [TAO.app](https://tao.app) that require access to historical blockchain data use an archive node.
:::

## Query archived data
## Query archived data

<SdkVersion />

Expand All @@ -89,5 +91,3 @@ print(meta)
:::tip See also
Also see the [`metagraph` API reference](https://docs.bittensor.com/python-api/html/autoapi/bittensor/metagraph/index.html#bittensor.metagraph.metagraph.sync).
:::


26 changes: 26 additions & 0 deletions docs/subtensor-nodes/run/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
title: "Running a Subtensor node"
---

# Running a Subtensor node

This page covers what you need to know before setting up a Subtensor node.

---

A Subtensor node is an internet-connected machine that holds a synchronized copy of the Bittensor blockchain and exposes interfaces for querying state or participating in network operations such as block validation, subnet validation, and mining.

Running your own node gives you a private, low-latency endpoint instead of depending on a public one, which is recommended for any serious validator, miner, or indexer workload.

:::info Before you begin
Before you start running a subtensor node, you need to decide on what type of node you want to run. The node type you choose should depend on your available storage capacity and whether your use case requires access to historical chain data. For more information, see [Lite node vs Archive node](../../subtensor-nodes#lite-node-vs-archive-node).
:::

## Choosing an approach

There are two supported ways to run a Subtensor node:

- **Run with Docker**: Runs the node inside a preconfigured container. This provides a faster setup and a consistent, isolated environment for running the Subtensor node.
- **Run with Source Code**: Builds and runs the node directly from the Subtensor repository. Use this approach if you need full control over the build, plan to modify or inspect the runtime, or are debugging or contributing to Subtensor.

Both approaches result in the same node behavior. The difference is in setup, control, and operational complexity.
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
title: "Using Docker"
title: "Run with Docker"
---

import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

# Using Docker
# Run with Docker

To run a subtensor node with Docker, follow the below steps.

Expand Down Expand Up @@ -62,6 +62,10 @@ Adding a user to the `docker` group is only necessary on Linux, where `sudo` pri

Now you can run the subtensor nodes for either mainchain or testchain using any of available options.

:::info Start your docker engine
Before running the command to run the Subtensor node on Docker, ensure that you have a Docker engine running on your device.
:::

### Using lite nodes

A lite node which primarily syncs with the only blocks that have been finalized, and not the entire blockchain. Run a lite node using the command corresponding to your target chain:
Expand Down
Loading