Pages:
Author

Topic: Who determines bitcoin transaction fees? (Read 342 times)

legendary
Activity: 1624
Merit: 2481
August 13, 2021, 09:18:35 AM
#21
For example, if the sender wants to increase the likelihood of miners including the senders transaction into the candidate block, then the sender can set a higher fee to compensate the miner? If this is the case, then how come most of the common exchanges have a fixed bitcoin withdrawal fee (usually around 0.0004 bitcoin or around $20), which I am unable to change?

Yes, the sender decides the fee.

Exchanges have a fixed fee which is higher than the actual transaction fee (keep in mind, they usually batch transaction and therefore pay less per withdrawal transaction than when sending them all one by one) because of multiple reasons.
First, you are not just paying for a single transaction. Your deposit transaction has to be merged with others and moved to the cold wallet. The hot wallet has to be topped up from the cold wallet regularly and in the end the actual withdrawal transaction has a fee.

Further, you are paying for the "work" behind these transaction. You can't just calculate the transaction fee and say that's what it should cost. They have algorithms checking stuff, doing sanity checks, making sure there are no bugs, vulnerabilities etc.
This all costs money (development costs, maintenance, energy, servers, etc..) which is priced into the withdrawal fees.
legendary
Activity: 1288
Merit: 1081
Goodnight, o_e_l_e_o 🌹
August 10, 2021, 04:13:54 PM
#20
1) Bitcoin base layer - Who determines the bitcoin transaction fees? Is it the sender? For example, if the sender wants to increase the likelihood of miners including the senders transaction into the candidate block, then the sender can set a higher fee to compensate the miner? If this is the case, then how come most of the common exchanges have a fixed bitcoin withdrawal fee (usually around 0.0004 bitcoin or around $20), which I am unable to change?
For the question of fixed higher fee by exchanges, let's see these two factors and/or scenarios.
1. Can we see exchanges as intermediaries between us and the blockchain chain? If this is true, it therefore means that there is what is supposed to be called "exchange fee" (reward of the exchanges). Then, there is a compulsory "transaction fee" from the blockchain. The former is controlled by the exchange, while the later is not controlled by them directly.  So, they attain fixed fee by always varying their exchange fee with respect to transaction fees, which is always shown to us as one and a fixed fee called Transaction fee.
2. Also, maybe those transaction fees are set that high and fixed to avoid massive withdrawals from the centralised exchanges at a particular time. The high fee technically reduces the amount of withdrawals placed at a time and hence give them time for cool manipulations.
legendary
Activity: 2268
Merit: 18711
August 05, 2021, 10:02:26 AM
#19
Currently for the average transaction fee size per byte is around 220 Sats or about 0.0000022 BTC per byte.
The average transaction size may be around 220 vbytes, but a fee of 220 sats per byte or per vbyte is a gross overpayment. Currently 1 sat/vbyte is enough for the next block.

The average transaction with a faster transaction capacity, the bitcoin transaction fee is around 92,000 Sats or 0.00092 BTC.
This statement is meaningless. Fees must be measured in sats per vbyte and not just in a flat rate. 92,000 sats could be a good fee, could be a huge overpayment, or could be so small as to not even allow the transaction to be broadcast, depending on the size of the transaction in question.
legendary
Activity: 1946
Merit: 1427
August 05, 2021, 08:34:35 AM
#18
It could also be because said exchanges haven't designed an internal mechanism to adjust the fee of a user's transaction in the first place and just assigned a static constant for everybody regardless of network conditions.
There is absolutely no valid technical reason why binance would not be able to efficiently batch their transactions and charge their users a fair fee instead of the standard 25-30$ they are charging now given how much money they make, so it is really deliberate IMO, and very shameful.

I suspect this is also the reason why they don't really want to implement lightning deposits/withdrawals...
They make wayyy too much money off of deposits and withdrawals, so they rather attract the least attention possible to make people oblivious to the fact that they're actually completely getting ripped off. Now if they started an offensive implementing lightning and THEN charging users 20-30$ withdrawal fees with no apparent reason.. now that would probably cause some backlash.

I'm almost certain that it is done for more profits and to a certain extent, helping the exchange to offset the costs of moving the funds within their own addresses as well.
Right now the average for 1 block is what, ~10 vbyte per sat? They're still charging 21$ per withdrawal, so their fees really aren't dynamic at all.

50000 satoshis, let's say 588 WU, though they batch transactions so really it should be roughly a quarter for an individual withdrawal, gives us 340 sats per vbyte.
That's absolutely ridiculous given the current fees, even to confirm in 1 block.
copper member
Activity: 1652
Merit: 1901
Amazon Prime Member #7
August 02, 2021, 10:21:53 PM
#17
Exchanges charge withdrawal fees as a means to make money, and to offset the actual amount of expenses they incur in processing a withdrawal. Exchanges charge a fixed fee to process withdrawals because they have dominant pricing power.

It could also be because said exchanges haven't designed an internal mechanism to adjust the fee of a user's transaction in the first place and just assigned a static constant for everybody regardless of network conditions.
That is possible. I think some exchange executives might argue that having a fixed withdrawal fee provides for an improved customer experience, even if this means customers pay a higher fee -- for example, a customer will know how much it will cost him to withdraw prior to depositing.

I would also point out that automating anything involving servers that contain your hot wallet is risky. There is the potential your server will be tricked into paying enormously high fees. It also means your server will have to receive information directly from the internet. I imagine that major exchanges use servers that only connect to other servers on their local intranet that is used to create/sign withdrawal transactions. Obviously, eventually, the server will be connected to a server that is directly connected to the internet but compromising a chain of servers whose interactions are limited is more difficult than compromising a server directly connected to the internet. This is obviously not the same as having a cold wallet, but is also more secure than having your private keys in an unencrypted state in RAM on a computer directly connected to the internet.
legendary
Activity: 1512
Merit: 4795
Leading Crypto Sports Betting & Casino Platform
August 02, 2021, 11:53:55 AM
#16
---snipped---
ranochigo and o_e_l_e_o and many other people have answered you correctly. There is vbyte each transaction contains depending on the transaction inputs and outputs. To learn more about bitcoin transaction, you can check this topic that will be helpful. If you know how to check the mempool obeserver like mempool.space or https://jochen-hoenicke.de/queue/#0,8h, your question answered.
legendary
Activity: 2268
Merit: 18711
August 02, 2021, 09:34:17 AM
#15
What I meant was the average user is not going to know anything about the mempool (or how to even access it). So how do they know what fee they should set?
Easy answer: Go to mempool.space and read off the low, medium, or high priority fee, choose which one you want, and set your fee to match.

Harder answer: Go to https://jochen-hoenicke.de/queue/#0,8h, look at the colored bands representing the total size of unconfirmed transactions at each fee rate. Knowing that each block takes 1 vMB of transactions off the top of the graph, and seeing how quickly the mempool is emptying or filling, decide on where exactly you would like to place your transaction and pay the corresponding fee.
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
August 02, 2021, 05:23:15 AM
#14
What I meant was the average user is not going to know anything about the mempool (or how to even access it). So how do they know what fee they should set? Well if we put ourselves in their shoes, they can set a really really low fee. 30 minutes later it's still not filled. They'll increase it slightly. 20 minutes later still not filled. It becomes like guess work which is not ideal. And what's more confusing is, well maybe 0.0005 btc may be filled quickly today but tomorrow it won't and without knowledge of mempool (or how to even access it), they're back at square one at trying to guess the correct fee or risk overpaying.

This doesn't seem like something that would encourage mass adoption from the average user.
Then unfortunately there is nothing to improve on.

Most wallet have an implementation of floating fees, where the wallet is able to suggest the optimal fee rates, based on the desired confirmation timeframe given by the user. The algorithm might not be the most accurate in predicting the actual fees required but is accurate enough such that you won't overpay too much and still get an almost guaranteed confirmation within the timeframe specified.

Some wallets also gives the user a rough estimation of the mempool to help them estimate the optimal fee rates to use.
member
Activity: 159
Merit: 72
August 02, 2021, 05:19:13 AM
#13
For on-chain transaction, probably. You would want to look at the state of the mempool instead, which reflects the fee markets in real time, though caveat being that transactions do not necessarily have to exist in the mempool before a block.
No. The process of determining the correct fee is very straightforward.
What I meant was the average user is not going to know anything about the mempool (or how to even access it). So how do they know what fee they should set? Well if we put ourselves in their shoes, they can set a really really low fee. 30 minutes later it's still not filled. They'll increase it slightly. 20 minutes later still not filled. It becomes like guess work which is not ideal. And what's more confusing is, well maybe 0.0005 btc may be filled quickly today but tomorrow it won't and without knowledge of mempool (or how to even access it), they're back at square one at trying to guess the correct fee or risk overpaying.

This doesn't seem like something that would encourage mass adoption from the average user.
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
August 02, 2021, 03:34:40 AM
#12
It could also be because said exchanges haven't designed an internal mechanism to adjust the fee of a user's transaction in the first place and just assigned a static constant for everybody regardless of network conditions.
Tracking the fee market and the fee rate is quite a simple thing to do and helps their user offset the costs of their transaction as well.

I'm almost certain that it is done for more profits and to a certain extent, helping the exchange to offset the costs of moving the funds within their own addresses as well.
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
August 02, 2021, 03:24:44 AM
#11
Exchanges charge withdrawal fees as a means to make money, and to offset the actual amount of expenses they incur in processing a withdrawal. Exchanges charge a fixed fee to process withdrawals because they have dominant pricing power.

It could also be because said exchanges haven't designed an internal mechanism to adjust the fee of a user's transaction in the first place and just assigned a static constant for everybody regardless of network conditions.
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
August 02, 2021, 03:21:44 AM
#10
Seems like a complex process for determining fees, with "negotiating" between the sender the network. As a casual user, figuring out how much I should set as the fee before every transaction seems a bit unwieldy. I guess one way to do it is just to look at the recent transactions in the most recent block and see roughly what the minimum fee is.
For on-chain transaction, probably. You would want to look at the state of the mempool instead, which reflects the fee markets in real time, though caveat being that transactions do not necessarily have to exist in the mempool before a block.

The minimum fees is always fixed, the minimum fee to enter the mempool and have a reasonable time can vary according to the current mempool, not necessarily on the trend based on the past few blocks.
Is this potentially something which might hinder mass adoption? And is there any upcoming updates which might streamline this process a bit more? Or is lightning network meant to resolve this?
No. The process of determining the correct fee is very straightforward.

The thing hindering mass adoption is the capacity of it, which is a direct causation to the higher fees. The scarcity of the block space or capacity results in a greater competition for it on the network.
copper member
Activity: 821
Merit: 1992
August 01, 2021, 11:24:36 PM
#9
Quote
Is this potentially something which might hinder mass adoption?
Yes, that's one of the reasons why people use altcoins: because of transaction fees. Another reason is that altcoins are easier to mine. When the problem with fees will be solved and when all solo miners will get their rewards more often, I guess many people will abandon altcoins and go back to Bitcoin.

Quote
And is there any upcoming updates which might streamline this process a bit more?
Yes, taproot and Schnorr signatures will make Lightning Network transactions cheaper. Also, there are plans to allow joining transactions, for example in MimbleWimble protocol (currently on Litecoin, but I expect it will be activated on Bitcoin, but maybe later or maybe without hiding amounts). There are also plans for making mining more decentralized, for example Stratum v2.

Quote
Or is lightning network meant to resolve this?
Lightning Network is one of the solution, but it is not yet complete, for example because you still cannot receive LN coins without moving on-chain coins, also because on-chain fees affect LN users.
member
Activity: 159
Merit: 72
August 01, 2021, 10:46:57 PM
#8
Seems like a complex process for determining fees, with "negotiating" between the sender the network. As a casual user, figuring out how much I should set as the fee before every transaction seems a bit unwieldy. I guess one way to do it is just to look at the recent transactions in the most recent block and see roughly what the minimum fee is.

Is this potentially something which might hinder mass adoption? And is there any upcoming updates which might streamline this process a bit more? Or is lightning network meant to resolve this?
legendary
Activity: 1876
Merit: 3132
August 01, 2021, 10:36:15 AM
#7
And how are these transaction fees determined within the lightning network?

All implementations use the following formula.

Code:
base fee + amount * (fee rate/1000000)

So, the bigger your payment is, the more you are going to pay. By default, the base fee is set to 1 satoshi and the fee rate to 1. Those two parameters can be different for each channel on both sides. Let's take a look at your example again.

A -> B -> C -> D

Even though B could have different fee settings for their channel with A and C, B would charge A only for using the outgoing channel. The same goes for C. B would pay the fee calculated from the settings set by C in their channel with D.
legendary
Activity: 2912
Merit: 6403
Blackjack.fun
August 01, 2021, 08:49:39 AM
#6
Exchange have lots of other transaction which happen "behind the scenes" which you don't see, but they need to pay for.
~

This! People tend to forget, especially in the never-ending discussions about the coffee cup buy with BTC that for the merchant to actually use those coins it would mean he would have to pay at least one tx also, even if it will be a consolidating one. On top of what you mentioned there is also the human resources cost, with a lot of users there will be a lot of newbies who have problems with depositing and withdrawing, you need extra staff for support, you need also to pay the guys that actually check and validate the internal movement of all those coins, at the end of the costs can easily go way beyond that small tx fee.   

Of course, right now it's no excuse for some of the fees exchanges are using that have also not been adjusted with the price, like Binance's 0.0005 fee that really needs another 50% adjustment , 20$ is close to robbery, they make more from that than from actually trading fees.

legendary
Activity: 2268
Merit: 18711
August 01, 2021, 06:09:14 AM
#5
If this is the case, then how come most of the common exchanges have a fixed bitcoin withdrawal fee (usually around 0.0004 bitcoin or around $20), which I am unable to change?
Just to expand on this point which hasn't been mentioned in the answers above:

Exchange have lots of other transaction which happen "behind the scenes" which you don't see, but they need to pay for. It's not as simple as just paying for a single transaction when you want to withdraw. Any coins you deposit are consolidated with coins from lots of other users in to a central hot wallet. Coins from this hot wallet will be moved back and forth to cold storage as necessary, or moved to separate hot wallets, or further consolidated, and so on. Then, when you want to withdraw, coins will be taken from this central hot wallet in a batched transaction to many users. So for each withdrawal transaction you make, there may be 3 or 4 (or perhaps many more than that) other transactions which have had to take place first. Most exchanges price this in to their withdrawal fees.

Having said all that, the withdrawal fees for almost all centralized exchanges are ridiculous and are pure profiteering. Most exchanges vastly overpay their transaction fees to keep their users happy, but even then, probably about 80-90% of the withdrawal fee you pay is just profit going in to their pockets.
legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
August 01, 2021, 04:03:49 AM
#4
1) Bitcoin base layer - Who determines the bitcoin transaction fees? Is it the sender? For example, if the sender wants to increase the likelihood of miners including the senders transaction into the candidate block, then the sender can set a higher fee to compensate the miner?

Yes, it's the sender. But take Bitcoin node usually won't broadcast transaction with fee lower than 1 sat/vbyte, so in practice sender can't set fee lower than 1 sat/vbyte.

If this is the case, then how come most of the common exchanges have a fixed bitcoin withdrawal fee (usually around 0.0004 bitcoin or around $20), which I am unable to change?

Usually it's because exchange take profit from withdraw exchange. Only small portion of the exchange withdraw fee goes to bitcoin transaction fee, but usually high enough to ensure fast transaction confirmation.

2) Lightning network - If A wants to send to D and it appears that the only way to construct a route from A to D is if A goes through the payment channels A -> B -> C -> D, then does that mean in order for B and C to act as "intermediaries", they must be compensated by transaction fees?

No, B and C can choose to route the transaction without any fee.

And if so, does that mean if we have A -> B -> C -> ... -> Z, then transaction fees would be really higher, potentially higher than if A sent directly to Z via Bitcoin base layer?

Theoretically it's possible, but most LN wallet will choose route with lowest you and will warn you if the routing fee is higher than specific threshold.

And how are these transaction fees determined within the lightning network?

It depends on each node.
copper member
Activity: 1652
Merit: 1901
Amazon Prime Member #7
1) Bitcoin base layer - Who determines the bitcoin transaction fees? Is it the sender? For example, if the sender wants to increase the likelihood of miners including the senders transaction into the candidate block, then the sender can set a higher fee to compensate the miner? If this is the case, then how come most of the common exchanges have a fixed bitcoin withdrawal fee (usually around 0.0004 bitcoin or around $20), which I am unable to change?
The entity signing the transaction gets to set the transaction fee, although as a practical matter, the terms of a transaction are negotiated between the bitcoin buyer (receiver) and bitcoin seller (sender); the terms of the transaction would include the transaction fee, and whether or not the fee is deducted from the amount the receiver would otherwise receive.

Exchanges charge withdrawal fees as a means to make money, and to offset the actual amount of expenses they incur in processing a withdrawal. Exchanges charge a fixed fee to process withdrawals because they have dominant pricing power.

2) Lightning network - If A wants to send to D and it appears that the only way to construct a route from A to D is if A goes through the payment channels A -> B -> C -> D, then does that mean in order for B and C to act as "intermediaries", they must be compensated by transaction fees? And if so, does that mean if we have A -> B -> C -> ... -> Z, then transaction fees would be really higher, potentially higher than if A sent directly to Z via Bitcoin base layer? And how are these transaction fees determined within the lightning network?
With LN transactions, every intermediary will potentially receive a transaction fee at a rate they set. In theory, a LN transaction with many intermediaries could have a higher fee than an on-chain transaction, but this would be very unlikely based on the current fee market for LN transactions.

LN fees are negotiated between transaction participants. Nodes can set whatever fees they wish to set. The caveat is that if a node operator sets their transaction fees too high, few (or possibly no) transactions will be routed via his channels.
legendary
Activity: 4004
Merit: 1250
Owner at AltQuick.com
1) Bitcoin base layer - Who determines the bitcoin transaction fees? Is it the sender? For example, if the sender wants to increase the likelihood of miners including the senders transaction into the candidate block, then the sender can set a higher fee to compensate the miner?

The sender.  It's like buying bus tickets and each bus driver gets to choose who gets on... usually, the highest payer gets the seat.

If this is the case, then how come most of the common exchanges have a fixed bitcoin withdrawal fee (usually around 0.0004 bitcoin or around $20), which I am unable to change?

I can answer this.  

Exchanges often charge a fixed fee because it causes the customer less unexpected long waits due to miner fees and it's also most profitable for the exchange.

Lots of customers want their coins on the very next block because they are arb trading between exchanges and if their transfer takes over 11 minutes... it's the end of the world.

It's better to charge their ass off and send it fast.  Reduces customer support, reduces pissed off customers, reduces confused customers, makes it more expensive for people just bouncing coins around and make the exchange money.
Pages:
Jump to: