decodeError static method

String? decodeError(
  1. Uint8List data
)

Decodes an error message from revert data.

Implementation

static String? decodeError(Uint8List data) {
  if (data.length < 4) return null;

  // Check for Error(string) selector: 0x08c379a0
  if (data[0] == 0x08 &&
      data[1] == 0xc3 &&
      data[2] == 0x79 &&
      data[3] == 0xa0) {
    try {
      final decoded = decode([AbiString()], data.sublist(4));
      return decoded[0] as String;
    } on Object catch (_) {
      return null;
    }
  }

  // Check for Panic(uint256) selector: 0x4e487b71
  if (data[0] == 0x4e &&
      data[1] == 0x48 &&
      data[2] == 0x7b &&
      data[3] == 0x71) {
    try {
      final decoded = decode([AbiUint(256)], data.sublist(4));
      final code = (decoded[0] as BigInt).toInt();
      return _panicMessage(code);
    } on Object catch (_) {
      return null;
    }
  }

  return null;
}