Early Paymetheus screenshot. Can you spot the bug?
The btcsuite project started out of a desire to create high quality and usable Bitcoin tools and libraries. Early on, it was decided that Go, a type-safe and portable language, would be used. Go has been a great tool for us, but one sticking point has been the area of native graphical frontends for our software. Some previous attempts were made to write GUIs in Go, but the user experience always suffered in one way or another.
We still wanted to provide a nice graphical interface to our software that a user would enjoy using. To solve this issue, we took the pragmatic approach of developing native GUIs with languages well supported by their respective operating systems.
Paymetheus is the first result of this development. It is a Bitcoin wallet for the Windows 7/8.1/10 operating systems written in C# and WPF. Paymetheus reuses much of our existing Go code by using RPC to communicate with btcwallet under the covers. Like all of our open source software, it is freely available under the ISC License.
Today we are releasing btcwallet 0.6.0, along with a minor release to btcd (0.11.1) which is required to build the new btcwallet. This wallet release primarily focuses on adding account support, integrating transaction history in the new database, and making wallet an importable package for reuse in other binaries. As always, general fixes and improvements all around are included. See the release notes for the full details.
Multiple account support
btcwallet takes a different approach to accounts compared to Bitcoin Core wallet, and it’s important to understand why this is done and how it affects usage. In Bitcoin Core, account balances and the addresses used to receive outputs are separate concepts, and balances can be moved across accounts without an on-chain transaction. While this model certainly has its uses, we feel that it comes with disadvantageous privacy implications as well, since outputs received by an address of one account can be spent when debiting a balance from an unrelated account.
Last week saw the 0.5.0-alpha release (and a 0.5.1-alpha bugfix release) of btcwallet, our Bitcoin wallet daemon. This release was largely focused on architectural changes for improved security, privacy, and performance. Highlights of the release include a new wallet database and the introduction of a hierarchical deterministic address manager.
Example BIP0032 hierarchy: All keys for all accounts are deterministically derived from a single seed.