我正在嘗試通過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
有人可以解釋我做錯了,如何解決呢?