Hello,
I made a post on Delving Bitcoin
describing a file format for importing and exporting descriptor-based
wallets. After further discussion, I believe it is suitable to propose
as a BIP, and I am seeking further feedback.
Motivation
As
to not simply repeat the motivation section in my reference
implementation, I will try to include some new thoughts after leaving
this proposal alone for a while. Inheritance is a difficult problem when
considering heirs that may not be technically apt. There are many
services indeed that build around a smooth inheritance model, yet these
entities may also terminate operations in the future. My feeling is the
missing component of truly robust inheritance is an open standard for
backing up wallet data. Mnemonic phrases are great, however a set of
mnemonics is not sufficient to recover the descriptor for any number of
potential configurations.
A simple file type to backup the
public metadata about a wallet, potentially including directions, notes,
and public descriptor data, would alleviate challenges for heirs when
attempting to recover funds. Further still, the file would also allow
interoperability between semi-custodial services that offer inheritance
services. One service may fall as another one rises, but customers may
simply export their wallet metadata with a few clicks if contained in a
file. Importantly, an heir need not know what a descriptor is, only that
their benefactor has given them the specified file.
Implementation
I
wrote a reference implementation in Rust with the link contained in the
Delving Bitcoin post. After further thought, I am thinking it makes
more sense to closely follow, or even adopt, the data encoding used in
PSBT. Reading and writing to files should be made as easy as possible
for developers, so I believe a simple key-value mapping would see the
most adoption.
Thank you for reading, and if you have further feedback or would use such a file for managing a wallet, please let me know!