Docs
Supported ChainsTempoJSON-RPC APIAccount Methods

eth_accounts - Tempo RPC Method

Returns a list of addresses owned by the client on Tempo. Typically returns an empty array on public RPC endpoints.

Returns a list of addresses owned by the client on Tempo.

Why Tempo? Build on a payments-first EVM chain with deterministic settlement and stablecoin-native fees with no native gas token, fees denominated in supported USD stablecoins, and full EVM RPC compatibility.

Important Note

On public RPC endpoints like Dwellir, eth_accounts returns an empty array because the node does not hold any private keys. This method is primarily useful for:

  • Local development nodes (Ganache, Hardhat, Anvil)
  • Private nodes with managed accounts
  • Wallet provider connections (MetaMask injects accounts)

When to Use This Method

eth_accounts is relevant for payment application developers, wallet teams, stablecoin issuers, and treasury automation builders in specific scenarios:

  • Development Testing — Retrieve test accounts from local nodes
  • Wallet Detection — Check if a wallet provider has connected accounts
  • Client Verification — Confirm node account access capabilities

Request Parameters

Request

This method accepts no parameters.

Response Body

Response
resultArray<DATA>

List of 20-byte account addresses owned by the client

Code Examples

Bash
curl -X POST https://api-tempo-mainnet.n.dwellir.com/YOUR_API_KEY \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_accounts",
    "params": [],
    "id": 1
  }'

Common Use Cases

1. Development Environment Detection

Check if running against a development node with test accounts:

JavaScript
async function isDevEnvironment(provider) {
  const accounts = await provider.listAccounts();
  return accounts.length > 0;
}

const isDev = await isDevEnvironment(provider);
if (isDev) {
  console.log('Development environment detected');
}

2. Wallet Connection Check

Verify wallet provider has connected accounts:

JavaScript
async function checkWalletConnection() {
  if (typeof window.ethereum === 'undefined') {
    return { connected: false, reason: 'No wallet detected' };
  }

  const accounts = await window.ethereum.request({
    method: 'eth_accounts'
  });

  return {
    connected: accounts.length > 0,
    accounts: accounts
  };
}

3. Fallback Account Selection

Use first available account or request connection:

JavaScript
async function getActiveAccount() {
  // Check existing connections
  let accounts = await window.ethereum.request({
    method: 'eth_accounts'
  });

  // Request connection if no accounts
  if (accounts.length === 0) {
    accounts = await window.ethereum.request({
      method: 'eth_requestAccounts'
    });
  }

  return accounts[0] || null;
}

Error Handling

Common errors and solutions:

Error CodeDescriptionSolution
-32601Method not foundNode may not support this method
-32603Internal errorRetry with exponential backoff
JavaScript
async function safeGetAccounts(provider) {
  try {
    const accounts = await provider.listAccounts();
    return { success: true, accounts };
  } catch (error) {
    if (error.code === -32601) {
      console.warn('eth_accounts not supported on this node');
      return { success: false, accounts: [], reason: 'unsupported' };
    }
    throw error;
  }
}