return output_id_hexstr
+def get_tx_id(prepare_tx_id_hexstr):
+ innerhash_bytes = sha3_256(bytes.fromhex(prepare_tx_id_hexstr)).digest()
+ tx_id_hexstr = sha3_256(b'entryid:txheader:' + innerhash_bytes).hexdigest()
+ return tx_id_hexstr
+
+
'''
decode_raw_tx decode raw transaction
testdata 1:
tx_input_amount, length = get_uvarint(raw_tx_str[offset:offset+8])
offset = offset + 2 * length
prepare_mux_hexstr = (tx_input_amount).to_bytes((tx_input_amount.bit_length() + 7) // 8, 'little').hex()
+ prepare_tx_id_hexstr = (tx['version']).to_bytes(8, 'little').hex() + (tx['time_range']).to_bytes(8, 'little').hex()
for _ in range(tx_input_amount):
tx_input = {
"address": "",
offset = offset + 2 * length
prepare_mux_hexstr += '0100000000000000' + '0151'
mux_id_hexstr = get_mux_id(prepare_mux_hexstr)
+ prepare_tx_id_hexstr += (tx_output_amount).to_bytes((tx_output_amount.bit_length() + 7) // 8, 'little').hex()
for i in range(tx_output_amount):
tx_output = {
"address": "",
offset = offset + 2 * length
prepare_output_id_hexstr = mux_id_hexstr + tx_output['asset_id'] + (tx_output['amount']).to_bytes(8, byteorder='little').hex() + (i).to_bytes(8, byteorder='little').hex() + '0100000000000000' + (control_program_length).to_bytes((control_program_length.bit_length() + 7) // 8, 'little').hex() + tx_output['control_program']
tx_output['id'] = get_output_id(prepare_output_id_hexstr)
+ prepare_tx_id_hexstr += tx_output['id']
tx['outputs'].append(tx_output)
+ tx['tx_id'] = get_tx_id(prepare_tx_id_hexstr)
return tx