AssociatedEvmAddress

Storage Map v261 → v411 Changed in v411

EVM address associated with a neuron position.

Explore chain
Queried by: developerswallets

The Big Picture

Bridges the gap between Substrate accounts and EVM addresses. Neurons can prove ownership of an EVM address, enabling cross-chain features and EVM-based access to Bittensor functionality.

Use Cases

  • Find EVM address for a neuron
  • Build cross-chain identity tools
  • Link EVM and Substrate accounts

From Chain Metadata

============================= ==== EVM related storage ==== ============================= DMAP (netuid, uid) --> (H160, last_block_where_ownership_was_proven)

Purpose & Usage

Purpose

Link Substrate neuron UIDs to EVM addresses for cross-chain identity.

Common Query Patterns

  • Query by (netuid, uid)

Query Keys

#NameTypeDescription
1
netuid
u16 Subnet ID
2
uid
u16 Neuron UID on the subnet

Stored Value

  • .0
    evm_address — H160 EVM-compatible address (20 bytes) associated with this neuron. Used by EVM-side tooling to map a Substrate neuron to an Ethereum-style address.
  • .1
    ownership_proof_block — Last block number at which the EVM-side controller proved ownership of the associated H160 address. Used to age and re-validate the binding.

Relationships

Modified By

Related Events

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 AssociatedEvmAddress storage
const netuid = 1;
const uid = 0;

const result = await api.query.SubtensorModule.AssociatedEvmAddress.getValue(netuid, uid);
console.log("AssociatedEvmAddress:", result);

On-Chain Activity

Write Frequency
●●○○○○ Minimal <10K est. writes

<10K estimated writes

#59 most written storage item

Write Source User Extrinsics

Modified via user-submitted extrinsics

As of block 7,429,232

Version History

v261 block 5,328,895 Added
v266–v272 · runtime versions skipped on chain (never deployed)
v273 block 5,659,032 Internal re-bind
v278–v289 · runtime versions skipped on chain (never deployed)
v290 block 5,947,548 Internal re-bind
v293–v296 · runtime versions skipped on chain (never deployed)
v297 block 6,067,943 Internal re-bind
v307–v314 · runtime versions skipped on chain (never deployed)
v315 block 6,414,634 Internal re-bind
v316–v319 · runtime versions skipped on chain (never deployed)
v320 block 6,523,566 Internal re-bind
v327–v333 · runtime versions skipped on chain (never deployed)
v334 block 6,811,690 Internal re-bind
v353–v360 · runtime versions skipped on chain (never deployed)
v361 block 7,063,679 Internal re-bind
v363–v364 · runtime versions skipped on chain (never deployed)
v365 block 7,135,419 Internal re-bind
v386–v390 · runtime versions skipped on chain (never deployed)
v391 block 7,782,857 Internal re-bind
v394–v400 · runtime versions skipped on chain (never deployed)
v401 block 8,036,576 Internal re-bind
v403–v410 · runtime versions skipped on chain (never deployed)
v411 block 8,283,784 Internal re-bind Current

Runtime Info

View Source
Pallet
SubtensorModule
Storage Kind
Map
First Version
v261
Current Version
v411