Author

Topic: Minimizing bitcoin transaction fee (Read 423 times)

legendary
Activity: 2310
Merit: 4085
Farewell o_e_l_e_o
February 27, 2021, 09:56:09 AM
#14
Just want to add that some exchanges fee are still higher, I saw yobit withdrawal fee to be 0.0012BTC, I am not certain if it has been changed. Also another exchange called HitBTC, the withdrawal fee was 0.0015BTC before, but was changed to 0.0009BTC. There are some exchanges like that with higher withdrawal fee.

About binance and some exchanges that charge 0.0005BTC as withdrawal fee, they make it mandatory because they want the processing time to be fast, but there are many times the mempool is not congested, and still demanding for such fee to get the transaction processed in time. From the transaction above, the mempool is congested, but there are times the mempool will not be congested and people making transaction at the time. Although, I do not really know how this works out but just the way I think it will be.
It is a table from a third party website. I did not check it manually.
  • https://withdrawalfees.com/coins/bitcoin
  • It gives you the list of 57 (?) exchanges with ascending orders for Withdrawal fees
  • Exchanges that give free or cheap withdrawal fees are mostly small ones, except Bittrex.
  • I'm not sure how regularly they update data

legendary
Activity: 1512
Merit: 4795
Leading Crypto Sports Betting & Casino Platform
February 27, 2021, 05:12:45 AM
#13
Just want to add that some exchanges fee are still higher, I saw yobit withdrawal fee to be 0.0012BTC, I am not certain if it has been changed. Also another exchange called HitBTC, the withdrawal fee was 0.0015BTC before, but was changed to 0.0009BTC. There are some exchanges like that with higher withdrawal fee.

About binance and some exchanges that charge 0.0005BTC as withdrawal fee, they make it mandatory because they want the processing time to be fast, but there are many times the mempool is not congested, and still demanding for such fee to get the transaction processed in time. From the transaction above, the mempool is congested, but there are times the mempool will not be congested and people making transaction at the time. Although, I do not really know how this works out but just the way I think it will be.
legendary
Activity: 2268
Merit: 18711
February 27, 2021, 04:41:42 AM
#12
You're ignoring the fact that one input transaction adds much more in terms of transaction size than one output transaction.
True, but they only need to consolidate once. If they consolidate 100 inputs in to one output, then they can move that output in and out of cold storage, between hot wallets, pay employees with it, and so on, all with very small (in terms of vbytes) transactions.

So even giving them a generous 5 transactions per withdrawal, and giving them a generous average of how many vbytes each withdrawal would contribute to those 5 transactions, there is no way to spin it where Binance are not making significant profits on these fees. As you said yourself, if they were paying these transactions out of their own pocket, then they wouldn't recklessly and consistently be overpaying by thousands of dollars.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
February 27, 2021, 03:52:00 AM
#11
but even if we say that for every individual user who makes a withdrawal there are 5 more transactions happening in the background (which seems very generous, considering that one withdrawal transaction with 100 outputs would allow for 500 more background transactions) paying the same high fees
You're ignoring the fact that one input transaction adds much more in terms of transaction size than one output transaction.

It would be interesting to see how many daily Bitcoin deposits Binance receives, and how many withdrawals it sends.
legendary
Activity: 2268
Merit: 18711
February 27, 2021, 01:45:33 AM
#10
That's possible because they consolidate their inputs in other transactions
Sure, there are transactions to consolidate coins, transactions between hot and cold wallets, general transactions between addresses, etc.,  all happening in the background, but even if we say that for every individual user who makes a withdrawal there are 5 more transactions happening in the background (which seems very generous, considering that one withdrawal transaction with 100 outputs would allow for 500 more background transactions) paying the same high fees, you are still looking at 20,000 sats profit per individually withdrawal. When that was equivalent to <$1 it wasn't such a big deal. Now that is equivalent to $10 it is ridiculous.

There are other much smaller exchanges which charge much smaller withdrawal fees. For Binance to continue with these high fees is pure profiteering.

They also pay too much for their consolidating transaction, they could easily have saved a thousands dollar on this. They must really earn a lot if they don't care about this.
Yeah, I've also mentioned this before. The fact that they continue to pay much higher fees than necessary, and continue to use legacy, means they are quite happy to keep ripping their customers off and pocketing the difference.
legendary
Activity: 2310
Merit: 4085
Farewell o_e_l_e_o
February 26, 2021, 10:36:57 AM
#9
And yet they still charge 0.0005 BTC for a withdrawal. So even when fees are this high, they are still making around 0.00045 BTC per customer per withdrawal. That's $20! What a complete rip off.
It is hidden rip off somewhat. I brought it to the community there: Old story. Exchanges get profits from users' withdrawal fees..

I agree with what LoyceV said. Exchanges can get fair fees from their operations, maintenance but their fee schedules need to clear. There are many sides for their operations but it is unfair and dishonest for their customers if they waive fee in one side and charge double on the another (other) side(s). It is likely secret steal, hidden rip off.

It would be much more fair to largely reduce the withdrawal fees, and charge a deposit fee. I know only one exchange that does that. But since that discourages people from depositing, while the current situation discourages withdrawals. From a business perspective, this makes much more sense.
They also pay too much for their consolidating transaction, they could easily have saved a thousands dollar on this. They must really earn a lot if they don't care about this.
I know another exchange that charged deposit fee: Remitano. They updated their policies on deposit fees in August of 2020 as they see dangers from other P2P marketplaces that are trying to attract Remitano users. After many years, they eventually waived deposit fees.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
February 26, 2021, 10:02:38 AM
#8
And yet they still charge 0.0005 BTC for a withdrawal. So even when fees are this high, they are still making around 0.00045 BTC per customer per withdrawal. That's $20! What a complete rip off.
As much as I dislike the high withdrawal fees on exchanges, what you're saying is not entirely true: the fee in that transaction could be so low because they only used one input. That's possible because they consolidate their inputs in other transactions This transaction for instance paid 0.05336637 BTC in fee for 252 inputs (and only 2 outputs).

It would be much more fair to largely reduce the withdrawal fees, and charge a deposit fee. I know only one exchange that does that. But since that discourages people from depositing, while the current situation discourages withdrawals. From a business perspective, this makes much more sense.
They also pay too much for their consolidating transaction, they could easily have saved a thousands dollar on this. They must really earn a lot if they don't care about this.

From the sample transaction above, I noticed one address with 275,856 transactions. It looks like someone uses this exchange to consolidate hundreds of thousands of small inputs. They should simply not allow that, it costs them money.
They should also start using native Segwit to reduce fees! Blocks are full, and large exchanges are responsible for a large part of this.
legendary
Activity: 2268
Merit: 18711
February 26, 2021, 08:58:28 AM
#7
We should ask o-e-l-e-o how he knows those two.
I plead the fifth!

Usually Carol is the third party to Alice and Bob.

They spent 0.00510973 BTC as transaction fee for 100 customers (outputs) even with fee rate at 149 satoshis/vbyte.
And yet they still charge 0.0005 BTC for a withdrawal. So even when fees are this high, they are still making around 0.00045 BTC per customer per withdrawal. That's $20! What a complete rip off.
legendary
Activity: 2310
Merit: 4085
Farewell o_e_l_e_o
February 26, 2021, 06:32:37 AM
#6
The table presents saving from fees if you consolidate a few inputs into only one consolidated input and make your transaction out later with it.

It is for an example and I don't think needs to go with more details.
  • All inputs and outputs are P2PKH
  • The table is built by manually calculation with support from https://coinb.in/#fees

|
No of Outputs
legendary
Activity: 2730
Merit: 7065
February 26, 2021, 05:15:49 AM
#5
Thanks for the correction, all changed.
We still have one instance of o-e-l-e-o transacting with Alice and Bob. We should ask o-e-l-e-o how he knows those two. Hopefully those are not connected accounts somehow. Grin

Okay, let us assume that Bob received 1BTC from Alice in a single transaction from compressed legacy address to compressed legacy address, and o-e-l-e-o wants to send the whole 1BTC to 10 addresses,

Nice and insightful piece you wrote there. Especially the parts detailing the input/output sizes. I never liked making such calculations myself, so I appreciate it when others do.

Regarding input consolidations, it's good to mention that the best time to perform consolidations is during the weekend when the fees are generally lower. But during bull runs, even that is not often the case.
legendary
Activity: 1512
Merit: 4795
Leading Crypto Sports Betting & Casino Platform
February 26, 2021, 04:08:10 AM
#4
<...>
Thanks for the correction, all changed. Also, about transaction typo, all corrected. Thanks for pointing that out.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
February 26, 2021, 03:42:23 AM
#3
Assuming LoyceV Bob received few satoshi of 0.001BTC in total from faucet 10 different times using a compressed legacy bitcoin address, this means the trasaction will have 10 inputs. If LoyceV Bob wants to send the whole bitcoin to CryptopreneurBrainboss Alice single uncompressed legacy address at ones, this is how the fee will look like.
This is much better Smiley

Quote
transaction
6x
legendary
Activity: 2506
Merit: 1394
February 26, 2021, 03:40:34 AM
#2
Inputs consolidation and sending to multiple addresses
This method is really useful and I am using it regularly.
The best time to do this method is when the transaction fee is cheap, just like 1 satoshi/byte.
If you want to check the current transaction fee, you can use btc.com or coinb.in or this.

For more information about this, @LoyceV created a useful thread for inputs consolidation here.
legendary
Activity: 1512
Merit: 4795
Leading Crypto Sports Betting & Casino Platform
February 26, 2021, 01:21:23 AM
#1
Bitcoin users are paying more on transaction fees than usual, this is as a result of many wallets not supporting segwit, some do not make segwit as default, some bitcoin users do not even know what segwit address is. Not only that, many exchanges also do not support segwit but typically legacy. Some Bitcoin users even have access to segwit addresses but due to not having enough knowledge about bitcoin makes them paying more than usual. But, all these and ways to minimize bitcoin fee will be discussed.

The Lightning Network
Focus will be on onchain transactions while lightning network is offchain but really worth to mention. LN is a way bitcoin users can pay very low amount of bitcoin, but block fees will be paid while opening and closing a channel, the block fees are fee collected by miners while using onchain payment method. After opening a channel, only very low amount of bitcoin are deducted as fee, can be as low as less than 100 satoshi.

Transaction Inputs, outputs and UTXOs
Inputs are the bitcoin received into an address, while bitcoin transaction create an output which is recorded on blockchain ledger. Outputs are the bitcoin sent to another address. UTXOs are the unspent transaction outputs which are the spendable chunks of bitcoin which is recognized by the whole network and available for the owner to spend in a future transaction.

Inputs consolidation and sending to multiple addresses
One of the reasons for high transaction fees are high inputs, inputs carry more data weight which makes it more responsible for high fee, but also increase in transaction output is also responsible for high fee but not as high compared to inputs. This is revealed in the calculation below.

Assuming Bob received few satoshi of 0.001BTC in total from faucet 10 different times using a compressed legacy bitcoin address, this means the transaction will have 10 inputs. If Bob wants to send the whole bitcoin to Alice single uncompressed legacy address at ones, this is how the fee will look like.

vbyte= Input*149 + output*34 + 10 plus or minus input
vbytes= 10*149 + 1*34 + 10 +/- 10
vbyte= 1544

Assuming the feerate= 100 sat/vbytes

Fee= feerate*vbyte
Fee= 100*1544
Fee= 154400 Satoshi
Fee=  0.001544BTC.

Okay, let us assume that Bob received 1BTC from Alice in a single transaction from compressed legacy address to compressed legacy address, and Bob wants to send the whole 1BTC to 10 addresses, that means the transaction will have 1 input and 10 outputs

vbyte= Input*149 + output*34 + 10 plus or minus input
vbyes= 1*149 + 10*34 + 10 +/- 1
vbytes= 500

Assuming the feerate= 100 sat/vbytes

Fee= feerate*vbyte
Fee= 100*500
Fee= 50000
Fee= 0.0005BTC

Assuming Bob has 1BTC received from only one legacy address and sending it to Alice legacy address. That means it has 1 input and 1 output. But, if Bob decided to send some like 0.001BTC, he will collect change which will be sent back to another address on his wallet called change address, in this second case, the transaction will have 1 input and 2 outputs.
Using the formalar above
For 1 inputs and 1 outputs, the vbyte= 192vbytes

Assuming the feerate= 100 sat/vbytes

Fee= 100*192
Fee= 19200 satoshi
Fee= 0.000192BTC

The reason to consolidate inputs
Consolidating input means to send all the bitcoin with many inputs to only one address back on your wallet so that the input will become one. Although, there are cases to increase privacy and want to only use coin control to consolidate few inputs, but with these explainations, it is clear that consolidating input will bring about a wallet being able to use lesser fee for transactions. Not only that, it is also included that the more the output, the more the fee, but not as high compared inputs.

Sending to multiple addresses will increase the fee but better than sending to one address one after the other. In the example above, sending to 10 addresses only cost 0005BTC, if sending to one address one after the other, for 10 transactions with 1 input and 1 output:
Fee= 000192BTC*10
Fee= 0.00192BTC which is far higher than 0005BTC
The sender will even use more fee because as he sends from one address, the input will be increasing which will significantly increase the fee.

Regarding input consolidations, it's good to mention that the best time to perform consolidations is during the weekend when the fees are generally lower. But during bull runs, even that is not often the case.

Using segwit
This reduces the weight of transactions, possibly because of the vbytes metric, it is a common misconception that segwit somehow makes transactions much smaller—but this is incorrect. A 300-byte transaction is 300 bytes on-disk and over-the-wire. Segwit just counts those bytes differently toward the maximum block size of 4M weight units.

The maximum size of a block in bytes is nearly equal in number to the maximum amount of block weight units, so 4M weight units allows a block of almost 4M bytes (4MB). This is not a somehow "made-up" size; the maximum block size is really almost 4MB on-disk and over-the-wire. However, this maximum can only be reached if the block is full of very weirdly-formatted transactions, so it should not usually be seen.

Comparing segwit and legacy transactions
There are native segwit and nested segwit, legacy addresses start from 1, nested segwit starts from 3 while native which is the real segwit starts from bc1. In the comparing, 1 input and 1 output will be used.

Legacy
vbyte= Input*149 + output*34 + 10 plus or minus input
For 1 inputs and 1 outputs, the vbyte= 192vbytes

Assuming the feerate= 100 sat/vbytes

Fee= 100*192
Fee= 19200 satoshi
Fee= 0.000192BTC


Nested segwit
vbyte= Input*93 + output*32 + 10 plus or minus input
For 1 inputs and 1 outputs, the vbyte= 134vbytes

Assuming the feerate= 100 sat/vbytes

Fee= 100*134
Fee= 13400 satoshi
Fee= 0.000134BTC

Segwit (native segwit)
vbyte= Input*68 + output*31 + 10 plus or minus input
For 1 inputs and 1 outputs, the vbyte= 108vbytes

Assuming the feerate= 100 sat/vbytes
Fee= 100*108

Fee= 10800 satoshi
Fee= 0.000108BTC

From the calculation above, it is clear that legacy address have more fee to be paid compared to nested segwit, while native segwit (segwit) have the lowest fee.

3. Fee estimation
Most if not all wallets do not estimate fee rightly, a wallet fee estimation algorithm may not calculate the fee needed to get transaction in a block faster accurately, and it may be accurate at times. But the best to do is to also make use of online fee estimators. There are some that are not recommended, like bitcoinfees.earn.com which do gives wrong estimation, but there are some recommended ones like mempool.observer, mempool.space and jochen-hoenicke.de. Before sending bitcoin, checking the fee using reputed online fee estimators and comparing like two will be good because wallets estimators can over estimates at times in why leading to paying higher fee than usual.

One popular question
I paid higher fee than what I am seeing on blockchain
Normally, the most used blockchain explorer by novice is blockchain.com/explorer which do not display fee in vsize/vbyte but in bytes. You can pay 0.0005BTC fee in vbyte which will only be 0.0003BTC in bytes. This do confuse people thinking that the fee paid is less to what the wallets estimated, but no. It is good to make use of blockchain  explorers that also estimate the fee in vbytes, the most recommended for now is blockchair.com.

https://en.bitcoin.it/wiki/Weight_units
https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch06.asciidoc
Jump to:
© 2020, Bitcointalksearch.org