Skip to content

Add a "graduated wallet" reference design #1197

@GBKS

Description

@GBKS

Not sure who came up with it, but I think I've heard about this concept from Matt Corallo. This is essentially a wallet that uses custodial or trusted layers (like ecash) for tiny amounts and then transitions you to self-custody as funds increase (similar to our progressive security principle). Reasons for this to exist are:

  • Make small amounts economically viable by using other layers/services that compromise on self-custody
  • Balance this by providing a built-in path towards self-custody

I think a lot of patterns we have in other reference wallets generally apply:

  • The Daily spending wallet uses both bitcoin and lightning network, and automatically moves user funds to lightning.
  • In Multiple wallets, the user explicitly manages different wallet in the same application, for different purposes as well as different ownership configurations.

So we can probably borrow or link to other sections, but there is also a lot of nuance in this idea here. Some guiding questions might be:

  • What is the point where self-custody becomes economically viable?
  • Can this be generalized or is this unique per user (their transaction and savings behavior)?
  • How often might these transitions between layers happen?
  • How aggressively should the wallet ask users to move funds?
  • Can (should) they be automated? Do we always ask the user for confirmation?
  • How much do users need to understand about each layer? What can be abstracted away?
  • Does implementing custodial solutions have legal/regulatory impact?

If this is really meant to make small amounts economically viable, then fee optimization is probably at the heart of many of these decisions. And fees are really messy. It's a good challenge.

Naturally, I did an AI-brainstorm. So here's where I ended up with Claude after some back and forth. I find it overall helpful, but also a mixed bag in various places.
graduated-wallet-reference-design.md

Before spending more time on this, I'd like to see if there's general interest. What do you think? Is this a good addition to the guide?

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