Session Proposal
User Flow
User visits application that requires to connect wallet
- App displays qrcode or deep link to connect wallet
- User scans qrcode or redirects to wallet
- User approves session proposal from App
- User returns to app after success prompt
- App receives accounts and namespaces from Wallet
- App sends request to sign transaction or message
- User redirects to wallet to inspect request
- User approves transaction or message request
- User returns to app after success prompt
- App receives transaction confirmation or signature
Proposal Protocol
Prerequisites
Wallet and Dapp are required to establish pairing P before proceeding to Sign protocol execution.
Protocol
Proposal protocol will be established as follows:
- Dapp sends session proposal on pairing P with publicKey, relay, permissions and metadata
- Wallet receives session proposal with required namespaces and public key X on pairing P
- Wallet generates key pair Y
- Wallet settles session with symmetric key derived with keys X and Y
- Session topic B key is derived from sha256 hash of session's symmetric key
- In parallel:
- Wallet sends settlement payload to topic B with metadata, namespaces and public key Y
- Wallet sends proposal response on pairing P with publicKey Y
- Dapp receives propose response on pairing P
- Dapp settles session with topic B using derived key
- Dapp receives settlement on topic B
- Dapp sends acknowledgment on topic B