Fair Min Fees CIP

I have created a new Cardano Improvement Proposal (CIP) called Fair Min Fees.
The text of the CIP is below.
Please read through it and share your thoughts.
With the increase in the price of ADA this proposal is more urgently needed than ever.
Thanks.
Shawn

Simple Summary

Create a more fair marketplace for stakepools by reducing the minimum fixed pool fee and adding a minimum variable pool fee.

Abstract

The current minimum fixed pool fee places a large and unfair burden on delegators to pools with smaller amounts of stake.
This incentivizes people to delegate to pools with higher stake causing centralization and creating an unequal playing field for stakepool operators.
Reducing the minimum fixed pool fee and adding a minimum variable pool fee reduces the imbalance between stakepools with less or more stake to a more reasonable range that allows for more fair competition between stakepools and more fair rewards for delegators to stakepools with less stake.

Motivation

Reducing the minimum fixed pool fee and adding a minimum variable pool fee creates a more fair marketplace for all stakepool operators, gives delegators to pools with less stake more fair rewards, and increases decentralization, which is a goal of Cardano.

Specification

| Name of the Parameter   | New Parameter (Y/N)  | Deleted Parameter (Y/N) | Proposed Value   | Summary Rationale for Change |
|-----------------------  |--------------------  |------------------------ |---------------   | ---------------------------- |
| minPoolCost             | N                    | N                       | 50000000         | See Rationale section.       |
|-----------------------  |--------------------  |------------------------ |---------------   | ---------------------------- |
| minPoolRate             | Y                    | N                       | .015             | See Rationale section.       |
|-----------------------  |--------------------  |------------------------ |---------------   | ---------------------------- |

Rationale

The PHP code in minfees.php in the pull request allows exploration of the effects of choosing different values for the minimum fixed and variable fees.
Running minfees without any arguments gives the usage message as below.

php minfees.php

Usage: php minfees.php <min_fixed_fee> <min_rate_fee> <pledge>
  min_fixed_fee:  Minimum fixed fee in ADA.
               An integer greater than or equal to 0.
  min_rate_fee: Minimum rate fee in decimal. Example: 1.5% = .015
                    A real number greater than or equal to 0.
  pledge: Optional pledge amount in ADA. Defaults to 100000
                    A real number greater than or equal to 0.

Running minfees with the proposed values gives the following comparison of current and proposed pool operator and staker results at various pool stake levels.

php minfees.php 50 .015 100000

Reserve: 13b
Total stake: 32b
Tx fees: 0
Rewards available in epoch: 31.2m
Pool saturation: 64m
Pledge: 100k
Staker Delegation: 100k
Current Fixed Fee: 340
Current Rate: 0%
New Fixed Fee: 50
New Rate: 1.5%

                +---------- Current ----------+ +-------- Proposed ---------+
Pool    Total   Pool    Staker  Staker  Current Pool    Staker  Staker  New
Stake   Rewards Cur Fee Cur Fee Cur Rew Fee %   New Fee New Fee New Rew Fee %
2m      1501    340     17      58.1    22.7%   71.8    3.6     71.5    4.8%
5m      3752    340     6.8     68.2    9.1%    105.5   2.1     72.9    2.8%
10m     7503    340     3.4     71.6    4.5%    161.8   1.6     73.4    2.2%
20m     15007   340     1.7     73.3    2.3%    274.4   1.4     73.7    1.8%
30m     22511   340     1.1     73.9    1.5%    386.9   1.3     73.7    1.7%
64m     48023   340     0.5     74.5    0.7%    769.6   1.2     73.8    1.6%

Definitions:
Pool Stake - Total stake delegated to pool.
Total Rewards - Total rewards generated by the pool in one epoch.
Pool Cur Fee - The total amount of fees taken by the pool with current parameters.
Staker Cur Fee - The amount of fees paid by a staker who delegates 100k ADA with currarameters.
Staker Cur Rew - The amount of rewards received by a staker who delegates 100k ADA with currarameters.
Current Fee % - The percentage of rewards taken by the pool as fees with currarameters.
Pool New Fee - The total amount of fees taken by the pool with proposed parameters.
Staker New Fee - The amount of fees paid by a staker who delegates 100k ADA with proposed parameters.
Staker New Rew - The amount of rewards received by a staker who delegates 100k ADA with proposed parameters.
New Fee % - The percentage of rewards taken by the pool as fees with proposed parameters.
Note: All amounts other than %s are in ADA.

The table above shows that currently a delegator staking 100k ADA to a stakepool with 2m ADA total delegation to the pool is paying an exorbitant 22.7% in fees while the same delegator staking with a fully saturated pool would only pay 0.7% in fees.
This is a substantial and unfair advantage that large pools have in the stakepool marketplace.
This is a strong incentive to centralize stake to fewer larger pools which reduces the resiliency of the network.

The proposed minimum fees bring this imbalance into a more reasonable range of 1.6% to 4.8%.
It is much more likely that a small stakepool with other advantages or selling points would be able to convince a delegator to accept about 2 less ADA in rewards per epoch for their 100k delegation than about 17 ADA as in the current case.
This is particularly true as the price of ADA increases.
At current price of $0.90 USD, a delegator staking 100k ADA is giving up over $1000 USD per year by delegating to a small pool!
This does not even include the amount lost by comounding rewards being staked over the year.

16.5 ADA/epoch * 73 epochs/year = 1204.5 ADA/year
1204.5 ADA/year * $0.90 USD/ADA = $1084.05 USD/year

With proposed parameters the same delegator would only be giving up about $150 USD per year to support a small pool.

2.3 ADA/epoch * 73 epochs/year = 167.9 ADA/year
167.9 ADA/year * $0.90 USD/ADA = $151.11 USD/year

The calculations below show that given the price increase in ADA compared to when the protocol parameters were first set, we can maintain viable funding for stakepool operators with the proposed parameter changes.

Annual pool operator funding given initial parameters:
340 ADA/epoch * $0.08 USD/ADA = $27.20 USD/epoch
$27.20 USD/epoch * 73 epochs/year = $1985.60 USD/year

Annual pool operator funding given proposed parameters for stakepool with 2 million ADA delegation:
71.8 ADA/epoch * $0.90 USD/ADA = $64.62 USD/epoch
$64.62 USD/epoch * 73 epochs/year = $4717.26 USD/year

Annual pool operator funding given proposed parameters for fully saturated stakepool:
769.6 ADA/epoch * $0.90 USD/ADA = $692.64 USD/epoch
$692.64 USD/epoch * 73 epochs/year = $50,562.72 USD/year

In summary, the proposed parameter changes would create a more fair marketplace for stakepools, provide more fair rewards for delegators to smaller pools and would lower incentives for centralization providing a more resilient network.

Backward Compatibility

There are 2 ways to handle the existing pool certificates with minimum variable pool fee less than the proposed value:

  1. These pool certificates would be treated as if they had the new mimimum variable pool fee.
  2. These pool certificates would be invaalid and pool operators would be required to create new certificates with valid values.
    If option 1 is possible, it would provide a better user experience for both stakepool operators and delegators and would cause less disruption to the network.

Test Cases

See the minfees.php code to test different potential values of the parameters.

Implementations

This would require new code to be written in the cardano-node to check the provided variable rate when creating pool certificates to make sure it meets the new requirements.

If backward compatibility option 1 is chosen it would require some new code in the cardano-node to treat the below minimum rate as the minimum rate.

23 Likes

Hi Shawn! This is a great CIP, and it definitely would help small pools. However, I wonder why there should be a min cost (minPoolCost) at all. The min cost is the only parameter that makes delegator rewards unfair for small pools. Shouldn’t an operator be able to decide their own operating costs (even zero if they want to take the risk)? Is there a reason for having a min cost that I am missing?

1 Like

The protocol is designed to view pools with 0 fee costs to seem more profitable (assuming other pool parameters and stake are same), even if marginally. Not having a minimum pool fee at all would mean that we circle right down to 0% pools dominating the network, something that was seen in ITN era, making running infrastructure on decent machines almost impossible from competitiveness point of view.

6 Likes

If its done at node level, its simply a matter of time before someone uses a modified codebase to not use that restriction. I suppose you meant it should be enforced at ledger level?

While I am not a fan of pools operating at very low fees, I dont think that would be a justifiable action against pools that are not up to date with implementation (IF it gets implemented), in case of which option 1 would sounds the best do-able option indeed for now.

1 Like

Hi Tobias!
Thanks for taking a look.
In general I agree with you and think that it would be better to have only a minimum variable fee but I have heard that the IOG game theorists and researchers had good
reasons for setting a min fixed fee post-ITN.
So I thought it would be better to make a meaninful step in the right direction without dismissing that completely.

2 Likes

I applaud the effort Shawn and appreciate your thoughtful contributions to the community.

I tend to side with Tobias on this one in that we should eliminate minPoolCost.

I understand the concerns that this could further encourage a race to the bottom from an infrastructure standpoint which could diminish the capability of the network. However, I don’t think that is a valid argument as regardless of income, every operator will tend to minimize their costs over time in an effort to increase their rewards. The hardware will asymptotically approach the minimum cost implementation to successfully mint blocks and no more regardless of how much we pay operators.

A minVariableFee might be a better way to strike a balance of encouraging better infrastructure, but not penalizing small pools.

3 Likes

Great idea thank you

With growth of ADA price statement of no profitability for small pools should disappear. Especially when saturation goes 32M. + new comers are delegating to Medium size pools. IOHK supporting small pools with delegations of their ADA. Change in incentive model can harm IMO. Disclaimer - I am an ADA delegator. I would propose to wait for the saturation parameter to go down to 32M and then check the situation again.

Good one! with my ADA i am delegating maybe it will make more sense to take part of the stake and create an swarm of 0% pools. If i get the comment right

I tend to be attracted to not keeping a minimum fee in place.
On the other hand I believe that this could go against this proposal which seems to be to make the delegation towards small pools attractive.
I believe that in that sense, the larger pools would keep an advantage to attract new delegates in the sense that the younger pools may need a fee to get into their expenses while the more established pools would adjust their fees to 0% having already stable earnings to cover operating costs.
What do you think about this?

The protocol does not “view” anything. Wallets rank pools and determine which ones are good and which ones are bad. The protocol just manages incentives which are currently rigged against small pools. The min pool cost is the parameter that does this. If you make only one block as a small pool your 340 ADA min cost will eat up your total pool’s rewards and your delegators will make less. Moreover, there will always be a race to the bottom. Introducing minimums only raises the bottom. This is evident as most pools currently operate with the min cost of 340 ADA to stay competitive. Min fee pools will always exist. I believe in a free and fair market and I believe that Cardano should exemplify that as well. But right now it is not fair and having any min cost is unfair. If you want to stop 0 fee pools while being fair, we should implement a minimum margin as suggested in this CIP (except with no min cost). 1-2% is reasonable. It is also important to realize that once Goguen is launched, many pools may use smart contracts to competely negate the min cost anyway.

3 Likes

I thought our discussion was about option 1 :slight_smile: , I have always agreed that option 1 is the better choice (min margin over min fixed fee)

1 Like

Hi @bicep_pool
Thanks for sharing your perspective on this.
I think that it will be very difficult for new pools and pools with less than 5 million ADA staked to attract new delegators with the current minimum fixed fee.
With a lower fixed fee and a higher variable fee you would be able to attract more delegators, make more blocks, and be able to cover pool costs more easily.

3 Likes

Like Shawnim mentioned this would give you a fairer change to attract delegators. With no delegators you would just end up paying for the servers yourself with your own rewards which in the long run does not make much sense. In that case you better just delegate to another pool. So yes, in the short term this would definitely give you less rewards but in the long run this could help you attract more delegators and make the pool profitable without you having to finance everything with your own rewards.
I really like this CIP.

2 Likes

I agree with rdlrt’s point “not having a minimum pool fee at all would mean that we circle right down to 0% pools dominating the network, something that was seen in ITN era, making running infrastructure on decent machines almost impossible from competitiveness point of view.”

It would be interesting to poll this among a large sample of SPOs.

My gut instinct is two things would happen off if this was implemented:

  1. A lot of independent pools would close if the minimum fixed cost was removed.

  2. More pool splitting by large pools to create mirror 0 fee pools to retain their delegators.

1 Like

I’m a bit confused as to why there should be either a minimum fixed or variable fee. Why not let the market decide where to draw the line? If an operator wants to have a 300 ADA fixed fee and 0% variable, then let them. If they want to do a 0 ADA fixed fee and a 3% variable then let them do that. Having a minimum fixed fee is obviously an issue because the relative price of ADA isn’t static. Meanwhile, having a minimum variable fee still doesn’t guarantee that operational costs will be covered for small pools.

The race to 0% as seen on the ITN is only temporary and isn’t sustainable in the long term. If a pool operator wants to operate at a loss, that’s their prerogative. It’s conceptually no different than spending that money on a more traditional form of advertising.

To be clear this CIP does not remove the minimum fixed fee.
It reduces it from 340 ADA to 50 ADA which given the price increase is actually more in USD terms than when the 340 minimum was introduced.

1 Like

The problem with no minimum fees is that players with deep pockets (exchanges, competing blockchains, others with ill intent) could run 0% pools at a loss until all of the real SPOs are driven out of business. This makes the network less stable and less secure.
I believe my proposal is a good balance between the competing factors mentioned in this discussion.

This seems more like a hypothetical to me (don’t get me wrong, I can see how players with deep pockets could drive out competition, but not in the way you imply and I don’t think that a minimum fee would really save smaller players). The big players in the space can already go to 0% but don’t and have some of the highest fees on the network (eToro, Binance, etc.).
If it’s about money, big players can already go fully pledged private like IOG has done and get ~7% returns on their pledge while everyone else fights for ~5.5% pledge + at best 5% of delegator rewards (much worse, if it’s really “a race to 0%”). If it’s about setting up a Sybil attack, then squeezing out competition is a a slow moving attack requiring a lot of funds. There are better safeguards than a minimum fee to address this, such as pledge and (if an identity solution ever comes out to prevent pool splitting) saturation.

1 Like

Thank you for clarifying Shawnim. Sounds good. I think that could work well.