Skip to main content

Interpreter

bitcoinjs-lib v1.0.7


bitcoinjs-lib / Interpreter

Class: Interpreter

Defined in: ts_src/interpreter.ts:115

Constructors

new Interpreter()

new Interpreter(): Interpreter

Defined in: ts_src/interpreter.ts:309

Returns

Interpreter

Properties

ANNEX_TAG

readonly static ANNEX_TAG: 80 = 0x50

Defined in: ts_src/interpreter.ts:269


FALSE

readonly static FALSE: Uint8Array

Defined in: ts_src/interpreter.ts:272


LOCKTIME_THRESHOLD

readonly static LOCKTIME_THRESHOLD: 500000000 = 500000000

Defined in: ts_src/interpreter.ts:120


MAX_SCRIPT_ELEMENT_SIZE

readonly static MAX_SCRIPT_ELEMENT_SIZE: 520 = 520

Defined in: ts_src/interpreter.ts:118


MAX_SCRIPT_SIZE

readonly static MAX_SCRIPT_SIZE: 10000 = 10000

Defined in: ts_src/interpreter.ts:116


MAX_STACK_SIZE

readonly static MAX_STACK_SIZE: 1000 = 1000

Defined in: ts_src/interpreter.ts:117


PROTOCOL_VERSION

readonly static PROTOCOL_VERSION: 70016 = 70016

Defined in: ts_src/interpreter.ts:280


SCRIPT_ENABLE_REPLAY_PROTECTION

readonly static SCRIPT_ENABLE_REPLAY_PROTECTION: number

Defined in: ts_src/interpreter.ts:211


SCRIPT_ENABLE_SIGHASH_FORKID

readonly static SCRIPT_ENABLE_SIGHASH_FORKID: number

Defined in: ts_src/interpreter.ts:207


SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY

readonly static SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY: number

Defined in: ts_src/interpreter.ts:176


SCRIPT_VERIFY_CHECKSEQUENCEVERIFY

readonly static SCRIPT_VERIFY_CHECKSEQUENCEVERIFY: number

Defined in: ts_src/interpreter.ts:181


SCRIPT_VERIFY_CLEANSTACK

readonly static SCRIPT_VERIFY_CLEANSTACK: number

Defined in: ts_src/interpreter.ts:171


SCRIPT_VERIFY_CONST_SCRIPTCODE

readonly static SCRIPT_VERIFY_CONST_SCRIPTCODE: number

Defined in: ts_src/interpreter.ts:215


SCRIPT_VERIFY_DERSIG

readonly static SCRIPT_VERIFY_DERSIG: number

Defined in: ts_src/interpreter.ts:135


SCRIPT_VERIFY_DISCOURAGE_OP_SUCCESS

readonly static SCRIPT_VERIFY_DISCOURAGE_OP_SUCCESS: number

Defined in: ts_src/interpreter.ts:226


SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS

readonly static SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS: number

Defined in: ts_src/interpreter.ts:162


SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_PUBKEYTYPE

readonly static SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_PUBKEYTYPE: number

Defined in: ts_src/interpreter.ts:229


SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_TAPROOT_VERSION

readonly static SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_TAPROOT_VERSION: number

Defined in: ts_src/interpreter.ts:223


SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_WITNESS_PROGRAM

readonly static SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_WITNESS_PROGRAM: number

Defined in: ts_src/interpreter.ts:189


SCRIPT_VERIFY_LOW_S

readonly static SCRIPT_VERIFY_LOW_S: number

Defined in: ts_src/interpreter.ts:139


SCRIPT_VERIFY_MINIMALDATA

readonly static SCRIPT_VERIFY_MINIMALDATA: number

Defined in: ts_src/interpreter.ts:152


SCRIPT_VERIFY_MINIMALIF

readonly static SCRIPT_VERIFY_MINIMALIF: number

Defined in: ts_src/interpreter.ts:195


SCRIPT_VERIFY_NONE

readonly static SCRIPT_VERIFY_NONE: 0 = 0

Defined in: ts_src/interpreter.ts:124


SCRIPT_VERIFY_NULLDUMMY

readonly static SCRIPT_VERIFY_NULLDUMMY: number

Defined in: ts_src/interpreter.ts:142


SCRIPT_VERIFY_NULLFAIL

readonly static SCRIPT_VERIFY_NULLFAIL: number

Defined in: ts_src/interpreter.ts:199


SCRIPT_VERIFY_P2SH

readonly static SCRIPT_VERIFY_P2SH: number

Defined in: ts_src/interpreter.ts:127


SCRIPT_VERIFY_SIGPUSHONLY

readonly static SCRIPT_VERIFY_SIGPUSHONLY: number

Defined in: ts_src/interpreter.ts:145


SCRIPT_VERIFY_STRICTENC

readonly static SCRIPT_VERIFY_STRICTENC: number

Defined in: ts_src/interpreter.ts:132


SCRIPT_VERIFY_TAPROOT

readonly static SCRIPT_VERIFY_TAPROOT: number

Defined in: ts_src/interpreter.ts:219


SCRIPT_VERIFY_WITNESS

readonly static SCRIPT_VERIFY_WITNESS: number

Defined in: ts_src/interpreter.ts:185


SCRIPT_VERIFY_WITNESS_PUBKEYTYPE

readonly static SCRIPT_VERIFY_WITNESS_PUBKEYTYPE: number

Defined in: ts_src/interpreter.ts:203


SEQUENCE_LOCKTIME_DISABLE_FLAG

readonly static SEQUENCE_LOCKTIME_DISABLE_FLAG: number

Defined in: ts_src/interpreter.ts:236

If this flag set, CTxIn::nSequence is NOT interpreted as a relative lock-time.


SEQUENCE_LOCKTIME_MASK

readonly static SEQUENCE_LOCKTIME_MASK: 65535 = 0x0000ffff

Defined in: ts_src/interpreter.ts:249

If CTxIn::nSequence encodes a relative lock-time, this mask is applied to extract that lock-time from the sequence field.


SEQUENCE_LOCKTIME_TYPE_FLAG

readonly static SEQUENCE_LOCKTIME_TYPE_FLAG: number

Defined in: ts_src/interpreter.ts:243

If CTxIn::nSequence encodes a relative lock-time and this flag is set, the relative lock-time has units of 512 seconds, otherwise it specifies blocks with a granularity of 1.


TAPROOT_CONTROL_BASE_SIZE

readonly static TAPROOT_CONTROL_BASE_SIZE: 33 = 33

Defined in: ts_src/interpreter.ts:258


TAPROOT_CONTROL_MAX_NODE_COUNT

readonly static TAPROOT_CONTROL_MAX_NODE_COUNT: 128 = 128

Defined in: ts_src/interpreter.ts:260


TAPROOT_CONTROL_MAX_SIZE

readonly static TAPROOT_CONTROL_MAX_SIZE: number

Defined in: ts_src/interpreter.ts:274


TAPROOT_CONTROL_NODE_SIZE

readonly static TAPROOT_CONTROL_NODE_SIZE: 32 = 32

Defined in: ts_src/interpreter.ts:259


TAPROOT_LEAF_MASK

readonly static TAPROOT_LEAF_MASK: 254 = 0xfe

Defined in: ts_src/interpreter.ts:256


TAPROOT_LEAF_TAPSCRIPT

readonly static TAPROOT_LEAF_TAPSCRIPT: 192 = 0xc0

Defined in: ts_src/interpreter.ts:257


TRUE

readonly static TRUE: Uint8Array

Defined in: ts_src/interpreter.ts:271


VALIDATION_WEIGHT_OFFSET

readonly static VALIDATION_WEIGHT_OFFSET: 50 = 50

Defined in: ts_src/interpreter.ts:265


VALIDATION_WEIGHT_PER_SIGOP_PASSED

readonly static VALIDATION_WEIGHT_PER_SIGOP_PASSED: 50 = 50

Defined in: ts_src/interpreter.ts:263


WITNESS_V0_KEYHASH_SIZE

readonly static WITNESS_V0_KEYHASH_SIZE: 20 = 20

Defined in: ts_src/interpreter.ts:253


WITNESS_V0_SCRIPTHASH_SIZE

readonly static WITNESS_V0_SCRIPTHASH_SIZE: 32 = 32

Defined in: ts_src/interpreter.ts:252

Signature hash sizes


WITNESS_V1_TAPROOT_SIZE

readonly static WITNESS_V1_TAPROOT_SIZE: 32 = 32

Defined in: ts_src/interpreter.ts:254

Methods

_evalCheckSig()

_evalCheckSig(bufSig, bufPubkey): object

Defined in: ts_src/interpreter.ts:2119

Based on bitcoind's EvalChecksig function bitcoind commit: a0988140b71485ad12c3c3a4a9573f7c21b1eff8

Parameters

bufSig

Uint8Array

bufPubkey

Uint8Array

Returns

object

result

result: boolean = false

success

success: boolean = false


_evalChecksigPreTapscript()

_evalChecksigPreTapscript(bufSig, bufPubkey): object

Defined in: ts_src/interpreter.ts:2140

Based on bitcoind's EvalChecksigPreTapscript function bitcoind commit: a0988140b71485ad12c3c3a4a9573f7c21b1eff8

Parameters

bufSig

Uint8Array

bufPubkey

Uint8Array

Returns

object

result

result: boolean = false

success

success: boolean = false


_evalChecksigTapscript()

_evalChecksigTapscript(bufSig, bufPubkey): object

Defined in: ts_src/interpreter.ts:2207

Based on bitcoind's EvalChecksigTapscript function bitcoind commit: a0988140b71485ad12c3c3a4a9573f7c21b1eff8

Parameters

bufSig

Uint8Array

bufPubkey

Uint8Array

Returns

object

result

result: boolean = false

success

success: boolean


checkEcdsaSignature()

checkEcdsaSignature(sig, pubkey, subscript): boolean

Defined in: ts_src/interpreter.ts:2542

Verify ECDSA signature

Parameters

sig

Uint8Array

pubkey

Uint8Array

subscript

(number | Uint8Array)[]

Returns

boolean


checkLockTime()

checkLockTime(nLockTime): boolean

Defined in: ts_src/interpreter.ts:2015

Checks a locktime parameter with the transaction's locktime. There are two times of nLockTime: lock-by-blockheight and lock-by-blocktime, distinguished by whether nLockTime < LOCKTIME_THRESHOLD = 500000000

See the corresponding code on bitcoin core: https://github.com/bitcoin/bitcoin/blob/ffd75adce01a78b3461b3ff05bcc2b530a9ce994/src/script/interpreter.cpp#L1129

Parameters

nLockTime

bigint

the locktime read from the script

Returns

boolean

true if the transaction's locktime is less than or equal to the transaction's locktime


checkPubkeyEncoding()

checkPubkeyEncoding(buf): boolean

Defined in: ts_src/interpreter.ts:2441

Translated from bitcoind's CheckPubKeyEncoding

Parameters

buf

Uint8Array

Returns

boolean


checkSchnorrSignature()

checkSchnorrSignature(sig, pubkey, sigversion, execdata): boolean

Defined in: ts_src/interpreter.ts:2286

Verifies Schnorr signature

Parameters

sig

Uint8Array

pubkey

Uint8Array

sigversion

SignatureVersion

execdata

any

Returns

boolean


checkSequence()

checkSequence(nSequence): boolean

Defined in: ts_src/interpreter.ts:2060

Checks a sequence parameter with the transaction's sequence.

Parameters

nSequence

bigint

the sequence read from the script

Returns

boolean

true if the transaction's sequence is less than or equal to the transaction's sequence


checkSignatureEncoding()

checkSignatureEncoding(buf): boolean

Defined in: ts_src/interpreter.ts:2402

Translated from bitcoind's CheckSignatureEncoding

Parameters

buf

Uint8Array

Returns

boolean


evaluate()

evaluate(): boolean

Defined in: ts_src/interpreter.ts:839

Based on bitcoind's EvalScript function, with the inner loop moved to static readonly prototype.step() bitcoind commit: b5d1b1092998bc95313856d535c632ea5a8f9104

Returns

boolean


executeWitnessScript()

executeWitnessScript(scriptPubKey, stack, sigversion, satoshis, flags, execdata): boolean

Defined in: ts_src/interpreter.ts:771

Parameters

scriptPubKey

(number | Uint8Array)[]

stack

Uint8Array[]

sigversion

SignatureVersion

satoshis

number

flags

number

execdata

any

Returns

boolean


getErr()

getErr(): InterpreterErr

Defined in: ts_src/interpreter.ts:313

Returns

InterpreterErr


initialize()

initialize(): void

Defined in: ts_src/interpreter.ts:317

Returns

void


isInitialized()

isInitialized(): boolean

Defined in: ts_src/interpreter.ts:2463

Returns

boolean


setExecdata()

setExecdata(execdata): void

Defined in: ts_src/interpreter.ts:379

Parameters

execdata

any

Returns

void


setFlags()

setFlags(flags): void

Defined in: ts_src/interpreter.ts:363

Parameters

flags

number

Returns

void


setNin()

setNin(nin): void

Defined in: ts_src/interpreter.ts:359

Parameters

nin

number

Returns

void


setPrevOuts()

setPrevOuts(prevOuts): void

Defined in: ts_src/interpreter.ts:351

Parameters

prevOuts

undefined | TxOutput[]

Returns

void


setSatoshis()

setSatoshis(satoshis): void

Defined in: ts_src/interpreter.ts:375

Parameters

satoshis

number

Returns

void


setScript()

setScript(script): boolean

Defined in: ts_src/interpreter.ts:331

Parameters

script

Uint8Array | (number | Uint8Array)[]

Returns

boolean


setSigversion()

setSigversion(sigversion): void

Defined in: ts_src/interpreter.ts:371

Parameters

sigversion

SignatureVersion

Returns

void


setStack()

setStack(stack): void

Defined in: ts_src/interpreter.ts:367

Parameters

stack

Uint8Array[]

Returns

void


setTx()

setTx(tx): void

Defined in: ts_src/interpreter.ts:347

Parameters

tx

Transaction

Returns

void


step()

step(): boolean

Defined in: ts_src/interpreter.ts:890

Returns

boolean


verify()

verify(scriptSig, scriptPubkey, tx, nin, flags, witness, satoshis, prevOuts?): boolean

Defined in: ts_src/interpreter.ts:383

Parameters

scriptSig

Uint8Array

scriptPubkey

Uint8Array

tx

Transaction = ...

nin

number = 0

flags

number = 0

witness

Uint8Array[] = []

satoshis

number = 0

prevOuts?

TxOutput[]

Returns

boolean


verifySignature()

verifySignature(sig, pubkey, subscript, sigversion, execdata): boolean

Defined in: ts_src/interpreter.ts:2498

This is here largely for legacy reasons. However, if the sig type is already known (via sigversion), then it would be better to call checkEcdsaSignature or checkSchnorrSignature directly.

Parameters

sig

Uint8Array

Signature to verify

pubkey

Uint8Array

Public key used to verify sig

subscript

(number | Uint8Array)[]

ECDSA only

sigversion

SignatureVersion

See Signature.Version for valid versions (default: 0 or Signature.Version.BASE)

execdata

any

Schnorr only

Returns

boolean

whether the signature is valid for this transaction input


verifyWitnessProgram()

verifyWitnessProgram(version, program, witness, satoshis, flags, isP2SH): boolean

Defined in: ts_src/interpreter.ts:575

Parameters

version

number

program

Uint8Array

witness

Uint8Array[]

satoshis

number

flags

number

isP2SH

boolean = false

Returns

boolean


castToBool()

static castToBool(buf): boolean

Defined in: ts_src/interpreter.ts:877

Parameters

buf

Uint8Array

Returns

boolean


computeTapleafHash()

static computeTapleafHash(leafVersion, scriptBuf): Uint8Array

Defined in: ts_src/interpreter.ts:2356

Parameters

leafVersion

number

scriptBuf

Uint8Array

Returns

Uint8Array


verifyTaprootCommitment()

static verifyTaprootCommitment(control, program, tapleafHash): boolean

Defined in: ts_src/interpreter.ts:2366

Parameters

control

Uint8Array

program

Uint8Array

tapleafHash

Uint8Array

Returns

boolean