Avatar
Matt Corallo
3d2e51508699f98f0f2bdbe7a45b673c687fe6420f466dc296d90b908d51d594
10th known contributor to Bitcoin Core. Now Full-Time Open-Source Bitcoin+Lightning Projects at Spiral (Part of Block).

While I agree with you in principle, “the customer is always right”, and landing a perfect first-transaction UX is really important. Ultimately, today, I thing that means the only thing we can actually build that’s self-custodial (at least for the right balance) is a graduated wallet.

I don’t find the “fee credit” system interesting for a consumer product at all (and I guess ACINQ broadly agrees given they don’t use it in Phoenix). The first payment is *the* experience that a wallet has to get right (and then every other payment but the first one matters a lot). If the first payment is just “thanks for the money, we’re keeping this to pay for fees in the future” I don’t buy that people would keep using that wallet.

Phoenix refuses first-receives under a threshold and generally has relatively high fees due to liquidity allocation and on-chain costs. Graduated wallets allow the LSP to allocate substantially less liquidity and allow the first receive to be as low as a zap. It’s a much better UX if you get all the pieces working.

Trust me I really want to flip the switch and use Cashu not Spark, but the available mints are just not that compelling.

It’s still a private gh repo while a few more bits are finished.

Except then you’re building a cashu wallet not a bitcoin wallet. If you want to display a standard receive QR code that every bitcoin wallet can deal with (ie lightning), you have to pick the mint.

There’s tons of wallets for advanced users to do all kinds of things. I’m not super interested in building another.

Then I don’t see how I can reasonably set that as a default targeting end-users who shouldn’t have to have any idea what “ecash”, let alone “lightning” or any other weird Bitcoin jargon means. Let me know when there’s a real mint option and I can use that.

No, specifically, which one. Please give me a URL and a description of who operates it and why you think they’ll still be operating it in a year or two.

I would too, but I don’t know how to configure a wallet by default for a user who doesn’t know anything about “ecash”. Give me the mint URL I can hard-code that we’re both confident will still work in a year and I’ll change it.

Companies willing to take on the regulatory risk of being kinda-custodians or multisig-custodians.

Well, I tried, but damus won’t let me copy the invoice and primal won’t let me open an outside wallet at all. You got whatever was in my custodial primal wallet tho lol.

I was pressured into it

In order to ensure competitive fees, balances under some threshold (eg $20) are stored in a trusted/custodial wallet (in this case Spark, but it could equally be Liquid or Arkade or whatever) and as soon as you receive more you get a channel from an LSP and the coins are stored in self-custody.

At the beginning of 2025, I mentioned in a number of places that I thought during 2026 we’d get to the point where building your own highly competitive self-custody bitcoin wallet would be doable with an LLM during the year.

Sadly, what mostly happened instead is that wallet developers continued to double-down on fully trusted and custodial platforms, further centralizing Bitcoin and bringing pervasive censorship on Bitcoin closer to reality.

Still, we did (almost) deliver the software required to bring the original claim to bear, with a full graduated wallet in a simple library allowing wallets to offer highly competitive fees and overall UX being close to ready…if anyone wanted it.

I spent a few days over the holidays testing it out, having an LLM build me a native iOS graduated wallet, and it nearly entirely works, basically only missing some bugfixes and the ability to store and display transaction descriptions. At least we built it.