6 Utilities to handle protobuf types
10 from zeth.api.zeth_messages_pb2
import ZethNote
12 from typing
import Dict
21 _VALUE_OFFSET_BYTES = _APK_OFFSET_BYTES + constants.APK_LENGTH_BYTES
22 _RHO_OFFSET_BYTES = _VALUE_OFFSET_BYTES + constants.PUBLIC_VALUE_LENGTH_BYTES
23 _TRAPR_OFFSET_BYTES = _RHO_OFFSET_BYTES + constants.RHO_LENGTH_BYTES
24 assert _TRAPR_OFFSET_BYTES + constants.TRAPR_LENGTH_BYTES \
25 == constants.NOTE_LENGTH_BYTES
30 "a_pk": zeth_note_grpc_obj.apk,
31 "value": zeth_note_grpc_obj.value,
32 "rho": zeth_note_grpc_obj.rho,
33 "trap_r": zeth_note_grpc_obj.trap_r,
39 apk=parsed_zeth_note[
"a_pk"],
40 value=parsed_zeth_note[
"value"],
41 rho=parsed_zeth_note[
"rho"],
42 trap_r=parsed_zeth_note[
"trap_r"]
48 apk_bytes = bytes.fromhex(zeth_note_grpc_obj.apk)
49 value_bytes = bytes.fromhex(zeth_note_grpc_obj.value)
50 rho_bytes = bytes.fromhex(zeth_note_grpc_obj.rho)
51 trap_r_bytes = bytes.fromhex(zeth_note_grpc_obj.trap_r)
52 note_bytes = apk_bytes + value_bytes + rho_bytes + trap_r_bytes
53 assert len(note_bytes) == (constants.NOTE_LENGTH_BYTES)
58 if len(note_bytes) != (constants.NOTE_LENGTH_BYTES):
60 f
"note_bytes len {len(note_bytes)}, "
61 f
"(expected {constants.NOTE_LENGTH_BYTES})")
63 _APK_OFFSET_BYTES:_APK_OFFSET_BYTES + constants.APK_LENGTH_BYTES]
66 _VALUE_OFFSET_BYTES + constants.PUBLIC_VALUE_LENGTH_BYTES]
68 _RHO_OFFSET_BYTES:_RHO_OFFSET_BYTES + constants.RHO_LENGTH_BYTES]
69 trap_r = note_bytes[_TRAPR_OFFSET_BYTES:]
71 apk=apk.hex(), value=value.hex(), rho=rho.hex(), trap_r=trap_r.hex())