Bitcoinj从钱包发送付款

时间:2018-08-10 11:19:55

标签: java transactions payment bitcoin bitcoinj

我想用我的钱包付款。

public static Transaction send(Wallet wallet,String destinationAddress,long satoshis, NetworkParameters parameters)
            throws Exception {
        Address dest = Address.fromBase58(parameters, destinationAddress);
        SendRequest request = SendRequest.to(dest, Coin.valueOf(satoshis));
        Wallet.SendResult result = wallet.sendCoins(request);
        Transaction endTransaction = result.broadcastComplete.get();
        return endTransaction;
    }

或试图制造

 SendRequest req;
        Transaction transaction = new Transaction(parameters);
        Coin coinToSpend = Coin.valueOf(600);
        //Address addressoSpend = new Address(parameters,"1PSq12YPRBCGwmb2cqqXaGpRrLfotsthPv");
        transaction.addOutput(coinToSpend,Address.fromBase58(parameters,"18MQPpjbB5UUwZBT7DALE6Q55pKCtfPCK3"));
        req = SendRequest.forTx(transaction);
        Wallet.SendResult sendResult = restoredWallet.sendCoins(req);

他们都返回

Exception in thread "main" org.bitcoinj.core.InsufficientMoneyException: Insufficient money,  missing 0.0004729 BTC

如何正确付款到另一个BTC地址?

1 个答案:

答案 0 :(得分:0)

问题实际上出在输入和输出上。在新版本的bitcoinj中,您应该设置unput并输出make transaction。不幸的是,它尚未在officail page上更新。以下是我的问题的答案:

            Coin value = Coin.valueOf(680l);
            Address to = Address.fromBase58(parameters, addressTo);

            Transaction transaction = new Transaction(parameters);
            transaction.addInput(wallet.getUnspents().get(0));// important to add proper input
            transaction.addOutput(value, to);

            SendRequest request = SendRequest.forTx(transaction);
            request.feePerKb = Coin.valueOf(1000);

            Wallet.SendResult sendResult = wallet.sendCoins(peerGroup, request);