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