Skip to main content

Wallet Setup

XPHERE is fully EVM-compatible, so any wallet that supports custom EVM networks works out of the box. This guide covers the four most common cases.

1. MetaMask (Browser & Mobile)

Option A — One-click add

Both networks are in the public chain registry that backs chainlist.org: Xphere Mainnet (20250217, symbol XP) and Xphere Testnet (1998991, symbol XPT). Search for xphere there, connect your wallet, and add the one you want.

You can confirm both entries yourself:

curl -s https://chainid.network/chains.json \
| python3 -c "import json,sys; [print(c['chainId'], c['name'], c['nativeCurrency']['symbol']) for c in json.load(sys.stdin) if c['chainId'] in (20250217, 1998991)]"
# 1998991 Xphere Testnet XPT
# 20250217 Xphere Mainnet XP

Option B — Manual

  1. Open MetaMask → click the network selector (top-left) → Add network → Add a network manually

  2. Fill in the form:

    Mainnet

    Network Name:     Xphere Mainnet
    New RPC URL: https://rpc.x-phere.com
    Chain ID: 20250217
    Currency Symbol: XP
    Block Explorer: https://xp.tamsa.io

    Testnet

    Network Name:     Xphere Testnet
    New RPC URL: https://testnet.x-phere.com
    Chain ID: 1998991
    Currency Symbol: XPT
    Block Explorer: https://xpt.tamsa.io
  3. Click Save → MetaMask switches to XPHERE automatically.

The native symbol differs between networks

Mainnet is XP; Testnet is XPT. Entering XP on Chain ID 1998991 produces a wallet that silently mislabels test tokens as mainnet ones. Use the exact values above.

The Mainnet explorer is xpscan.io or xp.tamsa.io; the Testnet explorer is xpt.tamsa.io. XPScan serves Mainnet only — its footer states Chain ID: 20250217, and no XPScan testnet instance is published — so a Testnet address will not resolve there.

2. Rabby Wallet

  1. Open Rabby → More → Add Custom Network
  2. Paste the RPC URL above and Rabby auto-detects Chain ID and currency.

3. Zigap Wallet

Zigap is an official XPHERE partner wallet with built-in XPHERE 2.0 support, so the network does not have to be configured manually. It is operated by its own team, not by the XPHERE Foundation.

  1. Install: about.zigap.io
  2. Create or import a wallet
  3. Select network: XPHERE 2.0 (Mainnet) or XPHERE 2.0 TESTNET

For Mining, rewards are paid to an ordinary XPHERE address that you set as the payout account on the pool. A Zigap XPHERE 2.0 address works, as does any address you control.

4. WalletConnect (Trust Wallet, Rainbow, etc.)

In your dApp, request the chain programmatically:

// Mainnet
await window.ethereum.request({
method: "wallet_addEthereumChain",
params: [{
chainId: "0x134fe69", // 20250217 in hex
chainName: "Xphere Mainnet",
nativeCurrency: { name: "Xphere", symbol: "XP", decimals: 18 },
rpcUrls: ["https://rpc.x-phere.com"],
blockExplorerUrls: ["https://xpscan.io", "https://xp.tamsa.io"],
}],
});
// Testnet
await window.ethereum.request({
method: "wallet_addEthereumChain",
params: [{
chainId: "0x1e808f", // 1998991 in hex
chainName: "Xphere Testnet",
nativeCurrency: { name: "Xphere Testnet", symbol: "XPT", decimals: 18 },
rpcUrls: ["https://testnet.x-phere.com"],
blockExplorerUrls: ["https://xpt.tamsa.io"],
}],
});

wallet_addEthereumChain requires the chain ID as a hex string. The two values are:

NetworkDecimalHex
Mainnet202502170x134fe69
Testnet19989910x1e808f

Both are readable from the live endpoints — eth_chainId returns exactly these strings:

curl -s -X POST https://testnet.x-phere.com \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
# {"jsonrpc":"2.0","id":1,"result":"0x1e808f"}

Funding Your Wallet

SourceNetworkTokenNotes
Centralized exchangesMainnetXPSearch "XP" on supported exchanges
FaucetTestnetXPT10 XPT per address per 24 hours, free
MiningBothnativeRun a mining node
Bridge from EthereumNot yet available — see Bridge

Testnet XPT cannot be moved to Mainnet, and the faucet does not distribute Mainnet XP.

Troubleshooting

"Transaction underpriced" — Read the current suggestion from the node rather than assuming a floor. Both networks currently report a base fee of 25 gwei and an eth_gasPrice of 27.5 gwei; the chain's configured lower bound is 25 gwei (lowerboundbasefee: 25000000000) and the upper bound is 750 gwei. Set maxFeePerGas from a live call:

curl -s -X POST https://rpc.x-phere.com \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}'
# {"jsonrpc":"2.0","id":1,"result":"0x66720b300"} ← 27,500,000,000 wei = 27.5 gwei

eth_maxPriorityFeePerGas returns 0x0 on both networks, so no tip is required for inclusion.

"Nonce too low" — MetaMask cached the wrong nonce. Settings → Advanced → Clear activity tab data.

Wallet shows balance as 0 despite the explorer showing a balance — You're on the wrong network. Confirm the Chain ID in MetaMask matches the network you funded: 20250217 for Mainnet (explorer xpscan.io / xp.tamsa.io), 1998991 for Testnet (explorer xpt.tamsa.io).

eth_chainId returns something other than 0x134fe69 / 0x1e808f — You are pointed at the wrong endpoint, or the node is behind. Switch to another endpoint from the Network Info list.

See Also