Multibit

如何從 MultiBit HD 中提取私鑰?

  • April 28, 2021

在 MultiBit Classic 中是可能的,但我在 MultiBit HD 中找不到。

**警告:**雖然此答案可能是問題中問題的解決方案,但它涉及將您的錢包種子暴露給網際網路上的工具。執行此操作時請務必小心!


無法添加評論,因此擴展 Chris.J 的答案:

以下是我關於如何恢復/重建/重新生成/提取MultiBit HD 使用的所有地址和密鑰的說明:

  • 轉到<https://iancoleman.github.io/bip39/>
  • 在“BIP39 Mnemonic”欄位中填寫您的 12 個錢包生成詞
  • 沒有密碼
  • 程式碼:比特幣
  • 在派生路徑下,選擇 BIP32 選項卡
  • 客戶端:自定義派生路徑
  • 外部(接收)地址的派生路徑(複製粘貼此):m/0’/0
  • 您的收貨地址現在顯示在頁面末尾。
  • 內部(更改)地址的派生路徑(複製粘貼此):m/0’/1
  • 您的更改地址現在顯示在頁面末尾。絕對的幸福;)

(在“分層確定性錢包”圖片中找到的解決方案: https ://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)

如果你有一個不符合 BIP32的 beta7 錢包,你不能使用@chris-j 提出的方法。

對我來說最簡單的方法是連接 MultiBit HD 的簽名功能並將使用的私鑰記錄到控制台:

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);

我已經按照以下步驟使用 v0.5 對此進行了測試:

  1. 複製MultiBit HD Git 儲存庫
  2. 應用上面的更新檔
  3. 建構項目:mvn clean dependency:sources install
  4. 啟動應用程序:java -jar mbhd-swing/target/multibit-hd.jar
  5. 轉到工具 -> 簽名消息,然後從您的錢包中輸入您要恢復其私鑰的比特幣地址。按完成。
  6. 從控制台輸出中讀取比特幣地址和對應的私鑰

引用自:https://bitcoin.stackexchange.com/questions/40507