From fd0a6ec71fc5cd050c2cff2e6a7f94c7130521d8 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Mon, 14 Feb 2022 22:53:30 +0000 Subject: [PATCH] Fix for invalid balance (and transaction amount) when there are no outputs relating to this wallet. --- src/main/java/org/qortal/crosschain/Bitcoiny.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/org/qortal/crosschain/Bitcoiny.java b/src/main/java/org/qortal/crosschain/Bitcoiny.java index a5a1ab12..b29d9fe3 100644 --- a/src/main/java/org/qortal/crosschain/Bitcoiny.java +++ b/src/main/java/org/qortal/crosschain/Bitcoiny.java @@ -470,6 +470,8 @@ public abstract class Bitcoiny implements ForeignBlockchain { List inputs = new ArrayList<>(); List outputs = new ArrayList<>(); + boolean anyOutputAddressInWallet = false; + for (BitcoinyTransaction.Input input : t.inputs) { try { BitcoinyTransaction t2 = getTransaction(input.outputTxHash); @@ -502,6 +504,7 @@ public abstract class Bitcoiny implements ForeignBlockchain { amount += output.value; } addressInWallet = true; + anyOutputAddressInWallet = true; } outputs.add(new SimpleTransaction.Output(address, output.value, addressInWallet)); } @@ -510,6 +513,13 @@ public abstract class Bitcoiny implements ForeignBlockchain { } } long fee = totalInputAmount - totalOutputAmount; + + if (!anyOutputAddressInWallet) { + // No outputs relate to this wallet - check if any inputs did (which is signified by a positive total) + if (total > 0) { + amount = total * -1; + } + } return new SimpleTransaction(t.txHash, t.timestamp, amount, fee, inputs, outputs); }