decision: a defective xprv wallet is told to use other software, but we hold the only key and will not export it #255
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
#247 has landed. It tells the user of a non-master-
xprvwallet, accurately, that their addresses "are still reachable by software that repeats the same non-standard derivation" — and in the same change it blocks Export Private Key for that wallet.So the app names the recovery route and then withholds the only thing needed to take it. The user's key is sitting encrypted in our storage; no other copy exists unless they kept the original xprv.
Raised by the independent review of that PR. Blocking export is defensible and consistent with disabling signing — a defective wallet should not be handing out key material through a path whose error handling was written for a different case. But the combination is a dead end for the user, and this is a wallet, so a dead end means funds nobody can reach.
Options
Recommendation
(b), with (c) as the honest cheap option. Per-address keys are what someone recovering funds actually uses, and exporting them does not require trusting our broken tree — we derive, show, and the user sweeps. (a) hands over more than is needed. (d) leaves the app pointing at a door it locked.
Note this is only reachable by users who imported a non-master xprv before #210 landed, which may be nobody. If you believe that population is empty, (c) is clearly right and cheap.
Not blocking anything; #247 is merged and the current state is safe, just possibly a dead end.