# 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

2 Likes

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.