Skip to main content

Accounts and Addresses

OXN has two address formats: a native oxn1… bech32 format used at the consensus layer, and a standard EVM 0x… hex format used at the execution layer. Both are derived from the same underlying key, and both refer to the same account — but they live at different layers with different balances.

You will almost never need to think about this. Wallets handle the translation for you. But when it matters — when a faucet rejects your address, when a deposit takes an unexpected route, when you're building a bridge — this page explains what's actually happening.

The two formats

Native address (oxn1…). Bech32-encoded, 40+ characters, starting with oxn1. Example:

oxn1qz9p73d5eytrrjvc3w0w0cwf7ural96dnsewrhpw

This is the format used on the consensus layer. Native token balances, validator stakes, and consensus-layer transactions all reference oxn1… addresses.

EVM address (0x…). Standard Ethereum hex format, 42 characters, starting with 0x. Example:

0x1234567890abcdef1234567890abcdef12345678

This is the format used on the execution layer. All EVM contract balances, MetaMask, ethers.js, viem, Hardhat, Foundry, and the block explorer show 0x… addresses.

Same key, two addresses

Both address formats derive from the same underlying secp256k1 keypair, using different encoding schemes:

  • The EVM address is keccak256(publicKey)[12:] — standard Ethereum derivation.
  • The native address is a bech32 encoding derived from the same public key, using OXN's oxn human-readable prefix (HRP).

This means: your seed phrase, private key, and mnemonic represent the same account in both address formats. MetaMask and the OXN Web Wallet both operate on the EVM side by default; the native format only becomes visible when you interact with consensus-layer operations.

Which address to use where

WhereFormat
MetaMask, OXN Web Wallet0x… (EVM)
Block explorer address search0x… (EVM)
Faucet input0x… (EVM)
ethers.js / viem / Hardhat / Foundry0x… (EVM)
Solidity contract msg.sender0x… (EVM)
Consensus-layer transactionsoxn1… (native)
Validator staking (mainnet)oxn1… (native)
Deposit / withdraw operationsBoth

For 99% of dApp development, 0x… is the only format you touch.

Balances live at different layers

Here is the subtle part: the balance at oxn1abc… (native) and the balance at 0x1234… (EVM) — even when both are derived from your key — are separate.

An account can have:

  • Only a native balance. Freshly created accounts, or accounts that only receive from consensus-layer sources.
  • Only an EVM balance. Accounts funded via the faucet or by another EVM address.
  • Balances on both layers. After a deposit or withdraw.

To spend from the native side inside a smart contract, you must deposit to the EVM side. To move funds back to the native side (for example, to stake), you must withdraw.

Deposit and withdraw

Deposit (native → EVM)

Moves value from your oxn1… balance to your 0x… balance. Executed via a consensus-layer transaction with a special "deposit to EVM" type. After the deposit finalizes, the funds are usable by EVM contracts.

The Web Wallet has a "Deposit to ParaTime" flow that handles this. Programmatically, most SDKs abstract the details.

Withdraw (EVM → native)

The reverse. Moves value from your 0x… balance back to a oxn1… address. Uses an EVM-layer transaction that burns from the EVM side and credits the native side.

Gas costs

Both operations are fully on-chain state changes. They cost gas. See Gas and Fees for typical amounts.

Common pitfalls

"The faucet says my address is invalid." Faucets on OXN accept 0x… (EVM) addresses only. If you paste oxn1…, the faucet cannot fund an EVM contract with it. Copy the EVM address from your wallet instead.

"I have TBLUAI in my wallet but my contract shows I have 0." Your balance is likely on the wrong layer. If MetaMask shows a balance but the EVM contract does not see it, it may be sitting on the native side. In practice this is rare — the faucet funds the EVM side directly — but it can happen if you received a transfer from a consensus-layer source. Use the Web Wallet's deposit UI to move it across.

"I copied an address and it doesn't work anywhere." Check the prefix. oxn1… will not paste into MetaMask (it expects 0x…); 0x… will not sign a consensus-layer transaction.

"Two of my transactions show up under different addresses in the explorer." Consensus-layer transactions and EVM transactions are logged separately even though they belong to the same account. The block explorer shows both when you look up either format.

Next steps