The signing boundary
The extension is a transport + signer provider, never a wallet backend. The only step that touches keys happens on the isolated signer.
Layers
1
DApp
Owns business logic, RPC, and broadcasting. Sends signing requests through EIP-1193 or wallet-standard.
2
Extension
Transport and signer provider, not a wallet backend. Converts native requests into a unified SignerRequest, renders intent, and relays text / QR / signatures.
3
Isolated signer
CLI (local key, passphrase-protected) or offline phone / Trezor. Holds the private key and performs the cryptographic signature.
Request flow
Request→Understand→Confirm→Sign→Return signature
Unified request
Both chains share one SignerRequest shape; chain adapters translate native calls.
| Field | Type | Description |
|---|---|---|
| version | number | Protocol version |
| chain | ethereum | solana | Chain family |
| chainId | string | Chain identifier |
| address | string | Signing address |
| type | transaction | message | typedData | What to sign |
| payload | string | Chain-specific payload |