Network Fee Smoothing

In the GMX v2.2 + v2.3 proposal (Gmx v2.2 + v2.3), there is a proposal to add a network fee pool to help subsidise network costs.

The development work for this is in progress, as there continues to be feedback about the high network costs during times of congestion, would like to propose a temporary solution in the meantime.

Some stats on the network fee costs, taking the month of Dec 2024 as an example, there were a few high volatility days in this month

95% of transactions had a fee of less than 0.001 ETH (~3-4 USD), 5% of transactions had a fee higher than 0.001 ETH.

We propose to increase the network fee when the network is not congested, in order to subsidise fees when the network is congested.

To give an example of the potential network costs before and after this proposed change:

Network Fees Network is not congested Slightly congested Congested
Before 0.00007 ETH (~ 0.25 USD) 0.001 ETH (~3-4 USD) 0.001 ETH to 0.076 ETH (~260 USD)
After 0.00014 ETH (~ 0.5 USD) 0.002 ETH (~6-8 USD) 0.002 ETH to 0.009 ETH (~30 USD)

So the network fee costs are higher when the network is not congested / slightly congested, this builds up a reserve which is used to reduce the network fee cost when the network is congested.

Note that the above is just an example, the actual changes in cost may vary as the logic for the subsidy is optimized, but the main logic would be the same.

This proposal would require a snapshot vote to implement.

8 Likes

As the peak in network fees during blockchain congestion is one of the very few remaining crucial pain points for GMX imho, I’m all in favour of this straightforward solution.

3 Likes

I can see what you want to do I just question the need for it? Like you pointed out it would only be for 5% of transactions. I think people are used to gas fluctuations and just see it as a price for using defi platforms, maybe if the 5% figure was closer to 25% then I could see why you would want to implement it. Or on the other hand some users will end up paying more just by trying to avoid busy periods. Put me right if I am missing something

1 Like

This proposal makes little sense to me. Network contention means demand for block space is high, which leads to high fees to disincentives usage during this time.

Reducing a congested fee from $260 to $30 looks great on paper, but all that will do is allow a few more trades to take place during times of congestion. This will burn down the fee pool extremely quickly, leading to $260 fees.

I personally do not trade during high network fees, I go out of my way to place trades during times of low network fees. To save on costs. If I deemed a trade so important during a higher network fee, I would pay the fee. If I can wait I will wait.

There are other tools available, for example. I have used hyperliquid during times of congestion as a short term hedge, to lock in profits. Then unwind the trade during low congestion. Sure, hyperliquid is not as decentralized, so I have less capital on that platform because I trust it less than GMX.

If this is to be implemented I would really hope there is a way to out-opt. I just see it as something that will be abused. What stops someone from placing lots of small, unimportant trades during the congested time? Is it one per-trader? Or do we bank our own fees on the platform? Trade size isn’t that useful because the volume could be hedged elsewhere just to attack GMX resources.

This idea makes no sense to me, please reconsider.

The real solution here is to use a Arbitrum Orbit L3 to rollup the transactions.

1 Like

Appreciate the critical feedback.

I think the fundamental issue is that peak congestion happens during peak market volatility, often meaning peak opportunity. When volatility hits, traders most want to use the GMX platform.

Facing slightly, or even 10x, higher fees at that point is fine. People are indeed used to gas fluctuations and know it comes with the DeFi territory. But facing 100x to 1000x higher network costs when you’re most eager to trade (or close a trade!), is very offputting.

Regarding your worry about abuse, what is the likelihood of a bad actor paying substantial fees to place lots of small trades during times of congestion just to obstruct the protocol? This could already be done now at a substantial cost. I would be surprised if a gas cost subsidy would suddenly make it viable. But it’s something to consider.

I agree, it is off-putting and I understand that it is a real problem that needs addressing. Fee smoothing by charging 95% of transactions more, so a lucky few can have reduced fees is not the solution.

It’s not possible for the platform to know how long the congestion will last, how much volume will be traded on GMX.
So how can you effectively deploy the strategic fee reserve?
When it runs out are we back to $260 trade fees for everyone… “But I was assured I would always be able to trade at a reasonable cost now I’ve lost money because I couldn’t afford the fees… blah blah blah”

GMX has enough transactions to justify the need for a L3 rollup, trade fees will cover the L2 network fees, even in congestion. It’s not a quick fix, but I don’t pick GMX for the bulk of my capital because a single code audit is enough. You seem to do thing properly, and I like that.

I get it not being able to close a trade sucks, by I’ve used hyperliquid to hedge this situation before. Getting liquidated on GMX because you can’t add more capital… also sucks. Maybe that’s what the strategic fee reserve should be for, depositing collateral to a position close to liquidation. The closer you are to liquidation the bigger the discount.

What about non-trade actions, will they pay more fees as well?
Should Deposit, Withdrawal, Setting Funding-Fees, Claims be exempt from the strategic fee reserve levy?

As for abuse, why does anyone abuse anything? because they can. If a process is open for abuse, it will be abused. If it can be used for an unfair advantage, someone will find it and use it.

1 Like

hi @zeroflaw, thank you for the thoughts on this

So how can you effectively deploy the strategic fee reserve?
When it runs out are we back to $260 trade fees for everyone

you are right that this change will not guarantee that all fees will be subsidized in times of volatility, if the subsidy pool runs out then fees will not be subsidized

a possible logic could be to reduce the network fee discount as the subsidy pool decreases in size, so that there will continue to be some discount

Should Deposit, Withdrawal, Setting Funding-Fees, Claims be exempt from the strategic fee reserve levy?

for this proposal, the above actions would not have a fee discount, it may be possible that someone needs to withdraw from GM to get collateral for a position, but i believe this should be rare

I go out of my way to place trades during times of low network fees. To save on costs. If I deemed a trade so important during a higher network fee, I would pay the fee. If I can wait I will wait.

Fee smoothing by charging 95% of transactions more, so a lucky few can have reduced fees is not the solution.

I get it not being able to close a trade sucks, by I’ve used hyperliquid to hedge this situation before. Getting liquidated on GMX because you can’t add more capital… also sucks

in my view, we should try to balance the needs of all users as much as possible, with the aim to make the trading experience good for majority of users

there are a few considerations for this case:

  • user experience should be as simple as possible, so it would be preferable for a user to not have to go out of their way to place trades during times of lower network fees, or have to use another platform to hedge their position, since this also requires additional capital
  • it would be preferable to not have an increase in the network fee in times or regular operation
  • it would be preferable to not have to pay very high fees during times of volatility

the aim of this proposal is to continue to find a balance between these needs

If this is to be implemented I would really hope there is a way to out-opt. I just see it as something that will be abused. What stops someone from placing lots of small, unimportant trades during the congested time? Is it one per-trader? Or do we bank our own fees on the platform? Trade size isn’t that useful because the volume could be hedged elsewhere just to attack GMX resources.

As for abuse, why does anyone abuse anything? because they can. If a process is open for abuse, it will be abused. If it can be used for an unfair advantage, someone will find it and use it.

the subsidy would be applied by reducing the keeper cost that is charged to users, this is a global variable so it can’t be configured per user

i agree that the main reason for abuse is if someone is able to gain some benefit from it

so the values of the subsidies should be configured such that e.g. the cost of draining the subsidy pool by creating a lot of small orders during times of volatility is still high for the user attempting to do this

i wonder if we can find some middle ground here, because an L3 does come with trade offs as well, e.g. being less composable with other applications on Arbitrum / Avalanche, there may be additional complexities and the need for additional liquidity provider capital for bridging in and out, the other tasks we currently have in progress, e.g. multichain, cross-margin would take up dev resources for the next 6 months or more, it would be quite a while before we have the capacity to work on a solution such as an L3

so if we can find a solution that doesn’t work perfectly in the meantime but leads to a better experience overall for majority of users (in terms of simplifying using GMX, and not having to change behaviours too much due to network fees) i feel it is worth trying to fully evaluate the benefits / drawbacks / effectiveness, and the change is not too difficult to reverse, so we can still revert to not having subsidies if this solution is found to not be effective

it could also be considered that with subsidies this would encourage more trades during times of volatility, which could lead to the subsidy pool being used at a faster rate than expected, the exact change in demand would be difficult to predict, and is something we may only fully know after trying it

perhaps we can also agree on restricting some parameters, e.g. only transactions of 0.00007 ETH (~ 0.25 USD) 0.001 ETH (~3-4 USD) will see an increase in cost to 0.00014 ETH (~ 0.5 USD) 0.002 ETH (~6-8 USD), and beyond 0.002 ETH subsidies would start applying. this restriction would help prevent regular users from being affected too much by this proposal.

these are just my thoughts, and it would still be the community to decide on whether this proposal should be trialed

2 Likes

Thank you for the detailed response.

This will also artificially increase demand on the arbitrum network, increasing fees even further. And then for the next cycle are the non-congested fees 4x, 5x, 6x in order to try and compensate. If I had to spend $1-2 to place a trade, or manage a position, I would simply stop using GMX.

The problem with this solution is you are trying to smooth an exponential curve, to me it just seems unfeasible.

It’s clear I don’t like this solution, but to make it less open for abuse, have you thought about rebating fees after 7 days? That way the fee subsides pool can be distributed to everyone that “needed” to place a trade. The downside of this is the trader needs the “fee capital” to place the trade, and as they also have no idea how long congestion will last or how many trades will be placed, they won’t know what the rebate will be.

Otherwise you add the extra dynamic of when congestion starts, you’ll need to monitor the subsidy pool to make sure you close or open at a discount rate. This will be most beneficial to algorithmic traders as they can calculate the optimal exit / entry.

1 Like

I thought about this some more, and would this will simply discount high-volatility arbitrage which was previously not cost effective between GMX and other platforms, until the fee reserve pool is drained. So actually, wouldn’t be of particular benefit to users, and just allow a select number of individuals to profit?

This is why I delegate my votes, let someone with a better understanding of the situation make an educated vote :wink:

1 Like

If I had to spend $1-2 to place a trade, or manage a position, I would simply stop using GMX.

looking at the current transaction costs, e.g. Arbitrum One Transaction Hash (Txhash) Details | Arbitrum One, during times of normal usage, the cost to place a trade would change from 0.00004797247 ETH (~$0.16) to 0.00009594494 ETH (~$0.32), would this lead you to stop using GMX?

It’s clear I don’t like this solution, but to make it less open for abuse, have you thought about rebating fees after 7 days? That way the fee subsides pool can be distributed to everyone that “needed” to place a trade

our thinking is that the fee pool can be accumulated gradually over time, if it reaches a certain threshold, e.g. 50 ETH then the network fee would be automatically re-configured so that it does not continue to accumulate past that point, so there would not be any extra network fee charge for users at that point

I thought about this some more, and would this will simply discount high-volatility arbitrage which was previously not cost effective between GMX and other platforms, until the fee reserve pool is drained. So actually, wouldn’t be of particular benefit to users, and just allow a select number of individuals to profit?

i believe that arbitrage transactions should be quite efficient, so it should not make up the bulk of the transactions, GMX prices are oracle based, so there isn’t much arbitrage compared to e.g. a Uniswap pool, the main arbitrage would be to balance the long / short open interest, which is in my view also useful to incentivise to minimize liquidity provider exposure and keep price impact low for all traders

No, it’s not unusual to pay $0.60 to $0.80 in fees for certain transactions. I would aim for a sub $0.30 if I was say simply settling a funding fee. I actively try to limit my network expenses, even if means using hyperliquid or another platform. Would it be convenient if I didn’t have to do this, of course.
Yes, if all activities of GMX were to have a massive increase in network cost, I would stop using the platform. Knowing that increase is because of distributing fee costs, which is essentially socialism on a capitalist platform, would make be run for the hills.

This isn’t a unique problem to GMX, sometimes I put unused capital in AAVE, then, one time network congestion went sky high, and I wanted to use that capital. Unfortunately, it wasn’t cost effective to withdraw, and there was no socialism available to reduce my fees, so I did nothing. Do I no longer use AAVE? No, I still sometimes keep idle funds in AAVE because I can’t plan for every random event thats going to occur.

This doesn’t really address what I was trying to say. It was more about trying to stop additional demand and abuse.

I know for a fact that prices can deviate on say hyperliquid compared to GMX where they trade closer to the spot prices. A bot is going to consider the network fee before placing a trade, if its getting a discount then it makes more profit than it otherwise would have. At the expense of everyone else on the platform.

This proposal is problematic because the intentions are good, improve trader engagement with a more consistent experience. Increasing fee revenues for GMX stakers. It should be a no-brainer win-win, except the solution is unfeasible and the distribution can’t be directed to its intended audience.

1 Like
  • Tiers would be supported so that the percentage subsidized will vary depending on the trade size to prevent gaming or intentional wastage of this subsidy

Let’s subside the rich, the ones that need it least. Those that place $200k trades get more subsidy than those that place $2k trades.

You can’t even use an average trade size, because thats open to abuse, during non-congested times, nothing stops someone spamming $2 trades to keep the average artificially low. Just to continue to spam to burn the subsidy pool.

Technically issues:

  • Failed transactions, who gets the refund? the user or subsidy vault? (attack vector?)
  • Not enough gas, what if there’s no longer enough ETH in the subsidy vault or the transaction no longer qualifies for enough of a discount.
  • Pulling ETH out of the value and replacing unused ETH, will also use more gas on every transaction.
  • How do you even activate it in the contract? a call to " eth_gasPrice"? every time, that also costs more gas.
1 Like

This proposal is problematic because the intentions are good, improve trader engagement with a more consistent experience. Increasing fee revenues for GMX stakers. It should be a no-brainer win-win, except the solution is unfeasible and the distribution can’t be directed to its intended audience.

i believe we’ve discussed both the pros and cons of this solution, i think that it is very difficult to determine whether the solution would work or not without allowing for one attempt to measure its effectiveness in practice

i’m not strongly advocating that this solution would definitely work successfully, but i feel that there is a good chance that it improves the user experience overall, that’s just my personal opinion, and as mentioned the community would need the weigh the pros and cons and chance of success to decide whether this is worth trying

if it is a change that is very difficult to reverse, then i would agree that a very high confidence is needed to determine its effectiveness, but as mentioned this isn’t a change that is too difficult to reverse, and the community can choose to do so if they feel it is not effective, contributors will also continue gathering feedback if this change is implemented, and if there is a lot of negative feedback on it, we would in the same way propose for it to be reversed

2 Likes

Let’s subside the rich, the ones that need it least. Those that place $200k trades get more subsidy than those that place $2k trades.

the actual subsidy may cap out at around $2k-$10k trades, it would depend on the voting by the community to approve but in my view i don’t think the threshold should be set to be much larger than this range for the max subsidy, some tiering is proposed because that would be an effective way to prevent gaming, it would again be a balance of considerations, we want to improve the user experience but we also want to prevent intentional wastage

  • Failed transactions, who gets the refund? the user or subsidy vault? (attack vector?)

the refund would only be for successfully executed orders, it is similarly a question of balance here, some user’s orders may not be executed, and so there would not be a refund, but this is also necessary to prevent gaming

  • Not enough gas, what if there’s no longer enough ETH in the subsidy vault or the transaction no longer qualifies for enough of a discount.

if there is not enough ETH then there would not be a subsidy

  • Pulling ETH out of the value and replacing unused ETH, will also use more gas on every transaction.
  • How do you even activate it in the contract? a call to " eth_gasPrice"? every time, that also costs more gas.

the additional logic would cost around 10k gas which would be about 0.3% of the gas usage, so a txn that would cost $0.2 would cost $0.2006 with the additional logic, a txn that would cost $1, would cost $1.003 with the additional logic

1 Like

if it is something that is easily reversable, couldnt we trail it and sell it as a promo maybe with different with tiers based on, to encourage trading. just a thought

I’m afraid I don’t follow?

cant remember precisely, but basically if it can be done on a temporary give it a go (I have had a stroke so sometimes prattle on lol)

1 Like

I’m for this. Simply put you want to compete and having fees rocket due to congestion doesn’t make sense.

yes it can be on a trial basis, we can include that info in the vote, to revert to the non-subsidised logic if there is a large amount of negative feedback on the change

3 Likes