WitnessBuilder

WitnessBuilder

new WitnessBuilder()

Description:
  • Witness Builder class

Source:

Methods

(static) buildControlBlock(internalPubkey, leafVersion, merklePath) → {Buffer}

Description:
  • Build control block for Taproot script-path spending

Source:
Parameters:
Name Type Default Description
internalPubkey Buffer

32-byte x-only internal public key

leafVersion number 192

Leaf version (default 0xc0)

merklePath Array.<Buffer>

Merkle path from leaf to root

Returns:

Control block

Type
Buffer

(static) buildP2TRKeyPath(schnorrSignature) → {Array.<Buffer>}

Description:
  • Build P2TR key-path witness stack

Source:
Parameters:
Name Type Description
schnorrSignature Buffer

64 or 65 byte Schnorr signature

Returns:

Witness stack [signature]

Type
Array.<Buffer>

(static) buildP2TRScriptPath(stackItems, tapscript, controlBlock) → {Array.<Buffer>}

Description:
  • Build P2TR script-path witness stack

Source:
Parameters:
Name Type Description
stackItems Array.<Buffer>

Script input items

tapscript Buffer

The tapscript being executed

controlBlock Buffer

The control block

Returns:

Witness stack [...items, tapscript, controlBlock]

Type
Array.<Buffer>

(static) buildP2WPKH(signature, publicKey) → {Array.<Buffer>}

Description:
  • Build P2WPKH witness stack

Source:
Parameters:
Name Type Description
signature Buffer

DER signature with sighash type appended

publicKey Buffer

Compressed public key (33 bytes)

Returns:

Witness stack [signature, publicKey]

Type
Array.<Buffer>

(static) buildP2WSH(stackItems, witnessScript) → {Array.<Buffer>}

Description:
  • Build P2WSH witness stack

Source:
Parameters:
Name Type Description
stackItems Array.<Buffer>

Items to push (signatures, etc.)

witnessScript Buffer

The witness script

Returns:

Witness stack [...items, witnessScript]

Type
Array.<Buffer>

(static) buildP2WSHMultisig(signatures, redeemScript) → {Array.<Buffer>}

Description:
  • Build P2WSH multisig witness stack

Source:
Parameters:
Name Type Description
signatures Array.<Buffer>

DER signatures with sighash types

redeemScript Buffer

Multisig redeem script

Returns:

Witness stack [OP_0, ...signatures, redeemScript]

Type
Array.<Buffer>

(static) calculateTapbranchHash(left, right) → {Buffer}

Description:
  • Calculate tapbranch hash

Source:
Parameters:
Name Type Description
left Buffer

Left child hash

right Buffer

Right child hash

Returns:

32-byte tapbranch hash

Type
Buffer

(static) calculateTapleafHash(script, leafVersion) → {Buffer}

Description:
  • Calculate tapleaf hash

Source:
Parameters:
Name Type Default Description
script Buffer

Tapscript

leafVersion number 192

Leaf version (default 0xc0)

Returns:

32-byte tapleaf hash

Type
Buffer

(static) calculateTaptweak(internalPubkey, merkleRootopt) → {Buffer}

Description:
  • Calculate taptweak hash

Source:
Parameters:
Name Type Attributes Default Description
internalPubkey Buffer

32-byte x-only internal public key

merkleRoot Buffer <optional>
null

Optional 32-byte merkle root

Returns:

32-byte tweak

Type
Buffer

(static) parse(data) → {Array.<Buffer>}

Description:
  • Parse serialized witness data

Source:
Parameters:
Name Type Description
data Buffer

Serialized witness

Returns:

Witness stack

Type
Array.<Buffer>

(static) serialize(witnessStack) → {Buffer}

Description:
  • Serialize witness stack to bytes

Source:
Parameters:
Name Type Description
witnessStack Array.<Buffer>

Witness items

Returns:

Serialized witness

Type
Buffer

(static) validate(witnessStack, outputType) → {Object}

Description:
  • Validate witness stack for a given output type

Source:
Parameters:
Name Type Description
witnessStack Array.<Buffer>

Witness to validate

outputType string

Output type (p2wpkh, p2wsh, p2tr)

Returns:

Validation result

Type
Object