2014-03-05 87 views
1

我正在嘗試學習bitcoinj API,並且已經編寫了下面的測試代碼。我上創建一個帳戶:使用bitcoinj檢查錢包餘額

http://tpfaucet.appspot.com/

所以可以使用假硬幣和測試發送/接收。當我登錄到URL時,我的帳戶顯示14個虛假的BTC。不過,我下面的代碼表明我有0個硬幣。有人能幫我理解我錯過了什麼嗎?我使用getBalancegetWatchedBalance都沒有運氣。

public class CheckBalance { 

    public static void main(String[] args) throws Exception { 
     // This line makes the log output more compact and easily read, especially when using the JDK log adapter. 
     BriefLogFormatter.init(); 
     // Figure out which network we should connect to. Each one gets its own set of files. 
     final NetworkParameters params = TestNet3Params.get(); 
     final String filePrefix = "forwarding-service-testnet"; 
     // Parse the address given as the first parameter. 
     final Address forwardingAddress = new Address(params, "bogusHash"); //note, I replace bogusHash when I really run 
     // Start up a basic app using a class that automates some boilerplate. 
     final WalletAppKit kit = new WalletAppKit(params, new File("."), filePrefix); 
     // Download the block chain and wait until it's done. 
     kit.startAndWait(); 
     System.out.println("You have : " +kit.wallet().getWatchedBalance() + " bitcoins"); 
     System.exit(0); 
    } 

} 
+0

你會得到,如果你聯繫誰支持真實那API更好地支持檢查bitcoinj平衡。 – keshlam

回答

2

您在分配它之後沒有使用forwardingAdress。我想這不是該錢包裏的一個pubkey的地址?

若要獲取電子錢包的ADRESS不是(還)的平衡,你可以做到以下幾點:

  1. 找到公鑰到ADRESS。例如與此服務爲MainNet不會忽略:https://www.biteasy.com/blockchain/addresses/1CjgioGLRpLyEiFSsLpYdEKfaFjWg3ZWSS
  2. 添加這個公鑰錢包: kit.wallet().addKey(new ECKey(null, Hex.decode("0210fdade86b268597e9aa4f2adc314fe459837be831aeb532f04b32c160b4e50a")));
  3. 把錢包自動保存模式 kit.setAutoSave(true);
  4. 運行此

現在你有PUBKEY爲此你想知道錢包裏的餘額。刪除區塊鏈文件:forwarding-service-testnet.spvchain

您的公鑰沒有創建日期,您的錢包中的區塊鏈下載需要更長的時間。但最終你應該看到適當的平衡。

WalletAppKit並不是要檢查它以後沒有生成或添加的密鑰對的餘額。所以這就是爲什麼這應該是更復雜。

您可以創建普通電子錢包,添加密鑰,將其添加到PeerGroup和SPVBlockschain,然後開始下載塊以獲取計算餘額所需的信息。無論何時將密鑰添加到錢包,如果密鑰比最後一個塊舊,則必須重新下載SPVBlockchain。

1

在您的代碼中,您正在檢查您的錢包(尚未包含任何地址)的餘額,而不是您創建的地址的餘額。您應該嘗試將您從網上創建的地址的密鑰導入您在本地創建的電子錢包,然後該錢包中的餘額出現在您的錢包中。

0

您可以通過使用

WalletAppKit kit = new WalletAppKit(params, new File("."), "walletappkit2"); 

    System.out.println("you have got :" + MonetaryFormat.BTC.noCode().format(kit.wallet().getBalance()).toString());