decodeAndValidateStruct static method
Decodes and validates Borsh serialized bytes.
layout
: The layout representing the structure of the program.bytes
: The bytes to decode.instruction
(optional): The expected instruction index.discriminator
(optional): The expected discriminator.
Implementation
static Map<String, dynamic> decodeAndValidateStruct({
required StructLayout layout,
required List<int> bytes,
required List<int> instruction,
}) {
final decode = layout.deserialize(bytes).value;
final instcutionData = decode["instruction"];
if (!BytesUtils.bytesEqual(instcutionData, instruction)) {
throw MessageException("invalid instruction bytes", details: {
"expected": BytesUtils.toHexString(instruction),
"instruction": BytesUtils.toBinary(instcutionData)
});
}
return decode;
}