btcsuite / btcwallet

A secure bitcoin wallet daemon written in Go (golang)
ISC License
1.13k stars 582 forks source link

One in 128 accounts are not BIP-32 compatible #719

Open devrandom opened 4 years ago

devrandom commented 4 years ago

This issue is due to https://github.com/btcsuite/btcutil/issues/172.

When the leading byte of a derived extended private key is zero, all of that key's children are not BIP-32 compatible. There are two opportunities for this to happen in a BIP-44 derivation path, so the incidence rate is 1 in 128.

https://github.com/btcsuite/btcutil/pull/182 corrects this issue, but affected wallets have to be migrated and/or the user notified. The function ExtendedKey.IsAffectedByIssue172 is provided for detection of the issue.

Roasbeef commented 4 years ago

btcsuite/btcutil#182 corrects this issue, but affected wallets have to be migrated and/or the user notified.

I think instead, any wallet that needs to be compatible with seed phrase import using the wallet's non-default derivation needs to change. In other words, wallets that try to support (the imo ill advised) "import any seed into the wallet" need to be made aware of this.