我正在尝试通过 bitcoinj(版本 0.14.3)进行交易,我希望在付款后取回零钱。我正在使用测试网,它不是真正的比特币。我有下一个代码:
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);
所以,我将两个输出放入事务中:
- 汇款地址
- 取回零钱的钱包地址
我寄一些钱到第一个地址。我向第二个地址发送下一个值:我钱包上的所有可用资金减去收到到第一个地址的钱。
但播出后我有一个意想不到的结果。在使用此方案进行了一些交易后,我注意到从我的钱包中提取的错误值。令人惊讶的是,有时钱会被提取,但有时钱会进入钱包。
有人可以解释我做错了什么以及如何解决吗?