since it is correct, however one minor correction, is that the block number is in the block's coinbase transaction.
The first bytes of the coinbase sig must contain the block number.
Thus the block's merkleroot effectively contains the block number.
The reason this was added later, but not there originally, was due to the risk of duplicate coinbase transaction numbers.
I'm pretty sure there was once a case of a duplicate transaction number, and this was the fix to ensure it didn't happen again.
The coinbase transactions originally didn't actually know the block they were in,
so a pool could generate 2 coinbase transactions, at different times, for different blocks, with the same transaction hash.
Adding the block height to the coinbase transaction sig, meant that the coinbase transaction contents couldn't be the same.
--
Anyway, it's not a 'success rate', it's simply an 'expected' number of blocks for a given amount of work.
While all the other small pools get this calculation wrong (and falsely show better luck numbers than they are getting)
the 'expected' number of blocks is simply 1 per 100% of work done.
The 100% number is calculated as the sum of all (work/netdiff) per every 2016 blocks
The catch there being that you can't divide your total final work by the current network difficulty, since that's faking better results for small pools.
An example would be, if you have done 50% work in the previous 2016 blocks, that 50% says fixed, and you add on top of that the amount of work you have done in the current 2016 blocks ... and so on over time until you find your next block.
On all the (other) small pools, that 50% suddenly drops after a diff increase, since they are not storing that 50%, but recalculating it incorrectly at the new network difficulty at the time the block is found.
I posted this simpler explanation in ckpool solo, but he didn't want his miners to know and deleted it:
You can't just divide work/"current network diff"
That is far from correct.
Even if it's only 3 weeks, it's still incorrect.
It fakes your stats to look better than they really are.
If you do 50% expected work on a block, then diff changes up, you've still done 50% expected work on a block.
You haven't magically done less expected work.
Your pool doesn't record the necessary information to give correct stats.
When a block takes only a few month, the stats you are quoting are noticeably incorrect.
e.g. on my pool since our last block in Jan, we've done 37.87T work
Today's diff is 83.1T
Divide them to get the wrong answer and you get 45.6%
My web site of course shows the correct value, which is 48.9%
So over only 3 months, that figure is wrong by more than 3%
When diff is going up faster, it of course will be wrong by a larger amount.
The simplest way to explain this without math is as follows:
A picked 5 apples off their local tree
B picked 6 apples off their local tree
No other information is provided.
Who did the best?
You have no idea, since you've no idea what type of apples they where.
Were they even ripe? How much did they weigh? Were they edible? etc.
i.e. until you know some relative value of each apple, you can't compare them.
All shares have a relative value, based not only on their diff, but also on the netdiff at the time they were successfully submitted.