Docs
Supported ChainsBoba NetworkJSON-RPC APIAccount Methods

eth_accounts - Boba Network RPC Method

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

Returns a list of addresses owned by the client on Boba Network.

Why Boba Network? Build on the Hybrid Compute L2 enabling smart contracts to access AI models and Web2 APIs natively with HybridCompute 2.0 for native AI/API access, $70M ecosystem funding, OP Stack compatibility, and two-way offchain integration.

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 AI dApp developers, enterprise integration teams, and builders requiring offchain compute access 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-boba-mainnet.n.dwellir.com/YOUR_API_KEY \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_accounts",
    "params": [],
    "id": 1
  }'
JavaScript
// Using fetch
const response = await fetch('https://api-boba-mainnet.n.dwellir.com/YOUR_API_KEY', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    jsonrpc: '2.0',
    method: 'eth_accounts',
    params: [],
    id: 1
  })
});

const { result } = await response.json();
console.log('Accounts:', result);

// Using ethers.js
import { JsonRpcProvider } from 'ethers';

const provider = new JsonRpcProvider('https://api-boba-mainnet.n.dwellir.com/YOUR_API_KEY');
const accounts = await provider.listAccounts();
console.log('Accounts:', accounts);
Python
import requests

def get_accounts():
    response = requests.post(
        'https://api-boba-mainnet.n.dwellir.com/YOUR_API_KEY',
        json={
            'jsonrpc': '2.0',
            'method': 'eth_accounts',
            'params': [],
            'id': 1
        }
    )
    return response.json()['result']

accounts = get_accounts()
print(f'Accounts: {accounts}')

# Using web3.py
from web3 import Web3

w3 = Web3(Web3.HTTPProvider('https://api-boba-mainnet.n.dwellir.com/YOUR_API_KEY'))
print(f'Accounts: {w3.eth.accounts}')
Go
package main

import (
    "context"
    "fmt"
    "log"

    "github.com/ethereum/go-ethereum/rpc"
)

func main() {
    client, err := rpc.Dial("https://api-boba-mainnet.n.dwellir.com/YOUR_API_KEY")
    if err != nil {
        log.Fatal(err)
    }

    var accounts []string
    err = client.CallContext(context.Background(), &accounts, "eth_accounts")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Accounts: %v\n", accounts)
}

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;
  }
}