Skip to content
wallet.page

Connect

Every dapp interaction starts here. Before any RPC call can go out, you need an EIP-1193 provider and at least one connected address. This page covers both: how to discover which wallets are present, and how to request access once the user picks one. The connection established here is shared across the entire site.

Connect a wallet

Connect

Choose a provider, then the site calls eth_requestAccounts on that object.

No providers yet — install a wallet extension and use Request providers below.

EIP-6963

Listen for eip6963:announceProvider, then dispatch eip6963:requestProvider so wallets re-announce.

Announce payloads (0)
[]

What dapps should avoid

  • Assuming window.ethereum — Only one injected provider wins the global slot; users with multiple extensions installed may never see the wallet they actually want to use. Use EIP-6963 instead.
  • Reconnecting on every page — Hold one provider and account pair for the whole origin. This site does exactly that via shared session state.
  • Treating all errors the same — "User rejected the request" and "no wallet detected" call for different copy, different next steps, and different retry logic.
  • Blocking the UI — Show connection state inline; don't trap users in a modal with no escape path.

Connection transports

WalletConnect and similar relay products route sessions through hosted infrastructure. They're useful for mobile or cross-device flows, but we don't recommend them as the default desktop path when a local extension or a direct peer-to-peer protocol is available.

openlv is open source and shows up in the provider list above as a local, peer-to-peer EIP-1193 provider — no window.ethereum overwrite, no vendor relay in the middle.

Wallet discovery

EIP-6963: Multi Injected Provider Discovery replaces the race for window.ethereum. Each installed wallet announces itself via a pair of window events rather than clobbering a shared global:

  1. The dapp listens with window.addEventListener("eip6963:announceProvider", …) and stores each event.detail ({ info, provider }) as wallets arrive.
  2. The dapp dispatches new Event("eip6963:requestProvider") to prompt wallets that loaded before the listener was registered to re-announce.

That's the full handshake. The connect panel above runs it automatically on load. Use Request providers to fire the request event again, and expand Announce payloads to inspect each wallet's info object (name, icon, rdns, uuid).