AssociatedEvmAddress
Storage Map v261 → v411 Changed in v411EVM address associated with a neuron position.
Explore chainQueried 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
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