Class Psbt

Psbt class can parse and generate a PSBT binary based off of the BIP174. There are 6 roles that this class fulfills. (Explained in BIP174)

Creator: This can be done with new Psbt()

Updater: This can be done with psbt.addInput(input), psbt.addInputs(inputs), psbt.addOutput(output), psbt.addOutputs(outputs) when you are looking to add new inputs and outputs to the PSBT, and psbt.updateGlobal(itemObject), psbt.updateInput(itemObject), psbt.updateOutput(itemObject) addInput requires hash: Buffer | string; and index: number; as attributes and can also include any attributes that are used in updateInput method. addOutput requires script: Buffer; and value: number; and likewise can include data for updateOutput. For a list of what attributes should be what types. Check the bip174 library. Also, check the integration tests for some examples of usage.

Signer: There are a few methods. signAllInputs and signAllInputsAsync, which will search all input information for your pubkey or pubkeyhash, and only sign inputs where it finds your info. Or you can explicitly sign a specific input with signInput and signInputAsync. For the async methods you can create a SignerAsync object and use something like a hardware wallet to sign with. (You must implement this)

Combiner: psbts can be combined easily with psbt.combine(psbt2, psbt3, psbt4 ...) the psbt calling combine will always have precedence when a conflict occurs. Combine checks if the internal bitcoin transaction is the same, so be sure that all sequences, version, locktime, etc. are the same before combining.

Input Finalizer: This role is fairly important. Not only does it need to construct the input scriptSigs and witnesses, but it SHOULD verify the signatures etc. Before running psbt.finalizeAllInputs() please run psbt.validateSignaturesOfAllInputs() Running any finalize method will delete any data in the input(s) that are no longer needed due to the finalized scripts containing the information.

Transaction Extractor: This role will perform some checks before returning a Transaction object. Such as fee rate not being larger than maximumFeeRate etc.

Hierarchy

  • Psbt

Constructors

  • Parameters

    • opts: PsbtOptsOptional = {}
    • data: Psbt = ...

    Returns Psbt

Properties

data: Psbt = ...

Accessors

  • get inputCount(): number
  • Returns number

  • get locktime(): number
  • Returns number

  • set locktime(locktime): void
  • Parameters

    • locktime: number

    Returns void

  • get version(): number
  • Returns number

  • set version(version): void
  • Parameters

    • version: number

    Returns void

Methods

  • Parameters

    • inputData: PsbtInputExtended

    Returns Psbt

  • Parameters

    • inputDatas: PsbtInputExtended[]

    Returns Psbt

  • Parameters

    • outputData: PsbtOutputExtended

    Returns Psbt

  • Parameters

    • outputDatas: PsbtOutputExtended[]

    Returns Psbt

  • Parameters

    • keyVal: KeyValue

    Returns Psbt

  • Parameters

    • inputIndex: number
    • keyVal: KeyValue

    Returns Psbt

  • Parameters

    • outputIndex: number
    • keyVal: KeyValue

    Returns Psbt

  • Parameters

    • inputIndex: number

    Returns Psbt

  • Parameters

    • inputIndex: number
    • Optional finalScriptsFunc: FinalScriptsFunc | FinalTaprootScriptsFunc

    Returns Psbt

  • Parameters

    • inputIndex: number
    • Optional tapLeafHashToFinalize: Buffer
    • finalScriptsFunc: FinalTaprootScriptsFunc = tapScriptFinalizer

    Returns Psbt

  • Returns number

  • Returns number

  • Parameters

    • inputIndex: number

    Returns AllScriptType

  • Parameters

    Returns boolean

  • Parameters

    • inputIndex: number
    • pubkey: Buffer

    Returns boolean

  • Parameters

    Returns boolean

  • Parameters

    • outputIndex: number
    • pubkey: Buffer

    Returns boolean

  • Parameters

    • inputIndex: number
    • sequence: number

    Returns Psbt

  • Parameters

    • satoshiPerByte: number

    Returns void

  • Parameters

    • keyPair: Signer
    • Optional sighashTypes: number[]

    Returns Psbt

  • Parameters

    Returns Promise<void>

  • Parameters

    • hdKeyPair: HDSigner
    • sighashTypes: number[] = ...

    Returns Psbt

  • Parameters

    Returns Promise<void>

  • Parameters

    • inputIndex: number
    • keyPair: Signer
    • Optional sighashTypes: number[]

    Returns Psbt

  • Parameters

    Returns Promise<void>

  • Parameters

    • inputIndex: number
    • hdKeyPair: HDSigner
    • sighashTypes: number[] = ...

    Returns Psbt

  • Parameters

    Returns Promise<void>

  • Parameters

    • inputIndex: number
    • keyPair: Signer
    • Optional tapLeafHashToSign: Buffer
    • Optional sighashTypes: number[]

    Returns Psbt

  • Parameters

    • inputIndex: number
    • keyPair: Signer | SignerAsync
    • Optional tapLeafHash: Buffer
    • Optional sighashTypes: number[]

    Returns Promise<void>

  • Parameters

    • updateData: PsbtGlobalUpdate

    Returns Psbt

  • Parameters

    • inputIndex: number
    • updateData: PsbtInputUpdate

    Returns Psbt

  • Parameters

    • outputIndex: number
    • updateData: PsbtOutputUpdate

    Returns Psbt

  • Parameters

    • validator: ValidateSigFunction

    Returns boolean

  • Parameters

    • inputIndex: number
    • validator: ValidateSigFunction
    • Optional pubkey: Buffer

    Returns boolean

  • Parameters

    • data: string
    • opts: PsbtOptsOptional = {}

    Returns Psbt

  • Parameters

    • buffer: Buffer
    • opts: PsbtOptsOptional = {}

    Returns Psbt

  • Parameters

    • data: string
    • opts: PsbtOptsOptional = {}

    Returns Psbt