Skip to main content

ContextUtils

scrypt-ts-opcat v1.0.1


scrypt-ts-opcat / ContextUtils

Class: ContextUtils

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:25

Utility class for Bitcoin smart contract context operations. Provides methods for:

  • ECDSA signature generation and verification
  • Transaction preimage serialization and validation
  • Prevouts and spent data verification
  • Lock time checking
  • Various cryptographic and serialization utilities

Contains precomputed cryptographic constants for optimized signing operations. All methods are static and can be used without class instantiation.

Onchain

Extends

Constructors

new ContextUtils()

new ContextUtils(...args): ContextUtils

Defined in: packages/scrypt-ts-opcat/src/smart-contract/smartContractLib.ts:32

Parameters

args

...SupportedParamType[]

Returns

ContextUtils

Inherited from

SmartContractLib.constructor

Properties

args

args: any[] = []

Defined in: packages/scrypt-ts-opcat/src/smart-contract/smartContractLib.ts:31

Inherited from

SmartContractLib.args


artifact

static artifact: Artifact

Defined in: packages/scrypt-ts-opcat/src/smart-contract/smartContractLib.ts:16

Inherited from

SmartContractLib.artifact


invK

readonly static invK: bigint = 0xc8ffdbaa05d93aa4ede79ec58f06a72562048b775a3507c2bf44bde4f007c40an

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:35


privKey

readonly static privKey: PrivKey

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:30


pubKey

readonly static pubKey: PubKey

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:32


r

readonly static r: bigint = 0x1008ce7480da41702918d1ec8e6849ba32b4d65b1e40dc669c31a1e6306b266cn

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:38


rBigEndian

readonly static rBigEndian: ByteString

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:41


stateType?

static optional stateType: string

Defined in: packages/scrypt-ts-opcat/src/smart-contract/smartContractLib.ts:17

Inherited from

SmartContractLib.stateType

Methods

checknLockTime()

static checknLockTime(shPreimage, nlockTime): boolean

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:316

Checks if the lock time conditions are met for a given preimage and lock time.

Parameters

shPreimage

SHPreimage

The preimage containing lock time and sequence values.

nlockTime

UInt32

The required minimum lock time to validate against.

Returns

boolean

True if the lock time conditions are satisfied, false otherwise.


checkPrevouts()

static checkPrevouts(prevouts, t_hashPrevouts, t_inputIndex, t_inputCount): Outpoint

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:199

Verify that the prevouts context passed in by the user is authentic

Parameters

prevouts

ByteString

prevouts context passed in by the user that need to be verified

t_hashPrevouts

ByteString

hashPrevouts in preimage which is trustable

t_inputIndex

UInt32

the index of the input, which is trustable

t_inputCount

Int32

Returns

Outpoint

the number of inputs, which is trustable


checkSHPreimage()

static checkSHPreimage(shPreimage, sigHashType): Sig

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:128

Checks and signs a SHPreimage by serializing it, hashing, and creating a signature.

Parameters

shPreimage

SHPreimage

The SHPreimage to be checked and signed.

sigHashType

ByteString

The signature hash type to use for signing.

Returns

Sig

The generated signature for the provided SHPreimage.


checkSpentAmounts()

static checkSpentAmounts(spentAmounts, hashSpentAmounts): Int32

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:240

Check if the spent amounts array passed in matches the shaSpentAmounts

Parameters

spentAmounts

ByteString

array of spent amounts passed in that need to be verified

hashSpentAmounts

ByteString

the hash of the merged spent amounts, which comes from preimage and is trustable

Returns

Int32


checkSpentDataHashes()

static checkSpentDataHashes(spentDataHashes, hashSpentDataHashes, inputCount): void

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:257

Verifies the integrity of spent data hashes against the provided transaction hash and input count.

Parameters

spentDataHashes

ByteString

The hashes of spent data to be verified

hashSpentDataHashes

ByteString

The expected hash of all spent data hashes

inputCount

bigint

The expected number of inputs (must match the length of spentDataHashes)

Returns

void

Throws

Throws an error if hash verification fails or if input count doesn't match


checkSpentScripts()

static checkSpentScripts(spentScriptHashes, t_hashSpentScripts, t_inputCount): void

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:224

Check if the spent scripts array passed in matches the shaSpentScripts

Parameters

spentScriptHashes

ByteString

array of spent scripts passed in that need to be verified

t_hashSpentScripts

ByteString

the hash of the merged spent scripts, which comes from preimage and is trustable

t_inputCount

bigint

must be trustable, the number of inputs

Returns

void


fromBEUnsigned()

static fromBEUnsigned(b): Int32

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:113

Converts a big-endian unsigned byte string to a signed integer.

Parameters

b

ByteString

The input byte string in big-endian format.

Returns

Int32

The converted Int32 value.


getSpentAmount()

static getSpentAmount(spentAmounts, inputIndex): Int32

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:288

Retrieves the spent amount for a specific input index from the given spent amounts buffer.

Parameters

spentAmounts

ByteString

Buffer containing all spent amounts in little-endian format

inputIndex

Int32

Index of the input to retrieve the spent amount for

Returns

Int32

The spent amount for the specified input index as a 32-bit integer


getSpentDataHash()

static getSpentDataHash(spentDataHashes, inputIndex): ByteString

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:302

Retrieves the data hash for a specific input index from spent data hashes.

Parameters

spentDataHashes

ByteString

The collection of spent data hashes

inputIndex

Int32

The index of the input to retrieve

Returns

ByteString

The 32-byte data hash corresponding to the specified input index


getSpentScriptHash()

static getSpentScriptHash(spentScriptHashes, inputIndex): ByteString

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:274

Retrieves the spent script hash for a specific input index from the given spent scripts buffer.

Parameters

spentScriptHashes

ByteString

Buffer containing all spent script hashes

inputIndex

Int32

Index of the input to retrieve the spent script hash for

Returns

ByteString

The spent script hash for the specified input index as a 32-byte string


loadArtifact()

static loadArtifact(artifact): typeof SmartContractLib

Defined in: packages/scrypt-ts-opcat/src/smart-contract/smartContractLib.ts:19

Parameters

artifact

Artifact

Returns

typeof SmartContractLib

Inherited from

SmartContractLib.loadArtifact


normalize()

static normalize(k, modulus): bigint

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:51

Normalizes a value to be within the range [0, modulus) by taking modulo and ensuring positivity.

Parameters

k

bigint

The value to normalize

modulus

bigint

The modulus value

Returns

bigint

The normalized value (k mod modulus) guaranteed to be non-negative


serializeSHPreimage()

static serializeSHPreimage(shPreimage): SigHashPreimage

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:151

Serializes a SHPreimage object into a SigHashPreimage. Validates all fields of the input SHPreimage meet required specifications before serialization.

Parameters

shPreimage

SHPreimage

The SHPreimage object containing transaction preimage data

Returns

SigHashPreimage

A SigHashPreimage constructed from the validated and concatenated fields

Throws

If any field validation fails (invalid length, negative value, or unsupported sigHashType)


sign()

static sign(h, privKey, inverseK, r, rBigEndian, sigHashType): Sig

Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/contextUtils.ts:73

Generates a DER-encoded ECDSA signature from given parameters.

Parameters

h

bigint

The message hash to sign (bigint)

privKey

PrivKey

The private key to sign with (PrivKey)

inverseK

bigint

The inverse of the nonce value (bigint)

r

bigint

The r component of the signature (bigint)

rBigEndian

ByteString

The r component in big-endian byte format (ByteString)

sigHashType

ByteString

The signature hash type (ByteString)

Returns

Sig

A DER-encoded signature (Sig)

Remarks

  • Normalizes the s value to be in the lower range of the curve order
  • Conforms to strict DER encoding rules
  • Handles endianness conversion for signature components