Docs
Supported ChainsManta PacificJSON-RPC APIAccount Methods

eth_accounts - Manta RPC Method

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

Returns a list of addresses owned by the client on Manta Pacific.

Why Manta? Build on the modular ZK L2 with Celestia DA delivering the lowest fees for 200+ dApps with first L2 on Celestia mainnet, ZK-as-a-Service via Universal Circuits, Polygon CDK integration, and modular OP Stack architecture.

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 ZK application developers, privacy-focused builders, and teams requiring modular scalability 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-manta-pacific-archive.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-manta-pacific-archive.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-manta-pacific-archive.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-manta-pacific-archive.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-manta-pacific-archive.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-manta-pacific-archive.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;
  }
}