Skip to main content
Version: 0.4.0

dApp Approval

When a dApp requests your accounts or asks you to sign a transaction, TezosX Wallet opens a dedicated approval window for your consent. No dApp action is taken until you explicitly approve.

When approvals are triggered

dApp callApproval type
eth_requestAccountsConnection request
eth_sendTransactionTransaction request
All other methodsPass-through (no approval needed)

Connection request

A site calling eth_requestAccounts is asking for permission to know your EVM address.

The approval window shows:

  • Origin — the requesting site's hostname (e.g. app.uniswap.org)
  • What it gets — your EVM alias (0x…); never your seed phrase or secret key
  • Approve / Reject buttons

If you approve, the wallet:

  1. Stores a StoredSession (origin, tz1, evmAlias, chainId, connectedAt) in chrome.storage.local
  2. Returns [evmAlias] to the dApp

If you reject, the dApp receives an EIP-1193 error 4001 — User rejected the request.

Transaction request

A site calling eth_sendTransaction is asking you to sign and broadcast a transaction.

The approval window shows:

  • Origin — the requesting site
  • To — destination address
  • Value — amount in XTZ
  • Data — raw hex calldata (if any)
  • Method — decoded method signature if resolvable (e.g. transfer(address,uint256))
  • Approve / Reject buttons

If you approve, the wallet signs the L1 operation via LocalSignerClient and returns the synthetic transaction hash to the dApp.

Approval window lifecycle

The approval window is a separate Chrome popup (not the extension popup). It has its own URL (approve.html?requestId=…) and is closed automatically after the decision.

What if I close the window?

If the approval window is closed without a decision (e.g. by clicking the system close button), the pending request remains in the queue. The dApp's promise will not resolve until:

  • The wallet is locked (triggers rejectAll(), which rejects all pending requests with 4001)
  • The service worker restarts (same effect)
Pending requests on lock

Locking the wallet immediately rejects all pending approvals. Any dApp waiting for a response receives error 4001 — User rejected the request.