Skip to content

WalletConnect: Cannot connect to Solana dApps (e.g. jup.ag) — missing Solana namespace in session proposal handler #121

@illithics

Description

@illithics

Summary

When attempting to connect KeepKey Vault (v1.2.16) to a Solana dApp (e.g. jup.ag) via WalletConnect QR code, nothing happens — the session is silently rejected.

Steps to Reproduce

  1. Open jup.ag → Connect Wallet → WalletConnect
  2. Copy the WalletConnect URI / scan QR code into KeepKey Vault
  3. Nothing happens — no approval prompt, no error, no session established

Root Cause

The onSessionProposal handler in the WalletConnect manager only registers eip155 (EVM) in supportedNamespaces:

const namespaces = buildApprovedNamespaces({
  proposal: proposal.params,
  supportedNamespaces: {
    eip155: {
      chains: SUPPORTED_CHAINS,
      methods: SUPPORTED_METHODS,
      events: SUPPORTED_EVENTS,
      accounts
    }
    // ← no solana namespace
  }
});

Jupiter proposes a solana namespace. buildApprovedNamespaces throws because it cannot match the required namespace, the catch block fires, and the session is silently rejected. The user sees nothing.

Expected Behavior

Vault should support the solana WalletConnect namespace since:

  • KeepKey firmware supports Solana (Experimental policy enabled)
  • POST /addresses/solana successfully returns a Solana address
  • Solana address derivation works end-to-end on the device

Proposed Fix

Add a solana namespace to supportedNamespaces in the session proposal handler:

supportedNamespaces: {
  eip155: {
    chains: SUPPORTED_CHAINS,
    methods: SUPPORTED_METHODS,
    events: SUPPORTED_EVENTS,
    accounts: evmAccounts
  },
  solana: {
    chains: ['solana:mainnet'],
    methods: ['solana_signTransaction', 'solana_signMessage'],
    events: [],
    accounts: [`solana:mainnet:${solanaAddress}`]
  }
}

Environment

  • Vault version: 1.2.16
  • Firmware: 7.14.0
  • Experimental policy: enabled
  • OS: macOS
  • dApp tested: jup.ag

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions