Bitcoin Forum
April 25, 2024, 04:04:22 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Deterministic wallet compatibility matrix  (Read 13852 times)
btchris (OP)
Hero Member
*****
Offline Offline

Activity: 672
Merit: 504

a.k.a. gurnec on GitHub


View Profile WWW
March 23, 2015, 05:25:02 PM
 #1

This is a first attempt at creating a compatibility matrix for deterministic wallets. In other words, it tries to answer the questions:

When using two different wallet apps from different devs, will I have the same list of addresses and the same balance if I:
  • use the same mnemonic sentence (seed) in both?
  • export a master private key from one into the other?
  • export a master public key from one into the other (creating a watch-only wallet)?

For now, it's an Excel file available for viewing or downloading here: https://onedrive.live.com/redir?resid=584F122BA17116EE%21313.

It has four tabs. The first, "Details", lists out (hopefully) all relevant details of various wallets that might make them compatible or not with one another.

The next three are calculated from the first; they try to answer the three corresponding questions above. (Sorry, but Excel Online doesn't render vertical text correctly, so they look a bit ugly online. Either download a local file, or hover over the wallet names in the first row to read them; they're in the same order as the wallet names in the first column.)

I'm definitely interested if anyone has any input; in particular I'm not at all confident that the Details tab has everything correct, and it's probably missing some deterministic wallets that I'm unaware of. If there are any wallet devs who could take a quick look at their wallet on the first tab to see if I got anything wrong, that'd be great!

I'm also not sure that the list of requirements (spelled out on the three right-most tabs) is sufficient to guarantee compatibility.

(Also: don't rely on this without doing your own testing first!)

I'm not sure where, if anywhere, this is headed, but it'd be nice to turn this into a set of web-based tables on GitHub, perhaps something jekyll-based like this. Again, input is most welcome.
1714017862
Hero Member
*
Offline Offline

Posts: 1714017862

View Profile Personal Message (Offline)

Ignore
1714017862
Reply with quote  #2

1714017862
Report to moderator
1714017862
Hero Member
*
Offline Offline

Posts: 1714017862

View Profile Personal Message (Offline)

Ignore
1714017862
Reply with quote  #2

1714017862
Report to moderator
1714017862
Hero Member
*
Offline Offline

Posts: 1714017862

View Profile Personal Message (Offline)

Ignore
1714017862
Reply with quote  #2

1714017862
Report to moderator
"Governments are good at cutting off the heads of a centrally controlled networks like Napster, but pure P2P networks like Gnutella and Tor seem to be holding their own." -- Satoshi
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
Andreas Schildbach
Hero Member
*****
Offline Offline

Activity: 483
Merit: 501


View Profile
March 25, 2015, 07:32:48 PM
 #2

Just some clarification: the derivation path used by bitcoinj (and thus Bitcoin Wallet for Android) is specified in BIP-32. So it would be appropriate to use the term "BIP-32" in that column.
btchris (OP)
Hero Member
*****
Offline Offline

Activity: 672
Merit: 504

a.k.a. gurnec on GitHub


View Profile WWW
March 25, 2015, 08:57:44 PM
 #3

Just some clarification: the derivation path used by bitcoinj (and thus Bitcoin Wallet for Android) is specified in BIP-32. So it would be appropriate to use the term "BIP-32" in that column.

That would be better, thanks. Fixed.
jim618
Legendary
*
Offline Offline

Activity: 1708
Merit: 1066



View Profile WWW
March 26, 2015, 12:19:27 PM
 #4

Looks correct for MultiBit HD compatibility / paths etc.

Note that we made a mistake with our BIP32 compatibility in the Beta 7 release (details here: https://github.com/bitcoin-solutions/multibit-hd/issues/445). It is fixed in the code now and will roll out in Beta 8.

MultiBit HD   Lightweight desktop client.                    Bitcoin Solutions Ltd   Bespoke software. Consultancy.
btchris (OP)
Hero Member
*****
Offline Offline

Activity: 672
Merit: 504

a.k.a. gurnec on GitHub


View Profile WWW
March 26, 2015, 02:01:01 PM
 #5

Looks correct for MultiBit HD compatibility / paths etc.

Note that we made a mistake with our BIP32 compatibility in the Beta 7 release (details here: https://github.com/bitcoin-solutions/multibit-hd/issues/445). It is fixed in the code now and will roll out in Beta 8.

Thank you for checking, I appreciate it.

There's already a comment attached to MultiBit HD's BIP-39 cell which mentions Beta 8 being a requirement. (I'm the same Chris who opened that issue on GitHub Smiley)
AussieHash
Hero Member
*****
Offline Offline

Activity: 692
Merit: 500



View Profile
March 30, 2015, 06:49:56 PM
 #6

Needs an additional column :

BIP-44 passphrase support yes/no

For example myTrezor support BIP-44 with passphrase, as does electrum's trezor plugin

However Ledger's Chrome wallet and electrum's btchip plugin are BIP-44 without passphrase support

btchris (OP)
Hero Member
*****
Offline Offline

Activity: 672
Merit: 504

a.k.a. gurnec on GitHub


View Profile WWW
March 30, 2015, 07:54:28 PM
 #7

Needs an additional column :

BIP-44 passphrase support yes/no

For example myTrezor support BIP-44 with passphrase, as does electrum's trezor plugin

However Ledger's Chrome wallet and electrum's btchip plugin are BIP-44 without passphrase support

Do you mean BIP-39 passphrase support? That's a good idea (It'd probably be a requirement for "full" compatibility, but not for "partial" compatibility).

Would it also make sense to add one line for each software/hardware combination, e.g. Electrum/TREZOR, MultiBit HD/TREZOR, myTrezor/TREZOR, etc., since they might offer different levels of support? Or are all TREZORs pretty much the same? (and all btchips, etc.)

Unfortunately I don't own any hardware wallets, so that makes it more difficult for me.
Andreas Schildbach
Hero Member
*****
Offline Offline

Activity: 483
Merit: 501


View Profile
April 03, 2015, 04:04:36 PM
 #8

For BIP44, multiple account support is mandatory. So strictly speaking, MultiBit HD doesn't support BIP44 (if the "Multiple Accounts" column is right).
btchris (OP)
Hero Member
*****
Offline Offline

Activity: 672
Merit: 504

a.k.a. gurnec on GitHub


View Profile WWW
April 03, 2015, 05:38:28 PM
Last edit: April 07, 2015, 03:11:29 PM by btchris
 #9

For BIP44, multiple account support is mandatory. So strictly speaking, MultiBit HD doesn't support BIP44 (if the "Multiple Accounts" column is right).

At least for Beta 7 the "Multiple Accounts" column is correct. I updated the sheet, and while I'm sure you're technically correct, I think it's slightly more confusing now, but I've no strong preference either way.


Michail1
Legendary
*
Offline Offline

Activity: 1498
Merit: 1164



View Profile WWW
June 01, 2015, 06:15:28 PM
 #10

Nice job.
I was having issues with Mycelium on ios vs android a long time ago.  I figured it out with using pycoin and shared the information; however, you did a great job in showing in multiple wallets.

Kudos.

erasmospunk
Newbie
*
Offline Offline

Activity: 50
Merit: 0


View Profile WWW
June 07, 2015, 12:43:26 PM
 #11

Some info about the Coinomi wallet.

Code:
BIP-39?                             YES
Display/restore mnemonic?           YES
BIP-39 passphrase?                  YES
BIP-32?                             YES
HD path                             BIP-44
Master pubkey export?               NO (Planned)
Master pubkey restore?              NO (Planned)
Master privkey export/restore?      NO (Sweep priv key only)
xpub/xprv path                      m/44'/0'/a'
Multiple accounts?                  NO (in Alpha)
Account naming convention           for "Account 1" a=0
Lookahead size                      20
Lookahead frequency                 continuous
btchris (OP)
Hero Member
*****
Offline Offline

Activity: 672
Merit: 504

a.k.a. gurnec on GitHub


View Profile WWW
June 07, 2015, 01:39:12 PM
 #12

Some info about the Coinomi wallet.

Thanks for spelling out all the details! I've updated the spreadsheet.

If you remember to let me know once new features are released, I'll update the spreadsheet to include them.

-Chris
fbueller
Sr. Member
****
Offline Offline

Activity: 412
Merit: 266


View Profile
June 07, 2015, 02:36:41 PM
 #13

btcchris: I'm happy to see this, something that kills me about multisig is that it leads to vendor lock-in at the moment. Being able to orchestrate a 2-of-2 between two different multisig web wallets is the direction I see it going.

Btw, maybe note if the wallet sorts public keys in multi-signature addresses as there's a BIP for that now to encourage wallets to be compatible with eachother.

Bitwasp Developer.
unamis76
Legendary
*
Offline Offline

Activity: 1512
Merit: 1005


View Profile
June 07, 2015, 04:55:57 PM
 #14

Thank you for making this list. I looked for something similar for quite some time, only to fail in finding it.

In the mnemonic-compatible tab it says there is no compatibility between breadwallet and MultiBit HD, which is not correct: I've successfully imported a seed from breadwallet in MultiBit HD. I needed to import it because I was looking to sign a message from one of the addresses in my seed (breadwallet doesn't have that functionality), and I managed to sign the message through MultiBit HD.

On another note, sad to see that Electrum is pretty much incompatible with everything else... I thought these new BIP standards (especially BIP 39) would help to unify seed usage throughout wallets... But that doesn't seem to be the case. Maybe a new, more universal standard should kick in? Smiley
btchris (OP)
Hero Member
*****
Offline Offline

Activity: 672
Merit: 504

a.k.a. gurnec on GitHub


View Profile WWW
June 07, 2015, 05:23:06 PM
 #15

btcchris: I'm happy to see this, something that kills me about multisig is that it leads to vendor lock-in at the moment. Being able to orchestrate a 2-of-2 between two different multisig web wallets is the direction I see it going.

I would guess that multisig web wallets are looking for ways to monetize their user base (integration or tie-ins with exchanges? non-free instant confirmations? advertising? time will tell...). It seems unlikely they'll remain "free" (as in no monetization) forever. If that guess is correct, a multisig web wallet would have no self-interest in permitting users to download the provider's private keys—that would allow users to move their wallets to a competitor. It also probably isn't a good idea from a security point of view, either.

For another take, consider GreenAddress 2-of-2 wallets. Their security model for instant confirmations outright prohibits them from sharing their private key, lest a user be able to double-spend a UTXO which GreenAddress has placed its instant-confirmed faith behind.

They already all (I certain hope?!) provide a recovery mechanism, so sharing keys between wallets isn't necessary for recovery purposes either.

In short: I don't think web-based multisig providers will ever share their keys (nor should the need to), and so I doubt they have much place on this spreadsheet. Could be wrong, though....

There are however non-web-based multisig wallets, like Armory, Electrum 2.x, mSIGNA, and Copay. These certainly do have a place here, but I don't think any are yet compatible with one another (I'm not sure about Copay though, I haven't checked them out yet). Since adding them would complicate the spreadsheet and not add much new value, I'm hesitant to expend the effort at the moment.... however I think it should be done one day. (BTW I'd be happy to be wrong about their current compatibility if someone could correct me.)

Btw, maybe note if the wallet sorts public keys in multi-signature addresses as there's a BIP for that now to encourage wallets to be compatible with eachother.

Agreed, BIP-67 is a good thing.
btchris (OP)
Hero Member
*****
Offline Offline

Activity: 672
Merit: 504

a.k.a. gurnec on GitHub


View Profile WWW
June 07, 2015, 05:45:08 PM
 #16

Thank you for making this list. I looked for something similar for quite some time, only to fail in finding it.

Smiley Welcome.

In the mnemonic-compatible tab it says there is no compatibility between breadwallet and MultiBit HD, which is not correct

Is it not being calculated correctly for you (it's a formula cell)? Are you looking in the wrong place maybe? Here's what it looks like for me:



On another note, sad to see that Electrum is pretty much incompatible with everything else...

Perhaps you already know this, but it was an intentional trade-off made by the Electrum dev: https://bitcointalk.org/index.php?topic=1082586.0, https://bitcointalk.org/index.php?topic=939337.msg10366268#msg10366268

On the positive side, Electrum 2.x does have some xpub (watching-only) compatibility with other wallets, and it's the only wallet to have xprv compatibility with any other.
unamis76
Legendary
*
Offline Offline

Activity: 1512
Merit: 1005


View Profile
June 07, 2015, 08:37:08 PM
 #17

Thank you for making this list. I looked for something similar for quite some time, only to fail in finding it.

Smiley Welcome.

In the mnemonic-compatible tab it says there is no compatibility between breadwallet and MultiBit HD, which is not correct

Is it not being calculated correctly for you (it's a formula cell)? Are you looking in the wrong place maybe? Here's what it looks like for me:



On another note, sad to see that Electrum is pretty much incompatible with everything else...

Perhaps you already know this, but it was an intentional trade-off made by the Electrum dev: https://bitcointalk.org/index.php?topic=1082586.0, https://bitcointalk.org/index.php?topic=939337.msg10366268#msg10366268

On the positive side, Electrum 2.x does have some xpub (watching-only) compatibility with other wallets, and it's the only wallet to have xprv compatibility with any other.

Excuse me for my mistake, it looks like it was indeed an error in the browser I was using, it works fine offline and on Chrome.

As for Electrum, I knew it was intentional... but never read the post you linked, thanks for that Smiley Keep it up with the spreasheet
fbueller
Sr. Member
****
Offline Offline

Activity: 412
Merit: 266


View Profile
June 15, 2015, 02:12:03 PM
 #18

To clarify, I am not talking about GreenAddress sharing their private keys.

What I meant is, a customer of a wallet shouldn't rely on GreenAddresses app to derive their personal HD key. They can do this themselves, and probably already have several if they use Bitcoin Wallet, Mycelium, Electrum.

Why not enable users to submit an xpub from their existing wallet, allowing them to use GreenAddress but add their signature using software they trust. Anything less than this creates custodial risk. Signing is implementation agnostic, GreenAddress will sign using their stack as always.

One reason for multisig is distributing risk. I would use GreenAddress if I could do so using Electrum as it works well for offline transactions. I'd know my private keys are in effective cold storage (not on an Android device.....) and there's no risk that GreenAddress would ever deliver an update or javascript that undermines the security of my private keys.

If you can export your xprv, you should be able to upload it somewhere. It at least assumes you're taking charge of it yourself, and might like to change providers at some point, or make use of multiple services using the same root key!


Bitwasp Developer.
TheButterZone
Legendary
*
Offline Offline

Activity: 3052
Merit: 1031


RIP Mommy


View Profile WWW
June 15, 2015, 08:18:22 PM
 #19

I would use GreenAddress if I could do so using Electrum as it works well for offline transactions.

Ditto.

Saying that you don't trust someone because of their behavior is completely valid.
it-zone
Newbie
*
Offline Offline

Activity: 37
Merit: 0



View Profile
December 21, 2015, 03:40:01 AM
 #20

Please add bitcore wallets, including copay, details:

https://github.com/bitpay/bitcore-wallet-client/blob/master/lib/common/constants.js
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!