Axons

Storage Map v101 → current

Axon server info for neurons.

Explore chain
Queried by: minersvalidatorsdeveloperssubnet owners

The Big Picture

Axons are how neurons expose their services to the network. When validators want to query miners for inference (or any subnet-specific task), they look up the miner's Axon to get the IP/port. This is the discovery layer that makes Bittensor's machine learning marketplace actually work.

Why This Matters

You want to query a miner? You need their endpoint. Axons tell you where each neuron lives on the internet - IP address, port, and protocol version. Essential for any validator or client.

Example Scenario

Query Axons(netuid=1, uid=47) returns { ip: '1.2.3.4', port: 8091, ip_type: 4, version: 670, protocol: 4, placeholder1: 0, placeholder2: 0 }. Connect to 1.2.3.4:8091 to reach this miner.

Common Questions

What if Axon shows 0.0.0.0?
The neuron hasn't set their serving info, or is intentionally not serving. They won't receive queries and may have lower performance scores.
How do I update my Axon?
Use the serve_axon extrinsic to update your endpoint info. Subject to ServingRateLimit.
What's the version field?
Protocol version for compatibility. Validators may reject connections from outdated versions.
Is there a rate limit on updates?
Yes, check ServingRateLimit for how often you can update your Axon info.

Use Cases

  • Connect to a miner's inference endpoint
  • Build service discovery for subnet clients
  • Monitor which neurons are actively serving
  • Debug connectivity issues between neurons
  • Create subnet health dashboards showing online neurons

Purpose & Usage

Purpose

Store endpoint information (IP, port, protocol) for neuron communication.

Common Query Patterns

  • Query by netuid-uid for a specific neuron's endpoint
  • Iterate all to discover available services
  • Verify neuron is serving before queries

Query Keys

#NameTypeDescription
1
key1
u16 key1 (u16)
2
key2
AccountId key2 (AccountId) (hex -> SS58)

Stored Value

value (AxonInfo)

Relationships

Code Examples

import { ApiPromise, WsProvider } from "@polkadot/api";
import { stringCamelCase } from "@polkadot/util";

const provider = new WsProvider("wss://entrypoint-finney.opentensor.ai:443");
const api = await ApiPromise.create({ provider });

// Query Axons storage
const key1 = 0;
const key2 = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";

const result = await api.query
  [stringCamelCase("SubtensorModule")]
  [stringCamelCase("Axons")](
  key1,
  key2
);

console.log("Axons:", result.toHuman());

On-Chain Activity

Write Frequency
●●●●●○ High 1M–10M est. writes

1M–10M estimated writes

#22 most written storage item

Write Source User Extrinsics

Modified via user-submitted extrinsics

As of block 7,429,232

Runtime Info

View Source
Pallet
SubtensorModule
Storage Kind
Map
First Version
v101
Current Version
v393