diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java index b6f5672e..94b05c86 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java @@ -2,6 +2,7 @@ package org.qortal.controller.arbitrary; import java.io.IOException; import java.util.*; +import java.util.stream.Collectors; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -359,6 +360,24 @@ public class ArbitraryDataManager extends Thread { } + // Broadcast list of hosted signatures + + public void broadcastHostedSignatureList() { + try (final Repository repository = RepositoryManager.getRepository()) { + List hostedTransactions = ArbitraryDataStorageManager.getInstance().listAllHostedTransactions(repository); + List hostedSignatures = hostedTransactions.stream().map(ArbitraryTransactionData::getSignature).collect(Collectors.toList()); + + // Broadcast the list, using null to represent our peer address + LOGGER.info("Broadcasting list of hosted signatures..."); + Message arbitrarySignatureMessage = new ArbitrarySignaturesMessage(null, hostedSignatures); + Network.getInstance().broadcast(broadcastPeer -> arbitrarySignatureMessage); + + } catch (DataException e) { + LOGGER.error("Repository issue when fetching arbitrary transaction data for broadcast", e); + } + } + + // Handle incoming arbitrary signatures messages public void onNetworkArbitrarySignaturesMessage(Peer peer, Message message) { diff --git a/src/main/java/org/qortal/network/Network.java b/src/main/java/org/qortal/network/Network.java index 40dde099..14343442 100644 --- a/src/main/java/org/qortal/network/Network.java +++ b/src/main/java/org/qortal/network/Network.java @@ -1160,6 +1160,7 @@ public class Network { public void onExternalIpUpdate(String ipAddress) { LOGGER.info("External IP address updated to {}", ipAddress); + ArbitraryDataManager.getInstance().broadcastHostedSignatureList(); }