From c7b4797e0d927ad92d83557aeab53b5dc125a79f Mon Sep 17 00:00:00 2001
From: Kieran Prasch <kieran@nucypher.com>
Date: Thu, 10 Sep 2020 14:36:42 -0700
Subject: [PATCH] Allow learners to explicity opt out of verifying stranger
 nodes are bonded in the staking escrow.

---
 nucypher/network/nodes.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/nucypher/network/nodes.py b/nucypher/network/nodes.py
index e2c749989..be021a3e1 100644
--- a/nucypher/network/nodes.py
+++ b/nucypher/network/nodes.py
@@ -203,7 +203,8 @@ class Learner:
                  node_storage=None,
                  save_metadata: bool = False,
                  abort_on_learning_error: bool = False,
-                 lonely: bool = False
+                 lonely: bool = False,
+                 verify_node_bonding: bool = True,
                  ) -> None:
 
         self.log = Logger("learning-loop")  # type: Logger
@@ -224,6 +225,7 @@ class Learner:
         self._node_ids_to_learn_about_immediately = set()
 
         self.__known_nodes = self.tracker_class()
+        self._verify_node_bonding = verify_node_bonding
 
         self.lonely = lonely
         self.done_seeding = False
@@ -397,10 +399,15 @@ class Learner:
             # this will update the filepath from the temp location to this one.
             node.certificate_filepath = certificate_filepath
 
+            # Use this to control whether or not this node performs
+            # blockchain calls to determine if stranger nodes are bonded.
+            # Note: self.registry is composed on blockchainy character subclasses.
+            registry = self.registry if self._verify_node_bonding else None  # TODO: Federated mode?
+
             try:
                 node.verify_node(force=force_verification_recheck,
                                  network_middleware_client=self.network_middleware.client,
-                                 registry=self.registry)  # composed on character subclass, determines operating mode
+                                 registry=registry)  # composed on character subclass, determines operating mode
             except SSLError:
                 # TODO: Bucket this node as having bad TLS info - maybe it's an update that hasn't fully propagated?  567
                 return False