@mutopad/connex-framework
Version:
A library implements VeChain Connex interface
21 lines • 2.25 kB
JavaScript
import { abi, keccak256 } from 'thor-devkit';
// https://docs.soliditylang.org/en/v0.8.16/control-structures.html#error-handling-assert-require-revert-and-exceptions
// builtin errors in solidity, Error(string) and Panic(uint256)
const errorSelector = '0x' + keccak256('Error(string)').toString('hex').slice(0, 8);
const panicSelector = '0x' + keccak256('Panic(uint256)').toString('hex').slice(0, 8);
export function decodeRevertReason(data) {
try {
if (data.startsWith(errorSelector)) {
return abi.decodeParameter('string', '0x' + data.slice(errorSelector.length));
}
else if (data.startsWith(panicSelector)) {
const decoded = abi.decodeParameter('uint256', '0x' + data.slice(panicSelector.length));
return `Panic(0x${parseInt(decoded).toString(16).padStart(2, '0')})`;
}
return '';
}
catch (_a) {
return '';
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZXJ0LXJlYXNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXZlcnQtcmVhc29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTVDLHVIQUF1SDtBQUN2SCwrREFBK0Q7QUFFL0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUNuRixNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFcEYsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQVk7SUFDM0MsSUFBSTtRQUNBLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNoQyxPQUFPLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBVyxDQUFBO1NBQzFGO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBVyxDQUFBO1lBQ2pHLE9BQU8sV0FBVyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQTtTQUN2RTtRQUNELE9BQU8sRUFBRSxDQUFBO0tBQ1o7SUFBQyxXQUFNO1FBQ0osT0FBTyxFQUFFLENBQUE7S0FDWjtBQUNMLENBQUMifQ==