scripts: extract all scripts to encode/decode/check style

This commit is contained in:
Daniel Cousens 2016-11-02 12:30:37 +11:00 committed by Daniel Cousens
parent 27b48e8aa2
commit d9fa39a2cc
23 changed files with 852 additions and 729 deletions
src/templates/scripthash

View file

@ -0,0 +1,48 @@
// <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
}
function encode (scriptSignature, scriptPubKey) {
var scriptSigChunks = bscript.decompile(scriptSignature)
var serializedScriptPubKey = bscript.compile(scriptPubKey)
return bscript.compile([].concat(
scriptSigChunks,
serializedScriptPubKey
))
}
function decode (buffer) {
var chunks = bscript.decompile(buffer)
typeforce(check, chunks)
return {
scriptSignature: chunks.slice(0, -1),
scriptPubKey: chunks[chunks.length - 1]
}
}
module.exports = {
check: check,
decode: decode,
encode: encode
}