I am currently mining Zencash in a pool, and I'd like to be able to calculate the expected shares per minute for a given pool's hashrate. Let's say the pool's hashrate is 50 KSol/s. I think that the shares would need to be standardized to some share difficulty, let's call it one. The current block difficulty is 764,414.6217 (11.0 block reward). I've been digging around and it's hard to find the math involved in this. Does anyone know how to do this for Zencash?
I was able to find some information from this page...
I think I was able to figure out the formula, but somebody please correct me if I am wrong. The formula is not very difficult, but you must know the number of hashes that correspond to a minimum difficulty of 1 (share difficulty). This is easy to find for some currencies (bitcoin, 2^32), but very difficult to find for others. For Zencash, it is 8192 or 2^13. The formula to determine the expected blocks per minute for Zencash is:
blocks_per_time = (hashrate * seconds) / (8192 * block_difficulty)
In our case, the estimated blocks per minute would be:
(50000 * 60) / (8192 * 764414.6217) = 4.791e-4 blocks/min.
Then if we know it takes an average of 764,414.6217 difficulty-1 shares to solve a block, then we can calculate the pool's shares/min as:
shares_per_min = blocks_per_min * block_difficulty
shares_per_min = 4.791e-4 * 764414.6217 = 366.2.
Or, we can simplify the original equation to estimate the given shares/min in a pool based on a given pool hashrate as:
shares_per_min = (hashrate * 60 seconds) / 8192
shares_per_min = (50000 * 60) / 8192. = 366.2
Based on this (and the reason I wanted to know the answer to this question), you can see that if you stop mining on a PPLNS pool with a steady hashrate of 50 kH/s where n=20000, you're estimated reward should fall to zero after about 54 minutes. Of course, your shares are very likely submitted at a higher difficulty than one, but this shouldn't affect that calculation.