Interpreter
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
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
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
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