diff --git a/lib/providers/generate_wallets.dart b/lib/providers/generate_wallets.dart
index 2a0f57f9db023ebc4a78807343c6896b1a4f2f40..ede8a80fd09ec88e415668c3f6f4893b42e7765b 100644
--- a/lib/providers/generate_wallets.dart
+++ b/lib/providers/generate_wallets.dart
@@ -22,6 +22,7 @@ class GenerateWalletsProvider with ChangeNotifier {
   FocusNode walletNameFocus = FocusNode();
   Color? askedWordColor = Colors.black;
   bool isAskedWordValid = false;
+  int scanedWalletNumber = -1;
 
   late int nbrWord;
   String? nbrWordAlpha;
@@ -56,8 +57,7 @@ class GenerateWalletsProvider with ChangeNotifier {
   TextEditingController cellController11 = TextEditingController();
   bool isFirstTimeSentenceComplete = true;
 
-  Future storeHDWChest(
-      String address, String _name, BuildContext context) async {
+  Future storeHDWChest(BuildContext context) async {
     int chestNumber = chestBox.isEmpty ? 0 : chestBox.keys.last + 1;
 
     String chestName;
@@ -76,16 +76,6 @@ class GenerateWalletsProvider with ChangeNotifier {
     await chestBox.add(thisChest);
     int? chestKey = chestBox.keys.last;
 
-    WalletData myWallet = WalletData(
-        version: dataVersion,
-        chest: chestKey,
-        address: address,
-        number: 0,
-        name: _name,
-        derivation: 2,
-        imageDefaultPath: '0.png');
-    await walletBox.add(myWallet);
-
     await configBox.put('currentChest', chestKey);
     notifyListeners();
   }
@@ -375,25 +365,83 @@ class GenerateWalletsProvider with ChangeNotifier {
     notifyListeners();
   }
 
-  Future scanDerivations(BuildContext context, {int number = 10}) async {
+  Future<bool> scanDerivations(BuildContext context,
+      {int numberScan = 10}) async {
     SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
     final ss58 = _sub.ss58;
+    final currentChestNumber = configBox.get('currentChest');
+    bool isAlive = false;
+    scanedWalletNumber = 0;
+    notifyListeners();
+
+    final hasRoot = await scanRootBalance(_sub, currentChestNumber);
+    if (hasRoot) {
+      scanedWalletNumber = 1;
+      isAlive = true;
+    }
 
-    // for ()
-    // final addressData = await _sub.sdk.api.keyring.addressFromMnemonic(ss58,
-    //     cryptoType: CryptoType.sr25519,
-    //     mnemonic: generatedMnemonic!,
-    //     derivePath: '//4');
-
-    // final balance = await _sub.getBalance(addressData.address!);
-
-    // log.d(balance);
-    // if (balance != 0) {
-    //   await _sub.importAccount(
-    //       mnemonic: '',
-    //       fromMnemonic: true,
-    //       derivePath: '//4',
-    //       password: pin.text);
-    // }
+    for (var derivationNbr in [for (var i = 0; i < numberScan; i += 1) i]) {
+      final addressData = await _sub.sdk.api.keyring.addressFromMnemonic(ss58,
+          cryptoType: CryptoType.sr25519,
+          mnemonic: generatedMnemonic!,
+          derivePath: '//$derivationNbr');
+
+      final balance = await _sub.getBalance(addressData.address!);
+
+      log.d(balance);
+      if (balance != 0) {
+        isAlive = true;
+        String walletName = scanedWalletNumber == 0
+            ? 'Mon portefeuille courant'
+            : 'Portefeuille ${scanedWalletNumber + 1}';
+        await _sub.importAccount(
+            mnemonic: '',
+            fromMnemonic: true,
+            derivePath: '//$derivationNbr',
+            password: pin.text);
+
+        WalletData myWallet = WalletData(
+            version: dataVersion,
+            chest: currentChestNumber,
+            address: addressData.address!,
+            number: scanedWalletNumber,
+            name: walletName,
+            derivation: derivationNbr,
+            imageDefaultPath: '${scanedWalletNumber % 4}.png');
+        await walletBox.add(myWallet);
+        scanedWalletNumber = scanedWalletNumber + 1;
+      }
+    }
+    scanedWalletNumber = -1;
+    notifyListeners();
+    return isAlive;
+  }
+
+  Future<bool> scanRootBalance(
+      SubstrateSdk _sub, int currentChestNumber) async {
+    final addressData = await _sub.sdk.api.keyring.addressFromMnemonic(ss58,
+        cryptoType: CryptoType.sr25519, mnemonic: generatedMnemonic!);
+
+    final balance = await _sub.getBalance(addressData.address!);
+
+    log.d(balance);
+    if (balance != 0) {
+      String walletName = 'Mon portefeuille racine';
+      await _sub.importAccount(
+          mnemonic: '', fromMnemonic: true, password: pin.text);
+
+      WalletData myWallet = WalletData(
+          version: dataVersion,
+          chest: currentChestNumber,
+          address: addressData.address!,
+          number: 0,
+          name: walletName,
+          derivation: -1,
+          imageDefaultPath: '0.png');
+      await walletBox.add(myWallet);
+      return true;
+    } else {
+      return false;
+    }
   }
 }
diff --git a/lib/screens/onBoarding/10.dart b/lib/screens/onBoarding/10.dart
index f736e7f8c4630ced174cb3718447d3fd6f9f332f..f73f45a12fcffb2651af1582902ca96a7b07fe92 100644
--- a/lib/screens/onBoarding/10.dart
+++ b/lib/screens/onBoarding/10.dart
@@ -4,6 +4,7 @@ import 'dart:async';
 import 'package:flutter/services.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
+import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/providers/generate_wallets.dart';
 import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
@@ -58,6 +59,20 @@ class OnboardingStepTen extends StatelessWidget {
                   style: TextStyle(fontSize: 16 * ratio))
             ]),
             SizedBox(height: isTall ? 80 : 20),
+            Visibility(
+              visible: _generateWalletProvider.scanedWalletNumber != -1,
+              child: Padding(
+                padding: const EdgeInsets.only(bottom: 15),
+                child: SizedBox(
+                  height: 22,
+                  width: 22,
+                  child: CircularProgressIndicator(
+                    color: orangeC,
+                    strokeWidth: 3,
+                  ),
+                ),
+              ),
+            ),
             pinForm(context, _walletOptions, _pinLenght, 1, 2),
             InkWell(
               onTap: () {
@@ -153,19 +168,32 @@ class OnboardingStepTen extends StatelessWidget {
               log.d(_pin + ' || ' + _generateWalletProvider.pin.text);
               if (_pin.toUpperCase() == _generateWalletProvider.pin.text) {
                 pinColor = Colors.green[500];
-                final address = await _sub.importAccount(
-                    fromMnemonic: true,
-                    mnemonic: _generateWalletProvider.generatedMnemonic!,
-                    derivePath: '//2',
-                    password: _generateWalletProvider.pin.text);
-                await _generateWalletProvider.storeHDWChest(
-                    address, 'Mon portefeuille courant', context);
+
+                await _generateWalletProvider.storeHDWChest(context);
+                bool isAlive = false;
+                if (scanDerivation) {
+                  isAlive = await _generateWalletProvider
+                      .scanDerivations(context, numberScan: 30);
+                }
+                if (!isAlive) {
+                  final address = await _sub.importAccount(
+                      fromMnemonic: true,
+                      mnemonic: _generateWalletProvider.generatedMnemonic!,
+                      derivePath: '//2',
+                      password: _generateWalletProvider.pin.text);
+                  WalletData myWallet = WalletData(
+                      version: dataVersion,
+                      chest: configBox.get('currentChest'),
+                      address: address,
+                      number: 0,
+                      name: 'Mon portefeuille courant',
+                      derivation: 2,
+                      imageDefaultPath: '0.png');
+                  await walletBox.add(myWallet);
+                }
                 _myWalletProvider.readAllWallets(_currentChest);
                 _myWalletProvider.rebuildWidget();
 
-                await _generateWalletProvider.scanDerivations(context,
-                    number: 20);
-
                 _generateWalletProvider.generatedMnemonic = '';
                 _myWalletProvider.resetPinCode();
                 Navigator.push(