Beispiel #1
0
 def create_code_params_script_builder(param_list: list,
                                       builder: ParamsBuilder):
     length = len(param_list)
     for j in range(length):
         i = length - 1 - j
         BuildParams.push_param(param_list[i], builder)
     return builder.to_bytes()
 def test_op_code_to_int(self):
     builder = ParamsBuilder()
     for num in range(100000):
         builder.emit_push_int(num)
         op_code = builder.to_bytes().hex()
         builder.clear_up()
         value = ContractDataParser.op_code_to_int(op_code)
         self.assertEqual(num, value)
def build_native_invoke_code(contract_address: bytes, version: bytes, method: str, params):
    builder = ParamsBuilder()
    build_neo_vm_param(builder, params)
    builder.emit_push_bytearray(method.encode())
    builder.emit_push_bytearray(contract_address)
    builder.emit_push_int(int.from_bytes(version, 'little'))
    builder.emit(SYSCALL)
    builder.emit_push_bytearray(b'Ontology.Native.Invoke')
    return builder.to_bytes()
Beispiel #4
0
 def program_from_multi_pubkey(m: int, pub_keys: []) -> bytes:
     n = len(pub_keys)
     if m <= 0:
         raise SDKException(ErrorCode.other_error(f'Param error: m == {m}'))
     if m > n:
         raise SDKException(
             ErrorCode.other_error(f'Param error: m == {m} n == {n}'))
     if n > MULTI_SIG_MAX_PUBKEY_SIZE:
         raise SDKException(
             ErrorCode.other_error(
                 f'Param error: n == {n} > {MULTI_SIG_MAX_PUBKEY_SIZE}'))
     builder = ParamsBuilder()
     builder.emit_push_int(m)
     pub_keys = ProgramBuilder.sort_public_keys(pub_keys)
     for pk in pub_keys:
         builder.emit_push_bytearray(pk)
     builder.emit_push_int(n)
     builder.emit(CHECKMULTISIG)
     return builder.to_bytes()
Beispiel #5
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()
Beispiel #6
0
 def from_public_key(cls, public_key: bytes):
     builder = ParamsBuilder()
     builder.emit_push_bytearray(bytearray(public_key))
     builder.emit(CHECKSIG)
     return cls.__from_byte_script(builder.to_bytes())
 def address_from_bytes_pubkey(public_key: bytes):
     builder = ParamsBuilder()
     builder.emit_push_bytearray(bytearray(public_key))
     builder.emit(CHECKSIG)
     addr = Address(Address.to_script_hash(builder.to_bytes()))
     return addr
Beispiel #8
0
 def program_from_pubkey(public_key):
     builder = ParamsBuilder()
     builder.emit_push_byte_array(public_key)
     builder.emit(CHECKSIG)
     return builder.to_bytes()