EVM Chain ID

How the EVM chain ID identifies the Bittensor EVM network to Ethereum-style wallets and tools, with distinct values for mainnet and testnet.

EVM chain ID is the numeric identifier the Bittensor EVM layer presents to Ethereum-style wallets and tooling, stored on chain as EvmChainId. Bittensor runs an Ethereum-compatible execution layer on top of the Subtensor chain, and the chain ID is how EVM clients recognize which network they are connecting to (Bittensor EVM Smart Contracts).

What It Identifies

The chain ID labels the EVM network for connection and transaction-signing purposes. When configuring an Ethereum-style wallet to use Bittensor EVM, the chain ID is one of the required connection details alongside the RPC URL and currency symbol, so a wallet signs transactions for the intended network rather than a different EVM chain (EVM on Mainnet).

This identifier belongs to the EVM side of Bittensor. It is not a subnet identifier and does not describe consensus or emission; it only distinguishes the EVM network that smart contracts and EVM wallets interact with (Bittensor EVM Smart Contracts).

Mainnet and Testnet Values

The EVM chain ID differs by network environment. The documentation lists the mainnet (Finney) EVM chain ID as 964 and the testnet EVM chain ID as 945, each paired with its own RPC URL while both use TAO as the currency symbol (EVM on Mainnet, EVM on Testnet).

Because the value depends on the environment, readers should match the chain ID to the network they intend to use rather than assuming a single number applies everywhere (Bittensor Networks).

Scope and Permission

EVM chain ID is a network-level value rather than a per-subnet hyperparameter, configured under root permission rather than by subnet owners. It applies to the EVM layer of a given network as a whole (Bittensor EVM Smart Contracts).

Distinction from Netuid

A netuid identifies a specific subnet within Bittensor, while the EVM chain ID identifies the EVM network presented to Ethereum-style clients. One selects a subnet inside the network; the other tells an EVM wallet which chain it is connected to, so they are identifiers at different layers (Glossary: Netuid, Bittensor EVM Smart Contracts).

  • Netuid — identifier for a subnet within Bittensor.
  • EVM chain ID — identifier for the Bittensor EVM network to EVM clients.

Distinction from H160 Address

The EVM chain ID identifies the network, while an H160 address identifies an account on that network. A wallet uses the chain ID to connect to the right EVM network and an H160 address to name the EVM-side account it acts as (H160 Address, Bittensor EVM Smart Contracts).

  • EVM chain ID — which EVM network a client connects to.
  • H160 address — which EVM account a client acts as.

Distinction from SS58 Encoded

SS58 is the encoding format for native Bittensor wallet addresses on the Substrate side. The EVM chain ID is a numeric network identifier on the EVM side; the Substrate layer is not selected by this EVM chain number (Glossary: SS58 Encoded, Bittensor EVM Smart Contracts).

  • SS58 encoded — native Bittensor address encoding on the Substrate side.
  • EVM chain ID — numeric network identifier on the EVM side.

Receiving TAO from the Substrate Side

The two address forms also matter when funding an EVM account. The MetaMask setup guidance notes that when TAO is sent to your EVM account from a substrate wallet application or an exchange, the destination must be the SS58 form of the account rather than its 0x address, because the substrate side cannot send to the raw EVM form. That SS58 form is a safe public mirror of the same account: converting an H160 address to its SS58 form, or back, does not yield the corresponding private key (Connect MetaMask to the Bittensor EVM, Bittensor EVM Smart Contracts).

Reader Boundary

This page defines the concept at a high level. It does not provide wallet setup steps, RPC configuration, or a guarantee that environment values never change. The documented mainnet value is 964 and the testnet value is 945; readers should confirm the current connection details for the network they intend to use.

Further Reading

Topics Smart ContractsSubtensor