Logo
New RPC users get 35% off their first monthView the offer
RPC Assistant

Bittensor Subnet 123: What Is It and How Do You Connect?

Summary

Bittensor Subnet 123 is one of the numbered incentive-based subnets that run on top of the Bittensor network. Each subnet has its own task, miner and validator incentive design, and its own on-chain registration and stake accounting, so "Subnet 123" is best understood as a specific subnet's netuid rather than a fixed product name. If you are building on it, the practical question is usually how to read its state and how to reach the Bittensor chain reliably.

This page explains what a Bittensor subnet netuid means, how to inspect Subnet 123 through the chain, and how to connect using a Bittensor RPC endpoint. OnFinality provides RPC API access and dedicated node options for Bittensor Finney, so you can query subnet data without running your own node.

Bittensor is a decentralized machine learning network where many independent "subnets" compete to produce useful work. Each subnet is identified by a number called a netuid. When people ask about "Subnet 123," they are asking about the subnet registered under that netuid on the Bittensor chain.

The short answer: Subnet 123 is a specific subnet on Bittensor, defined by its netuid, its incentive mechanism, and the miners and validators registered to it. It is not a single fixed product with a permanent description, because subnets evolve and their purpose is set by the people who build and operate them. What stays stable is the on-chain identity: the netuid, the stake, the registration cost, and the emission flow.

If you are a developer, the useful question is not only "what is it" but "how do I read its state and connect to it." This page answers both, then shows how to query Bittensor through an RPC endpoint.

How to read Subnet 123 from the chain

Before you integrate with any subnet, confirm what it actually is on-chain rather than relying on a description you read somewhere. Bittensor stores subnet metadata and hyperparameters in chain state, and you can read them through the Subtensor RPC interface.

The most reliable path is to query the chain directly. On Bittensor Finney, the mainnet, you can use a public RPC endpoint:

curl -s https://bittensor-finney.api.onfinality.io/public \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "chain_getHeader",
    "params": []
  }'

That confirms you are talking to the right chain. To inspect subnet-specific data, you query the Subtensor runtime storage for the netuid you care about. The exact storage keys and method names depend on the runtime version, so check the current Subtensor metadata rather than hardcoding assumptions.

A practical checklist for identifying a subnet:

What to confirmWhere to lookWhy it matters
Netuid and subnet identitySubtensor subnet storageConfirms you are reading the right subnet
Incentive mechanismSubnet hyperparameters and docsTells you what miners and validators actually do
Registration costSubnet registration storageAffects whether you can join as a miner
Emission and stakeChain state and staking dataShows how rewards flow
Owner and operatorsOn-chain account dataHelps you assess who runs it

If a subnet's purpose is unclear from on-chain data alone, treat the subnet's own documentation and community channels as the source of truth for its task definition. On-chain data tells you the mechanics; the operators define the mission.

When you need an RPC endpoint versus your own node

This is the decision most builders face early. You have three broad options for reading Bittensor state and interacting with subnets.

  • Public RPC endpoint. Fastest way to start. Good for dashboards, scripts, testing, and light production reads. You share capacity with other users, so treat it as a starting point rather than a guarantee for heavy or latency-sensitive workloads.
  • Dedicated node. You get isolated capacity for your own application. This fits indexers, high-frequency polling, validator tooling, and anything where shared public capacity becomes a bottleneck.
  • Self-hosted node. Maximum control, but you own the hardware, sync, upgrades, and monitoring. This is a real operational commitment for a Substrate-based chain like Bittensor.

A simple way to decide:

Your situationReasonable starting point
Exploring Subnet 123 for the first timePublic RPC endpoint
Building a dashboard or bot with steady trafficManaged RPC API, then scale
Running validator or miner infrastructureDedicated node
Need full control and have ops capacitySelf-hosted node

OnFinality provides a Bittensor Finney RPC endpoint plus dedicated node options if you outgrow shared access. You can compare plans on the RPC pricing page and see other chains on the supported RPC networks list.

Connecting to Bittensor Finney

Bittensor mainnet is called Finney. The native token is TAO, with 9 decimals. If you are wiring up a client, these are the settings you need.

SettingValue
NetworkBittensor Finney Mainnet
Native tokenTAO (9 decimals)
HTTP RPChttps://bittensor-finney.api.onfinality.io/public
WebSocket RPCwss://bittensor-finney.api.onfinality.io/public-ws
TransportsHTTP and WebSocket

Because Bittensor is a Substrate-based network, you interact with it using Substrate JSON-RPC methods rather than EVM methods like eth_call. That distinction trips up developers who are used to Ethereum-style tooling.

A minimal WebSocket connection in JavaScript looks like this:

const WebSocket = require('ws');

const ws = new WebSocket('wss://bittensor-finney.api.onfinality.io/public-ws');

ws.on('open', () => {
  ws.send(JSON.stringify({
    jsonrpc: '2.0',
    id: 1,
    method: 'chain_getBlockHash',
    params: []
  }));
});

ws.on('message', (data) => {
  console.log('Block hash:', data.toString());
  ws.close();
});

If you use a Substrate client library, point it at the same endpoint and let the library handle metadata and storage queries. That is usually cleaner than hand-rolling JSON-RPC calls for subnet storage.

Common mistakes when working with subnets

A few issues come up repeatedly when developers first touch Bittensor subnets.

  • Assuming EVM methods work. Bittensor is Substrate-based. Methods like eth_getBalance are not the right tool. Use Substrate RPC and storage queries.
  • Hardcoding netuid assumptions. Subnet hyperparameters and storage layouts can change between runtime upgrades. Read metadata instead of assuming a fixed schema.
  • Confusing subnet identity with subnet purpose. The netuid is stable; the subnet's task and community can change. Verify both on-chain data and the subnet's own docs.
  • Ignoring registration cost. If you plan to register as a miner, the cost is dynamic and set by the subnet. Check it before committing.
  • Treating a public endpoint as unlimited. Shared endpoints are fine for exploration, but production workloads should plan for dedicated capacity.

Debugging connection problems

When a Bittensor RPC call fails, work through it in order rather than guessing.

SymptomLikely causeNext step
Connection refusedWrong URL or transportConfirm HTTP vs WebSocket and the exact path
Method not foundUsing EVM-style methodsSwitch to Substrate JSON-RPC methods
Empty or null resultWrong storage key or netuidRe-read runtime metadata
Timeouts under loadShared endpoint saturationMove to a dedicated node
Stale block heightClient caching or wrong chainRe-query chain_getHeader

A quick health probe is to request the latest header and compare the block number to a block explorer. If the height is moving, your connection is live. If it is frozen, you are likely pointed at a stale or misconfigured endpoint.

Operating Subnet 123 tooling in production

Once you move past exploration, reliability becomes the main concern. A few practices help:

  • Separate read and write paths. Read-heavy dashboards and write-heavy registration or staking flows have different needs. Do not assume one endpoint configuration fits both.
  • Add failover. Configure a secondary endpoint so a single connection issue does not take down your service.
  • Monitor block height and response time. These two signals catch most connectivity problems early.
  • Plan for runtime upgrades. Substrate chains upgrade regularly. Test against the current runtime before deploying.
  • Track subnet-specific metrics. Registration cost, emission, and stake are the numbers your users will ask about.

If you are running validator or miner infrastructure tied to a subnet, a dedicated node gives you predictable capacity and isolates you from noisy neighbors on shared endpoints.

Key Takeaways

  • Bittensor Subnet 123 is a specific subnet identified by its netuid on the Bittensor chain, not a fixed product name.
  • On-chain data tells you the mechanics: netuid, registration cost, stake, and emissions. The subnet's own docs define its task.
  • Bittensor is Substrate-based, so you use Substrate JSON-RPC methods, not EVM methods.
  • Bittensor mainnet is Finney, with TAO as the native token at 9 decimals.
  • Start with a public RPC endpoint for exploration, then move to a dedicated node for production workloads.
  • OnFinality offers Bittensor Finney RPC access; see RPC pricing and supported RPC networks for options.

Frequently Asked Questions

What is Bittensor Subnet 123?

It is the subnet registered under netuid 123 on the Bittensor network. Its purpose is defined by the people who operate it, while its on-chain identity, stake, and emissions are readable from chain state.

Is Subnet 123 a token or a chain?

Neither. A subnet is a numbered incentive mechanism running on the Bittensor chain. It uses TAO for staking and registration, but it is not a separate chain or a standalone token.

How do I connect to Bittensor to read Subnet 123 data?

Use a Bittensor Finney RPC endpoint. OnFinality provides HTTP and WebSocket access at the Bittensor Finney network page. Query Subtensor storage for the netuid you want.

Can I use Ethereum tools like ethers.js on Bittensor?

Not directly. Bittensor is Substrate-based, so you need Substrate-compatible tooling and JSON-RPC methods rather than EVM methods.

Do I need my own node to work with a subnet?

For exploration and light production, a managed RPC endpoint is usually enough. For heavy polling, indexing, or validator and miner infrastructure, a dedicated node is the more practical choice.

How do I know if a subnet is worth building on?

Check its registration cost, emission flow, stake distribution, and operator activity on-chain, then read its documentation to understand the task. On-chain mechanics plus operator intent together tell the real story.

RPC Knowledge Base

Related RPC details

Never Worry about Infrastructure Again

OnFinality takes away the heavy lifting of DevOps so you can build smarter and faster.

Get Started