@neo-one/node-blockchain-esnext-cjs
Version:
NEO•ONE NEO blockchain implementation.
30 lines (27 loc) • 985 B
text/typescript
import { InvocationResult, InvocationResultError, InvocationResultSuccess, utils, VMState } from '@neo-one/client-core-esnext-cjs';
import { ExecuteScriptsResult } from '@neo-one/node-core-esnext-cjs';
export const wrapExecuteScripts = async (execute: (() => Promise<ExecuteScriptsResult>)): Promise<InvocationResult> => {
try {
const result = await execute();
if (result.state === VMState.Halt) {
return new InvocationResultSuccess({
gasConsumed: result.gasConsumed,
gasCost: result.gasCost,
stack: result.stack,
});
}
return new InvocationResultError({
gasConsumed: result.gasConsumed,
gasCost: result.gasCost,
stack: result.stack,
message: result.errorMessage === undefined ? 'Unknown Error' : result.errorMessage,
});
} catch (error) {
return new InvocationResultError({
gasConsumed: utils.ZERO,
gasCost: utils.ZERO,
stack: [],
message: error.message,
});
}
};