0

I found this old post about sending money to multiple addresses here that explains with "Concrete numbers" why individual transactions are more expensive compared to cumulative transactions. For some reason I still dont get it, maybe I am missing something. Lets say I want to send $10 to 10 different people. From my point of view I can either create 10 individual transactions and lets say each transaction will have value of $10 and I will pay $1 fee for each of them which means I will send $100 dollars to people and I will spend $10 for transactions fees. If I just create one transaction with multiple recipients how is that cheaper if the total value transacted will be again 10x$100 == $100 and I will set up the same fee which will be in this case $10. I probably understand that the cumulative transaction will be technically bigger and will be executed faster(since it is going to have bigger priority, bigger value transacted) but when the speed of the transaction is not considered at all, is not that the same result? I sent 10 individual transactions(sending around $10 to 10 different addresses, first I sent the first one, then the second one then the third one etc..) just to test this in the testnet and did also one big one(providing list of addresses and values and sending all at the same time) and they have been all confirmed so I am definitely missing something.

Just to visualize this:

Example batch transaction:
Vladimir 1btc sends 0.8btc to Peter, and 0.1btc as a change to his new address 0.1btc is used as a transaction fee Vladimir has got 0btc in the old address, Vladimir has got 0.1btc in his new address, Peter has got 0.8btc in his address, Vladimir spent 0.1btc on transactions fees.

Example individual transactions:

First Transaction: Vladimir 1btc sends 0.4btc to Peter(considering he wants to send another half in the separate transaction) he has got 0.6btc left, he sents 0.55btc as a change to his new address and use 0.05btc as a transaction fee

Second Transaction: Vladimir 0.55btc(his new deposit address received this after first transaction) sends 0.4btc to Peter, and 0.1btc as a change to his new address(so he has got 0.1btc left as in the batch example) 0.05btc is used as a transaction fee Vladimir has got 0btc in the old address, Vladimir has got 0.1btc in his new address, Peter has got 0.8btc in his address(received 0.4btc and 0.4btc), Vladimir spent 0.1btc on transactions fees(0.05btc + 0.05 btc == 0.1btc).

Vladimir spent 0.1btc for both scenarios, Vladimir has got the same balance in the end for both scenarios and Peter get the same value why is the first scenario cheaper then?

1 Answer 1

3

There are two things you need to understand to see why batched (cumulative as you called them) transactions are cheaper. The first is the UTXO model that Bitcoin uses. When you send someone Bitcoin, what you are doing is taking one or more Unspent Transaction Outputs (UTXOs), spending them (and thereby also destroying them), and creating new UTXOs that the receiver can spend.

Because UTXOs are spent completely, if you have chosen UTXOs that have more total value than the amount you want to send, you need to receive the extra amount back to yourself as change. So your transaction will also create a new UTXO that you can spend that contains the amount for the change. Most transactions will have a change output because it is unlikely that you have just the right number of UTXOs with the right amounts to exactly match the amount you want to send and cover the transaction fees.

The second thing you need to understand is how transaction fees are calculated. Transaction fees are based on the physical size of the transaction in bytes, not the amount being transacted. This size varies depending on how many UTXOs are being spent, and how many outputs are being created. Spending a single 100 BTC UTXO to one recipient and one change output will be cheaper than spending 10 0.1 BTC UTXOs to five recipients and one change.

With this background, let's consider your scenario of paying 10 recipients. For the sake of simplicity, let's say you have 1 UTXO that has enough value to pay all 10 people.

When you make 10 individual transactions, you are going to first make a transaction that spends your first UTXO, then creates an output for the recipient, and a change output back to yourself. In the next transaction, you spend your change output, make an output for the recipient, and another change output back to yourself. You do this until the 10 recipients are paid.

By making 10 individual transactions, you have created 10 transactions each spending one UTXO and creating one change output, for a total of 10 UTXOs, 10 change outputs, and 10 recipient outputs. You will have to pay transaction fees for all of these things.

Now consider the batched case. You spend one UTXO, and create 10 recipient outputs, and 1 change output. If you do it this way, you still have to pay the same fees for the 10 recipient outputs, but you only have to pay fees on the one UTXO and one change output. Because you are using less data to pay these 10 recipients, you pay less fees, and thus are able to save money.

5
  • Thanks. thats a very useful "The second thing you need to understand is how transaction fees are calculated." Well, I am the one calculating them and I am in full control right? If I decide what kind of fee I will use I still dont really understand how come the batches are cheaper I added some specific examples.
    – Vladimir
    Apr 1, 2022 at 16:53
  • 1
    Fees are the mechanism for paying for space on the blockchain, and are set by the market. You of course bid however much you want yourself, but for a fixed level of priority, you want to pay a fee proportional to the amount of space used on chain. So if you're constructing transactions that together take more space, you'll also want to pay proportionally more fees. This is no different from the fact that if you want 3 seats on an airplane, you'll pay 3x more than if you want 1 seat - even though prices are variable and depend on more things, like economy/business. Apr 1, 2022 at 17:55
  • @PieterWuille "So if you're constructing transactions that together take more space, you'll also want to pay proportionally more fees." Why would I want that if I am the one that is in full control of setting up fees for my transactions? If the transaction is confirmed and I am not really concerned if it takes longer or not I dont really see the reason why should I spent more money unless I get some kind of penalty(transaction does not go through at all or something similar).
    – Vladimir
    Apr 1, 2022 at 20:03
  • 1
    That sounds like a whole new question: why does feerate matter. For some applications it matters how fast a transaction goes through. And even ones where it doesn't matter much generally have some requirements. During periods with high demand for blockspace, it may take days or weeks for low-feerate transactions to be mined. Finally, there are minimum feerate policies on the network (you generally need to pay at least 1 satoshi per byte in fees, or the network will treat your transaction as spam). Apr 1, 2022 at 20:10
  • 1
    Blocks have a finite capacity (1 MvB per 10 minutes). If that entire capacity gets used by transactions paying a higher feerate than you, your transaction will not be mined. That creates a market, and production (miners) will prioritize whatever pays most per capacity. Apr 1, 2022 at 20:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.