called by the event handler with the result data
        :param response_data: result data
        :return:

def response(self, response_data):
        '''
        called by the event handler with the result data
        :param response_data: result data
        :return:
        '''

        if "address" not in response_data:
            return None, "address missing from response_data payload"
        if "function" not in response_data:
            return None, "method missing from response_data payload"
        if "params" not in response_data:
            return None, "params missing from response_data payload"
        if "target" not in response_data:
            return None, "target missing from response_data payload"


        address = self._ezo.w3.toChecksumAddress(response_data["address"])
        account = self._ezo.w3.toChecksumAddress(get_account(self._ezo.config, response_data["target"]))

        self._ezo.w3.eth.accounts[0] = account

        tx_dict = dict()
        tx_dict["account"] = account
        tx_dict["from"] = account

        password = os.environ['EZO_PASSWORD'] if 'EZO_PASSWORD' in os.environ else None

        u_state = self._ezo.w3.personal.unlockAccount(account, password)

        if not self.contract_obj:
            try:
                self.contract_obj = self._ezo.w3.eth.contract(address=address, abi=self.abi)
            except Exception as e:
                return None, e

        method = response_data["function"]
        params = response_data["params"]
        contract_func = self.contract_obj.functions[method]
        try:
            if not params:
                tx_dict["gas"] = contract_func().estimateGas() + 1000
                tx_hash = contract_func().transact(tx_dict)
            else:
                tx_dict["gas"] = contract_func(*params).estimateGas() + 1000
                tx_hash = contract_func(*params).transact(tx_dict)

            receipt = self._ezo.w3.eth.waitForTransactionReceipt(tx_hash)
        except Exception as e:
            return None, "error executing transaction: {}".format(e)
  #      finally:
#            self._ezo.w3.personal.lockAccount(account)

        return receipt, None