UNPKG

@muirglacier/jellyfish-transaction

Version:

A collection of TypeScript + JavaScript tools and libraries for DeFi Blockchain developers to build decentralized finance for Bitcoin

85 lines 3.08 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OP_DEFI_TX = exports.remapDeFiScript = exports.isDeFiScript = void 0; const smart_buffer_1 = require("smart-buffer"); const opcode_1 = require("../opcode"); const data_1 = require("../data"); const control_1 = require("../control"); const dftx_1 = require("./dftx"); const mapping_1 = require("../mapping"); __exportStar(require("./dftx_account"), exports); __exportStar(require("./dftx_balance"), exports); __exportStar(require("./dftx_governance"), exports); __exportStar(require("./dftx_masternode"), exports); __exportStar(require("./dftx_misc"), exports); __exportStar(require("./dftx_oracles"), exports); __exportStar(require("./dftx_pool"), exports); __exportStar(require("./dftx_price"), exports); __exportStar(require("./dftx_token"), exports); __exportStar(require("./dftx_loans"), exports); __exportStar(require("./dftx_unmapped"), exports); __exportStar(require("./dftx_icxorderbook"), exports); __exportStar(require("./dftx"), exports); const DEFI_SIGNATURE = '44665478'; // DfTx /** * @param {OPCode[]} stack to check if it is a dftx script */ function isDeFiScript(stack) { if (stack.length < 2) { return false; } if (!(stack[0] instanceof control_1.OP_RETURN && stack[1] instanceof data_1.OP_PUSHDATA)) { return false; } const pushData = stack[1]; const hex = pushData.hex; return hex.length >= 10 && hex.startsWith(DEFI_SIGNATURE); } exports.isDeFiScript = isDeFiScript; /** * @param {OPCode[]} stack to check and remap into OP_DEFI_TX if valid */ function remapDeFiScript(stack) { if (!isDeFiScript(stack)) { return stack; } const pushData = stack[1]; const hex = pushData.hex; const buffer = smart_buffer_1.SmartBuffer.fromBuffer(Buffer.from(hex, 'hex')); const dftx = new dftx_1.CDfTx(buffer); return [ mapping_1.OP_CODES.OP_RETURN, mapping_1.OP_CODES.OP_DEFI_TX(dftx.toObject()), ...stack.slice(2) ]; } exports.remapDeFiScript = remapDeFiScript; /** * DeFi Transaction wrapped as an OpCode */ class OP_DEFI_TX extends opcode_1.OPCode { constructor(tx) { super('OP_DEFI_TX'); this.tx = tx; } asBuffer() { const buffer = new smart_buffer_1.SmartBuffer(); new dftx_1.CDfTx(this.tx).toBuffer(buffer); return Buffer.concat([ data_1.OP_PUSHDATA.getLenOpBuffer(buffer.length), buffer.toBuffer() ]); } } exports.OP_DEFI_TX = OP_DEFI_TX; //# sourceMappingURL=index.js.map