psbt

4.0.0 • Public • Published

PSBTs

PSBTs are a format for communicating and collaboratively working with transactions.

The format is defined in BIP-0174: https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki

Methods

An ECPair object is required for some methods:

const tinysecp = require('tiny-secp256k1');

const ECPair = await import('ecpair')

const ecp = ECPair.ECPairFactory(tinysecp);

combinePsbts

Combine multiple PSBTs

{
  ecp: <ECPair Object>
  psbts: [<BIP 174 Encoded PSBT Hex String>]
}

@throws
<Combine PSBT Error>

@returns
{
  psbt: <BIP 174 Encoded PSBT Hex String>
}

createPsbt

Create a PSBT

{
  outputs: [{
    script: <Output ScriptPub Hex String>
    tokens: <Sending Tokens Number>
  }]
  utxos: [{
    id: <Transaction Id Hex String>
    [sequence]: <Sequence Number>
    vout: <Output Index Number>
  }]
  [timelock]: <Set Lock Time on Transaction To Number>
  [version]: <Transaction Version Number>
}

@returns
{
  psbt: <Partially Signed Bitcoin Transaction Hex Encoded String>
}

decodePsbt

Decode a BIP 174 encoded PSBT

{
  ecp: <ECPair Object>
  psbt: <Hex Encoded Partially Signed Bitcoin Transaction String>
}

@throws
<Invalid PSBT Error>

@returns
{
  inputs: [{
    [bip32_derivations]: [{
      fingerprint: <Public Key Fingerprint Hex String>
      [leaf_hashes]: <Taproot Leaf Hash Hex String>
      path: <BIP 32 Child / Hardened Child / Index Derivation Path String>
      public_key: <Public Key Hex String>
    }]
    [final_scriptsig]: <Final ScriptSig Hex String>
    [final_scriptwitness]: <Final Script Witness Hex String>
    [non_witness_utxo]: <Non-Witness Hex Encoded Transaction String>
    [partial_sig]: [{
      hash_type: <Signature Hash Type Number>
      public_key: <Public Key Hex String>
      signature: <Signature Hex String>
    }]
    [redeem_script]: <Hex Encoded Redeem Script String>
    [sighash_type]: <Sighash Type Number>
    [taproot_control_block]: <Taproot Script Spend Control Block Hex String>
    [taproot_leaf_hash]: <Taproot Leaf Hash Hex String>
    [taproot_leaf_public_key]: <Leaf Script X Only Public Key Hex String>
    [taproot_leaf_script]: <Taproot Leaf Spend Script Hex String>
    [taproot_leaf_version]: <Taproot Leaf Spend Script Version Number>
    [taproot_internal_key]: <X Only Taproot Internal Public Key Hex String>
    [taproot_key_spend_sig]: <Taproot Key Spend Signature Hex String>
    [taproot_root_hash]: <Taproot Merkle Root Hash Hex String>
    [taproot_script_signature]: <Taproot Script Spend Script Hex String>
    [unrecognized_attributes]: [{
      type: <Key Type Hex String>
      value: <Value Hex String>
    }]
    [witness_script]: <Witness Script Hex String>
    [witness_utxo]: {
      script_pub: <UTXO ScriptPub Hex String>
      tokens: <Tokens Number>
    }
  }]
  outputs: [{
    [bip32_derivation]: {
      fingerprint: <Public Key Fingerprint Hex String>
      [leaf_hashes]: <Taproot Leaf Hash Hex String>
      path: <BIP 32 Child/HardenedChild/Index Derivation Path Hex String>
      public_key: <Public Key Hex String>
    }
    [redeem_script]: <Hex Encoded Redeem Script>
    [taproot_internal_key]: <X Only Taproot Internal Public Key Hex String>
    [taproot_script_tree]: [{
      depth: <Tree Depth Number>
      script: <Leaf Script Hex String>
      version: <Leaf Script Version Number>
    }]
    [unrecognized_attributes]: [{
      type: <Key Type Hex String>
      value: <Value Hex String>
    }]
    [witness_script]: <Hex Encoded Witness Script>
  }]
  pairs: [{
    type: <Key Type Hex String>
    value: <Value Hex String>
  }]
  [unrecognized_attributes]: [{
    type: <Global Key Type Hex String>
    value: <Global Value Hex String>
  }]
  unsigned_transaction: <Unsigned Transaction Hex String>
}

encodePsbt

Encode a Partially Signed Bitcoin Transaction

{
  pairs: [{
    [separator]: <Is Separator Bool>
    [type]: <Type Buffer Object>
    [value]: <Value Buffer Object>
  }]
}

@throws
<Failed To Encode Error>

@returns
{
  psbt: <Hex Encoded Partially Signed Bitcoin Transaction String>
}

extractTransaction

Extract a transaction from a finalized PSBT

{
  ecp: <ECPair Object>
  psbt: <BIP 174 Encoded PSBT Hex String>
}

@throws
<Extract Transaction Error>

@returns
{
  transaction: <Hex Serialized Transaction String>
}

finalizePsbt

Finalize the inputs of a PSBT

{
  ecp: <ECPair Object>
  psbt: <BIP 174 Encoded PSBT Hex String>
}

@throws
<Finalize PSBT Error>

@returns
{
  psbt: <BIP 174 Encoded PSBT Hex String>
}

signPsbt

Update a PSBT with signatures

{
  ecp: <ECPair Object>
  network: <Network Name String>
  psbt: <BIP 174 Encoded PSBT Hex String>
  signing_keys: [<WIF Encoded Private Key String>]
}

@throws
<Sign PSBT Error>

@returns
{
  psbt: <BIP 174 Encoded PSBT Hex String>
}

transactionAsPsbt

Convert a signed transaction to a signed PSBT

Note: not all signed transactions can be converted to a signed PSBT. For example, a preimage cannot be represented in a standard PSBT.

{
  ecp: <ECPair Object>
  spending: [<Spending Transaction Hex String>]
  transaction: <Hex Encoded Transaction String>
}

@throws
<Error>

@returns
{
  psbt: <Signed PSBT String>
}

updatePsbt

Update a PSBT

{
  [additional_attributes]: [{
    type: <Type Hex String>
    value: <Value Hex String>
    vin: <Input Index Number>
    vout: <Output Index Number>
  }]
  [bip32_derivations]: [{
    fingerprint: <BIP 32 Fingerprint of Parent's Key Hex String>
    path: <BIP 32 Derivation Path String>
    public_key: <Public Key String>
  }]
  ecp: <ECPair Object>
  psbt: <BIP 174 Encoded PSBT String>
  [redeem_scripts]: [<Hex Encoded Redeem Script String>]
  [sighashes]: [{
    id: <Transaction Id String>
    sighash: <Sighash Flag Number>
    vout: <Spending Output Index Number>
  }]
  [signatures]: [{
    vin: <Signature Input Index Number>
    hash_type: <Signature Hash Type Number>
    public_key: <BIP 32 Public Key String>
    signature: <Signature Hex String>
  }]
  [taproot_inputs]: [{
    vin: <Input Index Number>
    [key_spend_sig]: <Taproot Key Spend Signature Hex String>
  }]
  [transactions]: [<Hex Encoding Transaction String>]
  [witness_scripts]: [<Witness Script String>]
}

@throws
<Update PSBT Error>

@returns
{
  psbt: <Hex Encoded Partially Signed Bitcoin Transaction String>
}

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
4.0.01,157latest

Version History

VersionDownloads (Last 7 Days)Published
4.0.01,157
3.0.01,137
2.7.21,803
2.7.1231
2.7.02
2.6.02
2.5.00
2.4.02
2.3.02
2.2.00
2.1.00
2.0.13
2.0.05
1.1.112
1.1.1021
1.1.92
1.1.82
1.1.72
1.1.69
1.1.50
1.1.40
1.1.30
1.1.20
1.1.10
1.1.00
1.0.60
1.0.50
1.0.40
1.0.30
1.0.20
1.0.10
1.0.00

Package Sidebar

Install

npm i psbt

Weekly Downloads

3,863

Version

4.0.0

License

MIT

Unpacked Size

332 kB

Total Files

68

Last publish

Collaborators

  • alexbosworth