diff --git a/lib/models/history.dart b/lib/models/history.dart
index aeed8952053f230fecbb749777a745329259c621..ca5823c422438340d87a835b7a9a0db686c729b1 100644
--- a/lib/models/history.dart
+++ b/lib/models/history.dart
@@ -1,3 +1,5 @@
+import 'dart:convert';
+
 import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
@@ -8,6 +10,8 @@ import 'package:qrscan/qrscan.dart' as scanner;
 import 'dart:math';
 import 'package:intl/intl.dart';
 import 'package:truncate/truncate.dart';
+import 'package:crypto/crypto.dart';
+import 'package:fast_base58/fast_base58.dart';
 
 class HistoryProvider with ChangeNotifier {
   String pubkey = '';
@@ -56,11 +60,20 @@ class HistoryProvider with ChangeNotifier {
       print("C'est une pubkey !!!");
 
       this.pubkey = pubkey;
+
+      List<int> pubkeyByte = Base58Decode(pubkey);
+      Digest pubkeyS256 = sha256.convert(sha256.convert(pubkeyByte).bytes);
+      String pubkeyCheksum = Base58Encode(pubkeyS256.bytes);
+      String pubkeyChecksumShort = truncate(pubkeyCheksum, 3,
+          omission: "", position: TruncatePosition.end);
+
       pubkeyShort = truncate(pubkey, 5,
-              omission: ":", position: TruncatePosition.end) +
+              omission: String.fromCharCode(0x2026),
+              position: TruncatePosition.end) +
           truncate(pubkey, 4, omission: "", position: TruncatePosition.start) +
-          ':aaa';
+          ':$pubkeyChecksumShort';
       this.outputPubkey.text = pubkey;
+      print(pubkeyShort);
       notifyListeners();
 
       return pubkey;
@@ -196,6 +209,14 @@ class HistoryProvider with ChangeNotifier {
     return num.parse(result);
   }
 
+  snackCopyKey(context) {
+    final snackBar = SnackBar(
+        content:
+            Text("Cette clé publique a été copié dans votre presse-papier."),
+        duration: Duration(seconds: 2));
+    Scaffold.of(context).showSnackBar(snackBar);
+  }
+
   // num getBalance(_pubkey) {
   //   getBalance(_pubkey);
   // }
diff --git a/lib/screens/history.dart b/lib/screens/history.dart
index 7ebd6d83c58e79cce20ac3d45830990a51c8a208..20677cce3c1bc291856064b28070f59907dbe22d 100644
--- a/lib/screens/history.dart
+++ b/lib/screens/history.dart
@@ -56,32 +56,6 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
         ),
         body: Column(children: <Widget>[
           SizedBox(height: 20),
-          TextField(
-              autofocus: false,
-              focusNode: _pubkeyFocus,
-              // Entrée de la pubkey
-              onChanged: (text) {
-                print("Clé tappxé: $text");
-                _historyProvider.isPubkey(text);
-              },
-              controller: this._outputPubkey,
-              maxLines: 1,
-              textAlign: TextAlign.center,
-              decoration: InputDecoration(
-                hintText: 'Tappez/Collez une clé publique, ou scannez',
-                hintStyle: TextStyle(fontSize: 14),
-                contentPadding:
-                    EdgeInsets.symmetric(horizontal: 7, vertical: 15),
-                border: InputBorder.none,
-                focusedBorder: InputBorder.none,
-                enabledBorder: InputBorder.none,
-                errorBorder: InputBorder.none,
-                disabledBorder: InputBorder.none,
-              ),
-              style: TextStyle(
-                  fontSize: 14.0,
-                  fontWeight: FontWeight.bold,
-                  fontFamily: 'Monospace')),
           if (_historyProvider.pubkey != '')
             historyQuery(context, _historyProvider),
         ]));
@@ -193,11 +167,18 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
                                                 '/default_avatar.png'),
                                             height: 65);
                                       })),
-                            Text(_historyProvider.pubkeyShort,
-                                style: TextStyle(
-                                    fontSize: 22,
-                                    fontWeight: FontWeight.w800,
-                                    fontFamily: 'Monospace')),
+                            GestureDetector(
+                              onTap: () {
+                                Clipboard.setData(ClipboardData(
+                                    text: _historyProvider.pubkey));
+                                _historyProvider.snackCopyKey(context);
+                              },
+                              child: Text(_historyProvider.pubkeyShort,
+                                  style: TextStyle(
+                                      fontSize: 22,
+                                      fontWeight: FontWeight.w800,
+                                      fontFamily: 'Monospace')),
+                            ),
                             Container(
                                 padding: const EdgeInsets.fromLTRB(
                                     30, 0, 15, 0), // .only(right: 15),
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 4517e5432fbc8c7f1cd4e6e9363cbd0983cf8a65..56417c7311a7809945719c3b300f24b848aff830 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -1,4 +1,5 @@
 import 'package:gecko/globals.dart';
+import 'package:gecko/models/history.dart';
 import 'package:gecko/models/home.dart';
 import 'package:gecko/screens/history.dart';
 import 'package:flutter/material.dart';
@@ -14,6 +15,7 @@ class HomeScreen extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     HomeProvider _homeProvider = Provider.of<HomeProvider>(context);
+    HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
     return Scaffold(
       drawer: Drawer(
         child: Column(
@@ -73,21 +75,37 @@ class HomeScreen extends StatelessWidget {
                   icon: _homeProvider.searchIcon,
                   color: Colors.grey[850],
                   onPressed: () {
+                    // Navigator.push(
+                    //   context,
+                    //   MaterialPageRoute(builder: (context) {
+                    //     return SearchList();
+                    //   }),
+                    // );
+
                     if (_homeProvider.searchIcon.icon == Icons.search) {
                       _homeProvider.searchIcon = Icon(
                         Icons.close,
                         color: Colors.grey[850],
                       );
-                      TextField(
+                      _homeProvider.appBarTitle = TextField(
+                        autofocus: true,
                         controller: _homeProvider.searchQuery,
-                        style: new TextStyle(
-                          color: Colors.white,
+                        onChanged: (text) {
+                          print("Clé tappé: $text");
+                          final String searchResult =
+                              _historyProvider.isPubkey(text);
+                          if (searchResult != '') {
+                            _homeProvider.currentIndex = 0;
+                          }
+                        },
+                        style: TextStyle(
+                          color: Colors.grey[850],
                         ),
-                        decoration: new InputDecoration(
+                        decoration: InputDecoration(
                             prefixIcon:
-                                new Icon(Icons.search, color: Colors.white),
-                            hintText: "Search...",
-                            hintStyle: new TextStyle(color: Colors.white)),
+                                Icon(Icons.search, color: Colors.grey[850]),
+                            hintText: "Rechercher ...",
+                            hintStyle: TextStyle(color: Colors.grey[850])),
                       );
                       _homeProvider.handleSearchStart();
                     } else {
diff --git a/lib/screens/search.dart b/lib/screens/search.dart
index 2f7811a3e246ca6cc8a2ee03d6a4ef7ba2fb455f..1683092c7dbf2ed67551ddaf7a94c1c40354cb12 100644
--- a/lib/screens/search.dart
+++ b/lib/screens/search.dart
@@ -1,33 +1,36 @@
 import 'package:flutter/material.dart';
 
 class SearchList extends StatefulWidget {
-  SearchList({ Key key }) : super(key: key);
+  SearchList({Key key}) : super(key: key);
   @override
   _SearchListState createState() => new _SearchListState();
-
 }
 
-class _SearchListState extends State<SearchList>
-{
-  Widget appBarTitle = new Text("Search Sample", style: new TextStyle(color: Colors.white),);
-  Icon actionIcon = new Icon(Icons.search, color: Colors.white,);
+class _SearchListState extends State<SearchList> {
+  Widget appBarTitle = new Text(
+    "Search Sample",
+    style: new TextStyle(color: Colors.white),
+  );
+  Icon actionIcon = new Icon(
+    Icons.search,
+    color: Colors.white,
+  );
   final key = new GlobalKey<ScaffoldState>();
   final TextEditingController _searchQuery = new TextEditingController();
   List<String> _list;
-  bool _IsSearching;
+  bool _isSearching;
   String _searchText = "";
 
   _SearchListState() {
     _searchQuery.addListener(() {
       if (_searchQuery.text.isEmpty) {
         setState(() {
-          _IsSearching = false;
+          _isSearching = false;
           _searchText = "";
         });
-      }
-      else {
+      } else {
         setState(() {
-          _IsSearching = true;
+          _isSearching = true;
           _searchText = _searchQuery.text;
         });
       }
@@ -37,9 +40,8 @@ class _SearchListState extends State<SearchList>
   @override
   void initState() {
     super.initState();
-    _IsSearching = false;
+    _isSearching = false;
     init();
-
   }
 
   void init() {
@@ -64,7 +66,7 @@ class _SearchListState extends State<SearchList>
       appBar: buildBar(context),
       body: new ListView(
         padding: new EdgeInsets.symmetric(vertical: 8.0),
-        children: _IsSearching ? _buildSearchList() : _buildList(),
+        children: _isSearching ? _buildSearchList() : _buildList(),
       ),
     );
   }
@@ -75,70 +77,70 @@ class _SearchListState extends State<SearchList>
 
   List<ChildItem> _buildSearchList() {
     if (_searchText.isEmpty) {
-      return _list.map((contact) => new ChildItem(contact))
-          .toList();
-    }
-    else {
+      return _list.map((contact) => new ChildItem(contact)).toList();
+    } else {
       List<String> _searchList = List();
       for (int i = 0; i < _list.length; i++) {
-        String  name = _list.elementAt(i);
+        String name = _list.elementAt(i);
         if (name.toLowerCase().contains(_searchText.toLowerCase())) {
           _searchList.add(name);
         }
       }
-      return _searchList.map((contact) => new ChildItem(contact))
-          .toList();
+      return _searchList.map((contact) => new ChildItem(contact)).toList();
     }
   }
 
   Widget buildBar(BuildContext context) {
-    return new AppBar(
-        centerTitle: true,
-        title: appBarTitle,
-        actions: <Widget>[
-          new IconButton(icon: actionIcon, onPressed: () {
-            setState(() {
-              if (this.actionIcon.icon == Icons.search) {
-                this.actionIcon = new Icon(Icons.close, color: Colors.white,);
-                this.appBarTitle = new TextField(
-                  controller: _searchQuery,
-                  style: new TextStyle(
-                    color: Colors.white,
-
-                  ),
-                  decoration: new InputDecoration(
-                      prefixIcon: new Icon(Icons.search, color: Colors.white),
-                      hintText: "Search...",
-                      hintStyle: new TextStyle(color: Colors.white)
-                  ),
-                );
-                _handleSearchStart();
-              }
-              else {
-                _handleSearchEnd();
-              }
-            });
-          },),
-        ]
-    );
+    return new AppBar(centerTitle: true, title: appBarTitle, actions: <Widget>[
+      new IconButton(
+        icon: actionIcon,
+        onPressed: () {
+          setState(() {
+            if (this.actionIcon.icon == Icons.search) {
+              this.actionIcon = new Icon(
+                Icons.close,
+                color: Colors.white,
+              );
+              this.appBarTitle = new TextField(
+                controller: _searchQuery,
+                style: new TextStyle(
+                  color: Colors.white,
+                ),
+                decoration: new InputDecoration(
+                    prefixIcon: new Icon(Icons.search, color: Colors.white),
+                    hintText: "Search...",
+                    hintStyle: new TextStyle(color: Colors.white)),
+              );
+              _handleSearchStart();
+            } else {
+              _handleSearchEnd();
+            }
+          });
+        },
+      ),
+    ]);
   }
 
   void _handleSearchStart() {
     setState(() {
-      _IsSearching = true;
+      _isSearching = true;
     });
   }
 
   void _handleSearchEnd() {
     setState(() {
-      this.actionIcon = new Icon(Icons.search, color: Colors.white,);
-      this.appBarTitle =
-      new Text("Search Sample", style: new TextStyle(color: Colors.white),);
-      _IsSearching = false;
+      this.actionIcon = new Icon(
+        Icons.search,
+        color: Colors.white,
+      );
+      this.appBarTitle = new Text(
+        "Search Sample",
+        style: new TextStyle(color: Colors.white),
+      );
+      _isSearching = false;
       _searchQuery.clear();
     });
   }
-
 }
 
 class ChildItem extends StatelessWidget {
@@ -148,5 +150,4 @@ class ChildItem extends StatelessWidget {
   Widget build(BuildContext context) {
     return new ListTile(title: new Text(this.name));
   }
-
-}
\ No newline at end of file
+}
diff --git a/pubspec.lock b/pubspec.lock
index a34da15fe1c04933005d76d18a7fa808c50740a8..efabd63f4081f151601b4ab4c9edaed4c96d1414 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -100,7 +100,7 @@ packages:
     source: hosted
     version: "2.1.1"
   crypto:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: crypto
       url: "https://pub.dartlang.org"
@@ -120,6 +120,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.2.0-nullsafety.1"
+  fast_base58:
+    dependency: "direct main"
+    description:
+      name: fast_base58
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.1.9"
   ffi:
     dependency: transitive
     description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 8b28242962b837ac1ef1b8cb6d8e4152de7f4b15..62c0aa65a72ca8f4407be4906ff40e10e5855538 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -32,6 +32,8 @@ dependencies:
   printing: ^4.0.0
   shared_preferences: ^0.5.12+4
   sync_http: ^0.2.0
+  crypto: ^2.1.5
+  fast_base58:
 
 
 flutter_icons: