templates: add encode/decode* stack functions
This commit is contained in:
parent
b862a62867
commit
80762543e7
9 changed files with 98 additions and 40 deletions
src/templates/scripthash
|
@ -25,28 +25,39 @@ function check (script, allowIncomplete) {
|
|||
}
|
||||
check.toJSON = function () { return 'scriptHash input' }
|
||||
|
||||
function encode (redeemScriptSig, redeemScript) {
|
||||
var scriptSigChunks = bscript.decompile(redeemScriptSig)
|
||||
function encodeStack (redeemScriptStack, redeemScript) {
|
||||
var serializedScriptPubKey = bscript.compile(redeemScript)
|
||||
|
||||
return bscript.compile([].concat(
|
||||
scriptSigChunks,
|
||||
serializedScriptPubKey
|
||||
))
|
||||
return [].concat(redeemScriptStack, serializedScriptPubKey)
|
||||
}
|
||||
|
||||
function encode (redeemScriptSig, redeemScript) {
|
||||
var redeemScriptStack = bscript.decompile(redeemScriptSig)
|
||||
|
||||
return bscript.compile(encodeStack(redeemScriptStack, redeemScript))
|
||||
}
|
||||
|
||||
function decodeStack (stack) {
|
||||
typeforce(check, stack)
|
||||
|
||||
return {
|
||||
redeemScriptStack: stack.slice(0, -1),
|
||||
redeemScript: stack[stack.length - 1]
|
||||
}
|
||||
}
|
||||
|
||||
function decode (buffer) {
|
||||
var chunks = bscript.decompile(buffer)
|
||||
typeforce(check, chunks)
|
||||
|
||||
return {
|
||||
redeemScriptSig: bscript.compile(chunks.slice(0, -1)),
|
||||
redeemScript: chunks[chunks.length - 1]
|
||||
}
|
||||
var stack = bscript.decompile(buffer)
|
||||
var result = decodeStack(stack)
|
||||
result.redeemScriptSig = bscript.compile(result.redeemScriptStack)
|
||||
delete result.redeemScriptStack
|
||||
return result
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
check: check,
|
||||
decode: decode,
|
||||
encode: encode
|
||||
decodeStack: decodeStack,
|
||||
encode: encode,
|
||||
encodeStack: encodeStack
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue