StdUtils
scrypt-ts-opcat / StdUtils
Class: StdUtils
Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/stdUtils.ts:28
A utility class providing standard helper methods for working with ByteStrings and numeric conversions. Includes methods for:
- Checking ByteString length divisibility
- Converting between numeric types (UInt32, UInt64) and ByteStrings
- Little-endian unsigned integer conversions
- Variable-length integer (VarInt) serialization/deserialization
- Push data serialization for Bitcoin script All methods are static and annotated with @method() decorator.
Extends
Constructors
new StdUtils()
new StdUtils(...
args
):StdUtils
Defined in: packages/scrypt-ts-opcat/src/smart-contract/smartContractLib.ts:32
Parameters
args
...SupportedParamType
[]
Returns
Inherited from
Properties
args
args:
any
[] =[]
Defined in: packages/scrypt-ts-opcat/src/smart-contract/smartContractLib.ts:31
Inherited from
artifact
static
artifact:Artifact
Defined in: packages/scrypt-ts-opcat/src/smart-contract/smartContractLib.ts:16
Inherited from
stateType?
static
optional
stateType:string
Defined in: packages/scrypt-ts-opcat/src/smart-contract/smartContractLib.ts:17
Inherited from
Methods
byteStringToUInt32()
static
byteStringToUInt32(b
):UInt32
Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/stdUtils.ts:75
Converts a 4-byte ByteString to an unsigned 32-bit integer in little-endian format.
Parameters
b
The ByteString to convert (must be exactly 4 bytes long)
Returns
UInt32
The converted UInt32 value
Throws
Will throw an error if the input ByteString length is not 4 bytes
checkLenDivisibleBy()
static
checkLenDivisibleBy(b
,n
):bigint
Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/stdUtils.ts:37
Checks if the length of a ByteString is divisible by a given number and returns the quotient.
Parameters
b
The ByteString to check
n
bigint
The divisor to check against
Returns
bigint
The quotient of the division (length / n)
Throws
If the length is not divisible by n
fromLEUnsigned()
static
fromLEUnsigned(b
):bigint
Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/stdUtils.ts:99
convert ByteString
to unsigned integer, in sign-magnitude little endian
Parameters
b
Returns
bigint
returns a number
loadArtifact()
static
loadArtifact(artifact
): typeofSmartContractLib
Defined in: packages/scrypt-ts-opcat/src/smart-contract/smartContractLib.ts:19
Parameters
artifact
Returns
typeof SmartContractLib
Inherited from
pushData()
static
pushData(buf
):ByteString
Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/stdUtils.ts:149
Pushes data to a buffer with appropriate size header.
Parameters
buf
The input data as a ByteString
Returns
The input data prefixed with appropriate size header in little-endian format
Remarks
The header format follows standard Bitcoin script pushdata rules:
- 0x4c for 1-byte length (0-255 bytes)
- 0x4d for 2-byte length (256-65535 bytes)
- 0x4e for 4-byte length (65536-4294967295 bytes)
Throws
Will assert if input size exceeds 32-bit limit (4294967295 bytes)
readVarint()
static
readVarint(buf
,pos
):ReadVarintResult
Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/stdUtils.ts:184
read [VarInt (variable integer)][https://learnmeabitcoin.com/technical/general/compact-size/](https://learnmeabitcoin.com/technical/general/compact-size/)-encoded data from the beginning of 'buf'
Parameters
buf
a buffer ByteString
of format: [prefix FD/FE/FF +] length + data
pos
bigint
Returns
ReadVarintResult
return data
toLEUnsigned()
static
toLEUnsigned(n
,l
):ByteString
Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/stdUtils.ts:87
convert signed integer n
to unsigned integer of l
string, in little endian
Parameters
n
bigint
the number to be converted
l
bigint
expected length
Returns
returns a ByteString
uint32ToByteString()
static
uint32ToByteString(n
):ByteString
Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/stdUtils.ts:63
Converts a UInt32 number to a 4-byte little-endian ByteString.
Parameters
n
UInt32
The UInt32 number to convert
Returns
The resulting 4-byte little-endian ByteString
Throws
If the input number is outside the UInt32 range (0 to 4294967295)
uint64ToByteString()
static
uint64ToByteString(n
):ByteString
Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/stdUtils.ts:51
Converts a UInt64 value to a little-endian ByteString.
Parameters
n
The UInt64 value to convert
Returns
The little-endian ByteString representation
Throws
If the input value is outside UInt64 range (0 to 2^64-1)
writeVarInt()
static
writeVarInt(n
):ByteString
Defined in: packages/scrypt-ts-opcat/src/smart-contract/builtin-libs/stdUtils.ts:114
Encodes a bigint into a variable-length integer (VarInt) format as ByteString. The encoding follows the standard VarInt scheme:
- Values < 0xfd: encoded as 1 byte
- Values < 0x10000: prefixed with 0xfd and encoded as 2 bytes (little-endian)
- Values < 0x100000000: prefixed with 0xfe and encoded as 4 bytes (little-endian)
- Larger values: prefixed with 0xff and encoded as 8 bytes (little-endian)
Parameters
n
bigint
The bigint value to encode
Returns
ByteString containing the VarInt encoded value