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