From e339ab856fd4fb845664cdeb69f5d909b8378ec2 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Wed, 23 Feb 2022 08:34:38 +0000 Subject: [PATCH] Skip over Electrum servers that don't return any output addresses. Hopeful fix for BTC transactions that report a zero value due to incomplete data being returned from certain ElectrumX peers. --- src/main/java/org/qortal/crosschain/ElectrumX.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/org/qortal/crosschain/ElectrumX.java b/src/main/java/org/qortal/crosschain/ElectrumX.java index 7f1eb4c4..d26d963f 100644 --- a/src/main/java/org/qortal/crosschain/ElectrumX.java +++ b/src/main/java/org/qortal/crosschain/ElectrumX.java @@ -410,6 +410,16 @@ public class ElectrumX extends BitcoinyBlockchainProvider { addresses.add((String) addressObj); } + // For the purposes of Qortal we require all outputs to contain addresses + // Some servers omit this info, causing problems down the line with balance calculations + if (addresses.isEmpty()) { + if (this.currentServer != null) { + this.uselessServers.add(this.currentServer); + this.closeServer(this.currentServer); + } + throw new ForeignBlockchainException(String.format("No output addresses returned for transaction %s", txHash)); + } + outputs.add(new BitcoinyTransaction.Output(scriptPubKey, value, addresses)); }