我正在尝试通过bitcoinj(版本0.14.3)进行交易,并且我期望在付款后获得更改。我正在使用testnet,它不是真正的比特币。 我有下面的代码:通过bitcoinj付款的正确方法
Transaction tx = new Transaction(this.networkParameters);
Coin coinToSent = Coin.valueOf(Config.APP_COST);
Coin coinToChange = Coin.valueOf(walletBalance.getValue() - coinToSent.getValue());
tx.addOutput(coinToSent, appAddress);
tx.addOutput(coinToChange, changeAddress);
SendRequest request = SendRequest.forTx(tx);
try {
this.walletAppKit.wallet().completeTx(request);
} catch (InsufficientMoneyException e) {
e.printStackTrace();
return false;
}
this.walletAppKit.wallet().commitTx(request.tx);
this.walletAppKit.peerGroup().broadcastTransaction(request.tx);
所以,我把两个输出到交易:
- 地址来发送钱我的钱包
- 地址获取变回
给我的第一个地址,我寄了一些钱。对于第二个地址,我发送下一个值:我的钱包上的所有可用钱减去收到的第一个地址的钱。
但广播后,我有一个意外的结果。在与这个计划进行了几次交易之后,我注意到从我的钱包中退出的错误值。令人惊讶的是,有时候金钱正在退出,但有时候金钱来到了钱包。
Here is the link to testnet explorer
有人可以解释我做错了,如何解决呢?