docs: 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