decodeCheck static method

Uint8List decodeCheck(
  1. String input
)

Decodes a Base58Check string to payload bytes.

Returns the payload without version byte and checksum. Throws if checksum is invalid.

Implementation

static Uint8List decodeCheck(String input) {
  final decoded = decode(input);
  if (decoded.length < 5) {
    throw FormatException('Base58Check string too short');
  }

  final data = decoded.sublist(0, decoded.length - 4);
  final checksum = decoded.sublist(decoded.length - 4);
  final expectedChecksum = _doubleSha256(data).sublist(0, 4);

  for (var i = 0; i < 4; i++) {
    if (checksum[i] != expectedChecksum[i]) {
      throw FormatException('Invalid Base58Check checksum');
    }
  }

  // Return payload without version byte
  return data.sublist(1);
}