Bitcoin PSBT Builder
Have you ever thought to yourself or asked your fellow bitcoiners: if there was only a way to create a transaction using UTXOs from multiple wallets, wait no more!
PSBT Builder is a tool that helps us create Partially Signed Bitcoin Transactions (PSBT) using any UTXO as input from any wallet.
It’s available online, runs on your browser, and is open-source; ideas are welcome!
Some use cases:
- Use UTXOs from multiple wallets
- Pay transaction fees for loved ones, friends, and others.
- Transfer standalone UTXOs with Ordinals using different wallets
- Consolidate UTXOs from different wallets
- Distribute Bitcoin to different addresses
To show its power, I will be using #1 as an example:
Use UTXOs from multiple wallets
First, open PSBT Builder, which is hosted on GitHub. Set the network, I’m going to select Testnet4 as shown below:
Next, you need two UTXOs from different wallets (different seeds), mine are:
- tb1p4dz9e8c27x80z2zct5y0eg5lcqq8nks7768t5yvu8u98g0kq76csuws0vy
- tb1p247v3zw36znycsyf20284px96cyc9aa6qpt3y8774ekqt7u4v7rqghk2mt
Send some bitcoin to these addresses, view the transaction details on mempool.space and copy:
- Transaction Id (txid)
- Output index (vout)
- Value (sats sent to this address)
- ScriptPubKey
txid: 08aef22914a85af59a2a022fa759803f2656f7e2a4ee2e9bfd00b0235ffd4948
vout: 1
value: 5000
ScriptPubKey: 5120ab445c9f0af18ef128585d08fca29fc00079da1ef68eba119c3f0a743ec0f6b1Here’s the information from the other transaction:
txid: edc4aca4ea5e003b82bf3531bc80b074dcb7caba899698098e5e92de0974ec9e
vout: 1
value: 5000
ScriptPubKey: 5120557cc889d1d0a64c408953d47a84c5d60982f7ba0057121fdeae6c05fb956786Now we enter this information in the PSBT Builder:
Now we need an output address and a change address, I’m adding a change address because I’m assuming wallet #2 is paying the transaction fees.
Receiver address: tb1puzdept0yxvxgn959rm8q5289lmerz2j3lt9euvxlh0kqn2gxrfqq5mmwhq
Change address: tb1psgkl78ge7c2vt89qtm5da28c0erq8lf5mnt6m0my5uuf64m72asssyp0ruBecause Wallet #1 is going to keep the same bitcoin as before this transaction, I’m going to create the first output and put the same amount of sats it originally has, which is 5,000 sats, and I add it as so.
I also add the change address, which is from wallet #2 and I set the fee rate to 2 sat/vB which is double the rate of other transactions in testnet4
Now, click the [Create & Download PSBT] button to download the PSBT, and share it with both the owner of wallet #1 and wallet #2, both need to sign the file separately and then combine it using the PSBT Builder tool as follows.
I load it onto Sparrow to verify that it has the correct information and that it is not tampered with:
Now, sign it from wallet #1, and then sign it with wallet #2. Because I loaded both wallets onto Sparrow, I can toggle the signing wallets from a dropdown as seen in the screenshot above. Person A is wallet #1 in this case, I proceed to sign, and save the signed PSBT:
And I do the same with wallet #2.
Once I have both files, I load them into the PSBT Builder and click Combine & Finalize:
I can now download the final PSBT or broadcast. I download the file and load it onto Sparrow for inspection, as you can see, it now shows the view final transaction and broadcast transaction because the PSBT was created correctly:
Once broadcasted, it changes the interface:
If we open the transaction in mempool.space we can see the two 5k inputs, one output with 5k sats, and the other one with less because it paid for fees and the transaction fee, which goes to the miners:
We can also see Sparrow showing the transactions on the different wallets and balances:
Wallet #1
Wallet #2
And that’s it, happy combining!
LFG! 🚀
