def discovery(self, discovery_address: Address) -> Discovery:
        """ Return a proxy to interact with the discovery. """
        if not is_binary_address(discovery_address):
            raise ValueError('discovery_address must be a valid address')

        with self._discovery_creation_lock:
            if discovery_address not in self.address_to_discovery:
                self.address_to_discovery[discovery_address] = Discovery(
                    jsonrpc_client=self.client,
                    discovery_address=discovery_address,
                    contract_manager=self.contract_manager,
                )

        return self.address_to_discovery[discovery_address]
Return a proxy to interact with the discovery.