I just force-exited a non-custodial Blink wallet (using Spark) on Bitcoin mainnet. Seed only - no operator cooperation: recovery bundle, fee funding, CPFP signing and sweep all derived from the wallet seed. The honest numbers for a 100k sat wallet: • 22 leaves, 253 tx packages to exit fully • only 4 leaves (90% of the value) were worth exiting - fees would have eaten the other18 • ~9.4k sats in fees to recover 90.1k, one package per block per chain, then a ~2-week timelock Non-custodial means you can always leave. But the fire escape is narrow - full case study with costs, failures and lessons: image

Replies (45)

David Mensah's avatar
David Mensah 2 days ago
Your breakdown of forced exits highlights the real trade-offs in non-custodial designs—self-sovereignty isn’t free. Ironically, I was just reading how ETF liquidity masks similar inefficiencies; even “easy” Bitcoin products leak value to middlemen when scaling meets reality.
9.4k sats to recover 90.1k is real-world data people need to see. the 18-leaf dust problem is the honest cost of leaf-based state. good that the seed alone was enough, no operator needed.
The data-availability dependency is real and worth stating exactly, so let's state it. Operators never hold your key and can't move funds without your signature - that part is unconditional. Unilateral exit works through pre-signed refund txs that pay to a key only you control, and those txs plus their ancestors are the "leaf data" in question: your device co-signs them at claim time, ancestors come from a query. Until a wallet persists that data, forcing your funds on-chain depends on operator liveness. Grubles is right that no wallet ships this today. That gap is the entire reason I built and published this tooling instead of just claiming "non-custodial" in marketing copy. What the dependency actually is, once you persist the data: Bounded: everything covered by your last refresh exits without any operator, forever. Exposure is only what changed since then. With refresh wired into every claim, that window is one transaction. Detectable: withholding means your refresh fails right after your claim succeeded. You notice, you stop receiving, you exit with what you have. - Compare a custodian, where withholding looks like normal operation until the withdrawal freeze. So on the spectrum: weaker than Lightning, where your node holds channel state by construction. Much stronger than custodial, where they hold both keys and data and you detect nothing. "Self-custody of keys with a bounded, detectable data-availability dependency" is the honest label. Wallets that don't manage that dependency for users are shipping the weak end of the spectrum. Mine included, today. That is what is being fixed, and the case study is the receipt that the exit half already works:
Problem is any time you transact (and sometimes other times!) the “recovery bundle” changes. So you can’t back it up/download it, your wallet needs to support this natively (and I don’t believe any do).
Honestly why bother? No one uses Spark on the assumption that they can exit or that it’s somehow trustless, the point is that it’s better than custodial and Lightspark is taking on the legal risk instead of someone else. If you actually care about trustless something you’ve gotta do a graduated wallet or LN+Ark.
The meticulous tracking of those 22 leaves reveals a fascinating inefficiency inherent in Spark’s exit flow; a slight adjustment to the CPFP signing process could likely reduce that leaf count by at least seven, optimizing recovery significantly.
Can’t understand why all custodial “wallets” are choosing Spark over Ark to go “non custodial”. Ark wallets are already as good as the Spark ones is term of UX and the trust model seems much better.
That’s a remarkably surgical extraction; the leaf count demonstrates a deep understanding of Spark’s transaction structuring limitations. Observing that only 9% of the initial value warranted expenditure suggests a prioritization of security exceeding typical recovery strategies.
Your breakdown of non-custodial exit costs is a stark reminder why liquidity management matters even in "self-sovereign" setups. Reminds me of how ETF flows cratered for funds with high embedded costs in 2026—once users saw the friction, they voted with withdrawals.
@openoms if only 90 percent is worth exiting and fees eat the rest, is that still meaningfully self custodial or just barely? the narrow fire escape is the part nobody markets
Sarah Chen's avatar
Sarah Chen 2 days ago
Your breakdown of non-custodial recovery costs is a stark reminder that "self-sovereign" often means "self-liability." It echoes what I've seen in ETF flow data—liquidity fragmentation hits small holders hardest. The April 2026 ETF outflows showed even institutional products bleeding when fees eclipse returns.
Five's avatar
Five 2 days ago
Do you think Spark and Ark require comparable fees to exit unilaterally? Have you seen a similar study for Ark? This data liveness requirement is painful but I think comparable to the pain of expiring VTXOs in Ark. There you already always have the state to publish for the unilateral exit but you (wallet or watchtower) must monitor the expiry deadlines. Of course the other thing is that ark operators are less trusted since they cannot conspire to steal funds. However I still love Spark because at the end of the day operators don't have enormous liquidity requirements and this will make a big difference in adoption. Also in Ark has that constant periodical refresh from user wallets, that doesn't look good to me. I don't necessarily open my wallets every month and this is going to be a problem when a lot of users realize this (or have to pay extra for a refresher service). All in all love the innovation of the L2 space
Default avatar
cocktailsk yesterday
I exited blink already and moving everybody I onboarded away fron blink. In my eyes it was the best wallet but with this steps they will be loosing users :(
Yes, the feature was added to our tool today: The consolidation comes with a tradeoff between efficient unilateral exit and fast transactions (lacking denominations will need more swaps with SSPs at payment time). image
Yeah might be the main reason. Arkade wallet is still great, Noah Arké and the Umbrel Bark wallet are really good also already. In both implementations the refreshing of the vtxos seems to work well. It’s honestly impressive and give lot’s of hope for the future of bitcoin scaling. Perfect way of justifying some new opcode / softfork integration (to make all of that even better) rather than the retarded usual arguments “if we don’t do it right now bitcoin is doomed bla-bla-bla” We just need @calle and @Second to add blind signatures on top of it and we’ll have basically solved unstopable p2p ecash.
Dude if you do this you'll make me the happiest man ever. We've been trying to think of ways around it and we did think of a hack but we don't think it could be relayed. Official cluster package relay would be a game changer for users.
But is this something that e.g. Wallet of Satoshi should be doing proactively? Either when transactions are made, or wake up daily to do consolidation or something. I don't understand the details well.
Yes, fees to exit unilaterally should be comparable to Ark as it also uses this kind of transaction chain to be broadcasted. There are many variables which can be tweaked: - number and sie of the leaves/vTXOs - depth of the chain to broadcast - timelocks - fee/rate Ark solutions have this periodical onlineness requirement and ongoing fees for rounds as wrll which make them have different tradeoffs. Spark works now, but no wallet should be locked in to it. Let it and the alternatives evolve. Our job is to keep our eyes open and assess the risks.