Bitcoin transactions are the cornerstone of how the Bitcoin network operates, and ensuring their security is paramount. To help facilitate more complex, secure, and flexible transactions, the concept of Partially Signed Bitcoin Transactions (PSBTs) was introduced. PSBTs allow multiple participants to collaborate on a transaction without any one party having full control over it, making it an invaluable tool for multi-signature wallets, hardware wallets, and advanced Bitcoin use cases.
What’s PSBT?
A Partially Signed Bitcoin Transaction (PSBT) is a standardized format that allows multiple parties to collaborate on the creation and signing of a Bitcoin transaction. Rather than a fully signed transaction, PSBT is an intermediate step where the transaction is partially signed by one or more participants, allowing others to review or add their signatures before broadcasting it to the Bitcoin network.
PSBT was introduced through Bitcoin Improvement Proposal 174 (BIP 174). The key advantage of PSBT is that it simplifies the process of handling complex Bitcoin transactions such as multi-signature setups, CoinJoin transactions, or interacting with airgapped hardware wallets that require signing offline.
How Does PSBT Work?
A PSBT operates by separating the creation, signing, and broadcasting stages of a Bitcoin transaction. Here’s how it works in a typical flow:
- Transaction Creation: One party (usually the creator of the transaction) generates a PSBT file that outlines the details of the transaction, such as inputs, outputs, and the amount being sent.
- Partial Signing: The PSBT file is passed to other parties involved in the transaction. Each party reviews the transaction and, if they agree, adds their partial signature without completing the entire transaction. Since the file isn’t fully signed, it can’t be broadcast yet.
- Final Signing and Broadcasting: Once all required parties have signed the PSBT, the file can be finalized and broadcast to the Bitcoin network.
PSBTs also support multi-signature transactions, where multiple parties are required to authorize the transaction, increasing the security of funds. It allows for easy collaboration between hardware wallets, software wallets, and multisig setups without any one party needing complete control over the transaction.
How to Create PSBT Bitcoin?
Creating a PSBT is a multi-step process, often facilitated by a wallet that supports PSBTs. Here is a step-by-step guide on how to create a PSBT:
- Select a PSBT-compatible wallet: Choose a Bitcoin wallet that supports the creation of PSBTs (we’ll list some of these wallets below).
- Set up the transaction details: Input the Bitcoin addresses, the amount to be sent, and other necessary transaction details within the wallet interface.
- Create the PSBT file: Instead of immediately signing the transaction, the wallet generates a PSBT file containing all necessary transaction information except for full signatures. This file will include inputs, outputs, UTXO (Unspent Transaction Output) data, and partially signed inputs if applicable.
- Send to participants for signing: If you’re using a multi-signature wallet or involving another participant, send the PSBT file to them. They can review the transaction and add their partial signature.
- Finalizing the transaction: Once all participants have added their signatures, the transaction is finalized. At this point, it can be broadcast to the Bitcoin network.
What is an Example of a PSBT Transaction?
Let’s look at a basic example involving a multi-signature transaction:
- Alice, Bob, and Charlie share a 2-of-3 multi-signature wallet, meaning any two of them are required to sign off on a transaction.
- Alice wants to send 0.5 BTC from the multi-signature wallet to Dave. She generates a PSBT, setting Dave’s address as the recipient and specifying the amount of 0.5 BTC.
- Alice partially signs the PSBT and sends it to Bob for his signature. Bob reviews the transaction, adds his signature, and sends the PSBT back to Alice.
- Now that the transaction has two valid signatures (Alice’s and Bob’s), the PSBT is finalized. Alice broadcasts the transaction to the Bitcoin network, and the funds are sent to Dave.
What is the PSBT Format for Bitcoin?
The PSBT format follows a clear, standardized structure as defined by BIP 174. The PSBT format is binary, but for ease of use and readability, it is often displayed in base64 encoding.
The PSBT format consists of several key fields:
- Global Transaction Information: This includes information that applies to the entire transaction, such as the unsigned transaction itself.
- Input Data: For each input in the transaction, the PSBT includes information about the previous UTXO, scriptSig, partial signatures, and more.
- Output Data: For each output, the PSBT contains details like the address, value to be sent, and any relevant script information.
The PSBT format also allows for extensibility, enabling future upgrades and new features without breaking compatibility with existing PSBT implementations.
Wallets Supporting PSBT
Several Bitcoin wallets support PSBT transactions. Below are some of the most commonly used ones:
Conclusion
PSBTs represent a powerful tool in the Bitcoin ecosystem that enables more secure and flexible transaction management. Whether you’re looking to facilitate a multi-signature transaction, integrate with hardware wallets, or participate in CoinJoin for privacy, PSBTs offer a standardized way to collaborate on Bitcoin transactions without compromising security.
By supporting PSBTs, wallets can ensure that you retain full control over your private keys while allowing multiple participants to review and sign off on transactions. As Bitcoin continues to evolve, PSBTs will likely play a growing role in helping users manage their transactions securely and efficiently.