10

It was possible in MultiBit Classic, but I can't find it in MultiBit HD.

  • Would it be possible to write a more detailed explanation of redee`s answer? Could someone explain how to apply the patch and build the project? I have tried lots of other options, but nothing else seems to work for me. Thank you in advance. – PythonBeginner1337 Jun 30 '17 at 17:34
  • I thought the point of HD wallets is that you only need the word seed to recover all private keys you've ever used. Why would you want a list of them when you can (re)generate them on demand? – fredsbend Nov 20 '17 at 5:44
9

WARNING: While this answer may be a solution to the issue in the question, it involves exposing your wallet seed to a tool on the internet. Please be very careful when doing this!


Can't add comments so extend Chris.J's answer:

Here are my notes on how to recover / rebuild / regenerate / extract ALL addresses and keys used by MultiBit HD:

  • Go to https://iancoleman.github.io/bip39/
  • In the field "BIP39 Mnemonic" fill in your 12 wallet generation words
  • No password
  • Code: Bitcoin
  • Under Derivation Path, select the BIP32 tab
  • Client: Custom derivation path
  • Derivation path FOR EXTERNAL (RECEIVING) ADDRESSES (copy paste this): m/0'/0
  • Your receiving addresses are now displayed at the end of the page.
  • Derivation path FOR INTERNAL (CHANGE) ADDRESSES (copy paste this): m/0'/1
  • Your change addresses are now displayed at the end of the page. Absolute Happiness ;)

(solution found on:https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki in "Hierarchical Deterministic Wallets" picture)

  • Nailed it, another guide didn't explain about the change addresses being on a different derivation path. Thank you -this got me access to my Bitcoin Cash that I wanted to 'claim' – HaveAGuess Sep 28 '17 at 23:36
  • 1
    A local bip39 tool would be handy. – fredsbend Nov 20 '17 at 5:46
8

In case you have a beta7 wallet which is not BIP32 compliant you cannot use the method @chris-j has put forward.

The easiest way for me was to hook into MultiBit HD's signing capabilities and log the private key being used to the console:

diff --git a/mbhd-core/src/main/java/org/multibit/hd/core/managers/WalletManager.java b/mbhd-core/src/main/java/org/multibit/hd/core/managers/WalletManager.java
index 61979a3..e8a0de1 100644
--- a/mbhd-core/src/main/java/org/multibit/hd/core/managers/WalletManager.java
+++ b/mbhd-core/src/main/java/org/multibit/hd/core/managers/WalletManager.java
@@ -1753,6 +1753,8 @@ public enum WalletManager implements WalletEventListener {
           if (signingKey.getKeyCrypter() != null) {
             KeyParameter aesKey = signingKey.getKeyCrypter().deriveKey(walletPassword);
             ECKey decryptedSigningKey = signingKey.decrypt(aesKey);
+            log.info("HACK address: " + signingAddress.toString());
+            log.info("HACK private key: " + decryptedSigningKey.getPrivateKeyAsWiF(networkParameters));

             String signatureBase64 = decryptedSigningKey.signMessage(messageText);
             return new SignMessageResult(Optional.of(signatureBase64), true, CoreMessageKey.SIGN_MESSAGE_SUCCESS, null);

I have tested this with v0.5 following these steps:

  1. Clone the MultiBit HD Git repository
  2. Apply the patch above
  3. Build the project: mvn clean dependency:sources install
  4. Start the application: java -jar mbhd-swing/target/multibit-hd.jar
  5. Go to Tools -> Sign message and enter a Bitcoin address from your wallet for which you want to recover the private key. Press finish.
  6. Read the Bitcoin address and corresponding private key from the console output
  • This might be little too complicated for people who just use bitcoins for business. – Pavel Niedoba Feb 10 '17 at 12:11
  • 2
    You're my saviour, @redee! I used this method successfully in v0.5.1 to extract my private key for importing to Omniwallet so that I could transfer colored coins to a different wallet which supports them properly. Line numbers had changed slightly but the same code worked fine :D Oh, and I had to use the "Sign Message" button to get the output rather than just pressing "Finish". – pospi Jun 12 '17 at 10:27
  • Thanks redee, good instructions -- was able to transfer my money to another wallet (Jaxx), after having Multibit show my transactions as unconfirmed (for 8 months), thus being unable to transfer them anywhere else. – Kem Mason Jul 12 '17 at 1:20
4

Because the private keys and addresses are created deterministically from your wallet words you just need to keep your wallet words safe - there is no need to expose individual private keys. You can use your wallet words to recreate your wallet in either MultiBit HD (use the Restore button on the 'Enter password' screen) or using other tools.

For instance, you can create an offline copy of https://dcpos.github.io/bip39/ and create all your addresses/ private keys if you want to (use the BIP32 tab).

There is no option to export private keys in MultiBit HD because BIP32 wallets create both receiving addresses and change addresses on demand. Exporting and importing private keys won't give you, in general, a complete HD wallet.

  • It is not possible to extract private keys in MultiBit HD, but it can be done in other application? – Pawel Sep 21 '16 at 16:11
  • 1
    Actually there are dozen reasons why we need private keys for single address. – Pavel Niedoba Feb 10 '17 at 12:09
  • That page seems to create all my receiving addresses, but not the change addresses. – Seppo Enarvi May 10 '17 at 8:54
  • What about when we need to access our private keys for a hard fork? – arviman Oct 27 '17 at 2:40
  • Best answer..... – fredsbend Nov 20 '17 at 5:47
2

WARNING: While this answer may be a solution to the issue in the question, it involves exposing your wallet seed to a tool on the internet. Please be very careful when doing this, since

  1. ...just DON'T DO IT!
  2. See 1.
  3. You probably don't know the guy behind the web page well enough to trust them with your precious bitcoins.
  4. Even if you do, the site may have been hacked and the keys get into the hands of malicious people spending your bitcoins within seconds.

Here are my notes on how to recover / rebuild / regenerate / extract the addresses and keys used by MultiBit HD:

  1. Go to https://iancoleman.github.io/bip39/
  2. In the field "BIP39 Mnemonic" fill in your 12 wallet generation words
  3. No password
  4. Coin: Bitcoin
  5. Under Derivation Path, select the BIP32 tab
  6. Derivation path (copy paste this): m/0'/0
  7. Your addresses are now displayed at the end of the page. Happiness ;)
0

Restore your wallet in electrum and then use that to extract the private keys. To learn how to restore your wallet in electrum view this video

If you just want the private keys for specific addresses then bring the addresses tab into view via the view menu and then right click on each address to get the option to view its private key. If you want to export all the keys then use wallet menu > private keys > export.

protected by Community Jul 15 '17 at 16:37

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.