Electrum

如何將 Electrum 錢包導入 BitcoinJ?

  • April 26, 2019

我正在嘗試創建一個基於 BitcoinJ 的應用程序,該應用程序可以監視現有錢包(在 Electrum 中創建)並在針對該錢包進行交易時執行操作。

據我了解,我需要通過將我的 Electrum 錢包的“監視密鑰”提供給它來創建一個 BitcoinJ 錢包,看來,要做到這一點,我需要以某種方式將我的 Electrum 錢包載入到 BitcoinJ 中,以便我可以呼叫getWatchingKey()它。

問題是我無法弄清楚如何將我的 Electrum 錢包導入 BitcoinJ - 我有 BIP32 格式的公鑰和私鑰字元串(來自測試網,因此它們分別以tpub和開頭tpriv),但我根本無法弄清楚如何將這些字元串轉換為BitcoinJ 中的錢包對象。任何幫助將不勝感激。

編輯

或者,我可以使用種子導入密鑰……但我應該提供種子的創建時間(以 Unix 形式)……該資訊用於什麼?我沒有它,所以我一直在假設我不能使用種子的情況下工作。

如<https://bitcoinj.github.io/working-with-the-wallet>所述:

“在這種情況下,‘監視密鑰’是 BIP32 帳戶零密鑰的公開形式,即它是從主節點派生的第一個密鑰。”

我還認為它是主公鑰,但它是第一個(或第 0 個)派生密鑰。

希望這可以幫助。

編輯:

為了回答您的最後一個問題,種子的創建時間被用作 BitcoinJ 何時開始搜尋交易的提示。如果您可以訪問 Electrum 錢包上的第一筆交易,請使用該大致時間。

當我試圖通過 BitcoinJ 應用程序訪問我的錢包時,我遇到了同樣的問題(仍然無法達到我的餘額)。

儘管我的比特幣地址已經從我的私鑰成功創建,但我仍然無法訪問我的資金。我不知道為什麼。

這是我的程式碼,希望對你有幫助:

//create my ECKey
       DumpedPrivateKey dumpPrivKey = null;
       try {
           dumpPrivKey = new DumpedPrivateKey(params, "your private key. You can reach it by calling the dumpprivkey RPC command in Bitcoin-Core console");
       } catch (AddressFormatException e1) {
           // TODO Auto-generated catch block
           e1.printStackTrace();


       }
       ECKey myKey=dumpPrivKey.getKey();
       Address bitcoinAddress=myKey.toAddress(params);

      System.out.println("My bitcoin address is : " +bitcoinAddress); //the 
   Main network address 
   Coin coin =wallet.getBalance();
   System.out.println("My bitcoin balance is: " +coin); //the balance

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