decode function

PushData? decode(
  1. Uint8List _buffer,
  2. int offset
)

Decode

Implementation

PushData? decode(Uint8List _buffer, int offset) {
  ByteData buffer = _buffer.buffer.asByteData();
  int opcode = buffer.getUint8(offset);
  int number, size;

  // ~6 bit
  if (opcode < OPS['OP_PUSHDATA1']!) {
    number = opcode;
    size = 1;

    // 8 bit
  } else if (opcode == OPS['OP_PUSHDATA1']!) {
    if (offset + 2 > buffer.lengthInBytes) return null;
    number = buffer.getUint8(offset + 1);
    size = 2;

    // 16 bit
  } else if (opcode == OPS['OP_PUSHDATA2']!) {
    if (offset + 3 > buffer.lengthInBytes) return null;
    number = buffer.getUint16(offset + 1, Endian.little);
    size = 3;

    // 32 bit
  } else {
    if (offset + 5 > buffer.lengthInBytes) return null;
    if (opcode != OPS['OP_PUSHDATA4']!) throw Exception('Unexpected opcode');

    number = buffer.getUint32(offset + 1, Endian.little);
    size = 5;
  }

  return PushData(opcode: opcode, number: number, size: size);
}