UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

42 lines (40 loc) 6.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const client_common_1 = require("@neo-one/client-common"); const Helper_1 = require("../Helper"); class ApplicationMatchesVerificationHelper extends Helper_1.Helper { emit(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.emitSysCall(node, 'System.ExecutionEngine.GetScriptContainer'); sb.emitSysCall(node, 'Neo.InvocationTransaction.GetScript'); sb.emitOp(node, 'DUP'); sb.emitPushInt(node, 21); sb.emitOp(node, 'TUCK'); sb.emitOp(node, 'RIGHT'); sb.emitPushBuffer(node, Buffer.from([client_common_1.Op.APPCALL])); sb.emitSysCall(node, 'System.ExecutionEngine.GetExecutingScriptHash'); sb.emitOp(node, 'CAT'); sb.emitHelper(node, options, sb.helpers.if({ condition: () => { sb.emitOp(node, 'EQUAL'); }, whenTrue: () => { sb.emitOp(node, 'OVER'); sb.emitOp(node, 'SIZE'); sb.emitOp(node, 'SWAP'); sb.emitOp(node, 'SUB'); sb.emitOp(node, 'LEFT'); sb.emitOp(node, 'HASH160'); sb.emitSysCall(node, 'System.ExecutionEngine.GetEntryScriptHash'); sb.emitOp(node, 'EQUAL'); }, whenFalse: () => { sb.emitOp(node, 'DROP'); sb.emitOp(node, 'DROP'); sb.emitPushBoolean(node, false); }, })); } } exports.ApplicationMatchesVerificationHelper = ApplicationMatchesVerificationHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFwcGxpY2F0aW9uTWF0Y2hlc1ZlcmlmaWNhdGlvbkhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBEQUE0QztBQUk1QyxzQ0FBbUM7QUFJbkMsTUFBYSxvQ0FBcUMsU0FBUSxlQUFNO0lBQ3ZELElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxTQUF1QjtRQUNuRSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFHL0MsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsMkNBQTJDLENBQUMsQ0FBQztRQUVsRSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxxQ0FBcUMsQ0FBQyxDQUFDO1FBRTVELEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXZCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXpCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXpCLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxrQkFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuRCxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSwrQ0FBK0MsQ0FBQyxDQUFDO1FBRXRFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNaLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBRWQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBRWIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRXZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFFM0IsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsMkNBQTJDLENBQUMsQ0FBQztnQkFFbEUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBRWQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsQyxDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUEzREQsb0ZBMkRDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2NvbnRyYWN0L0FwcGxpY2F0aW9uTWF0Y2hlc1ZlcmlmaWNhdGlvbkhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wIH0gZnJvbSAnQG5lby1vbmUvY2xpZW50LWNvbW1vbic7XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcblxuLy8gSW5wdXQ6IFtdXG4vLyBPdXRwdXQ6IFtib29sZWFuXVxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uTWF0Y2hlc1ZlcmlmaWNhdGlvbkhlbHBlciBleHRlbmRzIEhlbHBlciB7XG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG5cbiAgICAvLyBbdHJhbnNhY3Rpb25dXG4gICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ1N5c3RlbS5FeGVjdXRpb25FbmdpbmUuR2V0U2NyaXB0Q29udGFpbmVyJyk7XG4gICAgLy8gW2J1ZmZlcl1cbiAgICBzYi5lbWl0U3lzQ2FsbChub2RlLCAnTmVvLkludm9jYXRpb25UcmFuc2FjdGlvbi5HZXRTY3JpcHQnKTtcbiAgICAvLyBbYnVmZmVyLCBidWZmZXJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdEVVAnKTtcbiAgICAvLyBbMjEsIGJ1ZmZlciwgYnVmZmVyXVxuICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDIxKTtcbiAgICAvLyBbMjEsIGJ1ZmZlciwgMjEsIGJ1ZmZlcl1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1RVQ0snKTtcbiAgICAvLyBbYXBwQ2FsbEhhc2gsIDIxLCBidWZmZXJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdSSUdIVCcpO1xuICAgIC8vIFthcHBDYWxsLCBhcHBDYWxsSGFzaCwgMjEsIGJ1ZmZlcl1cbiAgICBzYi5lbWl0UHVzaEJ1ZmZlcihub2RlLCBCdWZmZXIuZnJvbShbT3AuQVBQQ0FMTF0pKTtcbiAgICAvLyBbaGFzaCwgYXBwQ2FsbCwgYXBwQ2FsbEhhc2gsIDIxLCBidWZmZXJdXG4gICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ1N5c3RlbS5FeGVjdXRpb25FbmdpbmUuR2V0RXhlY3V0aW5nU2NyaXB0SGFzaCcpO1xuICAgIC8vIFthcHBDYWxsSGFzaCwgYXBwQ2FsbEhhc2gsIDIxLCBidWZmZXJdXG4gICAgc2IuZW1pdE9wKG5vZGUsICdDQVQnKTtcbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzYi5oZWxwZXJzLmlmKHtcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW2Jvb2xlYW4sIDIxLCBidWZmZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdFUVVBTCcpO1xuICAgICAgICB9LFxuICAgICAgICB3aGVuVHJ1ZTogKCkgPT4ge1xuICAgICAgICAgIC8vIFtidWZmZXIsIDIxLCBidWZmZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdPVkVSJyk7XG4gICAgICAgICAgLy8gW3NpemUsIDIxLCBidWZmZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTSVpFJyk7XG4gICAgICAgICAgLy8gWzIxLCBzaXplLCBidWZmZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgICAgICAgLy8gW3NpemUgLSAyMSwgYnVmZmVyXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1VCJyk7XG4gICAgICAgICAgLy8gW2FyZ3NCdWZmZXJdXG4gICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdMRUZUJyk7XG4gICAgICAgICAgLy8gW2FyZ3NIYXNoXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnSEFTSDE2MCcpO1xuICAgICAgICAgIC8vIFtlbnRyeUhhc2gsIGFyZ3NIYXNoXVxuICAgICAgICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdTeXN0ZW0uRXhlY3V0aW9uRW5naW5lLkdldEVudHJ5U2NyaXB0SGFzaCcpO1xuICAgICAgICAgIC8vIFtib29sZWFuXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRVFVQUwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2hlbkZhbHNlOiAoKSA9PiB7XG4gICAgICAgICAgLy8gW2J1ZmZlcl1cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgICAgICAvLyBbXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgICAgIC8vIFtib29sZWFuXVxuICAgICAgICAgIHNiLmVtaXRQdXNoQm9vbGVhbihub2RlLCBmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=