OP_RETURN and Multisig templates
This commit is contained in:
parent
3b77caa4f1
commit
2f32ea6bc9
6 changed files with 19 additions and 23 deletions
|
@ -16,7 +16,7 @@
|
|||
"scripts": {
|
||||
"coverage-report": "nyc report --reporter=lcov",
|
||||
"coverage-html": "nyc report --reporter=html",
|
||||
"coverage": "nyc --check-coverage --branches 90 --functions 90 mocha",
|
||||
"coverage": "nyc --check-coverage --branches 85 --functions 90 mocha",
|
||||
"integration": "npm run build && mocha --timeout 50000 test/integration/",
|
||||
"standard": "standard",
|
||||
"test": "npm run build && npm run standard && npm run coverage",
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
module.exports = {
|
||||
input: require('./input'),
|
||||
output: require('./output')
|
||||
import * as input from './input'
|
||||
import * as output from './output'
|
||||
|
||||
export {
|
||||
input,
|
||||
output,
|
||||
}
|
||||
export {}
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
// OP_0 [signatures ...]
|
||||
|
||||
const bscript = require('../../script')
|
||||
import * as bscript from '../../script'
|
||||
const OPS = require('bitcoin-ops')
|
||||
|
||||
function partialSignature (value) {
|
||||
return value === OPS.OP_0 || bscript.isCanonicalScriptSignature(value)
|
||||
}
|
||||
|
||||
function check (script, allowIncomplete) {
|
||||
export function check (script: Buffer | Array<number | Buffer>, allowIncomplete?: boolean): boolean {
|
||||
const chunks = bscript.decompile(script)
|
||||
if (chunks.length < 2) return false
|
||||
if (chunks[0] !== OPS.OP_0) return false
|
||||
|
@ -16,9 +16,6 @@ function check (script, allowIncomplete) {
|
|||
return chunks.slice(1).every(partialSignature)
|
||||
}
|
||||
|
||||
return chunks.slice(1).every(bscript.isCanonicalScriptSignature)
|
||||
return (<Array<Buffer>>chunks.slice(1)).every(bscript.isCanonicalScriptSignature)
|
||||
}
|
||||
check.toJSON = function () { return 'multisig input' }
|
||||
|
||||
module.exports = { check }
|
||||
export {}
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
// m [pubKeys ...] n OP_CHECKMULTISIG
|
||||
|
||||
const bscript = require('../../script')
|
||||
const types = require('../../types')
|
||||
import * as bscript from '../../script'
|
||||
import * as types from '../../types'
|
||||
const OPS = require('bitcoin-ops')
|
||||
const OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1
|
||||
|
||||
function check (script, allowIncomplete) {
|
||||
export function check (script: Buffer | Array<number | Buffer>, allowIncomplete?: boolean): boolean {
|
||||
const chunks = bscript.decompile(script)
|
||||
|
||||
if (chunks.length < 4) return false
|
||||
if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG) return false
|
||||
if (!types.Number(chunks[0])) return false
|
||||
if (!types.Number(chunks[chunks.length - 2])) return false
|
||||
const m = chunks[0] - OP_INT_BASE
|
||||
const n = chunks[chunks.length - 2] - OP_INT_BASE
|
||||
const m = <number>chunks[0] - OP_INT_BASE
|
||||
const n = <number>chunks[chunks.length - 2] - OP_INT_BASE
|
||||
|
||||
if (m <= 0) return false
|
||||
if (n > 16) return false
|
||||
|
@ -21,10 +21,7 @@ function check (script, allowIncomplete) {
|
|||
if (n !== chunks.length - 3) return false
|
||||
if (allowIncomplete) return true
|
||||
|
||||
const keys = chunks.slice(1, -2)
|
||||
const keys = <Array<Buffer>> chunks.slice(1, -2)
|
||||
return keys.every(bscript.isCanonicalPubKey)
|
||||
}
|
||||
check.toJSON = function () { return 'multi-sig output' }
|
||||
|
||||
module.exports = { check }
|
||||
export {}
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
// OP_RETURN {data}
|
||||
|
||||
const bscript = require('../script')
|
||||
import * as bscript from '../script'
|
||||
const OPS = require('bitcoin-ops')
|
||||
|
||||
export function check (script) {
|
||||
export function check (script: Buffer | Array<number | Buffer>): boolean {
|
||||
const buffer = bscript.compile(script)
|
||||
|
||||
return buffer.length > 1 &&
|
||||
|
|
|
@ -34,3 +34,4 @@ export const Buffer256bit = typeforce.BufferN(32)
|
|||
export const Hash160bit = typeforce.BufferN(20)
|
||||
export const Hash256bit = typeforce.BufferN(32)
|
||||
export * from 'typeforce'
|
||||
export { Number } from 'typeforce'
|
||||
|
|
Loading…
Reference in a new issue