1. Storage of Keys, Addresses and so on
How precisely is all this saved?
In Normal
Any method that the builders of a specific pockets need. It’s seemingly that totally different wallets retailer their knowledge in another way.
In Bitcoin core, for instance.
The pockets software program named “Bitcoin core” will retailer the personal 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 total derivation paths are explicitly saved. I think about that at the very least the least vital digits must be saved together with every derived tackle. Perhaps somebody can remark.
BDB vs SQLite wallets
The general organisation of this file has modified and is predicated 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 each one addresses are recognized utilizing a path naming conference. Does that imply that each one the paths are saved, and in a situation the place an tackle must be reused, it’s regenerated every time?
These are implementation particulars. I do not understand how 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 in all probability explicitly retailer all generated addresses and paths. Another folks would do one thing very totally different.