diff --git a/config/gdev_endpoints.json b/config/gdev_endpoints.json
new file mode 100644
index 0000000000000000000000000000000000000000..1e2f325ee9ab25d85bbadd6fe36bf858dc78995a
--- /dev/null
+++ b/config/gdev_endpoints.json
@@ -0,0 +1,3 @@
+[
+      "wss://gdev.librelois.fr/ws"
+]
diff --git a/config/gva_endpoints.json b/config/gva_endpoints.json
deleted file mode 100644
index 1533920c49ab9d85cd8b43f1706ff19831a1974d..0000000000000000000000000000000000000000
--- a/config/gva_endpoints.json
+++ /dev/null
@@ -1,3 +0,0 @@
-[
-      "https://g1.librelois.fr/gva"
-]
diff --git a/lib/main.dart b/lib/main.dart
index e0b29dada3ccf89714e3c54bc154d7ea4873228a..2cf37c302dc390c29344a4c76efea296432fa216 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -72,6 +72,7 @@ Future<void> main() async {
   configBox = await Hive.openBox("configBox");
   await Hive.deleteBoxFromDisk('g1WalletsBox');
   g1WalletsBox = await Hive.openBox<G1WalletsList>("g1WalletsBox");
+
   // keystoreBox = await Hive.openBox("keystoreBox");
 
   // g1WalletsBox.clear();
@@ -82,7 +83,7 @@ Future<void> main() async {
   // Get a valid GVA endpoint
   endPointGVA = 'https://g1.librelois.fr/gva';
   // endPointGVA = 'https://duniter-g1.p2p.legal/gva';
-  // await _homeProvider.getValidEndpoint();
+  await _homeProvider.getValidEndpoints();
 
   // if (endPointGVA == 'HS') {
   //   _homeProvider.playSound('faché', 0.8);
diff --git a/lib/providers/home.dart b/lib/providers/home.dart
index 2f592214de59966573536b8c8ba14d5cb3fdbc8e..4df43d01386238ce74e807cab55905f3893afd34 100644
--- a/lib/providers/home.dart
+++ b/lib/providers/home.dart
@@ -57,56 +57,62 @@ class HomeProvider with ChangeNotifier {
     return version + '+' + buildNumber;
   }
 
-  Future<String?> getValidEndpoint() async {
-    List _listEndpoints = await rootBundle
-        .loadString('config/gva_endpoints.json')
-        .then((jsonStr) => jsonDecode(jsonStr));
-    _listEndpoints.shuffle();
-
-    int i = 0;
-    String? _endpoint;
-    int _statusCode = 0;
-
-    final _client = HttpClient();
-    _client.connectionTimeout = const Duration(milliseconds: 1000);
-
-    do {
-      i++;
-      log.d(i.toString() + ' ème essai de recherche de endpoint GVA.');
-      log.d('Try GVA endpoint: ${_listEndpoints[i - 1]}');
-      int listLenght = _listEndpoints.length - 1;
-      if (i > listLenght) {
-        log.e('NO VALID GVA ENDPOINT FOUND');
-        _endpoint = 'HS';
-        break;
-      }
-      if (i != 0) {
-        await Future.delayed(const Duration(milliseconds: 300));
-      }
-
-      try {
-        final request = await _client.postUrl(Uri.parse(_listEndpoints[i]));
-        final response = await request.close();
-
-        _endpoint = _listEndpoints[i];
-        _statusCode = response.statusCode;
-      } on TimeoutException catch (_) {
-        log.e('This endpoint is timeout, next');
-        _statusCode = 50;
-        continue;
-      } on SocketException catch (_) {
-        log.e('This endpoint is a bad endpoint, next');
-        _statusCode = 70;
-        continue;
-      } on Exception {
-        log.e('Unknown error');
-        _statusCode = 60;
-        continue;
-      }
-    } while (_statusCode != 400);
+  Future<List?> getValidEndpoints() async {
+    configBox.delete('endpoint');
+
+    List _listEndpoints = [];
+    if (!configBox.containsKey('endpoint') || configBox.get('endpoint') == []) {
+      _listEndpoints = await rootBundle
+          .loadString('config/gdev_endpoints.json')
+          .then((jsonStr) => jsonDecode(jsonStr));
+      _listEndpoints.shuffle();
+      configBox.put('endpoint', _listEndpoints);
+    }
 
-    log.i('ENDPOINT: ' + _endpoint!);
-    return _endpoint;
+    // int i = 0;
+    // String? _endpoint;
+    // int _statusCode = 0;
+
+    // final _client = HttpClient();
+    // _client.connectionTimeout = const Duration(milliseconds: 1000);
+
+    // do {
+    //   i++;
+    //   log.d(i.toString() + ' ème essai de recherche de endpoint GVA.');
+    //   log.d('Try GVA endpoint: ${_listEndpoints[i - 1]}');
+    //   int listLenght = _listEndpoints.length - 1;
+    //   if (i > listLenght) {
+    //     log.e('NO VALID GVA ENDPOINT FOUND');
+    //     _endpoint = 'HS';
+    //     break;
+    //   }
+    //   if (i != 0) {
+    //     await Future.delayed(const Duration(milliseconds: 300));
+    //   }
+
+    //   try {
+    //     final request = await _client.postUrl(Uri.parse(_listEndpoints[i]));
+    //     final response = await request.close();
+
+    //     _endpoint = _listEndpoints[i];
+    //     _statusCode = response.statusCode;
+    //   } on TimeoutException catch (_) {
+    //     log.e('This endpoint is timeout, next');
+    //     _statusCode = 50;
+    //     continue;
+    //   } on SocketException catch (_) {
+    //     log.e('This endpoint is a bad endpoint, next');
+    //     _statusCode = 70;
+    //     continue;
+    //   } on Exception {
+    //     log.e('Unknown error');
+    //     _statusCode = 60;
+    //     continue;
+    //   }
+    // } while (_statusCode != 400);
+
+    log.i('ENDPOINT: ' + _listEndpoints.toString());
+    return _listEndpoints;
   }
 
   T getRandomElement<T>(List<T> list) {
diff --git a/lib/providers/my_wallets.dart b/lib/providers/my_wallets.dart
index 6760027aa7a860876c601993db564c6a2f5ab823..0d2f7d89dbf730d59d913cdd4b39505bc57914c5 100644
--- a/lib/providers/my_wallets.dart
+++ b/lib/providers/my_wallets.dart
@@ -22,11 +22,10 @@ class MyWalletsProvider with ChangeNotifier {
 
   bool checkIfWalletExist() {
     // configBox.delete('endpoint');
-    if (!configBox.containsKey('endpoint') || configBox.get('endpoint') == '') {
-      log.d('No endpoint, configure...');
-      // configBox.put('endpoint', 'wss://gdev.librelois.fr/ws');
-      configBox.put('endpoint', 'ws://127.0.0.1:9944');
-    }
+    // if (!configBox.containsKey('endpoint') || configBox.get('endpoint') == []) {
+    //   log.d('No endpoint, configure...');
+    //   configBox.put('endpoint', 'wss://gdev.librelois.fr/ws');
+    // }
 
     if (chestBox.isEmpty) {
       log.i('No wallets detected');
diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart
index a91d6fb0924ad44981a2dd7550deea96954fcba1..1306584e2e135d49fabdde911802f43864384fec 100644
--- a/lib/providers/substrate_sdk.dart
+++ b/lib/providers/substrate_sdk.dart
@@ -11,6 +11,7 @@ import 'package:polkawallet_sdk/api/types/txInfoData.dart';
 import 'package:polkawallet_sdk/polkawallet_sdk.dart';
 import 'package:polkawallet_sdk/storage/keyring.dart';
 import 'package:polkawallet_sdk/storage/types/keyPairData.dart';
+import 'package:provider/provider.dart';
 import 'package:truncate/truncate.dart';
 // import 'package:web_socket_channel/io.dart';
 
@@ -45,11 +46,15 @@ class SubstrateSdk with ChangeNotifier {
 
   Future<void> connectNode(BuildContext ctx) async {
     List<NetworkParams> node = [];
-    final n = NetworkParams();
-    n.name = currencyName;
-    n.endpoint = configBox.get('endpoint');
-    n.ss58 = ss58;
-    node.add(n);
+
+    for (String _endpoint in configBox.get('endpoint')) {
+      final n = NetworkParams();
+      n.name = currencyName;
+      n.endpoint = _endpoint;
+      n.ss58 = ss58;
+      node.add(n);
+    }
+
     int timeout = 10000;
 
     // if (n.endpoint!.startsWith('ws://')) {
@@ -428,6 +433,10 @@ class SubstrateSdk with ChangeNotifier {
 
     return await sdk.api.keyring.checkMnemonicValid(mnemonic);
   }
+
+  String? getConnectedEndpoint() {
+    return sdk.api.connectedNode?.endpoint;
+  }
 }
 
 void snack(BuildContext context, String message, {int duration = 2}) {
@@ -449,8 +458,10 @@ void snackNode(BuildContext context, bool isConnected) {
     _message =
         "Aucun noeud Duniter disponible, veuillez réessayer ultérieurement";
   } else {
+    SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
+
     _message =
-        "Vous êtes connecté au noeud\n${configBox.get('endpoint').split('//')[1]}";
+        "Vous êtes connecté au noeud\n${_sub.getConnectedEndpoint()!.split('//')[1]}";
   }
   final snackBar = SnackBar(
       padding: const EdgeInsets.all(20),
diff --git a/lib/screens/myWallets/choose_wallet.dart b/lib/screens/myWallets/choose_wallet.dart
index 4bb756a51e099f1911e05a2d72c45927915e8fec..86fc4e0f3d4d9df142f0f98f977539431de36d1c 100644
--- a/lib/screens/myWallets/choose_wallet.dart
+++ b/lib/screens/myWallets/choose_wallet.dart
@@ -1,6 +1,7 @@
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
 import 'package:flutter/material.dart';
+import 'package:gecko/models/chest_data.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
@@ -74,8 +75,7 @@ class ChooseWalletScreen extends StatelessWidget {
     WalletsProfilesProvider _walletViewProvider =
         Provider.of<WalletsProfilesProvider>(context, listen: false);
 
-    WalletData? defaultWallet =
-        _myWalletProvider.getDefaultWallet();
+    WalletData? defaultWallet = _myWalletProvider.getDefaultWallet();
 
     _selectedId ??= defaultWallet!.id();
     _derivation ??= defaultWallet!.derivation!;
@@ -190,11 +190,14 @@ class ChooseWalletScreen extends StatelessWidget {
                                 ),
                               ),
                             ),
-                            onTap: () {
+                            onTap: () async {
                               _derivation = _repository.derivation!;
                               _selectedId = _repository.id();
-                              chestBox.get(currentChest)!.defaultWallet =
-                                  _repository.number;
+
+                              ChestData _newChestData =
+                                  chestBox.get(currentChest)!;
+                              _newChestData.defaultWallet = _repository.number;
+                              await chestBox.put(currentChest, _newChestData);
 
                               _sub.setCurrentWallet(_repository.address!);
                               _myWalletProvider.rebuildWidget();
diff --git a/lib/screens/myWallets/unlocking_wallet.dart b/lib/screens/myWallets/unlocking_wallet.dart
index 78a2eb00f367893d1e4d808ca710b183dac4f4e3..3962dc389ec9683501986fa7b77536f9d7ccc402 100644
--- a/lib/screens/myWallets/unlocking_wallet.dart
+++ b/lib/screens/myWallets/unlocking_wallet.dart
@@ -198,7 +198,6 @@ class UnlockingWallet extends StatelessWidget {
               )
             ],
             onCompleted: (_pin) async {
-              log.d("Completed");
               _myWalletProvider.pinCode = _pin.toUpperCase();
 
               final isValid = await _sub.checkPassword(
diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart
index a7403359b188a0b76f51d3ea8d113d0999058ad8..6eddab796e1c884c871b57f7048c8626dcf89446 100644
--- a/lib/screens/myWallets/wallet_options.dart
+++ b/lib/screens/myWallets/wallet_options.dart
@@ -1,6 +1,7 @@
 import 'dart:async';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
+import 'package:gecko/models/chest_data.dart';
 import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/providers/wallet_options.dart';
@@ -335,17 +336,18 @@ class WalletOptions extends StatelessWidget {
       MyWalletsProvider _myWalletProvider,
       WalletOptionsProvider _walletOptions,
       int _currentChest) {
-    WalletData defaultWallet =
-        _myWalletProvider.getDefaultWallet()!;
+    WalletData defaultWallet = _myWalletProvider.getDefaultWallet()!;
 
     _walletOptions.isDefaultWallet = (defaultWallet.number == wallet.id()[1]);
 
     return InkWell(
       key: const Key('setDefaultWallet'),
       onTap: !walletProvider.isDefaultWallet
-          ? () {
+          ? () async {
               defaultWallet = wallet;
-              chestBox.get(_currentChest)!.defaultWallet = wallet.number;
+              ChestData _newChestData = chestBox.get(_currentChest)!;
+              _newChestData.defaultWallet = wallet.number;
+              await chestBox.put(_currentChest, _newChestData);
               _myWalletProvider.readAllWallets(_currentChest);
               _myWalletProvider.rebuildWidget();
             }
diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart
index bd13ad4156028a8c1b33882c6fd5d5f1f4418d7a..2f85a8a4df4e4adecd60cd724fca00e407d1d416 100644
--- a/lib/screens/settings.dart
+++ b/lib/screens/settings.dart
@@ -30,12 +30,13 @@ class SettingsScreen extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
+    SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
 
     const double buttonHigh = 50;
     const double buttonWidth = 240;
     const double fontSize = 16;
     TextEditingController _endpointController =
-        TextEditingController(text: configBox.get('endpoint'));
+        TextEditingController(text: _sub.getConnectedEndpoint());
 
     // getAppDirectory();
     return Scaffold(
@@ -71,7 +72,7 @@ class SettingsScreen extends StatelessWidget {
                           size: 40,
                         ),
                         onPressed: () async {
-                          configBox.put('endpoint', _endpointController.text);
+                          configBox.put('endpoint', [_endpointController.text]);
                           await _sub.connectNode(context);
                         });
               }),
diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart
index 2eca815734a32a9e4c94fdf1f6c64eb78a6a1cdd..d66d62fea57e6a749e80d9f4b0ce6773b07f39d8 100644
--- a/lib/screens/wallet_view.dart
+++ b/lib/screens/wallet_view.dart
@@ -193,6 +193,7 @@ class WalletViewScreen extends StatelessWidget {
 
     const double shapeSize = 20;
     WalletData? defaultWallet = _myWalletProvider.getDefaultWallet();
+    log.d(defaultWallet!.address);
 
     bool canValidate = false;
 
@@ -213,7 +214,7 @@ class WalletViewScreen extends StatelessWidget {
             if (_walletViewProvider.payAmount.text != '' &&
                 double.parse(_walletViewProvider.payAmount.text) <=
                     double.parse(
-                        balanceCache[defaultWallet!.address]!.split(' ')[0]) &&
+                        balanceCache[defaultWallet.address]!.split(' ')[0]) &&
                 _walletViewProvider.pubkey != defaultWallet.address) {
               canValidate = true;
             } else {
@@ -286,7 +287,7 @@ class WalletViewScreen extends StatelessWidget {
                               padding: const EdgeInsets.all(10),
 
                               child: Row(children: [
-                                Text(defaultWallet!.name!),
+                                Text(defaultWallet.name!),
                                 const Spacer(),
                                 FutureBuilder(
                                     future:
diff --git a/pubspec.yaml b/pubspec.yaml
index c0e7a6e4ffeaa1669e3dc835cf5de4eda8b1380b..a1c2e93c433349f7d8d488735c86650ca4f13ddb 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -107,7 +107,7 @@ flutter:
 
   assets:
     - images/
-    - config/gva_endpoints.json
+    - config/gdev_endpoints.json
     - assets/
     - assets/home/
     - assets/avatars/