diff --git a/core/src/main/java/haveno/core/api/CoreMoneroConnectionsService.java b/core/src/main/java/haveno/core/api/CoreMoneroConnectionsService.java
index f5132f73..acd06e50 100644
--- a/core/src/main/java/haveno/core/api/CoreMoneroConnectionsService.java
+++ b/core/src/main/java/haveno/core/api/CoreMoneroConnectionsService.java
@@ -36,7 +36,6 @@ import javax.inject.Inject;
 import javax.inject.Singleton;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -368,67 +367,6 @@ public final class CoreMoneroConnectionsService {
             connectionManager.reset();
             connectionManager.setTimeout(REFRESH_PERIOD_HTTP_MS);
 
-            // load previous or default connections
-            if (coreContext.isApiUser()) {
-
-                // load previous connections
-                for (MoneroRpcConnection connection : connectionList.getConnections()) connectionManager.addConnection(connection);
-                log.info("Read " + connectionList.getConnections().size() + " previous connections from disk");
-
-                // add default connections
-                for (XmrNode node : xmrNodes.getAllXmrNodes()) {
-                    if (node.hasClearNetAddress()) {
-                        MoneroRpcConnection connection = new MoneroRpcConnection(node.getAddress() + ":" + node.getPort()).setPriority(node.getPriority());
-                        if (!connectionList.hasConnection(connection.getUri())) addConnection(connection);
-                    }
-                    if (node.hasOnionAddress()) {
-                        MoneroRpcConnection connection = new MoneroRpcConnection(node.getOnionAddress() + ":" + node.getPort()).setPriority(node.getPriority());
-                        if (!connectionList.hasConnection(connection.getUri())) addConnection(connection);
-                    }
-                }
-            } else {
-
-                // add default connections
-                for (XmrNode node : xmrNodes.selectPreferredNodes(new XmrNodesSetupPreferences(preferences))) {
-                    if (node.hasClearNetAddress()) {
-                        MoneroRpcConnection connection = new MoneroRpcConnection(node.getAddress() + ":" + node.getPort()).setPriority(node.getPriority());
-                        addConnection(connection);
-                    }
-                    if (node.hasOnionAddress()) {
-                        MoneroRpcConnection connection = new MoneroRpcConnection(node.getOnionAddress() + ":" + node.getPort()).setPriority(node.getPriority());
-                        addConnection(connection);
-                    }
-                }
-            }
-
-            // set current connection
-            Optional<String> currentConnectionUri = Optional.empty();
-            if ("".equals(config.xmrNode)) {
-                if (coreContext.isApiUser() && connectionList.getCurrentConnectionUri().isPresent()) {
-                    currentConnectionUri = connectionList.getCurrentConnectionUri();
-                    connectionManager.setConnection(currentConnectionUri.get());
-                }
-            } else if (!isInitialized) {
-
-                // set monero connection from startup arguments
-                MoneroRpcConnection connection = new MoneroRpcConnection(config.xmrNode, config.xmrNodeUsername, config.xmrNodePassword).setPriority(1);
-                if (useProxy(connection)) connection.setProxyUri(getProxyUri());
-                connectionManager.setConnection(connection);
-                currentConnectionUri = Optional.of(connection.getUri());
-            }
-
-            // set connection proxies
-            log.info("TOR proxy URI: " + getProxyUri());
-            for (MoneroRpcConnection connection : connectionManager.getConnections()) {
-                if (useProxy(connection)) connection.setProxyUri(getProxyUri());
-            }
-
-            // restore configuration
-            if ("".equals(config.xmrNode)) connectionManager.setAutoSwitch(connectionList.getAutoSwitch());
-
-            // check connection
-            checkConnection();
-
             // run once
             if (!isInitialized) {
 
@@ -439,6 +377,7 @@ public final class CoreMoneroConnectionsService {
                         log.info(getClass() + ".onNodeStarted() called");
                         daemon.getRpcConnection().checkConnection(connectionManager.getTimeout());
                         setConnection(daemon.getRpcConnection());
+                        checkConnection();
                     }
 
                     @Override
@@ -449,43 +388,88 @@ public final class CoreMoneroConnectionsService {
                 });
             }
 
-            // if offline and last connection is local node, start local node if it's offline
-            currentConnectionUri.ifPresent(uri -> {
-                try {
-                    if (!connectionManager.isConnected() && nodeService.equalsUri(uri) && !nodeService.isOnline()) {
+            // restore connections
+            if ("".equals(config.xmrNode)) {
+
+                // load previous or default connections
+                if (coreContext.isApiUser()) {
+
+                    // load previous connections
+                    for (MoneroRpcConnection connection : connectionList.getConnections()) connectionManager.addConnection(connection);
+                    log.info("Read " + connectionList.getConnections().size() + " previous connections from disk");
+
+                    // add default connections
+                    for (XmrNode node : xmrNodes.getAllXmrNodes()) {
+                        if (node.hasClearNetAddress()) {
+                            MoneroRpcConnection connection = new MoneroRpcConnection(node.getAddress() + ":" + node.getPort()).setPriority(node.getPriority());
+                            if (!connectionList.hasConnection(connection.getUri())) addConnection(connection);
+                        }
+                        if (node.hasOnionAddress()) {
+                            MoneroRpcConnection connection = new MoneroRpcConnection(node.getOnionAddress() + ":" + node.getPort()).setPriority(node.getPriority());
+                            if (!connectionList.hasConnection(connection.getUri())) addConnection(connection);
+                        }
+                    }
+                } else {
+
+                    // add default connections
+                    for (XmrNode node : xmrNodes.selectPreferredNodes(new XmrNodesSetupPreferences(preferences))) {
+                        if (node.hasClearNetAddress()) {
+                            MoneroRpcConnection connection = new MoneroRpcConnection(node.getAddress() + ":" + node.getPort()).setPriority(node.getPriority());
+                            addConnection(connection);
+                        }
+                        if (node.hasOnionAddress()) {
+                            MoneroRpcConnection connection = new MoneroRpcConnection(node.getOnionAddress() + ":" + node.getPort()).setPriority(node.getPriority());
+                            addConnection(connection);
+                        }
+                    }
+                }
+
+                // restore last connection
+                if (connectionList.getCurrentConnectionUri().isPresent()) {
+                    connectionManager.setConnection(connectionList.getCurrentConnectionUri().get());
+                }
+
+                // set connection proxies
+                log.info("TOR proxy URI: " + getProxyUri());
+                for (MoneroRpcConnection connection : connectionManager.getConnections()) {
+                    if (useProxy(connection)) connection.setProxyUri(getProxyUri());
+                }
+
+                // restore auto switch
+                if (coreContext.isApiUser()) connectionManager.setAutoSwitch(connectionList.getAutoSwitch());
+                else connectionManager.setAutoSwitch(true);
+
+                // start local node if used as last connection and currently offline
+                if (connectionManager.getConnection() != null && nodeService.equalsUri(connectionManager.getConnection().getUri()) && !nodeService.isOnline()) {
+                    try {
                         log.info("Starting local node");
                         nodeService.startMoneroNode();
+                    } catch (Exception e) {
+                        log.warn("Unable to start local monero node: " + e.getMessage());
+                        e.printStackTrace();
                     }
-                } catch (Exception e) {
-                    log.warn("Unable to start local monero node: " + e.getMessage());
-                    e.printStackTrace();
                 }
-            });
 
-            // prefer to connect to local node unless prevented by configuration
-            if ("".equals(config.xmrNode) &&
-                    (!connectionManager.isConnected() || connectionManager.getAutoSwitch()) &&
-                    nodeService.isConnected()) {
-                MoneroRpcConnection connection = connectionManager.getConnectionByUri(nodeService.getDaemon().getRpcConnection().getUri());
-                if (connection != null) {
-                    connection.checkConnection(connectionManager.getTimeout());
-                    setConnection(connection);
+                // update connection
+                if (connectionManager.getConnection() == null || connectionManager.getAutoSwitch()) {
+                    setConnection(getBestAvailableConnection());
+                } else {
+                    checkConnection();
                 }
+            } else if (!isInitialized) {
+
+                // set connection from startup argument if given
+                connectionManager.setAutoSwitch(false);
+                MoneroRpcConnection connection = new MoneroRpcConnection(config.xmrNode, config.xmrNodeUsername, config.xmrNodePassword).setPriority(1);
+                if (useProxy(connection)) connection.setProxyUri(getProxyUri());
+                connectionManager.setConnection(connection);
             }
 
-            // if using legacy desktop app, connect to best available connection
-            if (!coreContext.isApiUser() && "".equals(config.xmrNode)) {
-                connectionManager.setAutoSwitch(true);
-                MoneroRpcConnection bestConnection = connectionManager.getBestAvailableConnection();
-                log.info("Setting best available connection for monerod: " + (bestConnection == null ? null : bestConnection.getUri()));
-                connectionManager.setConnection(bestConnection);
-            }
-
-            // register connection change listener
+            // register connection listener
             connectionManager.addListener(this::onConnectionChanged);
-            isInitialized = true;
 
-            // update connection state
+            // notify final connection
+            isInitialized = true;
             onConnectionChanged(connectionManager.getConnection());
         }
     }
@@ -556,10 +540,11 @@ public final class CoreMoneroConnectionsService {
             numPeers.set(lastInfo.getNumOutgoingConnections() + lastInfo.getNumIncomingConnections());
             peers.set(new ArrayList<MoneroPeer>());
             
-            // log recovery message
+            // handle error recovery
             if (lastErrorTimestamp != null) {
                 log.info("Successfully fetched daemon info after previous error");
                 lastErrorTimestamp = null;
+                HavenoUtils.havenoSetup.getWalletServiceErrorMsg().set(null);
             }
 
             // update and notify connected state
@@ -575,6 +560,9 @@ public final class CoreMoneroConnectionsService {
                 if (DevEnv.isDevMode()) e.printStackTrace();
             }
 
+            // notify error message
+            HavenoUtils.havenoSetup.getWalletServiceErrorMsg().set(e.getMessage());
+
             // check connection which notifies of changes
             synchronized (this) {
                 if (connectionManager.getAutoSwitch()) connectionManager.setConnection(connectionManager.getBestAvailableConnection());
diff --git a/core/src/main/java/haveno/core/app/HavenoSetup.java b/core/src/main/java/haveno/core/app/HavenoSetup.java
index d25e4ffe..b921342b 100644
--- a/core/src/main/java/haveno/core/app/HavenoSetup.java
+++ b/core/src/main/java/haveno/core/app/HavenoSetup.java
@@ -727,24 +727,24 @@ public class HavenoSetup {
     ///////////////////////////////////////////////////////////////////////////////////////////
 
     // Wallet
-    public StringProperty getBtcInfo() {
-        return walletAppSetup.getBtcInfo();
+    public StringProperty getXmrInfo() {
+        return walletAppSetup.getXmrInfo();
     }
 
-    public DoubleProperty getBtcSyncProgress() {
-        return walletAppSetup.getBtcSyncProgress();
+    public DoubleProperty getXmrSyncProgress() {
+        return walletAppSetup.getXmrSyncProgress();
     }
 
     public StringProperty getWalletServiceErrorMsg() {
         return walletAppSetup.getWalletServiceErrorMsg();
     }
 
-    public StringProperty getBtcSplashSyncIconId() {
-        return walletAppSetup.getBtcSplashSyncIconId();
+    public StringProperty getXmrSplashSyncIconId() {
+        return walletAppSetup.getXmrSplashSyncIconId();
     }
 
-    public BooleanProperty getUseTorForBTC() {
-        return walletAppSetup.getUseTorForBTC();
+    public BooleanProperty getUseTorForXMR() {
+        return walletAppSetup.getUseTorForXMR();
     }
 
     // P2P
diff --git a/core/src/main/java/haveno/core/app/WalletAppSetup.java b/core/src/main/java/haveno/core/app/WalletAppSetup.java
index 1dd7e683..c0399329 100644
--- a/core/src/main/java/haveno/core/app/WalletAppSetup.java
+++ b/core/src/main/java/haveno/core/app/WalletAppSetup.java
@@ -67,20 +67,20 @@ public class WalletAppSetup {
     private final Preferences preferences;
 
     @SuppressWarnings("FieldCanBeLocal")
-    private MonadicBinding<String> btcInfoBinding;
+    private MonadicBinding<String> xmrInfoBinding;
 
     @Getter
-    private final DoubleProperty btcSyncProgress = new SimpleDoubleProperty(-1);
+    private final DoubleProperty xmrSyncProgress = new SimpleDoubleProperty(-1);
     @Getter
     private final StringProperty walletServiceErrorMsg = new SimpleStringProperty();
     @Getter
-    private final StringProperty btcSplashSyncIconId = new SimpleStringProperty();
+    private final StringProperty xmrSplashSyncIconId = new SimpleStringProperty();
     @Getter
-    private final StringProperty btcInfo = new SimpleStringProperty(Res.get("mainView.footer.btcInfo.initializing"));
+    private final StringProperty xmrInfo = new SimpleStringProperty(Res.get("mainView.footer.xmrInfo.initializing"));
     @Getter
     private final ObjectProperty<RejectedTxException> rejectedTxException = new SimpleObjectProperty<>();
     @Getter
-    private final BooleanProperty useTorForBTC = new SimpleBooleanProperty();
+    private final BooleanProperty useTorForXMR = new SimpleBooleanProperty();
 
     @Inject
     public WalletAppSetup(CoreContext coreContext,
@@ -95,7 +95,7 @@ public class WalletAppSetup {
         this.connectionService = connectionService;
         this.config = config;
         this.preferences = preferences;
-        this.useTorForBTC.set(preferences.getUseTorForMonero());
+        this.useTorForXMR.set(preferences.getUseTorForMonero());
     }
 
     void init(@Nullable Consumer<String> chainFileLockedExceptionHandler,
@@ -107,58 +107,59 @@ public class WalletAppSetup {
                 VersionMessage.BITCOINJ_VERSION, "2a80db4");
 
         ObjectProperty<Throwable> walletServiceException = new SimpleObjectProperty<>();
-        btcInfoBinding = EasyBind.combine(connectionService.downloadPercentageProperty(), // TODO (woodser): update to XMR
+        xmrInfoBinding = EasyBind.combine(connectionService.downloadPercentageProperty(), // TODO (woodser): update to XMR
                 connectionService.chainHeightProperty(),
                 walletServiceException,
-                (downloadPercentage, chainHeight, exception) -> {
+                getWalletServiceErrorMsg(),
+                (downloadPercentage, chainHeight, exception, errorMsg) -> {
                     String result;
-                    if (exception == null) {
+                    if (exception == null && errorMsg == null) {
                         double percentage = (double) downloadPercentage;
-                        btcSyncProgress.set(percentage);
+                        xmrSyncProgress.set(percentage);
                         MoneroDaemonInfo lastInfo = connectionService.getLastInfo();
                         Long bestChainHeight = lastInfo == null ? null : lastInfo.getHeight();
                         String chainHeightAsString = bestChainHeight != null && bestChainHeight > 0 ?
                                 String.valueOf(bestChainHeight) :
                                 "";
                         if (percentage == 1) {
-                            String synchronizedWith = Res.get("mainView.footer.btcInfo.synchronizedWith",
-                                    getBtcNetworkAsString(), chainHeightAsString);
+                            String synchronizedWith = Res.get("mainView.footer.xmrInfo.synchronizedWith",
+                                    getXmrNetworkAsString(), chainHeightAsString);
                             String feeInfo = ""; // TODO: feeService.isFeeAvailable() returns true, disable
-                            result = Res.get("mainView.footer.btcInfo", synchronizedWith, feeInfo);
-                            getBtcSplashSyncIconId().set("image-connection-synced");
+                            result = Res.get("mainView.footer.xmrInfo", synchronizedWith, feeInfo);
+                            getXmrSplashSyncIconId().set("image-connection-synced");
                             downloadCompleteHandler.run();
                         } else if (percentage > 0.0) {
-                            String synchronizingWith = Res.get("mainView.footer.btcInfo.synchronizingWith",
-                                    getBtcNetworkAsString(), chainHeightAsString,
+                            String synchronizingWith = Res.get("mainView.footer.xmrInfo.synchronizingWith",
+                                    getXmrNetworkAsString(), chainHeightAsString,
                                     FormattingUtils.formatToPercentWithSymbol(percentage));
-                            result = Res.get("mainView.footer.btcInfo", synchronizingWith, "");
+                            result = Res.get("mainView.footer.xmrInfo", synchronizingWith, "");
                         } else {
-                            result = Res.get("mainView.footer.btcInfo",
-                                    Res.get("mainView.footer.btcInfo.connectingTo"),
-                                    getBtcNetworkAsString());
+                            result = Res.get("mainView.footer.xmrInfo",
+                                    Res.get("mainView.footer.xmrInfo.connectingTo"),
+                                    getXmrNetworkAsString());
                         }
                     } else {
-                        result = Res.get("mainView.footer.btcInfo",
-                                Res.get("mainView.footer.btcInfo.connectionFailed"),
-                                getBtcNetworkAsString());
-                        log.error(exception.toString());
-                        if (exception instanceof TimeoutException) {
-                            getWalletServiceErrorMsg().set(Res.get("mainView.walletServiceErrorMsg.timeout"));
-                        } else if (exception.getCause() instanceof BlockStoreException) {
-                            if (exception.getCause().getCause() instanceof ChainFileLockedException && chainFileLockedExceptionHandler != null) {
-                                chainFileLockedExceptionHandler.accept(Res.get("popup.warning.startupFailed.twoInstances"));
+                        result = Res.get("mainView.footer.xmrInfo",
+                                Res.get("mainView.footer.xmrInfo.connectionFailed"),
+                                getXmrNetworkAsString());
+                        if (exception != null) {
+                            if (exception instanceof TimeoutException) {
+                                getWalletServiceErrorMsg().set(Res.get("mainView.walletServiceErrorMsg.timeout"));
+                            } else if (exception.getCause() instanceof BlockStoreException) {
+                                if (exception.getCause().getCause() instanceof ChainFileLockedException && chainFileLockedExceptionHandler != null) {
+                                    chainFileLockedExceptionHandler.accept(Res.get("popup.warning.startupFailed.twoInstances"));
+                                }
+                            } else if (exception instanceof RejectedTxException) {
+                                rejectedTxException.set((RejectedTxException) exception);
+                                getWalletServiceErrorMsg().set(Res.get("mainView.walletServiceErrorMsg.rejectedTxException", exception.getMessage()));
+                            } else {
+                                getWalletServiceErrorMsg().set(Res.get("mainView.walletServiceErrorMsg.connectionError", exception.getMessage()));
                             }
-                        } else if (exception instanceof RejectedTxException) {
-                            rejectedTxException.set((RejectedTxException) exception);
-                            getWalletServiceErrorMsg().set(Res.get("mainView.walletServiceErrorMsg.rejectedTxException", exception.getMessage()));
-                        } else {
-                            getWalletServiceErrorMsg().set(Res.get("mainView.walletServiceErrorMsg.connectionError", exception.getMessage()));
                         }
                     }
                     return result;
-
                 });
-        btcInfoBinding.subscribe((observable, oldValue, newValue) -> UserThread.execute(() -> btcInfo.set(newValue)));
+        xmrInfoBinding.subscribe((observable, oldValue, newValue) -> UserThread.execute(() -> xmrInfo.set(newValue)));
 
         walletsSetup.initialize(null,
                 () -> {
@@ -253,7 +254,7 @@ public class WalletAppSetup {
         });
     }
 
-    private String getBtcNetworkAsString() {
+    private String getXmrNetworkAsString() {
         String postFix;
         if (config.ignoreLocalXmrNode)
             postFix = " " + Res.get("mainView.footer.localhostBitcoinNode");
diff --git a/core/src/main/java/haveno/core/xmr/nodes/XmrNodes.java b/core/src/main/java/haveno/core/xmr/nodes/XmrNodes.java
index 06dc99b3..eda060c7 100644
--- a/core/src/main/java/haveno/core/xmr/nodes/XmrNodes.java
+++ b/core/src/main/java/haveno/core/xmr/nodes/XmrNodes.java
@@ -56,22 +56,22 @@ public class XmrNodes {
                 return Arrays.asList(
                     new XmrNode(MoneroNodesOption.PROVIDED, null, null, "127.0.0.1", 38081, 1, "@local"),
                     new XmrNode(MoneroNodesOption.PROVIDED, null, null, "127.0.0.1", 39081, 1, "@local"),
-                    new XmrNode(MoneroNodesOption.PROVIDED, null, null, "45.63.8.26", 38081, 1, "@haveno"),
-                    new XmrNode(MoneroNodesOption.PROVIDED, null, null, "stagenet.community.rino.io", 38081, 2, "@RINOwallet"),
-                    new XmrNode(MoneroNodesOption.PUBLIC, null, null, "stagenet.melo.tools", 38081, 2, null),
-                    new XmrNode(MoneroNodesOption.PUBLIC, null, null, "node.sethforprivacy.com", 38089, 2, null),
-                    new XmrNode(MoneroNodesOption.PUBLIC, null, null, "node2.sethforprivacy.com", 38089, 2, null),
+                    new XmrNode(MoneroNodesOption.PROVIDED, null, null, "45.63.8.26", 38081, 2, "@haveno"),
+                    new XmrNode(MoneroNodesOption.PROVIDED, null, null, "stagenet.community.rino.io", 38081, 3, "@RINOwallet"),
+                    new XmrNode(MoneroNodesOption.PUBLIC, null, null, "stagenet.melo.tools", 38081, 3, null),
+                    new XmrNode(MoneroNodesOption.PUBLIC, null, null, "node.sethforprivacy.com", 38089, 3, null),
+                    new XmrNode(MoneroNodesOption.PUBLIC, null, null, "node2.sethforprivacy.com", 38089, 3, null),
                     new XmrNode(MoneroNodesOption.PUBLIC, null, "plowsof3t5hogddwabaeiyrno25efmzfxyro2vligremt7sxpsclfaid.onion", null, 38089, 2, null)
                 );
             case XMR_MAINNET:
                 return Arrays.asList(
                     new XmrNode(MoneroNodesOption.PROVIDED, null, null, "127.0.0.1", 18081, 1, "@local"),
-                    new XmrNode(MoneroNodesOption.PROVIDED, null, null, "xmr-node.cakewallet.com", 18081, 1, "@cakewallet"),
+                    new XmrNode(MoneroNodesOption.PROVIDED, null, null, "xmr-node.cakewallet.com", 18081, 2, "@cakewallet"),
+                    new XmrNode(MoneroNodesOption.PROVIDED, null, null, "xmr-node-eu.cakewallet.com", 18081, 2, "@cakewallet"),
+                    new XmrNode(MoneroNodesOption.PROVIDED, null, null, "xmr-node-usa-east.cakewallet.com", 18081, 2, "@cakewallet"),
+                    new XmrNode(MoneroNodesOption.PROVIDED, null, null, "xmr-node-uk.cakewallet.com", 18081, 2, "@cakewallet"),
                     new XmrNode(MoneroNodesOption.PUBLIC, null, null, "node.community.rino.io", 18081, 2, "@RINOwallet"),
-                    new XmrNode(MoneroNodesOption.PUBLIC, null, null, "xmr-node-eu.cakewallet.com", 18081, 2, "@cakewallet"),
-                    new XmrNode(MoneroNodesOption.PUBLIC, null, null, "xmr-node-usa-east.cakewallet.com", 18081, 2, "@cakewallet"),
-                    new XmrNode(MoneroNodesOption.PUBLIC, null, null, "xmr-node-uk.cakewallet.com", 18081, 2, "@cakewallet"),
-                    new XmrNode(MoneroNodesOption.PUBLIC, null, null, "node.sethforprivacy.com", 18089, 2, "@sethforprivacy")
+                    new XmrNode(MoneroNodesOption.PUBLIC, null, null, "node.sethforprivacy.com", 18089, 3, "@sethforprivacy")
                 );
             default:
                 throw new IllegalStateException("Unexpected base currency network: " + Config.baseCurrencyNetwork());
diff --git a/core/src/main/java/haveno/core/xmr/nodes/XmrNodesSetupPreferences.java b/core/src/main/java/haveno/core/xmr/nodes/XmrNodesSetupPreferences.java
index 3a67b41f..583a82c5 100644
--- a/core/src/main/java/haveno/core/xmr/nodes/XmrNodesSetupPreferences.java
+++ b/core/src/main/java/haveno/core/xmr/nodes/XmrNodesSetupPreferences.java
@@ -42,8 +42,8 @@ public class XmrNodesSetupPreferences {
         XmrNodes.MoneroNodesOption nodesOption = XmrNodes.MoneroNodesOption.values()[preferences.getMoneroNodesOptionOrdinal()];
         switch (nodesOption) {
             case CUSTOM:
-                String bitcoinNodes = preferences.getMoneroNodes();
-                Set<String> distinctNodes = Utilities.commaSeparatedListToSet(bitcoinNodes, false);
+                String moneroNodes = preferences.getMoneroNodes();
+                Set<String> distinctNodes = Utilities.commaSeparatedListToSet(moneroNodes, false);
                 result = XmrNodes.toCustomXmrNodesList(distinctNodes);
                 if (result.isEmpty()) {
                     log.warn("Custom nodes is set but no valid nodes are provided. " +
diff --git a/core/src/main/java/haveno/core/xmr/wallet/XmrWalletService.java b/core/src/main/java/haveno/core/xmr/wallet/XmrWalletService.java
index 8543d2f7..d5fd337d 100644
--- a/core/src/main/java/haveno/core/xmr/wallet/XmrWalletService.java
+++ b/core/src/main/java/haveno/core/xmr/wallet/XmrWalletService.java
@@ -675,7 +675,7 @@ public class XmrWalletService {
         if (wallet != null) {
             log.info("Monero wallet uri={}, path={}", wallet.getRpcConnection().getUri(), wallet.getPath());
             int numAttempts = 0;
-            int maxAttempts = 2;
+            int maxAttempts = 3;
             while (!HavenoUtils.havenoSetup.getWalletInitialized().get()) {
                 try {
                 
diff --git a/core/src/main/resources/i18n/displayStrings.properties b/core/src/main/resources/i18n/displayStrings.properties
index 61e4bf84..bea94814 100644
--- a/core/src/main/resources/i18n/displayStrings.properties
+++ b/core/src/main/resources/i18n/displayStrings.properties
@@ -265,13 +265,13 @@ mainView.balance.pending.short=Pending
 
 mainView.footer.usingTor=(via Tor)
 mainView.footer.localhostBitcoinNode=(localhost)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ Fee rate: {0} sat/vB
-mainView.footer.btcInfo.initializing=Connecting to Monero network
-mainView.footer.btcInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith=Synced with {0} at block {1}
-mainView.footer.btcInfo.connectingTo=Connecting to
-mainView.footer.btcInfo.connectionFailed=Connection failed to
+mainView.footer.xmrInfo.initializing=Connecting to Monero network
+mainView.footer.xmrInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith=Synced with {0} at block {1}
+mainView.footer.xmrInfo.connectingTo=Connecting to
+mainView.footer.xmrInfo.connectionFailed=Connection failed to
 mainView.footer.xmrPeers=Monero network peers: {0}
 mainView.footer.p2pPeers=Haveno network peers: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_cs.properties b/core/src/main/resources/i18n/displayStrings_cs.properties
index e6862dd0..37dbea6a 100644
--- a/core/src/main/resources/i18n/displayStrings_cs.properties
+++ b/core/src/main/resources/i18n/displayStrings_cs.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=Zamčeno
 
 mainView.footer.usingTor=(přes Tor)
 mainView.footer.localhostBitcoinNode=(localhost)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ Aktuální poplatek: {0} sat/vB
-mainView.footer.btcInfo.initializing=Připojování do Bitcoinové sítě
-mainView.footer.btcInfo.synchronizingWith=Synchronizace s {0} v bloku: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith=Synchronizováno s {0} v bloku {1}
-mainView.footer.btcInfo.connectingTo=Připojování
-mainView.footer.btcInfo.connectionFailed=Připojení se nezdařilo
+mainView.footer.xmrInfo.initializing=Připojování do Bitcoinové sítě
+mainView.footer.xmrInfo.synchronizingWith=Synchronizace s {0} v bloku: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith=Synchronizováno s {0} v bloku {1}
+mainView.footer.xmrInfo.connectingTo=Připojování
+mainView.footer.xmrInfo.connectionFailed=Připojení se nezdařilo
 mainView.footer.xmrPeers=Monero síťové nody: {0}
 mainView.footer.p2pPeers=Haveno síťové nody: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_de.properties b/core/src/main/resources/i18n/displayStrings_de.properties
index 5e134789..1b799b5e 100644
--- a/core/src/main/resources/i18n/displayStrings_de.properties
+++ b/core/src/main/resources/i18n/displayStrings_de.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=Gesperrt
 
 mainView.footer.usingTor=(über Tor)
 mainView.footer.localhostBitcoinNode=(localhost)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ Aktuelle Gebühr: {0} sat/vB
-mainView.footer.btcInfo.initializing=Verbindung mit Bitcoin-Netzwerk wird hergestellt
-mainView.footer.btcInfo.synchronizingWith=Synchronisierung mit {0} bei Block: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith=Synchronisierung mit {0} bei Block {1}
-mainView.footer.btcInfo.connectingTo=Verbinde mit
-mainView.footer.btcInfo.connectionFailed=Verbindung fehlgeschlagen zu
+mainView.footer.xmrInfo.initializing=Verbindung mit Bitcoin-Netzwerk wird hergestellt
+mainView.footer.xmrInfo.synchronizingWith=Synchronisierung mit {0} bei Block: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith=Synchronisierung mit {0} bei Block {1}
+mainView.footer.xmrInfo.connectingTo=Verbinde mit
+mainView.footer.xmrInfo.connectionFailed=Verbindung fehlgeschlagen zu
 mainView.footer.xmrPeers=Monero Netzwerk Peers: {0}
 mainView.footer.p2pPeers=Haveno Netzwerk Peers: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_es.properties b/core/src/main/resources/i18n/displayStrings_es.properties
index 31d88537..c2c211a5 100644
--- a/core/src/main/resources/i18n/displayStrings_es.properties
+++ b/core/src/main/resources/i18n/displayStrings_es.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=Bloqueado
 
 mainView.footer.usingTor=(via Tor)
 mainView.footer.localhostBitcoinNode=(localhost)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/Tasas actuales: {0} sat/vB
-mainView.footer.btcInfo.initializing=Conectando a la red Bitcoin
-mainView.footer.btcInfo.synchronizingWith=Sincronizando con {0} en el bloque: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith=Sincronizado con {0} en el bloque {1}
-mainView.footer.btcInfo.connectingTo=Conectando a
-mainView.footer.btcInfo.connectionFailed=Conexión fallida a
+mainView.footer.xmrInfo.initializing=Conectando a la red Bitcoin
+mainView.footer.xmrInfo.synchronizingWith=Sincronizando con {0} en el bloque: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith=Sincronizado con {0} en el bloque {1}
+mainView.footer.xmrInfo.connectingTo=Conectando a
+mainView.footer.xmrInfo.connectionFailed=Conexión fallida a
 mainView.footer.xmrPeers=Pares de Monero: {0}
 mainView.footer.p2pPeers=Pares de la red de Haveno: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_fa.properties b/core/src/main/resources/i18n/displayStrings_fa.properties
index 041f0d02..09fb690e 100644
--- a/core/src/main/resources/i18n/displayStrings_fa.properties
+++ b/core/src/main/resources/i18n/displayStrings_fa.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=قفل شده
 
 mainView.footer.usingTor=(via Tor)
 mainView.footer.localhostBitcoinNode=(لوکال هاست)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ Fee rate: {0} sat/vB
-mainView.footer.btcInfo.initializing=در حال ارتباط با شبکه بیت‌کوین
-mainView.footer.btcInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith=Synced with {0} at block {1}
-mainView.footer.btcInfo.connectingTo=در حال ایجاد ارتباط با
-mainView.footer.btcInfo.connectionFailed=Connection failed to
+mainView.footer.xmrInfo.initializing=در حال ارتباط با شبکه بیت‌کوین
+mainView.footer.xmrInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith=Synced with {0} at block {1}
+mainView.footer.xmrInfo.connectingTo=در حال ایجاد ارتباط با
+mainView.footer.xmrInfo.connectionFailed=Connection failed to
 mainView.footer.xmrPeers=Monero network peers: {0}
 mainView.footer.p2pPeers=Haveno network peers: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_fr.properties b/core/src/main/resources/i18n/displayStrings_fr.properties
index 380b8c71..fb9541a9 100644
--- a/core/src/main/resources/i18n/displayStrings_fr.properties
+++ b/core/src/main/resources/i18n/displayStrings_fr.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=Vérouillé
 
 mainView.footer.usingTor=(à travers Tor)
 mainView.footer.localhostBitcoinNode=(localhost)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ Taux des frais: {0} sat/vB
-mainView.footer.btcInfo.initializing=Connexion au réseau Bitcoin en cours
-mainView.footer.btcInfo.synchronizingWith=Synchronisation avec {0} au block: {1}/ {2}
-mainView.footer.btcInfo.synchronizedWith=Synchronisé avec {0} au block {1}
-mainView.footer.btcInfo.connectingTo=Se connecte à
-mainView.footer.btcInfo.connectionFailed=Échec de la connexion à
+mainView.footer.xmrInfo.initializing=Connexion au réseau Bitcoin en cours
+mainView.footer.xmrInfo.synchronizingWith=Synchronisation avec {0} au block: {1}/ {2}
+mainView.footer.xmrInfo.synchronizedWith=Synchronisé avec {0} au block {1}
+mainView.footer.xmrInfo.connectingTo=Se connecte à
+mainView.footer.xmrInfo.connectionFailed=Échec de la connexion à
 mainView.footer.xmrPeers=Pairs du réseau Monero: {0}
 mainView.footer.p2pPeers=Pairs du réseau Haveno: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_it.properties b/core/src/main/resources/i18n/displayStrings_it.properties
index 269aef15..d2290f54 100644
--- a/core/src/main/resources/i18n/displayStrings_it.properties
+++ b/core/src/main/resources/i18n/displayStrings_it.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=Bloccati
 
 mainView.footer.usingTor=(via Tor)
 mainView.footer.localhostBitcoinNode=(localhost)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ Fee rate: {0} sat/vB
-mainView.footer.btcInfo.initializing=Connessione alla rete Bitcoin
-mainView.footer.btcInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith=Synced with {0} at block {1}
-mainView.footer.btcInfo.connectingTo=Connessione a
-mainView.footer.btcInfo.connectionFailed=Connessione fallita
+mainView.footer.xmrInfo.initializing=Connessione alla rete Bitcoin
+mainView.footer.xmrInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith=Synced with {0} at block {1}
+mainView.footer.xmrInfo.connectingTo=Connessione a
+mainView.footer.xmrInfo.connectionFailed=Connessione fallita
 mainView.footer.xmrPeers=Monero network peers: {0}
 mainView.footer.p2pPeers=Haveno network peers: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_ja.properties b/core/src/main/resources/i18n/displayStrings_ja.properties
index fcb74d1f..5659e28e 100644
--- a/core/src/main/resources/i18n/displayStrings_ja.properties
+++ b/core/src/main/resources/i18n/displayStrings_ja.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=ロック中
 
 mainView.footer.usingTor=(Tor経由で)
 mainView.footer.localhostBitcoinNode=(ローカルホスト)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ 手数料率: {0} サトシ/vB
-mainView.footer.btcInfo.initializing=ビットコインネットワークに接続中
-mainView.footer.btcInfo.synchronizingWith={0}と同期中、ブロック: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith={0}と同期されています、ブロック{1}に
-mainView.footer.btcInfo.connectingTo=接続中:
-mainView.footer.btcInfo.connectionFailed=接続失敗
+mainView.footer.xmrInfo.initializing=ビットコインネットワークに接続中
+mainView.footer.xmrInfo.synchronizingWith={0}と同期中、ブロック: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith={0}と同期されています、ブロック{1}に
+mainView.footer.xmrInfo.connectingTo=接続中:
+mainView.footer.xmrInfo.connectionFailed=接続失敗
 mainView.footer.xmrPeers=Moneroネットワークピア: {0}
 mainView.footer.p2pPeers=Havenoネットワークピア: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_pt-br.properties b/core/src/main/resources/i18n/displayStrings_pt-br.properties
index 1d00e589..0949476e 100644
--- a/core/src/main/resources/i18n/displayStrings_pt-br.properties
+++ b/core/src/main/resources/i18n/displayStrings_pt-br.properties
@@ -249,13 +249,13 @@ mainView.balance.pending.short=Travado
 
 mainView.footer.usingTor=(via Tor)
 mainView.footer.localhostBitcoinNode=(localhost)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ Fee rate: {0} sat/vB
-mainView.footer.btcInfo.initializing=Conectando-se à rede Bitcoin
-mainView.footer.btcInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith=Synced with {0} at block {1}
-mainView.footer.btcInfo.connectingTo=Conectando-se a
-mainView.footer.btcInfo.connectionFailed=Falha na conexão à
+mainView.footer.xmrInfo.initializing=Conectando-se à rede Bitcoin
+mainView.footer.xmrInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith=Synced with {0} at block {1}
+mainView.footer.xmrInfo.connectingTo=Conectando-se a
+mainView.footer.xmrInfo.connectionFailed=Falha na conexão à
 mainView.footer.xmrPeers=Monero network peers: {0}
 mainView.footer.p2pPeers=Haveno network peers: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_pt.properties b/core/src/main/resources/i18n/displayStrings_pt.properties
index 480661fe..4b79d526 100644
--- a/core/src/main/resources/i18n/displayStrings_pt.properties
+++ b/core/src/main/resources/i18n/displayStrings_pt.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=Bloqueado
 
 mainView.footer.usingTor=(via Tor)
 mainView.footer.localhostBitcoinNode=(localhost)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ Fee rate: {0} sat/vB
-mainView.footer.btcInfo.initializing=Conectando à rede Bitcoin
-mainView.footer.btcInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith=Synced with {0} at block {1}
-mainView.footer.btcInfo.connectingTo=Conectando à
-mainView.footer.btcInfo.connectionFailed=Connection failed to
+mainView.footer.xmrInfo.initializing=Conectando à rede Bitcoin
+mainView.footer.xmrInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith=Synced with {0} at block {1}
+mainView.footer.xmrInfo.connectingTo=Conectando à
+mainView.footer.xmrInfo.connectionFailed=Connection failed to
 mainView.footer.xmrPeers=Monero network peers: {0}
 mainView.footer.p2pPeers=Haveno network peers: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_ru.properties b/core/src/main/resources/i18n/displayStrings_ru.properties
index e0fc9d90..3d9cb4b1 100644
--- a/core/src/main/resources/i18n/displayStrings_ru.properties
+++ b/core/src/main/resources/i18n/displayStrings_ru.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=В сделках
 
 mainView.footer.usingTor=(via Tor)
 mainView.footer.localhostBitcoinNode=(локальный узел)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ Fee rate: {0} sat/vB
-mainView.footer.btcInfo.initializing=Подключение к сети Биткойн
-mainView.footer.btcInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith=Synced with {0} at block {1}
-mainView.footer.btcInfo.connectingTo=Подключение к
-mainView.footer.btcInfo.connectionFailed=Connection failed to
+mainView.footer.xmrInfo.initializing=Подключение к сети Биткойн
+mainView.footer.xmrInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith=Synced with {0} at block {1}
+mainView.footer.xmrInfo.connectingTo=Подключение к
+mainView.footer.xmrInfo.connectionFailed=Connection failed to
 mainView.footer.xmrPeers=Monero network peers: {0}
 mainView.footer.p2pPeers=Haveno network peers: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_th.properties b/core/src/main/resources/i18n/displayStrings_th.properties
index d9fdb4a4..25e56aba 100644
--- a/core/src/main/resources/i18n/displayStrings_th.properties
+++ b/core/src/main/resources/i18n/displayStrings_th.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=ถูกล็อคไว้
 
 mainView.footer.usingTor=(via Tor)
 mainView.footer.localhostBitcoinNode=(แม่ข่ายเฉพาะที่)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ Fee rate: {0} sat/vB
-mainView.footer.btcInfo.initializing=Connecting to Bitcoin network
-mainView.footer.btcInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith=Synced with {0} at block {1}
-mainView.footer.btcInfo.connectingTo=Connecting to
-mainView.footer.btcInfo.connectionFailed=Connection failed to
+mainView.footer.xmrInfo.initializing=Connecting to Bitcoin network
+mainView.footer.xmrInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith=Synced with {0} at block {1}
+mainView.footer.xmrInfo.connectingTo=Connecting to
+mainView.footer.xmrInfo.connectionFailed=Connection failed to
 mainView.footer.xmrPeers=Monero network peers: {0}
 mainView.footer.p2pPeers=Haveno network peers: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_vi.properties b/core/src/main/resources/i18n/displayStrings_vi.properties
index 653aa292..c169d985 100644
--- a/core/src/main/resources/i18n/displayStrings_vi.properties
+++ b/core/src/main/resources/i18n/displayStrings_vi.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=Bị khóa
 
 mainView.footer.usingTor=(via Tor)
 mainView.footer.localhostBitcoinNode=(Máy chủ nội bộ)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ Fee rate: {0} sat/vB
-mainView.footer.btcInfo.initializing=Đang kết nối với mạng Bitcoin
-mainView.footer.btcInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith=Synced with {0} at block {1}
-mainView.footer.btcInfo.connectingTo=Đang kết nối với
-mainView.footer.btcInfo.connectionFailed=Connection failed to
+mainView.footer.xmrInfo.initializing=Đang kết nối với mạng Bitcoin
+mainView.footer.xmrInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith=Synced with {0} at block {1}
+mainView.footer.xmrInfo.connectingTo=Đang kết nối với
+mainView.footer.xmrInfo.connectionFailed=Connection failed to
 mainView.footer.xmrPeers=Monero network peers: {0}
 mainView.footer.p2pPeers=Haveno network peers: {0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_zh-hans.properties b/core/src/main/resources/i18n/displayStrings_zh-hans.properties
index 3677c613..90ce2deb 100644
--- a/core/src/main/resources/i18n/displayStrings_zh-hans.properties
+++ b/core/src/main/resources/i18n/displayStrings_zh-hans.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=冻结
 
 mainView.footer.usingTor=(通过 Tor)
 mainView.footer.localhostBitcoinNode=(本地主机)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ 矿工手费率:{0} 聪/字节
-mainView.footer.btcInfo.initializing=连接至比特币网络
-mainView.footer.btcInfo.synchronizingWith=正在通过{0}同步区块:{1}/{2}
-mainView.footer.btcInfo.synchronizedWith=已通过{0}同步至区块{1}
-mainView.footer.btcInfo.connectingTo=连接至
-mainView.footer.btcInfo.connectionFailed=连接失败:
+mainView.footer.xmrInfo.initializing=连接至比特币网络
+mainView.footer.xmrInfo.synchronizingWith=正在通过{0}同步区块:{1}/{2}
+mainView.footer.xmrInfo.synchronizedWith=已通过{0}同步至区块{1}
+mainView.footer.xmrInfo.connectingTo=连接至
+mainView.footer.xmrInfo.connectionFailed=连接失败:
 mainView.footer.xmrPeers=Monero网络节点:{0}
 mainView.footer.p2pPeers=Haveno 网络节点:{0}
 
diff --git a/core/src/main/resources/i18n/displayStrings_zh-hant.properties b/core/src/main/resources/i18n/displayStrings_zh-hant.properties
index 2cc4b0fa..6dd97b9f 100644
--- a/core/src/main/resources/i18n/displayStrings_zh-hant.properties
+++ b/core/src/main/resources/i18n/displayStrings_zh-hant.properties
@@ -246,13 +246,13 @@ mainView.balance.pending.short=凍結
 
 mainView.footer.usingTor=(via Tor)
 mainView.footer.localhostBitcoinNode=(本地主機)
-mainView.footer.btcInfo={0} {1}
+mainView.footer.xmrInfo={0} {1}
 mainView.footer.btcFeeRate=/ Fee rate: {0} sat/vB
-mainView.footer.btcInfo.initializing=連接至比特幣網絡
-mainView.footer.btcInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
-mainView.footer.btcInfo.synchronizedWith=Synced with {0} at block {1}
-mainView.footer.btcInfo.connectingTo=連接至
-mainView.footer.btcInfo.connectionFailed=連接失敗:
+mainView.footer.xmrInfo.initializing=連接至比特幣網絡
+mainView.footer.xmrInfo.synchronizingWith=Synchronizing with {0} at block: {1} / {2}
+mainView.footer.xmrInfo.synchronizedWith=Synced with {0} at block {1}
+mainView.footer.xmrInfo.connectingTo=連接至
+mainView.footer.xmrInfo.connectionFailed=連接失敗:
 mainView.footer.xmrPeers=Monero網絡節點:{0}
 mainView.footer.p2pPeers=Haveno 網絡節點:{0}
 
diff --git a/desktop/src/main/java/haveno/desktop/main/MainView.java b/desktop/src/main/java/haveno/desktop/main/MainView.java
index 3be68ccd..5c0ce6be 100644
--- a/desktop/src/main/java/haveno/desktop/main/MainView.java
+++ b/desktop/src/main/java/haveno/desktop/main/MainView.java
@@ -117,15 +117,15 @@ public class MainView extends InitializableView<StackPane, MainViewModel>  {
     private final Navigation navigation;
     private final ToggleGroup navButtons = new ToggleGroup();
     private ChangeListener<String> walletServiceErrorMsgListener;
-    private ChangeListener<String> btcSyncIconIdListener;
+    private ChangeListener<String> xmrSyncIconIdListener;
     private ChangeListener<String> splashP2PNetworkErrorMsgListener;
     private ChangeListener<String> splashP2PNetworkIconIdListener;
     private ChangeListener<Boolean> splashP2PNetworkVisibleListener;
     private BusyAnimation splashP2PNetworkBusyAnimation;
     private Label splashP2PNetworkLabel;
-    private ProgressBar btcSyncIndicator, p2pNetworkProgressBar;
-    private Label btcSplashInfo;
-    private Popup p2PNetworkWarnMsgPopup, btcNetworkWarnMsgPopup;
+    private ProgressBar xmrSyncIndicator, p2pNetworkProgressBar;
+    private Label xmrSplashInfo;
+    private Popup p2PNetworkWarnMsgPopup, xmrNetworkWarnMsgPopup;
     private final TorNetworkSettingsWindow torNetworkSettingsWindow;
 
     public static StackPane getRootContainer() {
@@ -515,31 +515,31 @@ public class MainView extends InitializableView<StackPane, MainViewModel>  {
         logo.setId(Config.baseCurrencyNetwork() == BaseCurrencyNetwork.XMR_MAINNET ? "image-splash-logo" : "image-splash-testnet-logo");
 
         // createBitcoinInfoBox
-        btcSplashInfo = new AutoTooltipLabel();
-        btcSplashInfo.textProperty().bind(model.getBtcInfo());
+        xmrSplashInfo = new AutoTooltipLabel();
+        xmrSplashInfo.textProperty().bind(model.getXmrInfo());
         walletServiceErrorMsgListener = (ov, oldValue, newValue) -> {
-            btcSplashInfo.setId("splash-error-state-msg");
-            btcSplashInfo.getStyleClass().add("error-text");
+            xmrSplashInfo.setId("splash-error-state-msg");
+            xmrSplashInfo.getStyleClass().add("error-text");
         };
         model.getWalletServiceErrorMsg().addListener(walletServiceErrorMsgListener);
 
-        btcSyncIndicator = new JFXProgressBar();
-        btcSyncIndicator.setPrefWidth(305);
-        btcSyncIndicator.progressProperty().bind(model.getCombinedSyncProgress());
+        xmrSyncIndicator = new JFXProgressBar();
+        xmrSyncIndicator.setPrefWidth(305);
+        xmrSyncIndicator.progressProperty().bind(model.getCombinedSyncProgress());
 
-        ImageView btcSyncIcon = new ImageView();
-        btcSyncIcon.setVisible(false);
-        btcSyncIcon.setManaged(false);
+        ImageView xmrSyncIcon = new ImageView();
+        xmrSyncIcon.setVisible(false);
+        xmrSyncIcon.setManaged(false);
 
-        btcSyncIconIdListener = (ov, oldValue, newValue) -> {
-            btcSyncIcon.setId(newValue);
-            btcSyncIcon.setVisible(true);
-            btcSyncIcon.setManaged(true);
+        xmrSyncIconIdListener = (ov, oldValue, newValue) -> {
+            xmrSyncIcon.setId(newValue);
+            xmrSyncIcon.setVisible(true);
+            xmrSyncIcon.setManaged(true);
 
-            btcSyncIndicator.setVisible(false);
-            btcSyncIndicator.setManaged(false);
+            xmrSyncIndicator.setVisible(false);
+            xmrSyncIndicator.setManaged(false);
         };
-        model.getBtcSplashSyncIconId().addListener(btcSyncIconIdListener);
+        model.getXmrSplashSyncIconId().addListener(xmrSyncIconIdListener);
 
 
         HBox blockchainSyncBox = new HBox();
@@ -547,7 +547,7 @@ public class MainView extends InitializableView<StackPane, MainViewModel>  {
         blockchainSyncBox.setAlignment(Pos.CENTER);
         blockchainSyncBox.setPadding(new Insets(40, 0, 0, 0));
         blockchainSyncBox.setPrefHeight(50);
-        blockchainSyncBox.getChildren().addAll(btcSplashInfo, btcSyncIcon);
+        blockchainSyncBox.getChildren().addAll(xmrSplashInfo, xmrSyncIcon);
 
 
         // create P2PNetworkBox
@@ -574,10 +574,10 @@ public class MainView extends InitializableView<StackPane, MainViewModel>  {
                 splashP2PNetworkBusyAnimation.stop();
                 showTorNetworkSettingsButton.setVisible(true);
                 showTorNetworkSettingsButton.setManaged(true);
-                if (model.getUseTorForBTC().get()) {
-                    // If using tor for BTC, hide the BTC status since tor is not working
-                    btcSyncIndicator.setVisible(false);
-                    btcSplashInfo.setVisible(false);
+                if (model.getUseTorForXMR().get()) {
+                    // If using tor for XMR, hide the XMR status since tor is not working
+                    xmrSyncIndicator.setVisible(false);
+                    xmrSplashInfo.setVisible(false);
                 }
             } else if (model.getSplashP2PNetworkAnimationVisible().get()) {
                 splashP2PNetworkBusyAnimation.setDisable(false);
@@ -623,20 +623,20 @@ public class MainView extends InitializableView<StackPane, MainViewModel>  {
         splashP2PNetworkBox.setPrefHeight(40);
         splashP2PNetworkBox.getChildren().addAll(splashP2PNetworkLabel, splashP2PNetworkBusyAnimation, splashP2PNetworkIcon, showTorNetworkSettingsButton);
 
-        vBox.getChildren().addAll(logo, blockchainSyncBox, btcSyncIndicator, splashP2PNetworkBox);
+        vBox.getChildren().addAll(logo, blockchainSyncBox, xmrSyncIndicator, splashP2PNetworkBox);
         return vBox;
     }
 
     private void disposeSplashScreen() {
         model.getWalletServiceErrorMsg().removeListener(walletServiceErrorMsgListener);
-        model.getBtcSplashSyncIconId().removeListener(btcSyncIconIdListener);
+        model.getXmrSplashSyncIconId().removeListener(xmrSyncIconIdListener);
 
         model.getP2pNetworkWarnMsg().removeListener(splashP2PNetworkErrorMsgListener);
         model.getP2PNetworkIconId().removeListener(splashP2PNetworkIconIdListener);
         model.getSplashP2PNetworkAnimationVisible().removeListener(splashP2PNetworkVisibleListener);
 
-        btcSplashInfo.textProperty().unbind();
-        btcSyncIndicator.progressProperty().unbind();
+        xmrSplashInfo.textProperty().unbind();
+        xmrSyncIndicator.progressProperty().unbind();
 
         splashP2PNetworkLabel.textProperty().unbind();
 
@@ -653,12 +653,12 @@ public class MainView extends InitializableView<StackPane, MainViewModel>  {
         setRightAnchor(separator, 0d);
         setTopAnchor(separator, 0d);
 
-        // BTC
-        Label btcInfoLabel = new AutoTooltipLabel();
-        btcInfoLabel.setId("footer-pane");
-        btcInfoLabel.textProperty().bind(model.getBtcInfo());
-        setLeftAnchor(btcInfoLabel, 10d);
-        setBottomAnchor(btcInfoLabel, 7d);
+        // XMR
+        Label xmrInfoLabel = new AutoTooltipLabel();
+        xmrInfoLabel.setId("footer-pane");
+        xmrInfoLabel.textProperty().bind(model.getXmrInfo());
+        setLeftAnchor(xmrInfoLabel, 10d);
+        setBottomAnchor(xmrInfoLabel, 7d);
 
         // temporarily disabled due to high CPU usage (per issue #4649)
         //ProgressBar blockchainSyncIndicator = new JFXProgressBar(-1);
@@ -668,16 +668,16 @@ public class MainView extends InitializableView<StackPane, MainViewModel>  {
 
         model.getWalletServiceErrorMsg().addListener((ov, oldValue, newValue) -> {
             if (newValue != null) {
-                btcInfoLabel.setId("splash-error-state-msg");
-                btcInfoLabel.getStyleClass().add("error-text");
-                if (btcNetworkWarnMsgPopup == null) {
-                    btcNetworkWarnMsgPopup = new Popup().warning(newValue);
-                    btcNetworkWarnMsgPopup.show();
-                }
+                xmrInfoLabel.setId("splash-error-state-msg");
+                xmrInfoLabel.getStyleClass().add("error-text");
+                // if (xmrNetworkWarnMsgPopup == null) {
+                //     xmrNetworkWarnMsgPopup = new Popup().warning(newValue);
+                //     xmrNetworkWarnMsgPopup.show();
+                // }
             } else {
-                btcInfoLabel.setId("footer-pane");
-                if (btcNetworkWarnMsgPopup != null)
-                    btcNetworkWarnMsgPopup.hide();
+                xmrInfoLabel.setId("footer-pane");
+                // if (xmrNetworkWarnMsgPopup != null)
+                //     xmrNetworkWarnMsgPopup.hide();
             }
         });
 
@@ -787,7 +787,7 @@ public class MainView extends InitializableView<StackPane, MainViewModel>  {
         setRightAnchor(vBox, 53d);
         setBottomAnchor(vBox, 5d);
 
-        return new AnchorPane(separator, btcInfoLabel, versionBox, vBox, p2PNetworkStatusIcon, p2PNetworkIcon) {{
+        return new AnchorPane(separator, xmrInfoLabel, versionBox, vBox, p2PNetworkStatusIcon, p2PNetworkIcon) {{
             setId("footer-pane");
             setMinHeight(30);
             setMaxHeight(30);
diff --git a/desktop/src/main/java/haveno/desktop/main/MainViewModel.java b/desktop/src/main/java/haveno/desktop/main/MainViewModel.java
index 86ed1a25..2bed9752 100644
--- a/desktop/src/main/java/haveno/desktop/main/MainViewModel.java
+++ b/desktop/src/main/java/haveno/desktop/main/MainViewModel.java
@@ -260,7 +260,6 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
         });
 
         setupP2PNumPeersWatcher();
-        setupXmrNumPeersWatcher();
 
         marketPricePresentation.setup();
         accountPresentation.setup();
@@ -421,7 +420,7 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
                 .warning(Res.get("popup.error.takeOfferRequestFailed", errorMessage))
                 .show());
 
-        havenoSetup.getBtcSyncProgress().addListener((observable, oldValue, newValue) -> updateBtcSyncProgress());
+        havenoSetup.getXmrSyncProgress().addListener((observable, oldValue, newValue) -> updateXmrSyncProgress());
 
         havenoSetup.setFilterWarningHandler(warning -> new Popup().warning(warning).show());
 
@@ -496,36 +495,6 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
         });
     }
 
-    private void setupXmrNumPeersWatcher() {
-        connectionService.numPeersProperty().addListener((observable, oldValue, newValue) -> {
-            int numPeers = (int) newValue;
-            if ((int) oldValue > 0 && numPeers == 0) {
-                if (checkNumberOfXmrPeersTimer != null)
-                    checkNumberOfXmrPeersTimer.stop();
-
-                checkNumberOfXmrPeersTimer = UserThread.runAfter(() -> {
-                    // check again numPeers
-                    if (connectionService.numPeersProperty().get() == 0) {
-                        if (localBitcoinNode.shouldBeUsed())
-                            getWalletServiceErrorMsg().set(
-                                    Res.get("mainView.networkWarning.localhostBitcoinLost", // TODO: update error message for XMR
-                                            Res.getBaseCurrencyName().toLowerCase()));
-                        else
-                            getWalletServiceErrorMsg().set(
-                                    Res.get("mainView.networkWarning.allConnectionsLost",
-                                            Res.getBaseCurrencyName().toLowerCase()));
-                    } else {
-                        getWalletServiceErrorMsg().set(null);
-                    }
-                }, 5);
-            } else if ((int) oldValue == 0 && numPeers > 0) {
-                if (checkNumberOfXmrPeersTimer != null)
-                    checkNumberOfXmrPeersTimer.stop();
-                getWalletServiceErrorMsg().set(null);
-            }
-        });
-    }
-
     private void showPopupIfInvalidBtcConfig() {
         preferences.setMoneroNodesOptionOrdinal(0);
         new Popup().warning(Res.get("settings.net.warn.invalidBtcConfig"))
@@ -564,10 +533,10 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
         }
     }
 
-    private void updateBtcSyncProgress() {
-        final DoubleProperty btcSyncProgress = havenoSetup.getBtcSyncProgress();
+    private void updateXmrSyncProgress() {
+        final DoubleProperty xmrSyncProgress = havenoSetup.getXmrSyncProgress();
 
-            combinedSyncProgress.set(btcSyncProgress.doubleValue());
+            combinedSyncProgress.set(xmrSyncProgress.doubleValue());
     }
 
     private void setupInvalidOpenOffersHandler() {
@@ -637,9 +606,9 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
 
 
     // Wallet
-    StringProperty getBtcInfo() {
+    StringProperty getXmrInfo() {
         final StringProperty combinedInfo = new SimpleStringProperty();
-        combinedInfo.bind(havenoSetup.getBtcInfo());
+        combinedInfo.bind(havenoSetup.getXmrInfo());
         return combinedInfo;
     }
 
@@ -657,12 +626,12 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
         return havenoSetup.getWalletServiceErrorMsg();
     }
 
-    StringProperty getBtcSplashSyncIconId() {
-        return havenoSetup.getBtcSplashSyncIconId();
+    StringProperty getXmrSplashSyncIconId() {
+        return havenoSetup.getXmrSplashSyncIconId();
     }
 
-    BooleanProperty getUseTorForBTC() {
-        return havenoSetup.getUseTorForBTC();
+    BooleanProperty getUseTorForXMR() {
+        return havenoSetup.getUseTorForXMR();
     }
 
     // P2P