# Buggy code
def is_local(self):
    # TODO: #1505  -- rethink this metaphor
    return int(self.w3.net.version) not in PUBLIC_CHAINS


# Traceback (KeyError)
nucypher    | Authenticating Ursula
geth        | WARN [12-19|12:41:45.063] Served net_version                       conn=172.18.0.4:40246 reqid=3 t="12.63µs"  err="the method net_version does not exist/is not available"
nucypher    | Traceback (most recent call last):
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/blockchain/eth/signers/base.py", line 65, in from_signer_uri
nucypher    |     signer_class = cls._SIGNERS[scheme]
nucypher    | KeyError: 'http'
nucypher    |
nucypher    | During handling of the above exception, another exception occurred:
nucypher    |
nucypher    | Traceback (most recent call last):
nucypher    |   File "/usr/local/bin/nucypher", line 11, in <module>
nucypher    |     sys.exit(nucypher_cli())
nucypher    |   File "/usr/local/lib/python3.7/site-packages/click/core.py", line 829, in __call__
nucypher    |     return self.main(*args, **kwargs)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/click/core.py", line 782, in main
nucypher    |     rv = self.invoke(ctx)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
nucypher    |     return _process_result(sub_ctx.command.invoke(sub_ctx))
nucypher    |   File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
nucypher    |     return _process_result(sub_ctx.command.invoke(sub_ctx))
nucypher    |   File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
nucypher    |     return ctx.invoke(self.callback, **ctx.params)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/click/core.py", line 610, in invoke
nucypher    |     return callback(*args, **kwargs)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/cli/options.py", line 167, in wrapper
nucypher    |     return func(**kwargs)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/cli/options.py", line 167, in wrapper
nucypher    |     return func(**kwargs)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/cli/options.py", line 167, in wrapper
nucypher    |     return func(**kwargs)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/cli/commands/ursula.py", line 384, in run
nucypher    |     json_ipc=general_config.json_ipc)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/cli/commands/ursula.py", line 287, in create_character
nucypher    |     start_learning_now=load_seednodes)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/cli/utils.py", line 91, in make_cli_character
nucypher    |     **config_args)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/config/node.py", line 248, in __call__
nucypher    |     return self.produce(**character_kwargs)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/config/characters.py", line 109, in produce
nucypher    |     merged_parameters = self.generate_parameters(**overrides)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/config/node.py", line 336, in generate_parameters
nucypher    |     merged_parameters = {**self.static_payload(), **self.dynamic_payload, **overrides}
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/config/characters.py", line 104, in dynamic_payload
nucypher    |     return {**super().dynamic_payload, **payload}
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/config/node.py", line 446, in dynamic_payload
nucypher    |     signer = Signer.from_signer_uri(self.signer_uri, testnet=testnet)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/blockchain/eth/signers/base.py", line 71, in from_signer_uri
nucypher    |     signer = Web3Signer.from_signer_uri(uri=uri)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/blockchain/eth/signers/software.py", line 55, in from_signer_uri
nucypher    |     blockchain = BlockchainInterfaceFactory.get_or_create_interface(provider_uri=uri)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/blockchain/eth/interfaces.py", line 1127, in get_or_create_interface
nucypher    |     interface = cls.get_interface(provider_uri=provider_uri)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/blockchain/eth/interfaces.py", line 1115, in get_interface
nucypher    |     interface.connect()
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/blockchain/eth/interfaces.py", line 335, in connect
nucypher    |     self.attach_middleware()
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/blockchain/eth/interfaces.py", line 282, in attach_middleware
nucypher    |     self.log.debug(f'Ethereum chain: {self.client.chain_name} (chain_id={chain_id}, poa={self.poa})')
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/blockchain/eth/clients.py", line 227, in chain_name
nucypher    |     chain_inventory = LOCAL_CHAINS if self.is_local else PUBLIC_CHAINS
nucypher    |   File "/usr/local/lib/python3.7/site-packages/nucypher/blockchain/eth/clients.py", line 477, in is_local
nucypher    |     return int(self.w3.net.version) not in PUBLIC_CHAINS
nucypher    |   File "/usr/local/lib/python3.7/site-packages/web3/net.py", line 44, in version
nucypher    |     return self._version()
nucypher    |   File "/usr/local/lib/python3.7/site-packages/web3/module.py", line 44, in caller
nucypher    |     result = w3.manager.request_blocking(method_str, params, error_formatters)
nucypher    |   File "/usr/local/lib/python3.7/site-packages/web3/manager.py", line 153, in request_blocking
nucypher    |     raise ValueError(response["error"])
nucypher    | ValueError: {'code': -32601, 'message': 'the method net_version does not exist/is not available'}

# Fixed code
def is_local(self):
    return self.chain_id not in PUBLIC_CHAINS