Я пытаюсь совершить транзакцию через биткойн (версия 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);
Итак, я помещаю два выхода в транзакцию:
- Адрес для отправки денег
- Адрес моего кошелька для возврата сдачи
На первый адрес я посылаю немного денег. И на второй адрес я отправляю следующее значение: все доступные деньги на моем кошельке за вычетом денег, полученных на первый адрес.
Но после трансляции у меня был неожиданный результат. Совершив несколько транзакций по этой схеме, я заметил, что из моего кошелька выводятся неправильные суммы. Что удивительно, иногда деньги снимаются, а иногда приходят на кошелек.
Вот ссылка на testnet explorer
Может кто-нибудь объяснить, что я делаю неправильно и как это исправить?