Because of a surge in demand, Bitcoin's mempool is flooded, and the blocks are full, taking network fees higher, and our transaction confirmations longer.
https://jochen-hoenicke.de/queue/#0,24hVeriphi wrote a case-study and found that the network, and ALL of its participants together, could have saved $500,000,000 in fees through Segwit, and batching.
https://veriphi.io/en/blog/case-study-how-segwit-and-batching-help-you-save-moneyI'm merely spreading some awareness for us to learn about the benefits of batching, and maybe for everyone to ask their favorite Bitcoin exchange/casino/merchant/service to start using it, to help decongest the network, and help ALL its participants save more.
https://veriphi.io/segwitbatchingcasestudy.pdf
The purpose of this case study is to determine the savings benefits that employing SegWit and Batching in Bitcoin transactions would have had, had there been a full adoption. Nearly half a million blocks of transactions have been scrutinized in order to calculate the amounts of bitcoins and mega- bytes saved thanks to these technologies. The savings potential presented is signi cant and those conducting large amounts of transactions should seriously consider employing these tools in order to remain competitive and save money.
Major takeaways:
* From January 2012 to June 2020 ( until the 637,090th block) 211,266.95 bitcoins were paid in fees to miners. This amounts to a total of around $1,954,219,287 USD with a Bitcoin price of $9250.00 USD at the time of latest update in July 2020.
* Over 21,131.97 bitcoins could have been saved by Bitcoin users if they would have all been using Transaction Batching. 190,134.98 bitcoins could have been paid in fees instead of the 211,941.32 bitcoins, which represents savings of 9.97%. The 21,131.97 bitcoins saved represents a staggering amount of $195,470,722 USD (with a Bitcoin price of $9,250.00 USD).
* From August 24th 2017 to the 30th of June 2020, 36,685.72 bit- coins could have been saved by Bitcoin users if they would have all been using SegWit Native (Bech32). Fees would have amounted to 59,848.61 bitcoins, down from 96,534.33 bitcoins actually paid in fees, which is 38.00% in savings. The 36,685.72 bitcoins saved represent $339,342,910 USD (with a Bitcoin price of $9,250.00 USD).
* The advantages brought through optimized fee management techniques such as SegWit and Batching are mostly impressive and apparent during high transactional activity periods. A large percentage of the possible savings would have been achieved in only a few months over the spawn of 8 years and 6 months analysed.
* Bitcoin market actors, such as exchanges, should strongly consider imple- menting any optimized fee management techniques with clear nancial advantages. In anticipation of future price appreciation and higher trans- actional activity, Bitcoin users have to acknowledge that bitcoin transac- tion fees will continue to rise and prepare consequently.
What is Batching?
Bitcoin transactions include inputs, the coins being spent, and outputs, where the coins get sent. In contemporary wallets and applications, Bitcoin transactions have at the very least 2 outputs for the most part, one where the money gets sent and another where you get your change back to another address you control. What if you want to send funds to multiple addresses? You could make two transactions with each two outputs including the change output, however doing so makes you pay fees for every separate transaction. You could instead use Transaction Batch- ing. Brie y, this technique simply signi es having more than 3 outputs in a transac- tion, thus making a payment to two different parties at the same time.
A typical P2PKH (Pay to Public Key Hash) Bitcoin transaction (As seen in Figure 2) containing one input, an output and a change output would be 226 bytes in size. Knowing this, every additional independent transaction would then at least have another 226 bytes. For entities making multiple transactions, the fees paid can add up quickly. Imagine having the below image multiplied by every individual transac- tion you make.
Bitcoin used to have a limit of 1MB for every block of transactions. Since this limit was replaced with a block weight limit that can reach 4MWU, we can calculate that if all the transactions in a block were using SegWit, the block size could reach 2.4 MB. Even though we can t more transactions now, the case still is that we can only t a certain amount of transactions in every block depending on their sizes. The larger transactions must then pay a greater amount in fees if they want to be included in a block, since space is limited. The impact of Transaction Batching becomes more apparent the more transactions we make.
Benefits of Batching
The input of the above transaction represents about 65% of the transactions (148 bytes) and the outputs around 30% if we assume it has a change output. In order to save on fees paid when making multiple transactions, you can either use as few inputs as possible by consolidating your UTXOs, or you can use Transaction Batching, where the output part scales linearly but the input part stays the same, no matter the amount of outputs.
By aggregating multiple outputs into a single transaction, you are effectively saving up on space required for your payments, thus reducing the amount of fees paid to miners. Instead of making a second separate payment of 226 bytes, effectively doubling your fees, you are instead paying 15% (34 bytes) more than the single transaction for each output (as seen in Figure 3).
The savings further increase the more outputs you add onto the transaction. A batched transaction that contains 10 outputs represents 25% of the total byte size of 10 individual payments, saving you up to 75% in fees paid.
Batching also has the bene t of minimizing your UTXO set since you’d only have one change address per batched transaction instead of one for each in- dividual payment made. By reducing your number of change outputs you are further saving on fees spent since a change output typically takes up at least 69 vbytes when spent later on.
There are however potential privacy concerns when it comes to batching. A user can very easily see every other address that received a payment in the same transaction, or someone else analysing these transactions can identify users whose public address is known and tie them to an exchange with an amount. On the other hand, even if the transactions are done separately, those links can still be inferred by analyzing the change outputs.
Batching is a simple yet effective method to implement in order to save on fees paid by making your payments more ef cient. Large scale organizations that have multiple transactions per day can greatly bene t from batching, especially during times when fees spike like in the December 2017 to January 2018 periods where fees rose signi cantly in USD terms. As your number of payments increases, there are potentially huge savings to be made which in turn can either increase your revenues or be passed along to your customers.