Module: transactions

This module provides functions for constructing and validating multisig transactions.

Source:

Methods

(static) signedMultisigTransaction(network, inputs, outputs, transactionSignatures) → {Transaction}

Create a fully signed multisig transaction based on the unsigned transaction, inputs, and their signatures.

Parameters:
Name Type Description
network module:networks.NETWORKS

bitcoin network

inputs Array.<module:inputs.MultisigTransactionInput>

multisig transaction inputs

outputs Array.<module:outputs.TransactionOutput>

transaction outputs

transactionSignatures Array.<Object>

array of transaction signatures, each an array of input signatures (1 per input)

Source:
Returns:

a signed Transaction object

Type
Transaction
Example
import {
  generateMultisigFromPublicKeys, TESTNET, P2SH,
  signedMultisigTransaction,
} from "unchained-bitcoin";
const pubkey1 = "03a...";
const pubkey2 = "03b...";
const multisig = generateMultisigFromPublicKeys(TESTNET, P2SH, 2, pubkey1, pubkey2);
const inputs = [
  {
    txid: "ae...",
    index: 0,
    multisig,
  },
  // other inputs...
];
const outputs = [
  {
    address: "2N...",
    amountSats: 90000,
  },
  // other outputs...
];
const transactionSignatures = [
  // Each element is an array of signatures from a given key, one per input.
  [
    "301a...",
    // more, 1 per input
  ],
  [
    "301b...",
    // more, 1 per input
  ],
  // More transaction signatures if required, based on inputs
];
const signedTransaction = signedMultisigTransaction(TESTNET, inputs, outputs, transactionSignatures)

(static) unsignedMultisigPSBT(network, inputs, outputs, includeGlobalXpubs) → {Psbt}

Create an unsigned bitcoin transaction based on the network, inputs and outputs stored as a PSBT object

Returns a PSBT object from bitcoinjs-lib.

Parameters:
Name Type Description
network module:networks.NETWORKS

bitcoin network

inputs Array.<module:inputs.MultisigTransactionInput>

transaction inputs : NOTE - must be braid-aware

outputs Array.<module:outputs.TransactionOutput>

transaction outputs

includeGlobalXpubs Boolean

include global xpub objects in the PSBT?

Source:
Returns:

an unsigned bitcoinjs-lib Psbt object

Type
Psbt

(static) unsignedMultisigTransaction(network, inputs, outputs) → {Transaction}

Create an unsigned bitcoin transaction based on the network, inputs and outputs.

Returns a Transaction object from bitcoinjs-lib.

Parameters:
Name Type Description
network module:networks.NETWORKS

bitcoin network

inputs Array.<module:inputs.MultisigTransactionInput>

transaction inputs

outputs Array.<module:outputs.TransactionOutput>

transaction outputs

Source:
Returns:

an unsigned bitcoinjs-lib Transaction object

Type
Transaction
Example
import {
  generateMultisigFromPublicKeys, TESTNET, P2SH,
  unsignedMultisigTransaction,
} from "unchained-bitcoin";
const multisig = generateMultisigFromPublicKeys(TESTNET, P2SH, 2, "03a...", "03b...");
const inputs = [
  {
    txid: "ae...",
    index: 0,
    multisig,
  },
  // other inputs...
];
const outputs = [
  {
    address: "2N...",
    amountSats: 90000,
  },
  // other outputs...
];
const unsignedTransaction = unsignedMultisigTransaction(TESTNET, inputs, outputs);

(static) unsignedTransactionObjectFromPSBT(psbt) → {Transaction}

Returns an unsigned Transaction object from bitcoinjs-lib that is not generated via the TransactionBuilder (deprecating soon)

FIXME: try squat out old implementation with the new PSBT one and see if everything works (the tx is the same)

Parameters:
Name Type Description
psbt Object

the PSBT object which has your transaction inside

Source:
Returns:

an unsigned Transaction object (unsigned)

Type
Transaction