コード例 #1
0
ファイル: build_vm.py プロジェクト: skyinglyh1/pythontest
def build_native_invoke_code(contractAddres, cversion, method, params):
    builder = ParamsBuilder()
    build_neo_vm_param(builder, params)
    builder.emit_push_byte_array(method.encode())
    builder.emit_push_byte_array(contractAddres)
    builder.emit_push_integer(int.from_bytes(cversion, 'little'))
    builder.emit(SYSCALL)
    builder.emit_push_byte_array("Ontology.Native.Invoke".encode())
    return builder.to_array()
コード例 #2
0
def build_native_invoke_code(contract_address: bytearray, version: bytes,
                             method: str, params):
    builder = ParamsBuilder()
    build_neo_vm_param(builder, params)
    builder.emit_push_byte_array(method.encode())
    builder.emit_push_byte_array(contract_address)
    builder.emit_push_integer(int.from_bytes(version, 'little'))
    builder.emit(SYSCALL)
    builder.emit_push_byte_array("OnyxChain.Native.Invoke".encode())
    return builder.to_array()
コード例 #3
0
 def program_from_multi_pubkey(m: int, pubkeys: []):
     n = len(pubkeys)
     if m <= 0 or m > n or n > define.MULTI_SIG_MAX_PUBKEY_SIZE:
         raise Exception("param error")
     builder = ParamsBuilder()
     builder.emit_push_integer(m)
     pubkeys = ProgramBuilder.sort_publickeys(pubkeys)
     for pubkey in pubkeys:
         builder.emit_push_byte_array(pubkey)
     builder.emit_push_integer(n)
     builder.emit(CHECKMULTISIG)
     return builder.to_array()
コード例 #4
0
 def get_map_bytes(param_dict: dict):
     builder = ParamsBuilder()
     builder.emit(BuildParams.Type.maptype.value)
     builder.emit(util.bigint_to_neo_bytes(len(param_dict)))
     for key, value in param_dict.items():
         builder.emit(BuildParams.Type.bytearraytype.value)
         builder.emit_push_byte_array(str(key).encode())
         if isinstance(value, bytearray) or isinstance(value, bytes):
             builder.emit(BuildParams.Type.bytearraytype.value)
             builder.emit_push_byte_array(bytearray(value))
         elif isinstance(value, str):
             builder.emit(BuildParams.Type.bytearraytype.value)
             builder.emit_push_byte_array(value.encode())
         elif isinstance(value, int):
             builder.emit(BuildParams.Type.integertype.value)
             builder.emit_push_integer(int(value))
         else:
             raise Exception("param error")
     return builder.to_array()
コード例 #5
0
ファイル: build_params.py プロジェクト: skyinglyh1/pythontest
 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()
コード例 #6
0
 def address_from_bytes_pubkey(public_key: bytes):
     builder = ParamsBuilder()
     builder.emit_push_byte_array(bytearray(public_key))
     builder.emit(CHECKSIG)
     addr = Address(Address.to_script_hash(builder.to_array()))
     return addr
コード例 #7
0
 def program_from_pubkey(public_key):
     builder = ParamsBuilder()
     builder.emit_push_byte_array(public_key)
     builder.emit(CHECKSIG)
     return builder.to_array()