Author

Topic: Alternative methods to transfer BTC from an old Coinbase multisig Vault (Read 260 times)

legendary
Activity: 3500
Merit: 6320
Crypto Swap Exchange
@gmaxwell and @achow101 since this and a few other issues keep coming up again and again for the same wallets / services do you think a sticky post would be good?
i.e. for conbase multisig vault look here for old multibit look there and so on.
I have the link to this post saved but 18 months from now and I'm sure others do to now. But 18 months from now we as a group may or may not remember it.

Just a thought.

OP glad to see you got your BTC.

-Dave
legendary
Activity: 2268
Merit: 18771
Thanks again for your help through all this, o_e_l_e_o
That's great news, and more than happy to have helped. Thanks also for updating us with your solution so we can refer anyone else in the future to the same solution.

For future reference, pybitcointools has a number of still maintained forks.
newbie
Activity: 6
Merit: 17
I tried running the modified script that Andrew Chow posted, however, it appears that the pybitcointools library has been deprecated.

At this point, I'm open to trying the forked Coinbase recovery tool, though I'm not entirely certain how to run the tool locally. I'll try to figure it out myself how to do so, but any simple guidance you could provide would be greatly appreciated as well.


Edit: I was able to successfully recover the funds from my old Coinbase multisig vault using the forked Coinbase tool (for anyone's reference: https://github.com/dlajarretie/multisig-tool)

Thanks again for your help through all this, o_e_l_e_o
legendary
Activity: 2268
Merit: 18771
I'm open to trying the Python script approach. Regarding the modification you mentioned, are you simply referring to replacing the USER_PUB and USER_SEED values in the script? Assuming the case, then I feel reasonably confident with the first approach. In any case, I'll try the first approach and let you know whether I'm able to successfully restore the wallet using Electrum afterwards.
Not quite. The code that Andrew Chow has given there is in direct response to the user wanting to derive the individual private keys at index 14. You probably don't want individual keys like this and instead just want the master private keys which will let you recreate the entire vault alongside your already known master public keys.

So yes, change USER_SEED and USER_PUB to your own values. You can then run the code as is, but it will output an extended private key at index 14 and a WIF key that you don't want. Make sure you use the keys it will give you entitled "Master Private Key corresponding to seed" and "Master Public Key corresponding to seed". Alternatively, just miss out the bottom two lines (print "Extended Private... and print "WIF format...).

Not really from what they say in the readme
Ahh well spotted. Still a risk if you simply turn off your internet on your main OS for a short period though. OP should use a live OS instead, as you say.
legendary
Activity: 2730
Merit: 7065
Quote
Internet connection is only required in Step 1, where you input the public keys, so that we can fetch the unspent outputs from your vault addresses.

Before inputting your keys in Step 2 and signing the transaction you can safely go offline.

In Step 3 you will get a signed transaction in raw hex form.

You never have to go online with your public keys.
I am guessing this is a simple typo. From the source you quoted, it's clear that you need to be online when importing public keys because the software needs to check if there are still any coins in the vault hiding behind those keys. But once that is done, you can apparently take the system offline while working with private keys and transaction signing. 
legendary
Activity: 3500
Merit: 6320
Crypto Swap Exchange
Ok. This is where things unfortunately are going to get rather complicated. Looking in to it a bit more, it appears that Coinbase don't just use the WIFs they give as normal WIFs like any other wallet does to generate a single private key. Instead, they use the WIFs to generate a seed to then generate a master private key. This is a very weird way of doing things and I'm not aware of any other wallet or service which does this.

You have two option. The first is more secure but much more complicated. It will involve your airgapped computer, installing Linux, installing various Python tools, using those tools to decrypt your BIP38 encrypted key, and then following the instructions here (with a little modification) to generate your two xprvs, before using those two xprvs and your other xpub to recreate your vault in a wallet such as Electrum.

The second option is far easier, but not as secure. There is a fork of Coinbase's vault tool here (https://github.com/dlajarretie/multisig-tool) which replaces the now defunct BitPay API with BlockCypher's API which is still working just fine. However, I've never used this myself so cannot vouch for it. I've skimmed the code and it looks fine, but you will still be importing all your private keys on to an online computer with internet access, which is always a risk.


Not really from what they say in the readme

Quote
Internet connection is only required in Step 1, where you input the public keys, so that we can fetch the unspent outputs from your vault addresses.

Before inputting your keys in Step 2 and signing the transaction you can safely go offline.

In Step 3 you will get a signed transaction in raw hex form.

You never have to go online with your public keys. You can do what you have to do online and then that machine never has to see the internet ever again. A live CD will work fine. There are even tools to read what the transaction says without going back online.

Might work a bit better.

Cannot vouch for any of it working since like you have not used it.

-Dave
newbie
Activity: 6
Merit: 17
Ok. This is where things unfortunately are going to get rather complicated. Looking in to it a bit more, it appears that Coinbase don't just use the WIFs they give as normal WIFs like any other wallet does to generate a single private key. Instead, they use the WIFs to generate a seed to then generate a master private key. This is a very weird way of doing things and I'm not aware of any other wallet or service which does this.

You have two option. The first is more secure but much more complicated. It will involve your airgapped computer, installing Linux, installing various Python tools, using those tools to decrypt your BIP38 encrypted key, and then following the instructions here (with a little modification) to generate your two xprvs, before using those two xprvs and your other xpub to recreate your vault in a wallet such as Electrum.

The second option is far easier, but not as secure. There is a fork of Coinbase's vault tool here (https://github.com/dlajarretie/multisig-tool) which replaces the now defunct BitPay API with BlockCypher's API which is still working just fine. However, I've never used this myself so cannot vouch for it. I've skimmed the code and it looks fine, but you will still be importing all your private keys on to an online computer with internet access, which is always a risk.

I'm open to trying the Python script approach. Regarding the modification you mentioned, are you simply referring to replacing the USER_PUB and USER_SEED values in the script? Assuming the case, then I feel reasonably confident with the first approach. In any case, I'll try the first approach and let you know whether I'm able to successfully restore the wallet using Electrum afterwards.
legendary
Activity: 2268
Merit: 18771
Ok. This is where things unfortunately are going to get rather complicated. Looking in to it a bit more, it appears that Coinbase don't just use the WIFs they give as normal WIFs like any other wallet does to generate a single private key. Instead, they use the WIFs to generate a seed to then generate a master private key. This is a very weird way of doing things and I'm not aware of any other wallet or service which does this.

You have two option. The first is more secure but much more complicated. It will involve your airgapped computer, installing Linux, installing various Python tools, using those tools to decrypt your BIP38 encrypted key, and then following the instructions here (with a little modification) to generate your two xprvs, before using those two xprvs and your other xpub to recreate your vault in a wallet such as Electrum.

The second option is far easier, but not as secure. There is a fork of Coinbase's vault tool here (https://github.com/dlajarretie/multisig-tool) which replaces the now defunct BitPay API with BlockCypher's API which is still working just fine. However, I've never used this myself so cannot vouch for it. I've skimmed the code and it looks fine, but you will still be importing all your private keys on to an online computer with internet access, which is always a risk.
newbie
Activity: 6
Merit: 17
1. To your first question, yes, the encrypted shared seed begins with the characters "6P".
2. To your second question, the user seed begins with the character "L" and it is 52 characters long.
Great. I think this should be relative straightforward then, although since I've never used Coinbase vaults myself I can't confirm for certain.

Your key which starts with "L" and is 52 characters long is a compressed private key in the wallet import format (WIF).

Your encrypted shared seed which begins with 6P is an encrypted private key which uses the BIP38 standard. All BIP38 encrypted keys start with 6P. When you decrypt this with your password, it should (hopefully) provide you with a second key which mirrors your other one - starting with "L" and 52 characters long.

The combination of these two private keys alongside the third Coinbase public key should be enough to recover your wallet. We might hit a stumbling block regarding individual addresses or derivation paths, but we can cross that bridge when we get to it.

Next question: What format is the Coinbase public key in? Does it start with something like "xpub" or does it start with "02", "03", or "04"?

For the next steps, you are going to need to start importing these keys in to a wallet or other software. Doing this on a computer with internet access brings risk of your keys being compromised. Do you have a spare computer or laptop which you can disconnect and do the next steps offline?

1. To your first question, the Coinbase public key begins with the characters "xpub"
2. To your second question, yes I do have a spare laptop I can use.

Additionally, if it is of help, see below the vault Coinbase multisig vault wallet configuration information below.

Multisig P2SH addresses: BIP16
HD wallets: BIP32
Seed format: Bitcoin private key in WIF
Seed encryption: BIP 38
Seed to BIP32 wallet: BitcoinJS
Order of pubkeys in P2SH: lexicographical
BIP32 paths: m/n (m/0, m/1, ...)
legendary
Activity: 2730
Merit: 7065
For the next steps, you are going to need to start importing these keys in to a wallet or other software. Doing this on a computer with internet access brings risk of your keys being compromised. Do you have a spare computer or laptop which you can disconnect and do the next steps offline?
That would be the best, but OP shouldn't reconnect that other device to the internet until (hopefully) the coins have been recovered and moved elsewhere. Alternatively, a Live OS could be used and booted from USB. But the Live OS shouldn't save anything to a local storage to prevent leakage.
legendary
Activity: 2268
Merit: 18771
1. To your first question, yes, the encrypted shared seed begins with the characters "6P".
2. To your second question, the user seed begins with the character "L" and it is 52 characters long.
Great. I think this should be relative straightforward then, although since I've never used Coinbase vaults myself I can't confirm for certain.

Your key which starts with "L" and is 52 characters long is a compressed private key in the wallet import format (WIF).

Your encrypted shared seed which begins with 6P is an encrypted private key which uses the BIP38 standard. All BIP38 encrypted keys start with 6P. When you decrypt this with your password, it should (hopefully) provide you with a second key which mirrors your other one - starting with "L" and 52 characters long.

The combination of these two private keys alongside the third Coinbase public key should be enough to recover your wallet. We might hit a stumbling block regarding individual addresses or derivation paths, but we can cross that bridge when we get to it.

Next question: What format is the Coinbase public key in? Does it start with something like "xpub" or does it start with "02", "03", or "04"?

For the next steps, you are going to need to start importing these keys in to a wallet or other software. Doing this on a computer with internet access brings risk of your keys being compromised. Do you have a spare computer or laptop which you can disconnect and do the next steps offline?
newbie
Activity: 6
Merit: 17
Therefore, my question is, what are some other alternative methods to access the funds in my legacy Coinbase Vault 2/3 multisig wallet? Note, that the options should be prioritized in terms of technical complexity, with less technical methods preferred.
Have you by any chance tried contacting Coinbase exchange and BitPay support for help?
Coinbase probably removed all vaults since 2018 but I see they still have page about that multisig vault available on their website, so they could help you to overcome unavailable Bitpay API.
https://www.coinbase.com/blog/multisig-vaults-on-coinbase

You can also download files and tried doing everything locally instead web tool, just follow this instructions:
https://github.com/coinbase/multisig-tool

Yes, I tried contacting support but they were unable to provide any help, they simply just referred me to the 2018 Coinbase blog re: discontinuing support for the multisig vault tool. And I'm fairly certain the issue has to do with the Bitpay Insights api endpoint referenced in the code--as it appears to no longer be maintained (i.e. SSL handshake error). As such, I would prefer to access the funds using a regular wallet application vs. potentially running into issues trying to fix the code in the Coinbase recovery tool myself.
newbie
Activity: 6
Merit: 17
I remember trying to help the user in that quoted thread at the time. If I remember correctly, he told me in another thread that his encrypted shared seed began with the characters "6P". Is this the case for you? Two additional questions regarding your user seed. Does it start with "5", "K" or "L", and is it 51 or 52 characters long?

If the answer to all those questions is yes, then it should be fairly easy to recover your vault in a wallet such as Electrum. If not, then we'll need to figure out exactly what format your two seeds are taking.

1. To your first question, yes, the encrypted shared seed begins with the characters "6P".
2. To your second question, the user seed begins with the character "L" and it is 52 characters long.

I greatly appreciate your help.
legendary
Activity: 2212
Merit: 7064
Therefore, my question is, what are some other alternative methods to access the funds in my legacy Coinbase Vault 2/3 multisig wallet? Note, that the options should be prioritized in terms of technical complexity, with less technical methods preferred.
Have you by any chance tried contacting Coinbase exchange and BitPay support for help?
Coinbase probably removed all vaults since 2018 but I see they still have page about that multisig vault available on their website, so they could help you to overcome unavailable Bitpay API.
https://www.coinbase.com/blog/multisig-vaults-on-coinbase

You can also download files and tried doing everything locally instead web tool, just follow this instructions:
https://github.com/coinbase/multisig-tool
legendary
Activity: 2268
Merit: 18771
I remember trying to help the user in that quoted thread at the time. If I remember correctly, he told me in another thread that his encrypted shared seed began with the characters "6P". Is this the case for you? Two additional questions regarding your user seed. Does it start with "5", "K" or "L", and is it 51 or 52 characters long?

If the answer to all those questions is yes, then it should be fairly easy to recover your vault in a wallet such as Electrum. If not, then we'll need to figure out exactly what format your two seeds are taking.
newbie
Activity: 6
Merit: 17
Issue: I am trying to access funds I had stored in a legacy Coinbase Vault 2/3 multisig wallet using the Coinbase multisig recovery tool (https://coinbase.github.io/multisig-tool/) . I have all of the necessary information to access the wallet, including the Coinbase xpubkey, the Shared xpubkey and the User xpubkey. Additionally, I have both the User seed and the Shared seed (encrypted) including the password.

However, I am encountering an issue with the recovery tool whereby the Vault wallet balance is not displaying upon entering in the xpubkeys in Step 1. Upon further research, it appears that there is an issue with the recovery tool referencing a Bitpay API endpoint that is no longer active. As such, the Coinbase multisig recovery tool is no longer functional. For reference, see the Reddit post and Bitcointalk forum post I'm referring to. Note, that I am experiencing the same issue described in the Reddit post (i.e. I have all of the necessary information to access the vault wallet).

1. https://www.reddit.com/r/BitcoinBeginners/comments/ndvhom/coinbase_multisig_vault_recovery_tool_wtf/
2. https://bitcointalksearch.org/topic/--5316286

Therefore, my question is, what are some other alternative methods to access the funds in my legacy Coinbase Vault 2/3 multisig wallet? Note, that the options should be prioritized in terms of technical complexity, with less technical methods preferred.

Thanks
Jump to: