Currently the wallet module is one big black box, ok-ish for our standard purposes, but pretty bad as soon as you need something out of the ordinary. On top of that it doesn't help light client developers in building their offline wallet, given nothing is exposed, and thus no logic can be reused.
This strikes as odd to me, given that the concept of a wallet is pretty simple and shouldn't really differ that much whether is the wallet of a full node, a light client or anything in between or else.
- What is a wallet?
- What are the different parts of a wallet?
- ...
All questions to be answered using the docs and our knowledge that might help with this. On top of that it might also be worth to (again) investigate the current wallet standards (think BIP32) and see if can perhaps integrate them in our wallet design, as an alternative option. Existing wallets should still work as they are I would think.
As a first phase it would already be nice if a refactor can flow out of this issue, that gives us a nice wallet pkg, on which the wallet module is built, but also a light client can flow out off.
On top of that it is probably also time that the wallet starts to have its own persistent DB so it doesn't have to sync from scratch each time, reducing the startup time of daemons (plain or encrypted-but-unlocked).