Skip to content
wallet.page

Addresses

When a user connects their wallet to your dapp, they're granting you access to one or more of their Ethereum accounts. What you receive is an array of addresses — and that array is the foundation of almost everything else you'll build. Every balance check, transaction, signature request, and permission grant flows from knowing who is on the other end of the connection.

your dapp
Connected accounts
1Account 10x3f5C…f0bE
2Account 20x742d…6B1f
3Account 30xAb84…5cB2
MetaMask0x3f5C…f0bE
eth_requestAccounts() → string[]
  1. 00x3f5CE5FBFe3E9af3971dD833D26BA9b5C936f0bEaccounts[0]
  2. 10x742d35Cc6634C0532925a3b8D4C9e6A6b5a96B1f
  3. 20xAb8483F64d9C6d1EcF9b849Ae677dD3315835cB2

The wallet exposes this through two JSON-RPC methods that return the same shape but behave differently: one silently reads what's already been approved, the other can prompt the user for access.

MethodPrompt?Typical use
eth_accountsNoRead addresses already shared with this origin
eth_requestAccountsYes, if neededConnect — prompt the user to share at least one account

Order within the array is defined by the wallet.

eth_accounts

Reads addresses already shared with this origin — no prompt, no permission flow. Returns an empty array until the user has connected; returns the full list of granted addresses once they have.

RPC: eth_accountsstring[]

eth_requestAccounts

The standard connection trigger. Prompts the user if this origin hasn't been granted access yet, or returns immediately if it already has. Either way, the response is the same array of addresses the user approved.

RPC: eth_requestAccountsstring[]