code: def add_public_key(self, ont_id: str, operator: Account, hex_new_public_key: str, payer: Account, gas_limit: int,
                         gas_price: int, is_recovery: bool = False):
          
          if not isinstance(operator, Account) or not isinstance(payer, Account):
              raise SDKException(ErrorCode.require_acct_params)
          if is_recovery:
              bytes_operator = operator.get_address_bytes()
          else:
              bytes_operator = operator.get_public_key_bytes()
          b58_payer_address = payer.get_address_base58()
          tx = self.new_add_public_key_transaction(ont_id, bytes_operator, hex_new_public_key, b58_payer_address,
                                                   gas_limit, gas_price, is_recovery)
          tx.sign_transaction(operator)
          tx.add_sign_transaction(payer)
          return self.__sdk.get_network().send_raw_transaction(tx)
docs: This interface is used to send a Transaction object which is used to add public key.
  
          :param ont_id: OntId.
          :param operator: an Account object which indicate who will sign for the transaction.
          :param hex_new_public_key: the new hexadecimal public key in the form of string.
          :param payer: an Account object which indicate who will pay for the transaction.
          :param gas_limit: an int value that indicate the gas limit.
          :param gas_price: an int value that indicate the gas price.
          :param is_recovery: indicate whether ctrl account is a recovery account.
          :return: a hexadecimal transaction hash value.