Skip to content

feature: Ledger hardware wallet support #148

Description

@tech-adrian

Problem

frontend/src/components/WalletProvider.tsx registers five StellarWalletsKit modules — FreighterModule, xBullModule, LobstrModule, HanaModule, AlbedoModule — all software/browser-extension or mobile-app wallets. None of them support signing from a hardware device; there's no Ledger (or other hardware wallet) integration.

Why it matters

Every deposit/withdraw transaction here moves real value and, for NEXT_PUBLIC_DEV_SECRET_KEY-style local dev aside, relies on a hot-wallet signature. Users holding meaningful shielded balances have no option to keep the signing key on cold/hardware storage, which is a standard expectation for a wallet-grade product handling non-trivial funds.

Scope

  • frontend/src/components/WalletProvider.tsx: register a Ledger-capable module (@creit.tech/stellar-wallets-kit supports a Ledger module the same way it supports the five already wired in).
  • frontend/src/lib/stellar.ts: verify the transaction-signing path handles the async/device-interaction nature of hardware signing (distinct latency/UX from a browser popup).
  • frontend/src/app/deposit/page.tsx, withdraw/page.tsx, compliance/page.tsx: surface a clear "confirm on your device" state while awaiting a hardware signature, since the existing UI is built around near-instant browser-extension confirmation.
  • frontend/src/lib/errors.ts: friendly-error handling for hardware-specific failures (device locked, wrong app open, user rejected on-device).
  • Tests (mocked Ledger transport) covering the connect and sign paths.
  • README.md: document Ledger as a supported wallet option.

Acceptance criteria

  • A user can connect a Ledger device via StellarWalletsKit and complete a full deposit → withdraw cycle signing every transaction on-device.
  • Hardware-specific failure states (locked device, rejection) show a friendly, specific message rather than a generic error.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignenhancementNew feature or requestfrontend

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions