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