Skip to main content

Accounts & Addresses

Learn how accounts and addresses work within the AxonVault wallet hierarchy.

Accounts

An account is a BIP-44 derivation level within an HD wallet. Each account can have addresses on multiple chains.

Account Structure

Wallet (HD)
├── Account 0 (Main)
│   ├── Ethereum: 0x742d35Cc...
│   ├── Base: 0x742d35Cc...
│   └── Solana: 7EcD...
├── Account 1 (Trading)
│   ├── Ethereum: 0x8f3Bc...
│   └── Base: 0x8f3Bc...
└── Account 2 (Savings)
    └── Ethereum: 0xa1b2c3...

Creating Accounts

POST /v1/server/wallets/{walletId}/accounts
{
  "accountIndex": 0,
  "accountName": "Main Account"
}
Account indices must be sequential. You cannot create account 2 before account 1.

Addresses

Addresses are chain-specific identifiers derived from an account’s keys.

Address Derivation

POST /v1/wallets/{walletId}/accounts/{accountId}/addresses/derive
{
  "chainId": "eip155:1",
  "addressIndex": 0
}

Chain Identifiers

We use CAIP-2 chain identifiers:
ChainCAIP-2 IDExample
Ethereum Mainneteip155:10x742d35Cc...
Ethereum Sepoliaeip155:111551110x742d35Cc...
Base Mainneteip155:84530x742d35Cc...
Polygoneip155:1370x742d35Cc...
Solana Mainnetsolana:mainnet7EcDhSYG...
Solana Devnetsolana:devnet7EcDhSYG...

Address Sharing

EVM chains share the same address format. An account’s Ethereum address is the same on Base, Polygon, etc.
Account 0
├── eip155:1 (Ethereum): 0x742d35Cc6634C0532925a3b844Bc9e7595f8fE8d
├── eip155:8453 (Base): 0x742d35Cc6634C0532925a3b844Bc9e7595f8fE8d  ← Same!
└── solana:mainnet: 7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV  ← Different

Listing Addresses

By Account

GET /v1/accounts/{accountId}/addresses

By Wallet

GET /v1/wallets/{walletId}/addresses?chainReference=eip155:1

By Address String

GET /v1/addresses/lookup?address=0x742d35Cc...&chainReference=eip155:1

Address Validation

Validate an address before sending:
POST /v1/addresses/validate
{
  "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f8fE8d",
  "chainReference": "eip155:1"
}
Response:
{
  "valid": true,
  "chainType": "evm",
  "errorMessage": ""
}

Best Practices

  • Use account 0 for primary operations
  • Create separate accounts for different purposes
  • Name accounts descriptively
  • Derive addresses only for chains you need
  • Use address validation before sending
  • Store address IDs for quick lookup
  • Understand EVM address sharing
  • Use CAIP-2 identifiers consistently
  • Test on testnets first