Den 12 mar 2015 17:48 skrev "Mike Hearn" <mike@plan99.net>:
>>
>> b) "Creation date" is just a short-term hack.
>
>
> I agree, but we need things to be easy in the short term as well as the long term :)
>
> The long term solution is clearly to have the 12 word seed be an encryption key for a wallet backup with all associated metadata. We're heading in that direction one step at a time. Unfortunately it will take time for wallets to start working this way, and all the pieces to fall into place. Restoring from the block chain will be a semi regular operation for users until then.
This have been mentioned a few times before, and what I think is necessary is to create a common file format that can be interpreted by a library which all wallets can use. I see it as similar as the work to create libconsensus for parsing the blockchain.
We need something extensible that can describe how to derive all addresses used by the user. What HD branches to derive and how, with block numbers (or bloom filters of block hashes or similar) to note where all previously known transactions related to the wallet have occurred, and the last known block (so only new blocks need to be scanned).
A way to describe one HD tree as a multisignature wallet tied to a hardware wallet if you have that (could include serial number or MAC of the device for simple identification by the wallet client). A way to describe another set of addresses as using a custom extension. A way to denote one private key as being used for stealth addresses together with details for how to identify the transactions (prefix, mailbox to look in, etc). Labels for transactions. P2SH script templates so those addresses can be recovered. A way to describe Copay style multisignature wallets and what server to use for coordinating with the other coowners. A way to describe threshold crypto group signature wallets and how to coordinate. Computer parsable descriptions of HD branches as change addresses, as being used for receiving payments in merchant payment systems, etc... Also, you should really be talking to people like accountants and auditors to see what features they'd like to see when it comes to things like how company wallets could have rules defined for how to use the various HD branches.
And so on... I think you get my point by now.
The basic idea is that the wallet uses the library to parse the wallet file and tells the user which sections it understands (can't expect all wallets to handle custom extensions or stealth addresses, etc), then proceeds to scan the blockchain for those addresses. Then the user also won't be surprised that not all funds are found and won't think they're lost.
I think it should be referred to as an import/export format, more than as a backup format.
You always want the most recent metadata the wallet of origin can provide when importing, to reduce unnecessary extra work. You don't want really old backup files. If people add new seeds and various new extensions that can't be automatically recovered from old wallet backups, they need new backups. You might as well use the wallet's own internal formats for backup, as the wallet developer might better know how to optimize for the use cases he have designed for. But at the same time we should ask wallet developers to offer conversion tools to generate export format files from custom wallet data files.