用bitcoinj检查钱包余额

时间:2014-03-05 00:46:20

标签: java bitcoin bitcoinj

我正在尝试学习bitcoinj API,我在下面编写了测试代码。我创建了一个帐户:

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

}

3 个答案:

答案 0 :(得分:2)

分配后您没有使用forwardingAdress。我想这不是那个钱包里的一个驴子的地址吗?

要获取电子钱包中尚未(尚未)的地址余额,您可以执行以下操作:

  1. 找到地址的PublicKey。例如,使用此服务进行MainNet地址:https://www.biteasy.com/blockchain/addresses/1CjgioGLRpLyEiFSsLpYdEKfaFjWg3ZWSS
  2. 将此公钥添加到钱包: kit.wallet().addKey(new ECKey(null, Hex.decode("0210fdade86b268597e9aa4f2adc314fe459837be831aeb532f04b32c160b4e50a")));
  3. 将钱包置于自动保存模式 kit.setAutoSave(true);
  4. 运行此
  5. 现在你有了一个你想知道钱包里的余额的pubkey。删除区块链文件:forwarding-service-testnet.spvchain

    您的钱包中没有创建日期的公钥,区块链下载需要更长时间。但最终你应该看到适当的平衡。

    WalletAppKit并非用于检查未生成或稍后添加的密钥对的余额。这就是为什么这应该是更复杂的。

    您可以创建普通电子钱包,添加密钥,将其添加到PeerGroup和SPVBlockschain,然后开始下载块以获取计算余额所需的信息。每当您向钱包添加密钥时,如果密钥比最后一个块旧,则必须重新下载SPVBlockchain。

答案 1 :(得分:1)

在您的代码中,您正在检查钱包的余额(尚未包含任何地址),而不是您创建的地址的余额。您应该尝试将您在网络上创建的地址的密钥导入您在本地创建的电子钱包,然后才能从该地址中显示余额。

答案 2 :(得分:0)

您可以使用

检查您的bitcoinj余额
    WalletAppKit kit = new WalletAppKit(params, new File("."), "walletappkit2");

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