From 456bb3ca63c12948d796a06a785b44edbd83ec68 Mon Sep 17 00:00:00 2001 From: catbref Date: Thu, 10 Dec 2020 14:01:40 +0000 Subject: [PATCH] Include output addresses, if present, in BitcoinyTransaction --- .../org/qortal/crosschain/BitcoinyTransaction.java | 10 ++++++++++ src/main/java/org/qortal/crosschain/ElectrumX.java | 11 ++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/qortal/crosschain/BitcoinyTransaction.java b/src/main/java/org/qortal/crosschain/BitcoinyTransaction.java index e6f84de6..a283cd45 100644 --- a/src/main/java/org/qortal/crosschain/BitcoinyTransaction.java +++ b/src/main/java/org/qortal/crosschain/BitcoinyTransaction.java @@ -1,6 +1,7 @@ package org.qortal.crosschain; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; import javax.xml.bind.annotation.XmlAccessType; @@ -46,16 +47,25 @@ public class BitcoinyTransaction { public static class Output { public final String scriptPubKey; public final long value; + public final Set addresses; // For JAXB protected Output() { this.scriptPubKey = null; this.value = 0; + this.addresses = null; } public Output(String scriptPubKey, long value) { this.scriptPubKey = scriptPubKey; this.value = value; + this.addresses = null; + } + + public Output(String scriptPubKey, long value, Set addresses) { + this.scriptPubKey = scriptPubKey; + this.value = value; + this.addresses = addresses; } public String toString() { diff --git a/src/main/java/org/qortal/crosschain/ElectrumX.java b/src/main/java/org/qortal/crosschain/ElectrumX.java index 06c5ecb4..58afe88e 100644 --- a/src/main/java/org/qortal/crosschain/ElectrumX.java +++ b/src/main/java/org/qortal/crosschain/ElectrumX.java @@ -329,7 +329,16 @@ public class ElectrumX extends BitcoinyBlockchainProvider { String scriptPubKey = (String) ((JSONObject) outputJson.get("scriptPubKey")).get("hex"); long value = (long) (((Double) outputJson.get("value")) * 1e8); - outputs.add(new BitcoinyTransaction.Output(scriptPubKey, value)); + // address too, if present + Set addresses = null; + Object addressesObj = ((JSONObject) outputJson.get("scriptPubKey")).get("addresses"); + if (addressesObj instanceof JSONArray) { + addresses = new HashSet<>(); + for (Object addressObj : (JSONArray) addressesObj) + addresses.add((String) addressObj); + } + + outputs.add(new BitcoinyTransaction.Output(scriptPubKey, value, addresses)); } return new BitcoinyTransaction(txHash, size, locktime, timestamp, inputs, outputs);