pull down to refresh

I'm trying to gain an understanding of how a transaction is put together, in Sparrow. So, I'm experimenting (with a Testnet4 wallet), playing around with the options in the Send tab, where you can optimize for either efficiency or privacy.
It's all a little confusing, but here's what I'm wondering right now. If I choose to send, for instance, 2000 sats, and I choose "efficiency" to optimize for (the other option is "privacy"), then why does it always put together multiple input UTXOs? All of them are much larger than the 2000 sats I want to send. Why not just send 1 UTXO?
If you're optimizing for efficiency, don't you want to put together the smallest number of inputs possible, to make the transaction smaller and make the fees smaller?
68 sats \ 1 reply \ @alt 18 Dec
My guess is that it's not optimising for single transaction efficiency, but rather efficiency over the long run. The most efficient strategy is to have one UTXO in your wallet, so you always need only one input.
If you have multiple UTXOs in your wallet, it makes sense (from efficiency perspective) to use multiple UTXOs now in order to consolidate them into a change UTXO. Over time, the number of UTXOs will get smaller. This way you tradeoff a small amount of efficiency in that particular transaction to gain high efficiency in the long run.
The alternative is to use the minimum number of UTXOs now, and eventually end up with a large number of small UTXOs. At some point you will be hit with huge transaction fees when you try to spend them.
That's probably what's happening here.
reply
I think you're right. It's way more complex than I thought it was.
It looks like the code is in here, in the SendController.java file.
reply
It should only send one utxo when maximizing for efficiency if the utxo selected is enough to cover the output and fees. You might have selected the two utxos on a previous screen and that’s why it’s including two.
What happens if you select one utxo and try to send the 2000 sats?
reply
When I go to the UTXO tab, and right-click on the specific UTXO (on one of the three) and click send , it does send just that UTXO.
Here's what that one looks like:
But even when I close and re-open the wallet, and create a new send transaction, it still shows the 3 input UTXOs, even in the "efficiency" optimization. And each of the 3 UTXOs have far more sats than the requested send amount.
reply
Maybe a bug in the software or we are both misunderstanding what efficiency selection does?? It’s better to select your own coins with coin control than the efficiency or privacy option in my opinion. But not sure why you are getting the extra utxo added to your transaction when using the efficiency option.
reply
34 sats \ 1 reply \ @Skipper 18 Dec
Can you show a screenshot of the screen?
reply
20 sats \ 0 replies \ @kruw 18 Dec
When you spent multiple inputs in the same transaction, that allows blockchain analysis to link your transactions that created those coins together. So, a transaction that uses many inputs will damage your privacy more than a transaction that uses one input.
Ultimately, you have to use coinjoin in order to keep your Bitcoin transactions private. Otherwise, you will eventually have to leak your entire transaction history once it comes time to sweep the dust in your wallet.
reply
FYI I checked out the Sparrow telegram group. Other people have similar questions. Craig Raw (developer of Sparrow) had this to say:
reply
He's right. Is hard to achieve a real balance having privacy and efficiency. Sometimes you have choose what is more important for that tx you are about to do.
reply