Recent events made me realize that we really need to do this. Binding development of the core network infrastructure to development of a wallet gives people the wrong impression.
Also it gets us all kinds of end user concerns and bike-shedding in this project, which distracts from core infrastructure work.
What concretely needs to be done here? At least
- Factor out parts needed by both the bitcoind and the wallet into a library (basically the current libbitcoin_common + libbitcoin_server).
- Install .h files and .a/.so files in a way that they can be used by another project
- Create a new project on github for this library? Or just build it as part of this repository for now?
- Create a new project on github under bitcoin,
bitcoin-core-wallet
, move the wallet specific parts to here (libbitcoin_wallet, wallet specific tests, wallet GUI code). This project uses the aforementioned library. - The wallet should be able to work as SPV client, at least with a trusted bitcoind instance. Headers-first is a move in this direction.
- Wallet GUI should be changed to be able to launch a bitcoind process in the background (an option which defaults to on) and stop it when shutting down. This keeps the user experience consistent.
- Gitian build / release process should build and ship both projects.
Some of these steps can be done independently of each other.
Anything I forgot? Please keep discussion to concrete development.