decodeError static method
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;
}