Exemplo n.º 1
0
 def create_code_params_script_builder(param_list: [], builder: ParamsBuilder):
     length = len(param_list)
     for j in range(length):
         i = length - 1 - j
         if isinstance(param_list[i], bytearray) or isinstance(param_list[i], bytes):
             builder.emit_push_byte_array(param_list[i])
         elif isinstance(param_list[i], str):
             builder.emit_push_byte_array(bytes(param_list[i].encode()))
         elif isinstance(param_list[i], int):
             builder.emit_push_integer(param_list[i])
         elif isinstance(param_list[i], bool):
             builder.emit_push_bool(param_list[i])
         elif isinstance(param_list[i], dict):
             builder.emit_push_byte_array(BuildParams.get_map_bytes(dict(param_list[i])))
         elif isinstance(param_list[i], list):
             BuildParams.create_code_params_script_builder(param_list[i], builder)
             builder.emit_push_integer(len(param_list[i]))
             builder.emit(PACK)
     return builder.to_array()
Exemplo n.º 2
0
 def push_param(param, builder: ParamsBuilder):
     if isinstance(param, bytearray) or isinstance(param, bytes):
         builder.emit_push_bytearray(param)
     elif isinstance(param, str):
         builder.emit_push_bytearray(bytes(param.encode()))
     elif isinstance(param, bool):
         builder.emit_push_bool(param)
     elif isinstance(param, int):
         builder.emit_push_int(param)
     elif isinstance(param, dict):
         # builder.emit_push_byte_array(BuildParams.get_map_bytes(dict(param)))
         BuildParams.push_map(param, builder)
     elif isinstance(param, list):
         BuildParams.create_code_params_script_builder(param, builder)
         builder.emit_push_int(len(param))
         builder.emit(PACK)
     elif isinstance(param, Struct):
         BuildParams.push_struct(param, builder)
     else:
         raise SDKException(
             ErrorCode.other_error('parameter type is error'))
Exemplo n.º 3
0
 def get_map_bytes(param_dict: dict):
     builder = ParamsBuilder()
     builder.emit(BuildParams.Type.dict_type.value)
     builder.emit(utils.big_int_to_neo_bytearray(len(param_dict)))
     for key, value in param_dict.items():
         builder.emit(BuildParams.Type.bytearray_type.value)
         builder.emit_push_bytearray(str(key).encode())
         if isinstance(value, bytearray) or isinstance(value, bytes):
             builder.emit(BuildParams.Type.bytearray_type.value)
             builder.emit_push_bytearray(bytearray(value))
         elif isinstance(value, str):
             builder.emit(BuildParams.Type.bytearray_type.value)
             builder.emit_push_bytearray(value.encode())
         elif isinstance(value, bool):
             builder.emit(BuildParams.Type.bool_type.value)
             builder.emit_push_bool(value)
         elif isinstance(value, int):
             builder.emit(BuildParams.Type.int_type.value)
             builder.emit_push_int(int(value))
         else:
             raise Exception("param error")
     return builder.to_bytes()