1. Storage of Keys, Addresses and many others
How precisely is all this saved?
In Basic
Any method that the builders of a selected pockets need. It’s seemingly that completely different wallets retailer their knowledge otherwise.
In Bitcoin core, for instance.
The pockets software program named “Bitcoin core” will retailer the non-public keys within the pockets.dat
file within the specified or default knowledge listing. The default is %APPDATA%/Bitcoin/
or ~/.bitcoin/
relying on platform. If a pockets password is supplied, the important thing knowledge is saved in encrypted type with the password being the encryption key (probably not directly and doubtless utilizing AES IIRC).
The addresses generated are saved in the identical file however needn’t be encrypted.
I do not know if the complete derivation paths are explicitly saved. I think about that no less than the least important digits should be saved together with every derived handle. Perhaps somebody can remark.
BDB vs SQLite wallets
The general organisation of this file has modified and relies on easy key-value database libraries, initially Berkeley-DB (BDB) and extra not too long ago SQLite AFAIK.
Descriptor vs non-Descriptor wallets
The keys and values have modified from the unique type to a “descriptor” type. So there are non-descriptor wallets and descriptor wallets.
HD vs non-HD wallets
There was additionally a change to Hierarchical Deterministic (HD) wallets from the unique non-HD pockets.
2. Derivation Paths
I see that every one addresses are recognized utilizing a path naming conference. Does that imply that every one the paths are saved, and in a situation the place an handle must be reused, it’s regenerated every time?
These are implementation particulars. I do not know the way Bitcoin core or different wallets deal with this and I consider anybody writing a pockets ought to make their very own choices.
If writing a pockets app, I might most likely explicitly retailer all generated addresses and paths. Another individuals would do one thing very completely different.