Does an ideal of 0.25 really mean a 25% chance of getting a slot each Epoch

I have made many posts about this and I feel that I need to continue to bring this up as the current protocol just does not appear fair. According to gLiveView I have had an ideal of 0.25 or just under for the last year and yet my slot allocation does not reflect this percentage at all. In the last 40 Epochs I have been given one slot when statistically you would expect that to be somewhere around 10.

All I want to know is the facts. I have spent significant money investing in Cardano, running a Stakepool and promoting everything about Cardano for the past 2 years. My Stakepool is operating correctly and is configured exactly as it should be. Slot allocation was as expected for the first year then after Epoch 320 things suddenly changed and only one slot has been allocated since then.

I have heard from others that developers have said that Pools that have stake less than 1M do not get selected in proportion to their stake and Ouroboros favours larger Stake pools. Is this correct and if so why? Small Stakepools deserve to be rewarded in proportion to their stake and if not then there are some serious questions to be answered.

I understand Maths and Statistics so yes anything can happen with regards to slot allocated but things should tend towards the average over time. I have also heard from other StakePool operators who have around 300K to 400K in stake that have gone 20 Epochs without a slot selection. If this is the case this then how can this be acceptable. This is real money and real time that we are investing and yet I am getting absolutely no returns or rewards which I should be entitled to. I am doing my part in supporting decentralisation and the Network so I do expect some kind of explanation for this rather than the usual “well you need to get more delegation” or “its just bad luck” - it gets to a point where this can’t just be bad luck.

Sorry for the somewhat annoyed tone of this post but after 2 years of devoting myself to Cardano I just feel that it should not be this way and I appreciate any comments people may care to give.

1 Like

Hey Graham,

Sorry to hear you’re struggling. When we were around 160k staked, we were around an ideal of 0.16 for a long while, which would become an estimate of a block every ~6 epochs. Our average time between blocks back then was actually more like 9-10 epochs. But I can certainly see that in the realm of statistics as a possibility. I don’t do much math on that, but 20 epochs without a slot with 300-400k staked is indeed fairly unlikely.

~ Nils

1 Like

I’ve implemented the tpraos algorithm in the cncli tool that gLiveView uses to calculate leaderlogs. The equation used for calculating “ideal slots” is here:

If there’s no issues with the pool and you’re still seeing active stake each epoch and a positive sigma value, the ideal slots value should be correct.

The tpraos (and praos once we hit babbage), are based on VRF (verifiable random function) keys. I can’t see how this is anything other than just bad luck.

1 Like

We’re a small pool as well and on a little drought at the moment. I am just putting it down to bad luck. Unless there is something fundamentally wrong with the protocol, but I expect someone like Andrew would have pointed that out by now.

It’s tough, but it is also the way the chips fall.

1 Like

Thanks - the pool should be ok as everything checks out and we did get a block which was minted in Epoch 351 - nothing has changed with the pool (other than recent upgrade to 1.35.3) and we are showing active stake on all the explorers. The frequency of slot allocations just appeared to change abruptly after 320 which is why we are concerned. Still as you say maybe it is just poor luck but this is one 4 sided dice that just doesn’t want to come in :grinning:

It is purely (pseudo) random, based on VRF, so this less than 1M and favouring larger pool are fuds.
You can check here that the Praos preferred the smaller pools. How will TPraos work? I have no clue as I have not checked the latest code.

As I said it already, it - statistically - favors small pools to the big ones on slot battles, which makes sense as their loss can be much higher than some larger pools. Imagine, you’re entitled 1 block in 10 epoch and your pool has a slot battle at a certein slot with a larger pool who is entitled to create 30 blocks in that epoch. So you would loose ~10x of your pools epoch’s rewards while the other just looses ~1/30 of it.

So, do not fall into Gambler’s fallacy. Random is random. You, a littlebit contradict, because you says you understand statistics, but in other sentence you says otherwise e.g., things should tend towards the average.
You mixed the independent VRF event’s with the law of large numbers in which the average would apporaches to the expected number, but it needs lot of trials. That’s why it’s called the law of large numbers.

I cannot see anything wrong with statistics and probability in Cardano.

2 Likes

Many thanks for your response and I appreciate your time.

Yes I understand how the slot battles work but I have not been allocated the slots to start with and this is confirmed as I run the cncli command to check for slots each 5 days

Yes as I have said I understand statistically that anything can happen and I have not said that what has happened is not just down to chance so there is no contradiction here. A number of people keep defending the protocol with Gambler’s fallacy. This is an easy explanation to explain away anything. Yes I have said it could be due to chance and yes you can go and play Roulette and get 10 reds in a row and yes if the Roulette wheel has just rolled 25 reds the chance of a red on the next roll is still 1 in 2. I get all this but it may get to a point (maybe not) where the “just bad luck” answer may not be the reason. I am raising this now as I have detected a potential change in how the protocol is behaving. Yes at the end of the day it probably will all be all down to bad luck but we cannot just assume this all the time.

I have maintained and worked on this pool for 2 years now and have a number of faithful delegators that may be reaching the end of their patience. Some pools have had the luxury of getting a lot of stake for whatever reasons and good luck to them. The pool has cost me considerable money at this point in time with not much hope for the future based on current prices and the macro economic situation so please try to understand if I sound a little annoyed when I keep getting told “its just bad luck” I hope this is so but right now I am extremely frustrated with the whole process.

Do you have a link to that claim?

I don’t think that you will get more competent answers than @AndrewWestberg and @_ilap in here, sorry.

We could search the algorithm in the code, but I don’t see any reason to believe that it’s not the thing described on a very high level, e.g., in https://www.ada4good.com/post/how-is-a-stake-pool-selected-to-mint-a-block-slot-lottery-explained. And that should scale linearly with stake and not disadvantage you or smaller pools in general.

1 Like

Sorry it is just hearsay

Yes I agree and I am sure they understand it better than most

I am just wondering if anything happened just after Epoch 320 or thereabouts that could have had an impact on smaller pools?

Unfortunately, that’s how it’s. You can be angry, frustrated, but it won’t change any facts does not matter how hard you would like to, as you’re biased i.e., you are on the suffering side (and you’re inclined to find anything that can prove your theory). I can understand, but this is how Cardano works. Theoretically there should be only k number of fully saturated pools and some tails.

VRF is very simple, it generates a verifiable random number (that all other nodes can verify) compared to your stake (as a chance e.g., like 1/6 of a dice or yourstake/totalstake what is used currently) and based on the slot number, epoch once (a random enthropy) and your VRF key. If that number is less than your stake as percentages (converted to a big number), then it’s true, otherwise it’s false. It always, generates randomly, if you’re in doubt than rise some concern in the proper forum against the VRF alg used in Cardano the Algorand’s VRF.

If you interested in a very simple explanation of VRF check my gist I wrote abt ~2 yrs ago, check Vincent’s link (or Even Andrew’s) for detailed explanation, but it’s not required, it’s very simple.

2 Likes

Thanks and I appreciate your response. I will continue to monitor the slots and see if the luck factor changes over time.

While there are probably good reasons for why the protocol functions as it does and I certainly do not want to challenge this I believe the frustration with myself and small pools in general is that we just want a fair go - if our stake gives us a probability of 1 in 4 per Epoch then we shouldn’t have to wait years for the numbers to average out to this (if in fact this is the case but I am not saying it is)

I think it is important to also be sensitive to the plight of small pool operators. Many of us have lost quite a bit of money on running a Stakepool (let alone some considerable capital loss right now) and do put in a lot of time and effort to promote Cardano and build on the eco-system. While Cardano may have a theoretical k value and number of pools that are ideal for the network this is certainly not the message that many of us get from the community. We often see tweets and messages from IOG and others about how the eco system is strong with 3000 plus pools so we should not on one hand say we only need x amount of pools and then on the other hand say how strong the network is with thousands of pools. Small pool operators may not be that important to the network on a technical level but certainly from an appearance and growth perspective which leads to the promotion of the network we are vitally important. It is for this reason that I don’t think we should be underplaying the importance of small pools getting the rewards that they are entitled to.

Once again thanks for the response but please let us not just brush aside the frustration that we feel as it is often the case that the only difference between a strong large successful pool and a small pool can be the luck of the draw when it comes to large delegation.

2 Likes

@GrahamsNumberPlus1 I sense your frustration at your lack of reward for hard work. I agree that things are not configured properly at present.

I think one thing that can be changed easily is to lower the min Ada fee from 340 down to something like 30 as proposed by IOHK’s @Colin_Edwards in this thread:

It won’t get you paid more initially but will give you more ability to attract delegators.

On my website I say the following:

I do not recommend you stake with Terminada pool yet because the protocol does not allow setting the fixed fee any lower than 340 Ada.

With a fixed fee of 340 Ada you will lose too much of your rewards to fees until the pool size is over 10 million Ada.

I am hoping that enough community support builds to change this min fee parameter soon.

In the longer term, there are proposals to redesign the staking + pledging benefit metrics like that proposed by @Michael.Liesenfelt at:

2 Likes

Oooh, gosh not again.

Great points

I agree with you 100% - currently we give most of our Pool Fee back to Delegators but this is a painful and laborious process. There are a number of issues with the Pool Fee. The first as you say is that it makes it totally uncompetitive for small pools as there is an immediate tax (so to speak) of over 50% for Delegators when a pool can only mint one block in an Epoch and so why would any Delegator
choose a small pool? Secondly there are a lot of claims that small pools pay as much as large pools which is simply not true because of this reason and this could lead to compliance issues down the road especially when Delegators are unaware of this or listen to some of the misinformation out there.

The Pool Fee as it currently stands comes across as some form of protectionism for those pools that regularly mint blocks as they know that there would be an immediate cut to their income if the pool fee was reduced to as you suggest 30 ADA. The thing is that this is supposed to be a competitive environment and those pools that best serve the community and the network should be the ones that survive and it should not be based on an artificial parameter. Let us not forget that many pools have invested a lot of money and time and they do have a right to exist on a level playing field.

1 Like

I agree with that; these guys know what they are talking about.
The way I tend to think about this stuff is a binomial distribution
(your stake) / (all stake) = your chance at any block
in an epoch, there ~21600 blocks (but we lose some of them)

for example, if your pool was 250K, and 25 billion Ada total was staked:
(250e3 / 25e9) = 0.00001 (0.0010%)
In an epoch, you might have somewhat less than 21600 blocks (a bit over every 20 seconds), I typically assume about 5% lost

image

Your chance of going 1 epoch with no blocks would be 81%, two epochs would be (.81*.81), etc

With a couple thousand small pools, we do expect to see some streaks - the standard deviation is larger than the mean here

(other than the ways the fixed fees work, there should be nothing that penalizes small pools)

If you think there is something systematically wrong, feel free to send me details, I can try to get the analysis in front of the right people

4 Likes

Thanks for this and yes I don’t think there is any issue with the stats

so we would agree then that 1 slot in 40 Epochs would produce a very small chance of this happening. I agree that all these concepts are correct and of course you can have outliers in any statistical model. The guy that wins the lotto - he is an outlier that managed to defeat the odds of 1 in a million. I guess the issue is for me at what point does this no longer just become poor luck - after 60 Epochs?, 100 Epochs? - at which time of course my Stakepool will have no reputation at all for minting blocks :grinning:

1 Like

I tend to think about frequencies, so out of 2000 stake pools with 250K Ada delegated to them:

After 10 epochs (50 days): 215 of 2000 would have no blocks
After 20 epochs (100 days): 23 of 2000 would have no blocks
After 30 epochs (150 days): 2 or 3 would have no blocks
After 40 epochs (200 days): pretty much all the pools should have seen a block by now

(when observing the actual population of SPOs, there is some survivorship bias - the pools that survive tended to be a bit luckier than average)

That being said, after 40+ epochs (and 250K Ada), I would be suspicious that there is something else wrong: registrations, relays or some network thing.

2 Likes

Thanks

Yes everything has been checked more than once and as stated above there was a slot allocated in Epoch 351 during this 40 Epoch stretch which was minted successfully so no configuration issues. I also check slots allocated using the cncli query every 5 days and so no blocks lost to slot battles or stolen or whatever - also 26 blocks minted reasonably regularly prior to Epoch 320 - this is why I am a little suspicious.

There were a number of changes around epoch 320 related to block size and memory usage around that time. There were no economic / ledger rule changes.

Not sure why those would lead to any issues; someone more familiar with the hardware requirements and might be able to answer (I am aware of the changes in a general ‘read the release notes’ sense, but there may be something I missed.)

1 Like

If you are checking the leader logs with the correct information then this is deterministic. To be sure you could check using the cardano-cli rather than relying on an additional tool (cncli).

CARDANO_NODE_SOCKET_PATH='/run/cardano/mainnet-node.socket' cardano-cli query leadership-schedule \
  --mainnet \
  --genesis /etc/cardano/mainnet-shelley-genesis.json \
  --stake-pool-id "blahblahblah" \
  --vrf-signing-key-file /etc/cardano/private/vrf.skey \
  --current

Change –current to –next for next epoch (after it is 3.5 days completed).

On the other hand, if your leader log says you got allocated a slot and your block producer didn’t produce a block or it wasn’t included in the blockchain, then you have a problem. The fact that you have produced blocks in the past, and these blocks coincided with your leader logs, indicates that you are doing the leader logs correctly.

You can also look at your luck percentage on a site like adapools. If your luck percentage is significantly less than 100% then you are either failing as an operator, or unlucky, or both.

One good thing is that as a small pool you shouldn’t lose many slot battles :slight_smile:

2 Likes