decodeAndValidateStruct static method

Map<String, dynamic> decodeAndValidateStruct({
  1. required StructLayout layout,
  2. required List<int> bytes,
  3. required List<int> instruction,
})
override

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;
}