Skip to content

Feature Request: Implement a “savings” / cold storage wallet module #439

Closed

Description

@SeedSigner

Problem to be solved:

As individual bitcoin savers’ balances grow, and as they learn more about bitcoin storage best practices, they will eventually seek out “cold” storage solutions for a portion of their bitcoin holdings.

Proposed solution:

Implementing a separate “savings” wallet module would give users an independent custody option that allows them to store a self-designated portion of their bitcoin using one or more offline, self-managed private keys.

Offering this wallet module within the existing app would allow users to move funds between a “savings” wallet module and their pre-existing Galoy lightning & on-chain wallets. An analogue to this arrangement might be “pocket-money” (lightning) vs. “checking account” (hosted on-chain wallet) vs. “savings account” (independent custody wallet).

Integration mechanism:

SeedSigner (as well as other wallets/signing devices such as Specter DIY, Foundation Passport, & Keystone) uses a QR-exchange process to communicate transaction information between an online device that interacts with the bitcoin network (in this case the Bitcoin Beach Wallet) and an offline device that interacts with a user’s private keys (such as SeedSigner).

This QR exchange process is an intentionally narrow means of communication that serves to help minimize a wallet / signing device’s attack surface. An advantage of this means of communication is potential compatibility with virtually any smartphone or computer without any kind of adapters or other specific features required.

Additional integration benefit:

SeedSigner’s (and Specter DIY’s) unique “stateless” design approach further potentially allows a single device to be used to manage multiple private keys, that can in turn be associated with multiple single- and/or multi-signature wallets. This unique characteristic thus potentially allows a single signing device to be shared by multiple trusted or semi-trusted users, each presumably with their own mobile phone.

Example workflow (for a single-signature “savings” wallet):

  • User opts to create a “savings” wallet within the Bitcoin Beach Wallet (BBW) interface
  • BBW prompts the user to name the wallet & input other configuration details
  • BBW prompts the user to input an Extended Public Key (XPUB)
  • User generates an XPUB with SeedSigner, which is displayed on the screen as a QR code
  • User uses their phone’s camera to capture the QR code displayed on the SeedSigner screen
  • With the XPUB entered, the initial wallet configuration process is now complete
  • User can subsequently generate receive addresses, make deposits, & track their balance within the BBW without access to a signing device
  • When a spend is desired, user will enter the destination address & desired spend into the “savings” wallet interface
  • BBW will generate a Partially Signed Bitcoin Transaction (PSBT) and encode the data into animated QR code frames, which are then displayed on the phone’s screen
  • User enters their private key (with BIP39 passphrase if necessary) into the SeedSigner
  • User scans the PSBT data from their phone’s screen into the SeedSigner
  • User reviews and confirms the proposed transaction information within SeedSigner
  • User approves the spend, SeedSigner generates and inserts the necessary signatures into the PSBT, and then generates and displays new animated QR frames including the signatures
  • User uses their phone’s camera to capture the QR codes displayed on the SeedSigner screen
  • BBW recognizes the necessary signatures, prompting the user to confirm the final step of the process, which is broadcasting the transaction to the bitcoin network

Approximation of the example workflow using BlueWallet (narration in Portuguese):

https://youtu.be/tIGFgrN1aQ8

Development resource to leverage:

https://github.com/BlueWallet/BlueWallet (also developed with React Native)

Challenges:

  • Low current demand for this feature (though if adoption grows, this need is coming)
  • Finding / incentivizing the necessary volunteer development resources
  • Finding / incentivizing the necessary design skills for an optimal integration
  • Crafting the optimal user experience for the “savings” wallet interface
  • Implementation will require the careful crafting of framing, workflows & general user education related to cold storage & private key management
  • Users have the potential to mismanage / lose private keys, potentially resulting in a loss of funds

Opportunities:

  • Users can trustlessly manage their long term bitcoin savings
  • Users can manage all of their “accounts” within a single app
  • Galoy does not lose “customers” when they are ready for cold storage
  • Collaboration with “Bitcoin Design Guide” community could be a valuable resource for interface design consultation
  • Bitcoin bounties may be a useful tool to incentivize the right collaborators
  • Opportunity for a “collaborative custody” offering similar to Unchained’s model

Activity

  1. locked and limited conversation to collaborators on Apr 22, 2023
  2. converted this issue into a discussion #2059 on Apr 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions