diff --git a/integration_test/utility/tests_utility.dart b/integration_test/utility/tests_utility.dart
index 99bee8be333e7e8e4d2ba88f8a9bfb3a7e9dfd43..2c51c888e88e2633d0e67f774e90ae63334ffb25 100644
--- a/integration_test/utility/tests_utility.dart
+++ b/integration_test/utility/tests_utility.dart
@@ -7,6 +7,7 @@ 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';
+import 'package:gecko/utils.dart';
 import 'package:provider/provider.dart';
 import 'dart:io' as io;
 import 'package:gecko/main.dart' as app;
diff --git a/lib/providers/duniter_indexer.dart b/lib/providers/duniter_indexer.dart
index 2ced8efb466ed94c619abeebb8c6941485e368de..a2cb30dfc3ce04ef8a844b2f95f110065c9d392b 100644
--- a/lib/providers/duniter_indexer.dart
+++ b/lib/providers/duniter_indexer.dart
@@ -8,6 +8,7 @@ import 'package:gecko/globals.dart';
 import 'package:gecko/models/queries_indexer.dart';
 import 'package:gecko/providers/home.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
+import 'package:gecko/utils.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:provider/provider.dart';
 
diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart
index c13d84746a97daf1ff8a4f2b0166356e9b741701..79fe0c820d4eadbb4f17602376e4d5630e949105 100644
--- a/lib/providers/substrate_sdk.dart
+++ b/lib/providers/substrate_sdk.dart
@@ -6,13 +6,13 @@ import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/chest_data.dart';
 import 'package:gecko/models/migrate_wallet_checks.dart';
-import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/transaction_content.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/providers/home.dart';
 import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/providers/wallet_options.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/certify/cert_state.dart';
 import 'package:gecko/widgets/transaction_status.dart';
 import 'package:pinenacl/ed25519.dart';
@@ -24,7 +24,6 @@ import 'package:polkawallet_sdk/storage/keyring.dart';
 import 'package:polkawallet_sdk/storage/types/keyPairData.dart';
 import 'package:polkawallet_sdk/webviewWithExtension/types/signExtrinsicParam.dart';
 import 'package:provider/provider.dart';
-import 'package:truncate/truncate.dart';
 import 'package:pointycastle/pointycastle.dart' as pc;
 import "package:hex/hex.dart";
 import 'package:uuid/uuid.dart' show Uuid;
@@ -1058,7 +1057,7 @@ class SubstrateSdk with ChangeNotifier {
     final prefix = 'icok'.codeUnits;
     final genesisHashString = await getGenesisHash();
     final genesisHash = HEX.decode(genesisHashString.substring(2)) as Uint8List;
-    final idtyIndex = _int32bytes((await _getIdentityIndexOf(fromAddress))!);
+    final idtyIndex = int32bytes((await _getIdentityIndexOf(fromAddress))!);
     final oldPubkey = await addressToPubkey(fromAddress);
     final messageToSign = Uint8List.fromList(prefix + genesisHash + idtyIndex + oldPubkey);
     final messageToSignHex = HEX.encode(messageToSign);
@@ -1120,7 +1119,7 @@ newKeySig: $newKeySigType""");
     final prefix = 'revo'.codeUnits;
     final genesisHashString = await getGenesisHash();
     final genesisHash = HEX.decode(genesisHashString.substring(2)) as Uint8List;
-    final idtyIndexBytes = _int32bytes(idtyIndex!);
+    final idtyIndexBytes = int32bytes(idtyIndex!);
     final messageToSign = Uint8List.fromList(prefix + genesisHash + idtyIndexBytes);
     final revocationSig = (await _signMessage(messageToSign, address, password)).substring(2);
     final revocationSigTyped = '0x01$revocationSig';
@@ -1218,36 +1217,3 @@ newKeySig: $newKeySigType""");
     notifyListeners();
   }
 }
-
-////////////////////////////////////////////
-/////// 6: UI ELEMENTS (off class) /////////
-////////////////////////////////////////////
-
-void snackNode(bool isConnected) {
-  String message;
-  if (!isConnected) {
-    message = "noDuniterNodeAvailableTryLater".tr();
-  } else {
-    final sub = Provider.of<SubstrateSdk>(homeContext, listen: false);
-
-    message = "${"youAreConnectedToNode".tr()}\n${sub.getConnectedEndpoint()!.split('//')[1]}";
-  }
-  final snackBar = SnackBar(
-      backgroundColor: Colors.grey[900],
-      padding: const EdgeInsets.all(20),
-      content: Text(message, style: scaledTextStyle(fontSize: 13)),
-      duration: const Duration(seconds: 4));
-  ScaffoldMessenger.of(homeContext).showSnackBar(snackBar);
-}
-
-String getShortPubkey(String pubkey) {
-  String pubkeyShort = truncate(pubkey, 7, omission: String.fromCharCode(0x2026), position: TruncatePosition.end) +
-      truncate(pubkey, 6, omission: "", position: TruncatePosition.start);
-  return pubkeyShort;
-}
-
-Uint8List _int32bytes(int value) => Uint8List(4)..buffer.asInt32List()[0] = value;
-
-double round(double number, [int decimal = 2]) {
-  return double.parse((number.toStringAsFixed(decimal)));
-}
diff --git a/lib/providers/wallet_options.dart b/lib/providers/wallet_options.dart
index ee82331b912ebad954e9ca41b76600223d20707c..ff3cf5a75a95425f40ee95bf7a0a3cc903e46691 100644
--- a/lib/providers/wallet_options.dart
+++ b/lib/providers/wallet_options.dart
@@ -12,6 +12,7 @@ import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/v2s_datapod.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/commons/common_elements.dart';
 import 'package:gecko/screens/transaction_in_progress.dart';
 import 'package:image_picker/image_picker.dart';
diff --git a/lib/screens/myWallets/import_g1_v1.dart b/lib/screens/myWallets/import_g1_v1.dart
index 430f866485c4fe199c6831ac4b8f02379ccf07e3..e13c394b62b0a411420057a3073227e97337fc95 100644
--- a/lib/screens/myWallets/import_g1_v1.dart
+++ b/lib/screens/myWallets/import_g1_v1.dart
@@ -14,6 +14,7 @@ import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
 import 'package:gecko/screens/transaction_in_progress.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/certifications.dart';
 import 'package:gecko/widgets/commons/top_appbar.dart';
 import 'package:gecko/widgets/idty_status.dart';
diff --git a/lib/screens/myWallets/manage_membership.dart b/lib/screens/myWallets/manage_membership.dart
index 8062db3cbca889eea317e011b063298661c8c776..675e08ac0a86150a6135708689e64a7f569b985a 100644
--- a/lib/screens/myWallets/manage_membership.dart
+++ b/lib/screens/myWallets/manage_membership.dart
@@ -7,6 +7,7 @@ import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/commons/common_elements.dart';
 import 'package:gecko/screens/myWallets/migrate_identity.dart';
 import 'package:gecko/screens/transaction_in_progress.dart';
diff --git a/lib/screens/myWallets/migrate_identity.dart b/lib/screens/myWallets/migrate_identity.dart
index ef0bab4ae08cb506483803389cd0f1737ba16934..c0a39b383fdc7e2653f7a33cd699cce033f3fa16 100644
--- a/lib/screens/myWallets/migrate_identity.dart
+++ b/lib/screens/myWallets/migrate_identity.dart
@@ -14,6 +14,7 @@ import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallet_options.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/transaction_in_progress.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/commons/top_appbar.dart';
 import 'package:polkawallet_sdk/api/apiKeyring.dart';
 import 'package:provider/provider.dart';
diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart
index 6e9299cc53f938980fa009c51bc99cdbac04c931..a8bd2ae3cf3c14af0f3f1fa08ba6d3220fffd13c 100644
--- a/lib/screens/myWallets/wallet_options.dart
+++ b/lib/screens/myWallets/wallet_options.dart
@@ -20,6 +20,7 @@ import 'package:gecko/screens/activity.dart';
 import 'package:gecko/screens/myWallets/chest_options.dart';
 import 'package:gecko/screens/myWallets/import_g1_v1.dart';
 import 'package:gecko/screens/qrcode_fullscreen.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/balance.dart';
 import 'package:gecko/widgets/bottom_app_bar.dart';
 import 'package:gecko/widgets/buttons/manage_membership_button.dart';
diff --git a/lib/screens/qrcode_fullscreen.dart b/lib/screens/qrcode_fullscreen.dart
index 3259b1205d44492baf34977c2b559b9ed47c6138..77e82b3d9580480e03b0f775c07ab0b3ec9f0bc4 100644
--- a/lib/screens/qrcode_fullscreen.dart
+++ b/lib/screens/qrcode_fullscreen.dart
@@ -3,7 +3,7 @@
 import 'package:gecko/globals.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/models/scale_functions.dart';
-import 'package:gecko/providers/substrate_sdk.dart';
+import 'package:gecko/utils.dart';
 import 'package:qr_flutter/qr_flutter.dart';
 import 'package:screen_brightness/screen_brightness.dart';
 
diff --git a/lib/screens/transaction_in_progress.dart b/lib/screens/transaction_in_progress.dart
index 3f485f5266f86b37d994cfe6d637ea1e4c8c8a96..a5c9ae2e3b641877ed5ee8312b1e2ae6d8c1ec71 100644
--- a/lib/screens/transaction_in_progress.dart
+++ b/lib/screens/transaction_in_progress.dart
@@ -6,6 +6,7 @@ import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/commons/loading.dart';
 import 'package:gecko/widgets/transaction_status.dart';
 import 'package:gecko/widgets/transaction_status_icon.dart';
diff --git a/lib/utils.dart b/lib/utils.dart
new file mode 100644
index 0000000000000000000000000000000000000000..fa9ffd36b1f91c653c8717386ad831e449b26c44
--- /dev/null
+++ b/lib/utils.dart
@@ -0,0 +1,38 @@
+import 'dart:typed_data';
+
+import 'package:easy_localization/easy_localization.dart';
+import 'package:flutter/material.dart';
+import 'package:gecko/globals.dart';
+import 'package:gecko/models/scale_functions.dart';
+import 'package:gecko/providers/substrate_sdk.dart';
+import 'package:provider/provider.dart';
+import 'package:truncate/truncate.dart';
+
+void snackNode(bool isConnected) {
+  String message;
+  if (!isConnected) {
+    message = "noDuniterNodeAvailableTryLater".tr();
+  } else {
+    final sub = Provider.of<SubstrateSdk>(homeContext, listen: false);
+
+    message = "${"youAreConnectedToNode".tr()}\n${sub.getConnectedEndpoint()!.split('//')[1]}";
+  }
+  final snackBar = SnackBar(
+      backgroundColor: Colors.grey[900],
+      padding: const EdgeInsets.all(20),
+      content: Text(message, style: scaledTextStyle(fontSize: 13)),
+      duration: const Duration(seconds: 4));
+  ScaffoldMessenger.of(homeContext).showSnackBar(snackBar);
+}
+
+String getShortPubkey(String pubkey) {
+  String pubkeyShort = truncate(pubkey, 7, omission: String.fromCharCode(0x2026), position: TruncatePosition.end) +
+      truncate(pubkey, 6, omission: "", position: TruncatePosition.start);
+  return pubkeyShort;
+}
+
+Uint8List int32bytes(int value) => Uint8List(4)..buffer.asInt32List()[0] = value;
+
+double round(double number, [int decimal = 2]) {
+  return double.parse((number.toStringAsFixed(decimal)));
+}
diff --git a/lib/widgets/cert_tile.dart b/lib/widgets/cert_tile.dart
index 95c2dc549c952137160832d82cc9a041e83de2f7..c567a93b812d4c0e8814468840f1c49e8848f2ef 100644
--- a/lib/widgets/cert_tile.dart
+++ b/lib/widgets/cert_tile.dart
@@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/widgets_keys.dart';
-import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/screens/wallet_view.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
 
 class CertTile extends StatelessWidget {
diff --git a/lib/widgets/certify/certify_button.dart b/lib/widgets/certify/certify_button.dart
index d3b7c4beec6ccef92bde58c08b838cf0b49e37a4..a47933db5b442c245c75d8599304556def870ecd 100644
--- a/lib/widgets/certify/certify_button.dart
+++ b/lib/widgets/certify/certify_button.dart
@@ -12,6 +12,7 @@ import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
 import 'package:gecko/screens/transaction_in_progress.dart';
 import 'package:gecko/screens/wallet_view.dart' show buttonSize, buttonFontSize;
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/commons/common_elements.dart';
 import 'package:provider/provider.dart';
 
diff --git a/lib/widgets/contacts_list.dart b/lib/widgets/contacts_list.dart
index 2fa211f30a99d38d45b1bf3d07aa9fb417660dd0..8b0a970afcf603f0746a27b63f034a0fd5baa962 100644
--- a/lib/widgets/contacts_list.dart
+++ b/lib/widgets/contacts_list.dart
@@ -6,9 +6,9 @@ import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
-import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/wallet_view.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/balance.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
 import 'package:gecko/widgets/name_by_address.dart';
diff --git a/lib/widgets/header_profile.dart b/lib/widgets/header_profile.dart
index 2e1499d0fd4f9d880615fd97046dc798cfc8ab9e..dc25f0ae0078a21a0220e61bc9c99eccc1eadd52 100644
--- a/lib/widgets/header_profile.dart
+++ b/lib/widgets/header_profile.dart
@@ -8,6 +8,7 @@ import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallet_options.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/certifications.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/balance.dart';
 import 'package:gecko/widgets/certifications.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
diff --git a/lib/widgets/history_view.dart b/lib/widgets/history_view.dart
index 78b6bd4421464a473555bcbbc0f900cb370b9287..38f763466127b48e65e6873fafc4e9c6cafb5656 100644
--- a/lib/widgets/history_view.dart
+++ b/lib/widgets/history_view.dart
@@ -5,6 +5,7 @@ import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/screens/wallet_view.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/commons/loading.dart';
 import 'package:gecko/widgets/page_route_no_transition.dart';
 import 'package:gecko/widgets/transaction_tile.dart';
diff --git a/lib/widgets/payment_popup.dart b/lib/widgets/payment_popup.dart
index 7093444a8c6f1b3e4cd2a2fede6b0b812b6585e2..0e0567c643af3212ea643b5e3be2610c0f12648b 100644
--- a/lib/widgets/payment_popup.dart
+++ b/lib/widgets/payment_popup.dart
@@ -12,6 +12,7 @@ import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallet_options.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/activity.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/balance.dart';
 import 'package:gecko/widgets/name_by_address.dart';
 import 'package:provider/provider.dart';
diff --git a/lib/widgets/search_identity_query.dart b/lib/widgets/search_identity_query.dart
index c319ea4878ddc4401b14b516baddc16796d8ce57..ca3a87a5aa1944e91e8e25cd8292f6059b8fbe90 100644
--- a/lib/widgets/search_identity_query.dart
+++ b/lib/widgets/search_identity_query.dart
@@ -7,9 +7,9 @@ import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
 import 'package:gecko/providers/search.dart';
-import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/wallet_view.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/balance.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
diff --git a/lib/widgets/search_result_list.dart b/lib/widgets/search_result_list.dart
index 54d9cbc3016dffdba66edd55a69d4e729c1522cf..f38f9e06f8ac371a5a8788af2f384eadad405e28 100644
--- a/lib/widgets/search_result_list.dart
+++ b/lib/widgets/search_result_list.dart
@@ -5,9 +5,9 @@ import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
 import 'package:gecko/providers/search.dart';
-import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/wallet_view.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/balance.dart';
 import 'package:gecko/widgets/commons/loading.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
diff --git a/lib/widgets/transaction_in_progress_tile.dart b/lib/widgets/transaction_in_progress_tile.dart
index 6f7ea47528d34c150aa8068506baf06c124ed35e..9bfa398fb48ad6afd4183f58b2715552ea922849 100644
--- a/lib/widgets/transaction_in_progress_tile.dart
+++ b/lib/widgets/transaction_in_progress_tile.dart
@@ -7,6 +7,7 @@ import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/transaction_content.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
 import 'package:gecko/providers/substrate_sdk.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
 import 'package:gecko/widgets/transaction_status.dart';
 import 'package:gecko/widgets/transaction_status_icon.dart';
diff --git a/lib/widgets/transaction_tile.dart b/lib/widgets/transaction_tile.dart
index c40fe3f2a21c8144b5d1cc9e7b5b330aea9d6e27..97a592ede43d472e7bf00d81ff233efe9b7bf1c3 100644
--- a/lib/widgets/transaction_tile.dart
+++ b/lib/widgets/transaction_tile.dart
@@ -3,8 +3,8 @@ import 'package:gecko/globals.dart';
 import 'package:gecko/models/scale_functions.dart';
 import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
-import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/screens/wallet_view.dart';
+import 'package:gecko/utils.dart';
 import 'package:gecko/widgets/datapod_avatar.dart';
 import 'package:gecko/widgets/page_route_no_transition.dart';