diff --git a/assets/ethereum_server_list.yml b/assets/ethereum_server_list.yml
index 47b975c12..125085d88 100644
--- a/assets/ethereum_server_list.yml
+++ b/assets/ethereum_server_list.yml
@@ -2,8 +2,6 @@
   uri: ethereum.publicnode.com
 -
   uri: eth.llamarpc.com
--
-  uri: rpc.ankr.com/eth
 -
   uri: rpc.flashbots.net
 -
diff --git a/cw_core/lib/node.dart b/cw_core/lib/node.dart
index fef5f0ecb..4e25957bc 100644
--- a/cw_core/lib/node.dart
+++ b/cw_core/lib/node.dart
@@ -161,7 +161,7 @@ class Node extends HiveObject with Keyable {
     } catch (_) {
       return false;
     }
-}
+  }
 
   Future<bool> requestElectrumServer() async {
     try {
@@ -172,4 +172,17 @@ class Node extends HiveObject with Keyable {
       return false;
     }
   }
+
+  Future<bool> requestEthereumServer() async {
+    try {
+      final response = await http.get(
+        uri,
+        headers: {'Content-Type': 'application/json'},
+      );
+
+      return response.statusCode >= 200 && response.statusCode < 300;
+    } catch (_) {
+      return false;
+    }
+  }
 }
diff --git a/lib/view_model/dashboard/balance_view_model.dart b/lib/view_model/dashboard/balance_view_model.dart
index 21c0e78ad..7c4c9bb90 100644
--- a/lib/view_model/dashboard/balance_view_model.dart
+++ b/lib/view_model/dashboard/balance_view_model.dart
@@ -1,4 +1,5 @@
 import 'package:cake_wallet/entities/fiat_api_mode.dart';
+import 'package:cake_wallet/entities/sort_balance_types.dart';
 import 'package:cw_core/transaction_history.dart';
 import 'package:cw_core/wallet_base.dart';
 import 'package:cw_core/balance.dart';
@@ -81,6 +82,12 @@ abstract class BalanceViewModelBase with Store {
   @computed
   bool get isHomeScreenSettingsEnabled => wallet.type == WalletType.ethereum;
 
+  @computed
+  SortBalanceBy get sortBalanceBy => settingsStore.sortBalanceBy;
+
+  @computed
+  bool get pinNativeToken => settingsStore.pinNativeTokenAtTop;
+
   @computed
   String get asset {
     final typeFormatted = walletTypeToString(appStore.wallet!.type);
@@ -213,7 +220,7 @@ abstract class BalanceViewModelBase with Store {
 
   @computed
   Map<CryptoCurrency, BalanceRecord> get balances {
-    return wallet.balance.map((key, value) {
+    return _sortedBalance.map((key, value) {
       if (displayMode == BalanceDisplayMode.hiddenBalance) {
         return MapEntry(key, BalanceRecord(
           availableBalance: '---',
@@ -362,5 +369,33 @@ abstract class BalanceViewModelBase with Store {
   }
 
   String getFormattedFrozenBalance(Balance walletBalance) => walletBalance.formattedFrozenBalance;
+
+  @computed
+  Map<CryptoCurrency, Balance> get _sortedBalance {
+    final Map<CryptoCurrency, Balance> sortedMap = {};
+    if (pinNativeToken) {
+      sortedMap[wallet.currency] = wallet.balance[wallet.currency]!;
+    }
+    switch (sortBalanceBy) {
+      case SortBalanceBy.FiatBalance:
+        sortedMap.addAll(Map.fromEntries(wallet.balance.entries.toList()
+          ..sort((e1, e2) => double.parse(
+              _getFiatBalance(price: price, cryptoAmount: e2.value.formattedAvailableBalance))
+              .compareTo(double.parse(_getFiatBalance(
+              price: price, cryptoAmount: e1.value.formattedAvailableBalance))))));
+        break;
+      case SortBalanceBy.GrossBalance:
+        sortedMap.addAll(Map.fromEntries(wallet.balance.entries.toList()
+          ..sort((e1, e2) => double.parse(e2.value.formattedAvailableBalance)
+              .compareTo(double.parse(e1.value.formattedAvailableBalance)))));
+        break;
+      case SortBalanceBy.Alphabetical:
+        sortedMap.addAll(Map.fromEntries(wallet.balance.entries.toList()
+          ..sort((e1, e2) => e1.key.title.compareTo(e2.key.title))));
+        break;
+    }
+
+    return sortedMap;
+  }
 }