diff --git a/src/sakia/data/connectors/bma.py b/src/sakia/data/connectors/bma.py
index 0a3378b779bff2382ed1c68ac156561c302f00c2..9aa648f8e66b61607a98ed3658b72aff14ff9d90 100644
--- a/src/sakia/data/connectors/bma.py
+++ b/src/sakia/data/connectors/bma.py
@@ -187,7 +187,7 @@ class BmaConnector:
         nodes_generator = (n for n in synced_nodes)
         answers = {}
         answers_data = {}
-        nb_verification = min(max(1, 0.66 * len(synced_nodes)), 6)
+        nb_verification = min(max(1, 0.66 * len(synced_nodes)), 3)
         # We try to find agreeing nodes from one 1 to 66% of nodes, max 10
         session = aiohttp.ClientSession()
         filtered_data = {}
diff --git a/src/sakia/data/graphs/base_graph.py b/src/sakia/data/graphs/base_graph.py
index 602d72e0aae712e6181a681ae4aad6168fb57063..63456e268685240a6113f2891f1559e2f9eb5d58 100644
--- a/src/sakia/data/graphs/base_graph.py
+++ b/src/sakia/data/graphs/base_graph.py
@@ -6,6 +6,7 @@ from PyQt5.QtCore import QLocale, QDateTime, QObject, QT_TRANSLATE_NOOP
 from sakia.errors import NoPeerAvailable
 from .constants import EdgeStatus, NodeStatus
 from sakia.constants import MAX_CONFIRMATIONS
+import asyncio
 
 
 def sentry_display(identity):
@@ -194,10 +195,14 @@ class BaseGraph(QObject):
             #  add certifiers of uid
             for certification in tuple(certifier_list):
                 certifier = self.identities_service.get_identity(certification.certifier)
+                futures = [self.node_status(certifier)]
                 if not certifier:
-                    certifier = await self.identities_service.find_from_pubkey(certification.certifier)
-                    self.identities_service.insert_or_update_identity(certifier)
-                node_status = await self.node_status(certifier)
+                    futures.append(self.identities_service.find_from_pubkey(certification.certifier))
+                results = await asyncio.gather(*futures)
+                node_status = results[0]
+                if not certifier:
+                    certifier = results[1]
+                self.identities_service.insert_or_update_identity(certifier)
                 self.add_certifier_node(certifier, identity, certification, node_status)
         except NoPeerAvailable as e:
             logging.debug(str(e))
@@ -213,10 +218,14 @@ class BaseGraph(QObject):
             # add certified by uid
             for certification in tuple(certified_list):
                 certified = self.identities_service.get_identity(certification.certified)
+                futures = [self.node_status(certified)]
+                if not certified:
+                    futures.append(self.identities_service.find_from_pubkey(certification.certified))
+                results = await asyncio.gather(*futures)
+                node_status = results[0]
                 if not certified:
-                    certified = await self.identities_service.find_from_pubkey(certification.certified)
-                    self.identities_service.insert_or_update_identity(certified)
-                node_status = await self.node_status(certified)
+                    certified = results[1]
+                self.identities_service.insert_or_update_identity(certified)
                 self.add_certified_node(identity, certified, certification, node_status)
 
         except NoPeerAvailable as e:
diff --git a/src/sakia/data/processors/nodes.py b/src/sakia/data/processors/nodes.py
index a128b9308a750c9ce61277b264c4d9678fdb21c5..1e334fc46d8a88133913031ad9a52150b094b84f 100644
--- a/src/sakia/data/processors/nodes.py
+++ b/src/sakia/data/processors/nodes.py
@@ -145,7 +145,6 @@ class NodesProcessor:
                 logging.debug("Update node : {0}".format(head.pubkey[:5]))
                 node.previous_buid = node.current_buid
                 node.current_buid = head.blockstamp
-                node.state = 0
                 self._repo.update(node)
                 return node, True
         return node, False
@@ -169,7 +168,7 @@ class NodesProcessor:
     def handle_success(self, node):
         if not node.online():
             node.last_state_change = time.time()
-        node.state = 0
+        node.state = node.state - 1
         self.update_node(node)
 
     def handle_failure(self, node, weight=1):
diff --git a/src/sakia/data/repositories/nodes.py b/src/sakia/data/repositories/nodes.py
index 3d537093b0dcdb3774d7160e53c131966a32a8f2..ee02104c4f3e65cbba2d88c84f0d187fc75a8814 100644
--- a/src/sakia/data/repositories/nodes.py
+++ b/src/sakia/data/repositories/nodes.py
@@ -151,21 +151,13 @@ class NodesRepo:
         return []
 
     def current_buid(self, currency):
-        req = """SELECT `current_buid`,
-             COUNT(`current_buid`) AS `value_occurrence`
-    FROM     `nodes`
-    WHERE state == 1 AND member == 1 AND currency == ?
-    GROUP BY `current_buid`
-    ORDER BY `value_occurrence` DESC
-    LIMIT    1;"""
-
         c = self._conn.execute("""SELECT `current_buid`,
              COUNT(`current_buid`) AS `value_occurrence`
     FROM     `nodes`
-    WHERE state <= ? AND member == 1 AND currency == ?
+    WHERE member == 1 AND currency == ?
     GROUP BY `current_buid`
     ORDER BY `value_occurrence` DESC
-    LIMIT    1;""", (Node.FAILURE_THRESHOLD, currency,))
+    LIMIT    1;""", (currency,))
         data = c.fetchone()
         if data:
             return block_uid(data[0])
@@ -173,10 +165,10 @@ class NodesRepo:
             c = self._conn.execute("""SELECT `current_buid`,
              COUNT(`current_buid`) AS `value_occurrence`
     FROM     `nodes`
-    WHERE state <= ? AND currency == ?
+    WHERE currency == ?
     GROUP BY `current_buid`
     ORDER BY `value_occurrence` DESC
-    LIMIT    1;""", (Node.FAILURE_THRESHOLD, currency,))
+    LIMIT    1;""", (currency,))
             data = c.fetchone()
             if data:
                 return block_uid(data[0])
diff --git a/src/sakia/services/network.py b/src/sakia/services/network.py
index d52b28b2acffb976ad417d3e25e00bf0fc721bff..eae35138eee1432152adf3aeba2dc02852d76aea 100644
--- a/src/sakia/services/network.py
+++ b/src/sakia/services/network.py
@@ -216,6 +216,7 @@ class NetworkService(QObject):
                             node.member = identity.member
                             node.uid = identity.uid
                             self._processor.update_node(node)
+                            self._processor.handle_success(node)
                             self.node_changed.emit(node)
                         except errors.DuniterError as e:
                             self._logger.error(e.message)