UNPKG

@muirglacier/jellyfish-transaction

Version:

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

776 lines 28.8 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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OP_CODES = exports.OP_UNMAPPED = exports.numAsOPCode = void 0; const smart_buffer_1 = require("smart-buffer"); const jellyfish_buffer_1 = require("@muirglacier/jellyfish-buffer"); const _buffer_1 = require("./_buffer"); const opcode_1 = require("./opcode"); const data_1 = require("./data"); const dftx_1 = require("./dftx"); const dftx_2 = require("./dftx/dftx"); const constants = __importStar(require("./constants")); const control = __importStar(require("./control")); const stack = __importStar(require("./stack")); const splice = __importStar(require("./splice")); const bitwise = __importStar(require("./bitwise")); const arithmetic = __importStar(require("./arithmetic")); const crypto = __importStar(require("./crypto")); const expansion = __importStar(require("./expansion")); const invalid = __importStar(require("./invalid")); const dftx_pool_1 = require("./dftx/dftx_pool"); const dftx_token_1 = require("./dftx/dftx_token"); const dftx_account_1 = require("./dftx/dftx_account"); const dftx_oracles_1 = require("./dftx/dftx_oracles"); const dftx_loans_1 = require("./dftx/dftx_loans"); const dftx_misc_1 = require("./dftx/dftx_misc"); const dftx_governance_1 = require("./dftx/dftx_governance"); const dftx_icxorderbook_1 = require("./dftx/dftx_icxorderbook"); const dftx_masternode_1 = require("./dftx/dftx_masternode"); /** * @param num to map as OPCode, 1 byte long */ function numAsOPCode(num) { if (num > 0xff) { throw new Error('OPCode should be 1 byte.'); } const opCode = HEX_MAPPING[num]; if (opCode !== undefined) { return opCode; } return new OP_UNMAPPED(num); } exports.numAsOPCode = numAsOPCode; /** * Unmapped OPCode are codes that don't yet have a class for it yet. */ class OP_UNMAPPED extends opcode_1.StaticCode { constructor(code) { super(code, `OP_UNMAPPED_CODE_${code.toString()}`); } } exports.OP_UNMAPPED = OP_UNMAPPED; /** * All static OP_CODES & DEFI Custom Tx scripting * @see https://github.com/DeFiCh/ain/blob/master/src/script/script.h */ exports.OP_CODES = { /** * Read SmartBuffer and create OPCode[] stack. * * Using P2WPKH redeem script as an example. * * Input Example: 1600140e7c0ab18b305bc987a266dc06de26fcfab4b56a * 0x16 (VarUInt) * 0x00 (OP_0) * 6ab5b4fafc26de06dc66a287c95b308bb10a7c0e (formatted as big endian) * * Output Example: * OP_0 * OP_PUSHDATA<RIPEMD160(SHA256(pubkey))> * * @param {SmartBuffer} buffer to read from * @return {OPCode[]} read from buffer to OPCode */ fromBuffer(buffer) { const length = jellyfish_buffer_1.readVarUInt(buffer); if (length === 0) { return []; } return _buffer_1.toOPCodes(smart_buffer_1.SmartBuffer.fromBuffer(buffer.readBuffer(length))); }, /** * Converts OPCode[] and write it into SmartBuffer. * * Using P2PKH redeem script as an example. * * Input Example: * OP_DUP * OP_HASH160 * OP_PUSHDATA<RIPEMD160(SHA256(pubkey))> * OP_EQUALVERIFY * OP_CHECKSIG * * Output Example: 1976a9143bde42dbee7e4dbe6a21b2d50ce2f0167faa815988ac * 0x19 (VarUInt) * 0x76 (OP_DUP) * 0xa9 (OP_HASH160) * 5981aa7f16f0e20cd5b2216abe4d7eeedb42de3b (formatted as big endian) * 0x88 (OP_EQUALVERIFY) * 0xac (OP_CHECKSIG) * * @param {OPCode[]} stack to convert into raw buffer * @param {SmartBuffer} buffer to write to */ toBuffer(stack, buffer) { const buffs = _buffer_1.toBuffer(stack); // Write the len of buffer in bytes and then all the buffer jellyfish_buffer_1.writeVarUInt(buffs.length, buffer); buffer.writeBuffer(buffs); }, OP_DEFI_TX: (dftx) => { return new dftx_1.OP_DEFI_TX(dftx); }, OP_DEFI_TX_POOL_SWAP: (poolSwap) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_pool_1.CPoolSwap.OP_CODE, name: dftx_pool_1.CPoolSwap.OP_NAME, data: poolSwap }); }, OP_DEFI_TX_COMPOSITE_SWAP: (compositeSwap) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_pool_1.CCompositeSwap.OP_CODE, name: dftx_pool_1.CCompositeSwap.OP_NAME, data: compositeSwap }); }, OP_DEFI_TX_POOL_ADD_LIQUIDITY: (poolAddLiquidity) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_pool_1.CPoolAddLiquidity.OP_CODE, name: dftx_pool_1.CPoolAddLiquidity.OP_NAME, data: poolAddLiquidity }); }, OP_DEFI_TX_POOL_REMOVE_LIQUIDITY: (poolRemoveLiquidity) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_pool_1.CPoolRemoveLiquidity.OP_CODE, name: dftx_pool_1.CPoolRemoveLiquidity.OP_NAME, data: poolRemoveLiquidity }); }, OP_DEFI_TX_POOL_CREATE_PAIR: (poolCreatePair) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_pool_1.CPoolCreatePair.OP_CODE, name: dftx_pool_1.CPoolCreatePair.OP_NAME, data: poolCreatePair }); }, OP_DEFI_TX_POOL_UPDATE_PAIR: (poolCreatePair) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_pool_1.CPoolUpdatePair.OP_CODE, name: dftx_pool_1.CPoolUpdatePair.OP_NAME, data: poolCreatePair }); }, OP_DEFI_TX_TOKEN_MINT: (tokenMint) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_token_1.CTokenMint.OP_CODE, name: dftx_token_1.CTokenMint.OP_NAME, data: tokenMint }); }, OP_DEFI_TX_TOKEN_CREATE: (tokenCreate) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_token_1.CTokenCreate.OP_CODE, name: dftx_token_1.CTokenCreate.OP_NAME, data: tokenCreate }); }, OP_DEFI_TX_TOKEN_UPDATE: (tokenUpdate) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_token_1.CTokenUpdate.OP_CODE, name: dftx_token_1.CTokenUpdate.OP_NAME, data: tokenUpdate }); }, OP_DEFI_TX_TOKEN_UPDATE_ANY: (tokenUpdateAny) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_token_1.CTokenUpdateAny.OP_CODE, name: dftx_token_1.CTokenUpdateAny.OP_NAME, data: tokenUpdateAny }); }, OP_DEFI_TX_UTXOS_TO_ACCOUNT: (utxosToAccount) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_account_1.CUtxosToAccount.OP_CODE, name: dftx_account_1.CUtxosToAccount.OP_NAME, data: utxosToAccount }); }, OP_DEFI_TX_ACCOUNT_TO_UTXOS: (accountToUtxos) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_account_1.CAccountToUtxos.OP_CODE, name: dftx_account_1.CAccountToUtxos.OP_NAME, data: accountToUtxos }); }, OP_DEFI_TX_ACCOUNT_TO_ACCOUNT: (accountToAccount) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_account_1.CAccountToAccount.OP_CODE, name: dftx_account_1.CAccountToAccount.OP_NAME, data: accountToAccount }); }, OP_DEFI_TX_ANY_ACCOUNT_TO_ACCOUNT: (anyAccountToAccount) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_account_1.CAnyAccountToAccount.OP_CODE, name: dftx_account_1.CAnyAccountToAccount.OP_NAME, data: anyAccountToAccount }); }, OP_DEFI_TX_APPOINT_ORACLE: (appointOracle) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_oracles_1.CAppointOracle.OP_CODE, name: dftx_oracles_1.CAppointOracle.OP_NAME, data: appointOracle }); }, OP_DEFI_TX_REMOVE_ORACLE: (removeOracle) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_oracles_1.CRemoveOracle.OP_CODE, name: dftx_oracles_1.CRemoveOracle.OP_NAME, data: removeOracle }); }, OP_DEFI_TX_UPDATE_ORACLE: (updateOracle) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_oracles_1.CUpdateOracle.OP_CODE, name: dftx_oracles_1.CUpdateOracle.OP_NAME, data: updateOracle }); }, OP_DEFI_TX_SET_ORACLE_DATA: (setOracleData) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_oracles_1.CSetOracleData.OP_CODE, name: dftx_oracles_1.CSetOracleData.OP_NAME, data: setOracleData }); }, OP_DEFI_TX_AUTO_AUTH_PREP: () => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_misc_1.CAutoAuthPrep.OP_CODE, name: dftx_misc_1.CAutoAuthPrep.OP_NAME, data: null }); }, OP_DEFI_TX_CREATE_MASTER_NODE: (createMasterNode) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_masternode_1.CCreateMasternode.OP_CODE, name: dftx_masternode_1.CCreateMasternode.OP_NAME, data: createMasterNode }); }, OP_DEFI_TX_RESIGN_MASTER_NODE: (resignMasternode) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_masternode_1.CResignMasternode.OP_CODE, name: dftx_masternode_1.CResignMasternode.OP_NAME, data: resignMasternode }); }, OP_DEFI_TX_SET_GOVERNANCE: (setGovernance) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_governance_1.CSetGovernance.OP_CODE, name: dftx_governance_1.CSetGovernance.OP_NAME, data: setGovernance }); }, OP_DEFI_TX_SET_GOVERNANCE_HEIGHT: (setGovernanceHeight) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_governance_1.CSetGovernanceHeight.OP_CODE, name: dftx_governance_1.CSetGovernanceHeight.OP_NAME, data: setGovernanceHeight }); }, OP_DEFI_TX_ICX_CREATE_ORDER: (createOrder) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_icxorderbook_1.CICXCreateOrder.OP_CODE, name: dftx_icxorderbook_1.CICXCreateOrder.OP_NAME, data: createOrder }); }, OP_DEFI_TX_ICX_MAKE_OFFER: (makeOffer) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_icxorderbook_1.CICXMakeOffer.OP_CODE, name: dftx_icxorderbook_1.CICXMakeOffer.OP_NAME, data: makeOffer }); }, OP_DEFI_TX_ICX_CLOSE_ORDER: (closeOrder) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_icxorderbook_1.CICXCloseOrder.OP_CODE, name: dftx_icxorderbook_1.CICXCloseOrder.OP_NAME, data: closeOrder }); }, OP_DEFI_TX_ICX_CLOSE_OFFER: (closeOffer) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_icxorderbook_1.CICXCloseOffer.OP_CODE, name: dftx_icxorderbook_1.CICXCloseOffer.OP_NAME, data: closeOffer }); }, OP_DEFI_TX_CREATE_CFP: (createCfp) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_governance_1.CCreateCfp.OP_CODE, name: dftx_governance_1.CCreateCfp.OP_NAME, data: createCfp }); }, OP_DEFI_TX_CREATE_VOC: (createVoc) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_governance_1.CCreateVoc.OP_CODE, name: dftx_governance_1.CCreateVoc.OP_NAME, data: createVoc }); }, OP_DEFI_TX_VOTE: (vote) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_governance_1.CVote.OP_CODE, name: dftx_governance_1.CVote.OP_NAME, data: vote }); }, OP_DEFI_TX_ICX_SUBMIT_DFC_HTLC: (icxSubmitDFCHTLC) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_icxorderbook_1.CICXSubmitDFCHTLC.OP_CODE, name: dftx_icxorderbook_1.CICXSubmitDFCHTLC.OP_NAME, data: icxSubmitDFCHTLC }); }, OP_DEFI_TX_ICX_SUBMIT_EXT_HTLC: (icxSubmitEXTHTLC) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_icxorderbook_1.CICXSubmitEXTHTLC.OP_CODE, name: dftx_icxorderbook_1.CICXSubmitEXTHTLC.OP_NAME, data: icxSubmitEXTHTLC }); }, OP_DEFI_TX_ICX_CLAIM_DFC_HTLC: (icxClaimDFCHTLC) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_icxorderbook_1.CICXClaimDFCHTLC.OP_CODE, name: dftx_icxorderbook_1.CICXClaimDFCHTLC.OP_NAME, data: icxClaimDFCHTLC }); }, OP_DEFI_TX_SET_LOAN_SCHEME: (setLoanScheme) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CSetLoanScheme.OP_CODE, name: dftx_loans_1.CSetLoanScheme.OP_NAME, data: setLoanScheme }); }, OP_DEFI_TX_DESTROY_LOAN_SCHEME: (destroyLoanScheme) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CDestroyLoanScheme.OP_CODE, name: dftx_loans_1.CDestroyLoanScheme.OP_NAME, data: destroyLoanScheme }); }, OP_DEFI_TX_SET_DEFAULT_LOAN_SCHEME: (setDefaultLoanScheme) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CSetDefaultLoanScheme.OP_CODE, name: dftx_loans_1.CSetDefaultLoanScheme.OP_NAME, data: setDefaultLoanScheme }); }, OP_DEFI_TX_SET_COLLATERAL_TOKEN: (setCollateralToken) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CSetCollateralToken.OP_CODE, name: dftx_loans_1.CSetCollateralToken.OP_NAME, data: setCollateralToken }); }, OP_DEFI_TX_SET_LOAN_TOKEN: (setLoanToken) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CSetLoanToken.OP_CODE, name: dftx_loans_1.CSetLoanToken.OP_NAME, data: setLoanToken }); }, OP_DEFI_TX_UPDATE_LOAN_TOKEN: (updateLoanToken) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CUpdateLoanToken.OP_CODE, name: dftx_loans_1.CUpdateLoanToken.OP_NAME, data: updateLoanToken }); }, OP_DEFI_TX_CREATE_VAULT: (createVault) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CCreateVault.OP_CODE, name: dftx_loans_1.CCreateVault.OP_NAME, data: createVault }); }, OP_DEFI_TX_UPDATE_VAULT: (updateVault) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CUpdateVault.OP_CODE, name: dftx_loans_1.CUpdateVault.OP_NAME, data: updateVault }); }, OP_DEFI_TX_DEPOSIT_TO_VAULT: (depositToVault) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CDepositToVault.OP_CODE, name: dftx_loans_1.CDepositToVault.OP_NAME, data: depositToVault }); }, OP_DEFI_TX_WITHDRAW_FROM_VAULT: (WithdrawFromVault) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CWithdrawFromVault.OP_CODE, name: dftx_loans_1.CWithdrawFromVault.OP_NAME, data: WithdrawFromVault }); }, OP_DEFI_TX_CLOSE_VAULT: (closeVault) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CCloseVault.OP_CODE, name: dftx_loans_1.CCloseVault.OP_NAME, data: closeVault }); }, OP_DEFI_TX_TAKE_LOAN: (takeLoan) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CTakeLoan.OP_CODE, name: dftx_loans_1.CTakeLoan.OP_NAME, data: takeLoan }); }, OP_DEFI_TX_PAYBACK_LOAN: (paybackLoan) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CPaybackLoan.OP_CODE, name: dftx_loans_1.CPaybackLoan.OP_NAME, data: paybackLoan }); }, OP_DEFI_TX_AUCTION_BID: (placeAuctionBid) => { return new dftx_1.OP_DEFI_TX({ signature: dftx_2.CDfTx.SIGNATURE, type: dftx_loans_1.CPlaceAuctionBid.OP_CODE, name: dftx_loans_1.CPlaceAuctionBid.OP_NAME, data: placeAuctionBid }); }, OP_0: new constants.OP_0(), OP_FALSE: new constants.OP_FALSE(), /** * OP_PUSHDATA1 use OP_PUSHDATA * OP_PUSHDATA2 use OP_PUSHDATA * OP_PUSHDATA4 use OP_PUSHDATA * @param {Buffer} buffer * @param {'little' | 'big'} endian order */ OP_PUSHDATA: (buffer, endian) => { return new data_1.OP_PUSHDATA(buffer, endian); }, /** * @param {Buffer} buffer in little endian */ OP_PUSHDATA_LE: (buffer) => { return new data_1.OP_PUSHDATA(buffer, 'little'); }, /** * @param {string} hex in little endian */ OP_PUSHDATA_HEX_LE: (hex) => { return new data_1.OP_PUSHDATA(Buffer.from(hex, 'hex'), 'little'); }, // TODO: to map everything as class // to be separated into concerns, stack, arithmetic, crypto, etc... OP_1NEGATE: new constants.OP_1NEGATE(), OP_RESERVED: new constants.OP_RESERVED(), OP_1: new constants.OP_1(), OP_TRUE: new constants.OP_TRUE(), OP_2: new constants.OP_2(), OP_3: new constants.OP_3(), OP_4: new constants.OP_4(), OP_5: new constants.OP_5(), OP_6: new constants.OP_6(), OP_7: new constants.OP_7(), OP_8: new constants.OP_8(), OP_9: new constants.OP_9(), OP_10: new constants.OP_10(), OP_11: new constants.OP_11(), OP_12: new constants.OP_12(), OP_13: new constants.OP_13(), OP_14: new constants.OP_14(), OP_15: new constants.OP_15(), OP_16: new constants.OP_16(), // control OP_NOP: new control.OP_NOP(), OP_VER: new control.OP_VER(), OP_IF: new control.OP_IF(), OP_NOTIF: new control.OP_NOTIF(), OP_VERIF: new control.OP_VERIF(), OP_VERNOTIF: new control.OP_VERNOTIF(), OP_ELSE: new control.OP_ELSE(), OP_ENDIF: new control.OP_ENDIF(), OP_VERIFY: new control.OP_VERIFY(), OP_RETURN: new control.OP_RETURN(), // stack OP_TOALTSTACK: new stack.OP_TOALTSTACK(), OP_FROMALTSTACK: new stack.OP_FROMALTSTACK(), OP_2DROP: new stack.OP_2DROP(), OP_2DUP: new stack.OP_2DUP(), OP_3DUP: new stack.OP_3DUP(), OP_2OVER: new stack.OP_2OVER(), OP_2ROT: new stack.OP_2ROT(), OP_2SWAP: new stack.OP_2SWAP(), OP_IFDUP: new stack.OP_IFDUP(), OP_DEPTH: new stack.OP_DEPTH(), OP_DROP: new stack.OP_DROP(), OP_DUP: new stack.OP_DUP(), OP_NIP: new stack.OP_NIP(), OP_OVER: new stack.OP_OVER(), OP_PICK: new stack.OP_PICK(), OP_ROLL: new stack.OP_ROLL(), OP_ROT: new stack.OP_ROT(), OP_SWAP: new stack.OP_SWAP(), OP_TUCK: new stack.OP_TUCK(), // splice OP_CAT: new splice.OP_CAT(), OP_SUBSTR: new splice.OP_SUBSTR(), OP_LEFT: new splice.OP_LEFT(), OP_RIGHT: new splice.OP_RIGHT(), OP_SIZE: new splice.OP_SIZE(), // bitwise OP_INVERT: new bitwise.OP_INVERT(), OP_AND: new bitwise.OP_AND(), OP_OR: new bitwise.OP_OR(), OP_XOR: new bitwise.OP_XOR(), OP_EQUAL: new bitwise.OP_EQUAL(), OP_EQUALVERIFY: new bitwise.OP_EQUALVERIFY(), OP_RESERVED1: new bitwise.OP_RESERVED1(), OP_RESERVED2: new bitwise.OP_RESERVED2(), // numeric OP_1ADD: new arithmetic.OP_1ADD(), OP_1SUB: new arithmetic.OP_1SUB(), OP_2MUL: new arithmetic.OP_2MUL(), OP_2DIV: new arithmetic.OP_2DIV(), OP_NEGATE: new arithmetic.OP_NEGATE(), OP_ABS: new arithmetic.OP_ABS(), OP_NOT: new arithmetic.OP_NOT(), OP_0NOTEQUAL: new arithmetic.OP_0NOTEQUAL(), OP_ADD: new arithmetic.OP_ADD(), OP_SUB: new arithmetic.OP_SUB(), OP_MUL: new arithmetic.OP_MUL(), OP_DIV: new arithmetic.OP_DIV(), OP_MOD: new arithmetic.OP_MOD(), OP_LSHIFT: new arithmetic.OP_LSHIFT(), OP_RSHIFT: new arithmetic.OP_RSHIFT(), OP_BOOLAND: new arithmetic.OP_BOOLAND(), OP_BOOLOR: new arithmetic.OP_BOOLOR(), OP_NUMEQUAL: new arithmetic.OP_NUMEQUAL(), OP_NUMEQUALVERIFY: new arithmetic.OP_NUMEQUALVERIFY(), OP_NUMNOTEQUAL: new arithmetic.OP_NUMNOTEQUAL(), OP_LESSTHAN: new arithmetic.OP_LESSTHAN(), OP_GREATERTHAN: new arithmetic.OP_GREATERTHAN(), OP_LESSTHANOREQUAL: new arithmetic.OP_LESSTHANOREQUAL(), OP_GREATERTHANOREQUAL: new arithmetic.OP_GREATERTHANOREQUAL(), OP_MIN: new arithmetic.OP_MIN(), OP_MAX: new arithmetic.OP_MAX(), OP_WITHIN: new arithmetic.OP_WITHIN(), // crypto OP_RIPEMD160: new crypto.OP_RIPEMD160(), OP_SHA1: new crypto.OP_SHA1(), OP_SHA256: new crypto.OP_SHA256(), OP_HASH160: new crypto.OP_HASH160(), OP_HASH256: new crypto.OP_HASH256(), OP_CODESEPARATOR: new crypto.OP_CODESEPARATOR(), OP_CHECKSIG: new crypto.OP_CHECKSIG(), OP_CHECKSIGVERIFY: new crypto.OP_CHECKSIGVERIFY(), OP_CHECKMULTISIG: new crypto.OP_CHECKMULTISIG(), OP_CHECKMULTISIGVERIFY: new crypto.OP_CHECKMULTISIGVERIFY(), // expansion OP_NOP1: new expansion.OP_NOP1(), OP_CHECKLOCKTIMEVERIFY: new expansion.OP_CHECKLOCKTIMEVERIFY(), OP_NOP2: new expansion.OP_NOP2(), OP_CHECKSEQUENCEVERIFY: new expansion.OP_CHECKSEQUENCEVERIFY(), OP_NOP3: new expansion.OP_NOP3(), OP_NOP4: new expansion.OP_NOP4(), OP_NOP5: new expansion.OP_NOP5(), OP_NOP6: new expansion.OP_NOP6(), OP_NOP7: new expansion.OP_NOP7(), OP_NOP8: new expansion.OP_NOP8(), OP_NOP9: new expansion.OP_NOP9(), OP_NOP10: new expansion.OP_NOP10(), // invalid OP_INVALIDOPCODE: new invalid.OP_INVALIDOPCODE() }; /** * Hex code mapping of all static OP_CODES */ const HEX_MAPPING = { 0x00: exports.OP_CODES.OP_0, 0x4f: exports.OP_CODES.OP_1NEGATE, 0x50: exports.OP_CODES.OP_RESERVED, 0x51: exports.OP_CODES.OP_1, 0x52: exports.OP_CODES.OP_2, 0x53: exports.OP_CODES.OP_3, 0x54: exports.OP_CODES.OP_4, 0x55: exports.OP_CODES.OP_5, 0x56: exports.OP_CODES.OP_6, 0x57: exports.OP_CODES.OP_7, 0x58: exports.OP_CODES.OP_8, 0x59: exports.OP_CODES.OP_9, 0x5a: exports.OP_CODES.OP_10, 0x5b: exports.OP_CODES.OP_11, 0x5c: exports.OP_CODES.OP_12, 0x5d: exports.OP_CODES.OP_13, 0x5e: exports.OP_CODES.OP_14, 0x5f: exports.OP_CODES.OP_15, 0x60: exports.OP_CODES.OP_16, // control 0x61: exports.OP_CODES.OP_NOP, 0x62: exports.OP_CODES.OP_VER, 0x63: exports.OP_CODES.OP_IF, 0x64: exports.OP_CODES.OP_NOTIF, 0x65: exports.OP_CODES.OP_VERIF, 0x66: exports.OP_CODES.OP_VERNOTIF, 0x67: exports.OP_CODES.OP_ELSE, 0x68: exports.OP_CODES.OP_ENDIF, 0x69: exports.OP_CODES.OP_VERIFY, 0x6a: exports.OP_CODES.OP_RETURN, // stack 0x6b: exports.OP_CODES.OP_TOALTSTACK, 0x6c: exports.OP_CODES.OP_FROMALTSTACK, 0x6d: exports.OP_CODES.OP_2DROP, 0x6e: exports.OP_CODES.OP_2DUP, 0x6f: exports.OP_CODES.OP_3DUP, 0x70: exports.OP_CODES.OP_2OVER, 0x71: exports.OP_CODES.OP_2ROT, 0x72: exports.OP_CODES.OP_2SWAP, 0x73: exports.OP_CODES.OP_IFDUP, 0x74: exports.OP_CODES.OP_DEPTH, 0x75: exports.OP_CODES.OP_DROP, 0x76: exports.OP_CODES.OP_DUP, 0x77: exports.OP_CODES.OP_NIP, 0x78: exports.OP_CODES.OP_OVER, 0x79: exports.OP_CODES.OP_PICK, 0x7a: exports.OP_CODES.OP_ROLL, 0x7b: exports.OP_CODES.OP_ROT, 0x7c: exports.OP_CODES.OP_SWAP, 0x7d: exports.OP_CODES.OP_TUCK, // splice 0x7e: exports.OP_CODES.OP_CAT, 0x7f: exports.OP_CODES.OP_SUBSTR, 0x80: exports.OP_CODES.OP_LEFT, 0x81: exports.OP_CODES.OP_RIGHT, 0x82: exports.OP_CODES.OP_SIZE, // bitwise 0x83: exports.OP_CODES.OP_INVERT, 0x84: exports.OP_CODES.OP_AND, 0x85: exports.OP_CODES.OP_OR, 0x86: exports.OP_CODES.OP_XOR, 0x87: exports.OP_CODES.OP_EQUAL, 0x88: exports.OP_CODES.OP_EQUALVERIFY, 0x89: exports.OP_CODES.OP_RESERVED1, 0x8a: exports.OP_CODES.OP_RESERVED2, // numeric 0x8b: exports.OP_CODES.OP_1ADD, 0x8c: exports.OP_CODES.OP_1SUB, 0x8d: exports.OP_CODES.OP_2MUL, 0x8e: exports.OP_CODES.OP_2DIV, 0x8f: exports.OP_CODES.OP_NEGATE, 0x90: exports.OP_CODES.OP_ABS, 0x91: exports.OP_CODES.OP_NOT, 0x92: exports.OP_CODES.OP_0NOTEQUAL, 0x93: exports.OP_CODES.OP_ADD, 0x94: exports.OP_CODES.OP_SUB, 0x95: exports.OP_CODES.OP_MUL, 0x96: exports.OP_CODES.OP_DIV, 0x97: exports.OP_CODES.OP_MOD, 0x98: exports.OP_CODES.OP_LSHIFT, 0x99: exports.OP_CODES.OP_RSHIFT, 0x9a: exports.OP_CODES.OP_BOOLAND, 0x9b: exports.OP_CODES.OP_BOOLOR, 0x9c: exports.OP_CODES.OP_NUMEQUAL, 0x9d: exports.OP_CODES.OP_NUMEQUALVERIFY, 0x9e: exports.OP_CODES.OP_NUMNOTEQUAL, 0x9f: exports.OP_CODES.OP_LESSTHAN, 0xa0: exports.OP_CODES.OP_GREATERTHAN, 0xa1: exports.OP_CODES.OP_LESSTHANOREQUAL, 0xa2: exports.OP_CODES.OP_GREATERTHANOREQUAL, 0xa3: exports.OP_CODES.OP_MIN, 0xa4: exports.OP_CODES.OP_MAX, 0xa5: exports.OP_CODES.OP_WITHIN, // crypto 0xa6: exports.OP_CODES.OP_RIPEMD160, 0xa7: exports.OP_CODES.OP_SHA1, 0xa8: exports.OP_CODES.OP_SHA256, 0xa9: exports.OP_CODES.OP_HASH160, 0xaa: exports.OP_CODES.OP_HASH256, 0xab: exports.OP_CODES.OP_CODESEPARATOR, 0xac: exports.OP_CODES.OP_CHECKSIG, 0xad: exports.OP_CODES.OP_CHECKSIGVERIFY, 0xae: exports.OP_CODES.OP_CHECKMULTISIG, 0xaf: exports.OP_CODES.OP_CHECKMULTISIGVERIFY, // expansion 0xb0: exports.OP_CODES.OP_NOP1, 0xb1: exports.OP_CODES.OP_CHECKLOCKTIMEVERIFY, 0xb2: exports.OP_CODES.OP_CHECKSEQUENCEVERIFY, 0xb3: exports.OP_CODES.OP_NOP4, 0xb4: exports.OP_CODES.OP_NOP5, 0xb5: exports.OP_CODES.OP_NOP6, 0xb6: exports.OP_CODES.OP_NOP7, 0xb7: exports.OP_CODES.OP_NOP8, 0xb8: exports.OP_CODES.OP_NOP9, 0xb9: exports.OP_CODES.OP_NOP10, // invalid 0xff: exports.OP_CODES.OP_INVALIDOPCODE }; //# sourceMappingURL=mapping.js.map