On cuckarood29 graph rates

In a previous forum post https://forum.grin.mw/t/on-dual-pow-graph-rates-gps-and-difficulty I presented several equations relating graph weights, graph rates, solution rates, and difficulty.

The constant 1/42 features in several equations as the expected number of solutions per graph.

With cuckarood29 that constant has changed. Let’s denote

ES = expected number of solutions per graph

Cuckaroo (as well as Cuckoo and Cuckatoo) has ES_oo = 1/42,
while Cuckarood has ES_ood = 1/21 (we can imagine ‘d’ standing for doubled).

For completeness, let’s also denote by FY the fidelity of the miners, i.e. the fraction of solutions that they actually find (some miners overlook a small fraction of cycles, which puts fidelity slightly below 1).

To recap, we define

PR31 = Primary Rate = global rate of Cuckatoo31 graphs per second
W31 = weight of a Cuckatoo31 graph = 31 * 2^8 = 7936
SR29 = Secondary Rate = global rate of Cukatoo29 graphs per second
S29 = ar_scale = secondary scale = variable scale of a Cukatoo29 graph
BR31 = rate of primary blocks
BR29 = rate of secondary blocks
ND = Network Difficulty
ES_oo = expected number of solutions per Cuckatoo graph
ES_ood = expected number of solutions per Cuckarood graph
FY = miner fidelity, usually assumed equal to 1
PF31 = Primary Fraction of rewards, currently 32%
SF29 = Secondary Fraction of rewards, currently 68%

We have BR31 = (PR31 * ES_oo * FY) * (W31 / ND), BR29 = (SR29 * ES_ood * FY) * (S29 / ND),
for a combined block rate of BR31 + BR29 = FY * (PR31 * ES_oo * W31 + SR29 * ES_ood * S29) / ND.

In block rate equilibrium, we have

BR31 + BR29 = 1/60

and in block reward equilibrium, we have

BR29 / (BR31 + BR29) = SF29
BR31 / (BR31 + BR29) = PF31

This allows us to compute graph rates from network difficulty, secondary scale, and the current reward balance:

SR29 = (ND / FY) * (ES_ood / 60) * SF29 / S29

PR31 = (ND / FY) * (ES_oo / 60) * PF31 / W31

Estimating graph rates directly from observed solution (block) rates is even simpler. We have

graph_rate * fidelity = solution_rate / expected_solutions_per_graph

For pools and block explorers estimating Cuckarood29 graph rate assuming fidelity=1, the former formula

graph_rate = solution_rate * 42

should thus be updated to

graph_rate = solution_rate * 21


It’s been a week, and pools (and miners) still disagree on the graph rate for the new ood29 algo: for the same miner, some pools show double the graph rate compared to before the fork, while some show the same graph rate compared to before the fork.

To clarify (@tromp can chip in):

The changes made to the new ood29 resulted in a doubling of the rate of solutions compared to the old oo29. However, there are now 1/21 solutions per graph instead of 1/42 solutions per graph (see @tromp’s post above) … hence, for the same miner, the graph rate should be the same for the new ood29 algo as it was for the previous oo29 algo (provided the mining software’s efficiency is preserved).

In other words, pools should not show 2 kG/s just after the fork for a miner that before the fork had 1 kG/s.

p.s. f2pool and sparkpool still disagree…

Can anyone explain why there is sudden increase in hash rate and difficulty since Aug 2
unknown pool has 27.5% of hash rate. Sparkpool had around 425 KGps until 2 Aug has increased upto 220KGps and now 635KGps why ?

Is it possible theirs an error in the formula above ? We have BR31 = (PR31 * ES_oo * FY) * (W31 / ND), BR29 = (SR29 * ES_ood * FY) * (S29 / ND)?

I think it should be: BR31 = (PR31 / ES_oo * FY) * (W31 / ND), BR29 = (SR29 / ES_ood * FY) * (S29 / ND), other rate equilibrium dosent do 1/60

Block rate is proportional to expected #solutions per graph, not inversely proportional as you suggest.