I want to make use of a single bitcoin address for payment. I'm using bitcoinjs library's transction builder for creating my own transaction. Can anyone help with a proper code to use multiple UTXO's in a single transaction? Is there any function which can automatically select the no. of UTXO's to be consumed depending on the output transaction value to be sent? Thank you.
How can I consume my whole bitcoin balance in a single transction? Is it possible to use multiples UTXOs in a single transaction?
Of course, you can add as many UTXO's as will fit in a block. In fact, you usually have to because you don't always have a UTXO for the exact amount you are trying to spend. Note that more UTXO will result in a higher transaction fee because the fee is based on the current market fee rate (satoshi/kB) and more UTXO increases the kB.
For example, check out this transaction, it uses 7 UTXO as inputs.
1Nit: you can't "add as many UTXO's as will fit in a block". Bitcoin transactions bigger than 400,000 weight units are non-standard and will not be relayed. Oct 19, 2019 at 15:35
Thanks @Murch didn't realize there was a relay standard!– JBaczukOct 19, 2019 at 19:05
Yes, after refering to some documentations I'm now sure that,you can consume multiple UTXOs in a single transaction but upto a certain limit.Also transaction fees will increase as the size of input increases using multiple UTXOs. I used Transaction Builder of bitcoinjs-lib, for transaction. Hence, using
tx.addInput(txId, vOut) (txId and Vout of respective UTXO to be used)
multiple times, multiple UTXOs can be used. However to estimate the no. of UTXOs, simple logic such as using a FOR loop, till the sum of all UTXOs is sufficient for the btc to be sent, will work.