示例#1
0
    def format_abi_args(self, fn_name: str, fn_args, needCover=False):
        """
        format args
        """
        if not self.contract_bin_path.endswith(".wasm"):
            self.gen_contract_abi(needCover)
        data_parser = DatatypeParser(self.contract_abi_path)
        contract_abi = data_parser.contract_abi
        self.dataparser = data_parser
        args = None
        if fn_args is None:
            return (contract_abi, fn_args)
        if fn_name in data_parser.func_abi_map_by_name.keys() is None:
            raise BcosException(
                "invalid function: {}, the right function list:".format(
                    fn_name, ''.join(data_parser.func_abi_map_by_name.keys())))
        if fn_name is not None:
            fn_abi = data_parser.func_abi_map_by_name[fn_name]
            inputabi = data_parser.get_function_inputs_abi(fn_name)
            #inputabi = data_parser.get_function_abi(fn_name)

            args = format_args_by_function_abi(fn_args, inputabi)
            #print("args after format:",args)
        # the constructor with params
        elif fn_args is not None and contract_abi is not None:
            abidata = get_constructor_abi(contract_abi)
            if abidata is not None:
                inputabi = abidata["inputs"]
                args = format_args_by_function_abi(fn_args, inputabi)
        return (contract_abi, args)
示例#2
0
def get_aligned_function_data(contract_abi=None, fn_abi=None, args=None, kwargs=None):
    if fn_abi is None:
        fn_abi = get_constructor_abi(contract_abi)
    if kwargs is None:
        kwargs = {}
    fn_arguments = merge_args_and_kwargs(fn_abi, args, kwargs)
    _, aligned_fn_arguments = get_aligned_abi_inputs(fn_abi, fn_arguments)
    return add_0x_prefix(encode_abi(fn_abi, fn_arguments, ""))
示例#3
0
 def format_args(self, fn_name, fn_args, needCover=False):
     """
     format args
     """
     self.gen_contract_abi(needCover)
     data_parser = DatatypeParser(self.contract_abi_path)
     contract_abi = data_parser.contract_abi
     args = None
     if fn_args is None:
         return (contract_abi, fn_args)
     if fn_name in data_parser.func_abi_map_by_name.keys() is None:
         raise BcosException(
             "invalid function: {}, the right function list:".format(
                 fn_name, ''.join(data_parser.func_abi_map_by_name.keys())))
     if fn_name is not None:
         inputabi = data_parser.func_abi_map_by_name[fn_name]["inputs"]
         args = TransactionCommon.format_args_by_abi(fn_args, inputabi)
     # the constructor with params
     elif fn_args is not None and contract_abi is not None:
         abidata = get_constructor_abi(contract_abi)
         if abidata is not None:
             inputabi = abidata["inputs"]
             args = TransactionCommon.format_args_by_abi(fn_args, inputabi)
     return (contract_abi, args)