Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用bitcoinj检查钱包余额_Java_Bitcoin_Bitcoinj - Fatal编程技术网

Java 使用bitcoinj检查钱包余额

Java 使用bitcoinj检查钱包余额,java,bitcoin,bitcoinj,Java,Bitcoin,Bitcoinj,我正在尝试学习BitcoinJAPI,并在下面编写了测试代码。我在以下方面创建了一个帐户: 所以我可以使用假硬币并测试发送/接收。当我登录到URL时,我的帐户显示了14个假的BTC。然而,我下面的代码表明我有0枚硬币。有人能帮我理解我错过了什么吗?我使用了getBalance和getWatchedBalance,但运气不佳 public class CheckBalance { public static void main(String[] args) throws Excepti

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

所以我可以使用假硬币并测试发送/接收。当我登录到URL时,我的帐户显示了14个假的BTC。然而,我下面的代码表明我有0枚硬币。有人能帮我理解我错过了什么吗?我使用了
getBalance
getWatchedBalance
,但运气不佳

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

}

分配ForwardingAddress后,您没有使用它。我猜这不是钱包里的公钥地址吧

要获得钱包中未包含的地址的余额,您可以执行以下操作:

  • 找到地址的公钥。例如,对于MainNet地址的此服务:
  • 将此公钥添加到钱包:
    kit.wallet()
  • 将钱包置于自动保存模式
    kit.setAutoSave(真)
  • 运行这个
  • 现在你有了pubkey,你想知道钱包里的余额。删除区块链文件:forwarding-service-testnet.spvchain

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

    WalletAppKit并不是为了检查它没有生成或以后添加的密钥对的平衡。所以这就是为什么它应该更复杂的原因


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

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

    您可以使用

        WalletAppKit kit = new WalletAppKit(params, new File("."), "walletappkit2");
    
       System.out.println("you have got :" + MonetaryFormat.BTC.noCode().format(kit.wallet().getBalance()).toString());
    

    如果您联系支持该API的人,您将获得更好的支持。