sowbug / happynine

A BIP 0032 HD wallet for Bitcoin, implemented as a Chrome App.
http://www.sowbug.com/
Other
18 stars 0 forks source link

Happynine

A Bitcoin BIP 0032 hierarchical deterministic wallet, implemented as a Chrome App.

Copyright © 2014 Mike Tsao. All rights reserved. See LICENSE.md.

Great Big Warning

This project is early and under heavy development! Do not use it for real transactions! Do not let real bitcoin anywhere near it! Even if/when this warning is removed, the applicable license still applies. Read it!

Heartbleed!

Although Happynine uses OpenSSL for its ECDSA functionality, it's not vulnerable to the Heartbleed flaw in OpenSSL, which involved a buggy implementation of a part of the TLS protocol. TLS has nothing to do with Bitcoin, so Happynine is and always has been safe from Heartbleed. Nonetheless, to allay fears, version 0.0.29.0 of Happynine in the Chrome Web Store has been updated to version 1.0.1g of OpenSSL, which has the Heartbleed patch.

Overall Status

Happynine can send and receive bitcoin using Electrum servers. It is missing many features and UI affordances that users will expect from a complete wallet. See the issue list for detail on project status.

Did you read the great big warning above? If yes and you wish to proceed, install Happynine from the Chrome Web Store.

User Requirements

BIP 0032 Overview

A root master key is the starting point. It's the complete identity of a BIP 0032 wallet. The xprv version can generate the xpub, but not vice-versa.

The root master key's xprv is used to generate master keys for accounts. A BIP 0032 account is what people usually think of as a Bitcoin wallet. It's a long (2.1 billion) chain of Bitcoin addresses. If you have an account's xprv, you can generate the account's chain of Bitcoin addresses and keys. If you have the account's xpub, you can generate only its addresses.

The simplest BIP 0032 use case is one account, one user. Generate the root master key and use it to derive account zero. Use that single chain of addresses as the user's wallet.

A more interesting use case that Happynine partially supports: one family of parents Alice and Bob with kids Carol, Dan, and Eve. The parents generate the root master key and back up the xprv (for example by printing it out, putting a paper copy in a safe deposit box at a bank, and giving another paper copy to the trusted family attorney). Using the root master key, the parents generate many accounts: a spending account for each of the five people in the family, a joint spending account for the parents, and a savings account for each kid. That's a total of nine accounts.

Mom and Dad distribute the account master keys as follows:

This arrangement gives the family the following abilities:

There are many other ways to slice and dice a BIP 0032 tree. Another option in this scenario is to generate only one first-level child account for each person, then to generate further children (savings/spending) from each of those. One might also wonder why the parents have no savings account. Are they planning on living off the kids during retirement? Regardless, you can structure your wallet any way you want.

FAQ

Acknowledgments