From b329dc41bcda502beda97108963620aec2726d47 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Fri, 1 Jul 2022 13:36:56 +0100 Subject: [PATCH 1/3] Updated incorrect ONLINE_ACCOUNTS_V3_PEER_VERSION to 3.4.0 --- src/main/java/org/qortal/controller/OnlineAccountsManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/qortal/controller/OnlineAccountsManager.java b/src/main/java/org/qortal/controller/OnlineAccountsManager.java index 6c70f582..ad610f7a 100644 --- a/src/main/java/org/qortal/controller/OnlineAccountsManager.java +++ b/src/main/java/org/qortal/controller/OnlineAccountsManager.java @@ -54,7 +54,7 @@ public class OnlineAccountsManager { private static final long ONLINE_ACCOUNTS_BROADCAST_INTERVAL = 15 * 1000L; // ms private static final long ONLINE_ACCOUNTS_V2_PEER_VERSION = 0x0300020000L; // v3.2.0 - private static final long ONLINE_ACCOUNTS_V3_PEER_VERSION = 0x03000300cbL; // v3.3.203 + private static final long ONLINE_ACCOUNTS_V3_PEER_VERSION = 0x0300040000L; // v3.4.0 private final ScheduledExecutorService executor = Executors.newScheduledThreadPool(4, new NamedThreadFactory("OnlineAccounts")); private volatile boolean isStopping = false; From 610a3fcf83edbd13b70ca4d60c3a50b2236246d6 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Fri, 1 Jul 2022 16:48:57 +0100 Subject: [PATCH 2/3] Improved order in getNodeType() --- src/main/java/org/qortal/api/resource/AdminResource.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/qortal/api/resource/AdminResource.java b/src/main/java/org/qortal/api/resource/AdminResource.java index bf7294ab..8a9d8025 100644 --- a/src/main/java/org/qortal/api/resource/AdminResource.java +++ b/src/main/java/org/qortal/api/resource/AdminResource.java @@ -125,12 +125,12 @@ public class AdminResource { } private String getNodeType() { - if (Settings.getInstance().isTopOnly()) { - return "topOnly"; - } - else if (Settings.getInstance().isLite()) { + if (Settings.getInstance().isLite()) { return "lite"; } + else if (Settings.getInstance().isTopOnly()) { + return "topOnly"; + } else { return "full"; } From 7c5932a5129bfa20d78da93b5ec0afc84c4fa98a Mon Sep 17 00:00:00 2001 From: CalDescent Date: Fri, 1 Jul 2022 17:29:15 +0100 Subject: [PATCH 3/3] GET /admin/status now returns online account submission status for "isMintingPossible", instead of BlockMinter status. Online account credit is a more useful definition of "minting" than block signing, from the user's perspective. Should bring UI minting/syncing status in line with the core's systray status. --- src/main/java/org/qortal/api/model/NodeStatus.java | 3 ++- .../org/qortal/controller/OnlineAccountsManager.java | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/qortal/api/model/NodeStatus.java b/src/main/java/org/qortal/api/model/NodeStatus.java index 9d08bb14..ab5e766e 100644 --- a/src/main/java/org/qortal/api/model/NodeStatus.java +++ b/src/main/java/org/qortal/api/model/NodeStatus.java @@ -4,6 +4,7 @@ import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import org.qortal.controller.Controller; +import org.qortal.controller.OnlineAccountsManager; import org.qortal.controller.Synchronizer; import org.qortal.network.Network; @@ -21,7 +22,7 @@ public class NodeStatus { public final int height; public NodeStatus() { - this.isMintingPossible = Controller.getInstance().isMintingPossible(); + this.isMintingPossible = OnlineAccountsManager.getInstance().hasActiveOnlineAccountSignatures(); this.syncPercent = Synchronizer.getInstance().getSyncPercent(); this.isSynchronizing = Synchronizer.getInstance().isSynchronizing(); diff --git a/src/main/java/org/qortal/controller/OnlineAccountsManager.java b/src/main/java/org/qortal/controller/OnlineAccountsManager.java index ad610f7a..1e476a4a 100644 --- a/src/main/java/org/qortal/controller/OnlineAccountsManager.java +++ b/src/main/java/org/qortal/controller/OnlineAccountsManager.java @@ -462,6 +462,18 @@ public class OnlineAccountsManager { return this.currentOnlineAccounts.containsKey(onlineAccountsTimestamp); } + /** + * Whether we have submitted - or attempted to submit - our online account + * signature(s) to the network. + * @return true if our signature(s) have been submitted recently. + */ + public boolean hasActiveOnlineAccountSignatures() { + final Long minLatestBlockTimestamp = NTP.getTime() - (2 * 60 * 60 * 1000L); + boolean isUpToDate = Controller.getInstance().isUpToDate(minLatestBlockTimestamp); + + return isUpToDate && hasOnlineAccounts(); + } + public boolean hasOurOnlineAccounts() { return this.hasOurOnlineAccounts; }