Author: William Swanson Date: To: libbitcoin Subject: [Libbitcoin] Adding stuff to libwallet
Hello,
The company I work for, AirBitz, is building a wallet app around
libbitcoin. I have the library compiling on both iOS and Android,
along with all its dependencies, and the phone simulator can now query
the testnet via an external obelisk server. Now that compiling is
squared away, I am moving in on the wallet functionality itself.
Unfortunately, libbitcoin & friend are missing a few useful features,
such as a bip-0021 URI parser/writer, or a bip-0032 hierarchical
deterministic key generator. While I could write these things into our
proprietary codebase, I would much rather put them into the
open-source libwallet library where they can benefit others. I don't
want to just dump a bunch of patches on the mailing list with no
discussion, though, so I want to start the dialogue early. Would
libwallet be the correct place to put code like this?
Besides the bips, our app also needs a "wallet watcher" service which
sits on the obelisk connection and watches/queries for new incoming
transactions on a chain of bip-0032 wallet addresses. Would this be
something that makes sense to put in libwallet as well? The bip-0032
algorithm could be inserted via dependency injection, so the same
service could work with electrum wallets as too.
Finally, I see that libwallet already has a utxo selector module for
spending bitcoins. Unfortunately, the algorithm is too simple for our
needs. Assuming we write a more-fancy utxo-selector algorithm that
seeks to maximize privacy while minimizing fees, should we add it to
libwallet as well? Bear in mind that there are many possible
algorithms, each with different trade-offs in terms of privacy and
fees. We don't want our algorithm to become the "one true uxto
selector" for libwallet to the exclusion of other possibilities. Maybe
we insert ours in parallel with the existing one?
I look forward to submitting lots of open-source code over the coming
weeks and months.