Blog

Inside the Jaxx HD Upgrade for Ethereum

My name is Simon Howell, I’m a technical copywriter and support specialist at Decentral.

This past Friday, Kryptokit released Jaxx 0.0.17, which included the first Ethereum wallet to comply with HD standards. For the uninitiated, HD stands for “hierarchical deterministic. This means that the Jaxx HD upgrade generates a new address every time funds are sent to the latest address. All previous addresses can be reused, and all addresses are derived from the master mnemonic. The HD standard was conceived as a way of minimizing the reuse of addresses – frequently reused addresses are much less private.

In the leadup to this release, our team (including our CTO Chris Forrester, the architect of this and other key Jaxx features) had many conversations about how best to handle the migration path for the Jaxx HD Upgrade. This upgrade was unlike all previous changes made to Jaxx, because upgrading to the new system required the generation of a new HD address that would not automatically store users’ funds, which meant they would need to be sent there.

This created a potential ethical issue, because transferring users’ funds from one address to another would incur the usual Ethereum transaction fee: .00105 ETH. Admittedly, that’s not a large sum, but subtracting it from users’ balances without asking just didn’t seem right, and even the considered option of refunding users wasn’t practical (especially as it would violate the Kryptokit philosophy of not collecting user info), so we had to rule out simply forcing the HD upgrade and transfer.

On the other hand, we considered giving users the option to decline the upgrade entirely. We decided against that as well, both because we believe there’s a clear need for Ethereum wallets to support HD standards in order to provide greater security, especially as Ethereum grows in prominence, and because making it optional might make future updates extremely complicated.

 

jaxx hd upgrade

 

The migration path we landed on was a hybrid approach: the upgrade itself was mandatory, but we left it up to users whether or not to let Jaxx make the transfer of funds. Users who declined to transfer their funds could still access their old (non-HD) address and private key via the Display Ethereum Keys screen – from there, the funds could be imported into Jaxx or any other Ethereum service that supports private key imports.

The Catch

We knew that no matter what migration path we chose, there was bound to be some confusion – HD is not necessarily a widely-known or understood standard within the Ethereum space, which means users might not appreciate being told that they will have a changing address all of a sudden. While there’s been some concern and a few cases of outright frustration, by and large, the response has been very positive, and most importantly of all, not one user has lost access to any funds as a result of this complex upgrade.

For any users experiencing issues with their balance not showing up after the transfer is made, or who are running into a “nonce too low” issue when attempting to Send, we would advise writing down your master mnemonic, uninstalling Jaxx, reinstalling the latest version, and pairing in your master mnemonic using the Restore Wallet function.

Today, we released version 0.0.18, which addresses the issues faced by some users as a result of the Jaxx HD upgrade. Users who declined the HD transfer should have an easier time accessing their non-HD private key, with the “one and a half minute” loading time eliminated. Users upgrading to HD for the first time (e.g. users who missed the 0.0.17 upgrade) should more reliably see their balance in the new wallet without having to do a re-install / re-pair.

This latest update would not have been possible without detailed feedback from our users – thanks to the whole community for trying out Jaxx and for being patient as we roll out these unprecedented features. If you are still experiencing any issues after installing this latest version, or have any general questions, don’t hesitate to get in touch at info@kryptokit.com.