// <scriptSig> {serialized scriptPubKey script} var bscript = require('../../script') var typeforce = require('typeforce') function check (script, allowIncomplete) { var chunks = bscript.decompile(script) if (chunks.length < 2) return false var lastChunk = chunks[chunks.length - 1] if (!Buffer.isBuffer(lastChunk)) return false var scriptSigChunks = chunks.slice(0, -1) var redeemScriptChunks = bscript.decompile(lastChunk) // is redeemScript a valid script? if (redeemScriptChunks.length === 0) return false var inputType = bscript.classifyInput(scriptSigChunks, allowIncomplete) var outputType = bscript.classifyOutput(redeemScriptChunks) return inputType === outputType } check.toJSON = function () { return 'scriptHash input' } function encode (redeemScriptSig, redeemScript) { var scriptSigChunks = bscript.decompilePushOnly(redeemScriptSig) var serializedScriptPubKey = bscript.compile(redeemScript) return bscript.compile([].concat( scriptSigChunks, serializedScriptPubKey )) } function decode (buffer) { var chunks = bscript.decompile(buffer) typeforce(check, chunks) return { redeemScriptSig: bscript.compilePushOnly(chunks.slice(0, -1)), redeemScript: chunks[chunks.length - 1] } } module.exports = { check: check, decode: decode, encode: encode }