I am not sure, as I would expect P2P to prefer the most honest and/or working node (i.e. no any protocol violation etc). As, it does not matter which peer of the connected 20 provides the block your relay will get it anyway and the BP will get it as the fasted peer provides it. Though, it can have some statistical analisys where some peers are not working properly for some time and therefore it will be removed from hot peers, but in that case there could be some cluster of pools eclipsed compeletelly. So, I do not know really. Also, it does not guarantee that the fastest relay for a block created by pool1 will be the fastest for an other block created by pool2 etc. So, I am not sure, but I do not have details as I have not followed the P2P dev and design for more than a year or even 2 years now.
I guess it depends on how well connected and operational the node is. There is an incentive for tiny pool operators to disconnect and not run well (not updated) when they are not producing blocks. This is so simply because there is no incentive for them to be actively maintaining and administering their nodes when not producing blocks.
If tiny pools very intermittently connect up to lob a block into the network, the rest of the P2P network will not be prepared for this.
I’m not sure the RSS paper has missed something. In regards to pools having an incentive to split their pledge, I agree this is the case, however I also think delegators have financial incentive to prefer to pools that do not split their pledge. I think the reasons for this are two fold, but I also don’t think they are straight forward.
The more pledge we have in the top k pools the more rewards there are to go around, since stake pools compete for delegators increased rewards of the ecosystem will translate to increased rewards for delegators. If operators split their pledge and their multiple pools remain in the top k pools, the total pledge in the top k pools is reduced and therefore total rewards are reduced. If delegators choose not to delegate to operators that split pledge however, these operators are forced to consolidate their pledge back into one pool.
Another less obvious financial incentive has to do with a0. Imagine the top k public pools are each run by a unique operator (I know this seems like a far off dream from our current state). It seems to me that if we achieve such a state (or rather, if we approach such a state), we can reduce a0 which is intended to calibrate Sybil resilience. Basically, by preferring single pools over multi pools delegators could take us to a point where it is safe to reduce a0 and increase rewards for everyone (besides huge private pools saturated by pledge). The reverse is also true, by continuing down this path of supporting multi pools delegators could take us to a point where it is necessary to raise a0 and decrease the total rewards of the system. Meaning it is in the financial interest of delegators to support single pools.
This is why in my mind the incentives are already present in the system, delegators have financial incentive to prefer single pools. However, these incentives are longer term and I think unclear unless you are deep in the weeds of this problem. There is also the issue that prominent voices in the community are more likely to be able to attract stake and saturate multiple pools, which means the prominent voices that communicate with delegators have conflicting incentives about what they tell delegators. Specifically, it is more in their interest to say staking incentives are broken because my incentive is to run multiple pools than it is to tell delegators that it is in their best interest to not delegate to multiple pools. This in my mind is the crux of the problem, if the above is true it only matters if delegators believe it’s true, and it’s hard to undo what delegators have already been told due to the complexity of incentives.
I would also take this a step further and point out that the system is dynamic which further increases “true” decentralisation. People can quickly move their stake if a pool behaves badly and people can have long memories. So that extra check on system decentralisation is there. I argue that this means that Cardano’s true decentralisation is really higher than pool metrics suggest - especially in comparison to something like Bitcoin where hashing power can’t easily dynamically shift.
I think a lot of the arguments about these incentive factors are being really debated about fairness on an assumed right to generate income from the system. The real reason we are trying to optimise decentralisation is to resist manipulation of records, deplatforming, cancel culture, censoring etc.
It’s not clear to me why pools that only have enough stake to create one block per year are being focused on as a part of the discussion, given their fraction of total active stake and percentage of total blocks they produce (even if k was increased to, say, 1000 or 2000). Just how many of such pools are you anticipating to see? There are probably combined 300+ blocks lost each epoch by pools that produce at least one block per epoch (as opposed to once a year) and you might want to assess what impact that has on the overall network before you spend time on once-a-year block pools.
If it’s about number of nodes and network hops - I wouldn’t anticipate a huge surge in number of brand new relays/block producers to be spun up given we have (according to pooltool.io data) 4600 relays registered on-chain and supposedly online already, as a large chunk of active stake re-distribution would be to already existing and online pools that are already validating/propagating received blocks (but perhaps not creating as many blocks of their own). And if a bunch of new pools are still being spun up by existing SPOs (i.e. continued pool splitting) then presumably those would be fairly well connected to existing infrastructure too that’s already doing a decent job (with or without p2p).
Just because in theory people can move stake quickly doesn’t mean they do, there’re still 125 people delegating 650k worth of Ada to a pool I retired 2 and a half months ago. (Maybe if the power of smart contracts could be harnessed to implement some sort of auto-re-delegate-to-backup-pool-X-if-primary-pool-Y-fails-one-of-Z-criteria functionality this would be less prevalent.) Not sure what pool metric you’re measuring Cardano decentralization with exactly, hopefully not Charles’ ‘we have 3000 pools’ one. Or why a miner in Bitcoin can’t switch to using a different pool if they feel top X pools are having too big of a chunk of a hash power pie (then again, PoW is not my area of expertise, happy to be corrected).
I was just pointing out that the power to shift your stake does add to decentralisation and this power is not measured by statistics about stake distribution.
However, what you say is true:
Unfortunately the systems are still being built and people are time poor and information overloaded. Wallets will become easier to use and will provide alerts about such details. If Cardano does become a significant part of the future financial system for people, then they will pay more attention. At the moment Cardano is still viewed by most as just a speculative high beta tech stock.
What about an enforceable tiered approach to minimum pool fees (if that’s even possible)? So smaller/newer pools could charge lower fees which get stepped up as the stake grows. Minimum fees could be set in bands for different pool sizes. Let the SPO decide the margins they want to charge. This could level the playing field without releasing SPO’s (in a sense) from the work required to grow, market and maintain their pools. K will still have to change of course, but a0 changes may further marginalise countries where poor fiat values may inhibit entry. We want to be able to onboard communities globally!
While there are many issues being brought up, there seems to be three main concerns here:
- Fixed fee is not being used as intended (became major income source instead of Sybil deterrent), thus need for change.
- K parameter increase
I do acknowledge that @Colin_Edwards did mention that this is mainly about parameter changes and not protocol improvements. However, to make a few points I’ll have to bring up protocol as well.
First I am fully aware that modeling Nash equilibrium is how they determined relation of all these parameters to expected outcome. Only problem with that is that systems with many variables like social systems and monetary system have many(and in some cases infinite) points of equilibria. What we are currently experiencing is arrival at one of those unintended points of equilibrium.
The way to influence change towards expected equilibrium is to remove variables and/or adjust incentives.
This bring us to fixed fees. Variable is not acting as intended, so it should be completely removed. Not only because of some theoretical model, but because of what is becoming.
One fact that seems to not be mentioned is that 100% of stake pools are subsidized by the ‘pot’ emissions. That will be until Cardano layer 2 is completed and it’s a good thing since it encourages and promotes creation and improvement of stake pools and rewards stake pool operators. Eventually all stake pools will have to depend on the fees for their income. So, by that time network adaption and value of ADA should be sufficient to make stake pools profitable. In such system fixed income per pool may be impossible since all rewards will be equally divided from fees of that Epoch. Removing something that will not work when network has to attain self sufficiency is a step in a right direction.
As you can see in example below fees collected by pools are way lower then rewards:
Since there is no guaranty that amount of fees collected will be greater then total fixed fees of any amount this would have to be removed anyways.
Also, fixed fees may hold the network back in terms of transaction speed and congestion in the future. At the moment the network is artificially choked by limiting amount of blocks produced. Network nominates a block leader every 20 seconds resulting in about 21k blocks out of 420k slots per epoch. Considering advancement in network technology we can assume that time will come when Cardano may be able to produce 1 block per 1 slot. Having fixed fees at such amount of block increase may be unsustainable.
Bottom line is that fixed fee will have to go sooner or later (with sooner being better).
What about deterrent to Sybil attacks? For that we would have to use remaining variables. Mainly pledge (since variables dependent on delegators seem unreliable).
So, you would have to set a minimum pledge amount as well as increase in rewards for pledge amount. While at the same time reducing rewards for stake pools and delegators for non compliant pools. The goal here would be to make a gap in rewards from compliant vs Sybil like pools be large enough to incentivize operators to stick with least amount of pools and for delegators to not even consider Sybil like pools. I’ll come back and expand on this point latter.
To model a different equilibrium with same variables and expect them both to happen is fruitless. So, I suggest for all those concerned with centralization to look away from just protocol parameters and consider the activity of operators. We need a real life cost being expanded per stake pool that would be negligible to single SPOs or ones running a few pools, but it will start becoming a burden to anyone attempting to centralize the network to a significant extent. This can’t be monetary or technological as that would create a barrier to entry. So we are only left with labor.
For example: Network can add a requirement for each stake pool to complete captcha like test every epoch and send completed transaction from their pledge wallet. This for one stake pool would take 5 minutes every 5 days. Even if single stake pool that was fully saturated at K1000 and has created more pools for delegators as K rose to 10,000 would have about 50 minutes of work for every 5 days.
On the opposite end lets look at Sybil like behavior. I’ll use Binance pools for this example.
At the moment Binance has 62 pools with at least 40 of them fully saturated with pledge of 2 ADA in each and 6% fees. Every Epoch they would have to spend approximately 310 minutes to complete the same. If they wanted to keep the same pool ratio going from now at K 500 to K 10,000 they would have to open 1240 pools. That would require over 100 hours of maintenance just to complete captcha every 5 days. They would have to have 3 full time employees that have access to their pledge wallets to maintain Sybil behavior as K keeps increasing while a small pool operator with 10 pools just needs less then hour of work a week.
This type of real life barrier may be the only way to deter actors in control of large pools of ADA from Sybil type of behavior.
K Parameter and Combined Incentives
So, there are about 3000 pools, right? Wrong.
There are almost 5000 pools at the moment, but only about 3000 with stake. See below:
Yes, some are just pools that are closing, some are just starting, some are mistakes, etc… However some are another 62-ish Binance stake polls just waiting for K to jump to 1000 so they can immediately put their 2 ADA pledge, distribute stake and have the same % control as before. While K increase was initially very good for small pools since they expected to get more delegators as funds are moving it will not deter operators such as Binance to retain the same control levels. This will overall reduce amount of blocks for single pool operators at least initially or until they get more stake. While Binance would control the same amount of stake the number of fully saturated pools that are eligible for block production would double and thus put single pool operators further down the list when it comes to block assignment (since the amount of blocks allowed is still the same).
So, moving K higher with out considering change to incentives may be counter productive to reduction of Sybil behavior, decentralization and health of SPOs.
What should be done first is change in incentives with a goal of combining incentives. Examples:
First- that real life cost similar to captcha example above.
Second- pledge incentives that I mentioned before that I will now expand upon and negatives incentives. (Note that these are examples open to discussion, not tested parameter or proposals).
- Make a minimum pledge incentives. For example: minimum pledge is 1000 ADA and if pool doesn’t meet that pledge they can’t increase fees. Also, a warning is displayed in delegators wallets saying NON-Compliant.
- After being NON-compliant for 12 Epochs no rewards are given to the pool. Removed rewards are distributed to fully compliant pools. Also, they instantly loose any block battles.
- After being NON-complaint for 24 Epochs. Pool is removed from the list of pools and delegator rewards are capped at 2%. Removed rewards distributed to delegators of compliant pools.
- After being NON- complaint for 36 Epochs pool is not selected for block production any more.
Combining incentives here. Lets say that pool doesn’t meet minimum pledge and doesn’t meet real life labor requirement. Then NON- compliant stages get stricter at 6, 12 and 18 Epochs. (of course there can be some leeway period for new pools so they don’t start with a warning)
Third -positive incentives for pledge.
Lets say after the minimum pledge amount is reached the pool operator gets anywhere from +100% to +200% for any pledge rewards up to first 1% off full saturation (gradually). Once again these numbers are just examples.
So if average pool return is 5% the pledge will return 10% to 15% on pledge amount. So at K 1000 full saturation will be around 34 million. That means any pledge from 1000 to 340K will be returning higher yields for the operator. Why am I even suggesting this?
Because current distribution of rewards that accounts for stake vs. pledge seems unrealistic in most cases. The split to get maximum rewards is 78% stake and 22% pledge. This ratio seems to assume that either 1 in 5 Cardano users are stake pool operators or that stake pool operators control 22% of all ADA in existence. I don’t have any hard data on this, but I feel this may not be the case.
So rebalancing incentives to lower end of the spectrum (including delegator rewards) would incentivize pool operators to keep increasing their pledge amount. As their pledge approaches 1% of pool saturation they get higher returns, their delegators get higher returns and ADA is removed from circulation due to this, thus supporting the price.
Did you all know that at current reward distribution pool that has about 100k pledge and is fully saturated only awards about 78% of available rewards?!? TRUE! The only pools that seem to get 100% of available rewards are private pools that have 100% as pledge with full saturation. That means that extremely rich ADA holders are getting 28% higher returns on average then the rest. This imbalance is absolutely unnecessary. By moving pledge incentives lower down the line operators and delegators can benefit and do more against Sybil attacks and centralization.
So I wouldn’t move K until incentives are taken care of.
Organic Growth of New Pools
Approach mentioned above would allow a natural progression and growth of new pools. Any pool would be incentivized to keep increasing their pledge as they keep getting higher and higher rewards. Higher pledge in turn would give higher rewards to delegators which would attract more delegators. Compliance would keep showing pool as positive actor in the system. And the best part? Network expansion that brings protocol parameters increase such as K would boost ALL small pools. When K raise that pledge that is in first 1% of saturation just gets a boost in rewards and pool operator is closer to max rewards since they still hold the same amount of ADA as before K went up. Large pools with high pledge or private pools would not have that boost.
I know, once again I acknowledge that OP is just talking about parameter changes, but I don’t think I would be able to add to this discussion with out mentioning all of it
Remove fixed fee
Change (and rethink) pledge incentives before changing K
Add incremental real world cost that would hider centralization while it would be negligible for singe pool operators.
Disincentives are also useful
Can you please explain why do you think that having more blocks each epoch is unsustainable when also having minimum fixed fees?
- More pools requires more connections between pools in order to propagate blocks
My relays also provide more connections. They may create shorter paths between existing pools that weren’t there before. I don’t believe for one minute that having more nodes is worse for the network, because that would mean it’s bad for existing pools to run more relays, and people generally consider this good.
- There is less incentive to run small pools properly during epochs where they are not awarded a block. This should be pretty obvious. Humans are naturally lazy.
You didn’t explain why this is bad. If a pool turns its producer node off for 11 months of the year and keeps their relay on, it makes absolutely zero difference to anything. If they shut their relay node down, people will not pair with them (either manually, or via P2P, because they will be unreliable). This will harm their propogation and they will fail to share their blocks, so will ultimately fail (because delegators are unlikely to remain with a pool that makes no blocks in 23 months). Seems like a self-correcting problem (not to mention, this point seems to conflict with your first point about them adding more nodes).
- The node can only run fast with a limited number of connections to other nodes. This really is just point 1 restated.
If this is true, it has nothing to do with the number of pools and everything to do with the number of relays. As a pool operator you are in control of your connections, and if you are not, it seems like there are issues that need solving regardless of number of pools. If I can spin up lots of relays and point them at your node and your node doesn’t run properly, that is a problem to be fixed regardless of pool numbers.
- Building on 1 and 3 further. The P2P mechanism automates this process with the protocol seeking to connect preferentially with nodes receiving blocks quickest. Will this result in tiny pools being less connected?
Again, if this is the case, it seems like a self-correcting issue. If pools are not well connected they will not propogate blocks well and ultimately fail to deliver delegators rewards. I don’t see why this is a reason to suppress small pools that are run well.
- Finally there is the problem whereby tiny pools that do get awarded a block actually have an advantage when their block conflicts with another block either when a slot battle occurs or when there is a single block fork resulting from propagation delay.
I’m pretty sure this either balances out or is negligible. It also sounds a lot like “Big pools that take 90% of the rewards aren’t happy when they lose 0.1% to small pools because of this arbitrary rule”. It feels like a weak argument for suppressing competition and having the network more centralised IMO.
Why was the block delayed by 30 seconds before my pool received it?
You seem to be conflating “badly run” or “badly connected” pools with “small pools”. You come up with reasons why small pools will run their pools badly, but I can equally come up with reasons why large pools will run them badly
If there is an issue with badly run/connected pools, I think that needs addressing, but it doesn’t seem like a reason to exclude small pools unless there is evidence that small pools cannot be run properly and that it would not correct itself.
Eventually all pool rewards will have to come from transaction fees collected. At the moment rewards are subsided by emissions from the ‘pot’. Emissions are set at 0.03%, making unearned ADA distributed at about 360 million per year. This is on average 250 ADA per block that is just awarded from the ‘pot’ with out being earned.
Now imagine you double blocks per epoch while keeping the same fixed fee. There is now only 125 ADA per block. Now consider that these emissions of subsidized ADA drop by half every 5 years (which they do). So you can see that increase in amount of blocks vs drop in emissions will obviously lead to a point where fixed fee will not be covered. At the point where emissions fully stop, there could be epoch with very low transaction volumes that may make any fixed fee unfeasible due to the fact that you still need ADA to distribute as rewards.
Don’t understand me wrong, I am in favor of removing the fixed fee, too. And I am happy about reducing it.
There are also now pools with high fixed fees that are not covered even if they mint blocks, and there are many stake pools (most of them) that have the fixed fee 340 ADA. The fixed fee is just a number.
Saying that a big fixed fee is unsustainable is a wrong usage of the words, in my opinion. If the minimum fixed fee would be payed, no matter if you mint block or not, then YES, it would be unsustainable. But since it is not payed unless you mint enough blocks to cover it…
@DanTup When I was referring to pool operators I am referring to their relays as well as their block producer nodes. They are not incentivised to run their relays or block producer when not producing blocks. If they do this for a year, and then connect their relay and block producer 30mins before they produce a block, then I argue their relay(s) are likely to be poorly connected. This will result in poorer block propagation which leads to increased forks. As block size increases and we push the limits of the IOHK determined 5 second propagation delay limit, more forks will happen. These forks are currently a lot more than 0.1%.
I am not attacking small pool operators. I am one. I am just saying that there is no incentive for a tiny pool to remain connected and operational when they are not awarded any leader slots.
Regarding number of connections. Try creating 100 connections to one of your relays that all request blocks at the same time and see how fast it can satisfy these requests compared to if there are only 20. There is a reason that the guidelines suggest that you only configure up to 20 peers for your relay.
The real risk to the system is from operators like Binance who effectively control funds owned by others.
Maybe we need to consider increased lock-up periods for pledge as well as increased benefits for higher pledge.
As I understand, customer funds at exchanges like Binance, are available “at call”. This means that if they lock-up customer funds they are potentially breaking legal licencing regulations. This would preclude them from using customer funds as pledge especially if the lock-up period was increased to say 1 month. On the other hand, requiring me, as a pool operator, to lock my pledge Ada for 1 month or more would make no difference since I am in it for the long term.
We also need to consider what will happen when large smart contract systems (eg. for lending) use smart contracts to stake the Ada collateral. These smart contract systems will have enormous leverage to control where this Ada collateral is staked including in the developers own pools. Again, maybe requiring more pledge and longer lock-ups will force these smart contract systems to negotiate the staking arrangements with their users. For example, maybe this would pressure them to write their smart contracts in such a way that users get to determine where their collateral is staked.
Thank you for the time spent on this Neo_Spank. All you reasoning here seems well founded. I particularly like your point on labor costs and non-monetary consequences for split pools. I think you’re spot on in the pointing out the variables at large and not just parameters. I also don’t think it’s out of line to expand the topics of discussion in something so critical to the network and the community. I think the positive incentive for pledge is also an area with a lot of interest in the community and I wholeheartedly support it.
I can see now that I could of made that point clearer. And I understand your point.
Let me try to clarify.
At this moment, right now, this a how much pools take in fees.
If it wasn’t for emissions those fees would be the only rewards available. We are talking about 10 ADA per block.
Now contrast that with number of blocks for bottom 2000 block producing pools.
You can see that most of them are well below 30 blocks per epoch. Considering they are only making 10 ADA per block in fees and 30 blocks is max they do. Then (30 x 10 ADA) -340 ADA = -40 ADA. That would mean that large majority of pools would have nothing left for rewards for delegators.
…and paying 0% rewards is not a sustainable system in any way or form.
Hopefully I was able to clarify with graphs what I missed in words.
I still don’t understand your point. What 10 ADA per block are you talking about and what has that to do with the minimum fixed fee?
I posted a clip above showing how much fees pools take in per block. It’s on average about 10 ADA. If we were not subsided by 12 billion ADA pot this would be the only ADA available for rewards. So, if pools on average collect less then 300 ADA per epoch, then that would be all that’s available. Then if you subtract fixed fee of 340 ADA from that it would leave nothing for any delegators.
That 12 billion ADA that we are using to subsidize rewards at the moment is running out at the rate of 50% every 5 years. It will run out. At which point transaction fees are the only ADA that will be available for the rewards.
I’m just showing you that if you take example of block production right now and assume no free ADA from emissions, then fixed fee would leave zero for delegators. That is unsustainable.
You can easily verify these numbers.
10 ADA calculated with of without the minimum fixed fee of 340 ADA? (before subtracting the 340 ADA from the total pool fees or after that?)
This is in the current conditions. The block rewards are decreasing constantly, so the pool’s amount also decreases. They do not remain constant.
Everybody knows that the current fixed fee of 340 ADA is not sustainable on long term.
But if it is 30, it is sustainable for much longer. And at some point in the future it will probably be pegged to a stable coin instead of ADA (if it will not be completely removed).