362 lines
28 KiB
Markdown
362 lines
28 KiB
Markdown
# sim/difficulty results, 3 October 2026
|
|
|
|
Raw simulator output behind `docs/analysis/difficulty-2026-10-03.md`. Final parameters: short window 120,
|
|
hold 8, prior 16, long lane from 600, trigger 25%, harden 3%, ease 10%, cap 20 T.
|
|
|
|
## Synthetic set, honest timestamps
|
|
|
|
python3 sim.py
|
|
|
|
### up50: hash rate x50 at 3 h
|
|
|
|
| controller | first within 10% s | settled s | recovery blocks | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | 1542.1 | 1542.1 | 4967 | 0.009 | 0.012 | 0.126 | 9.5 | 3760 | 0 | 21511 | none |
|
|
| monero | 94.0 | 94.0 | 713 | 0.089 | 0.037 | 0.144 | 10.3 | 657 | 0 | 18490 | none |
|
|
| lwma60 | 105.0 | 105.0 | 182 | 0.208 | 0.131 | 0.088 | 11.3 | 78 | 0 | 17977 | none |
|
|
| lwma120 | 231.2 | 231.2 | 388 | 0.189 | 0.092 | 0.096 | 10.5 | 164 | 0 | 18078 | none |
|
|
| igneum | 61.7 | 61.7 | 181 | 0.140 | 0.038 | 0.135 | 11.3 | 125 | 0 | 17927 | 377 |
|
|
| igneum-literal | 63.7 | 63.7 | 186 | 0.217 | 0.034 | 0.130 | 11.3 | 127 | 0 | 17956 | 230 |
|
|
|
|
### down50: hash rate /50 at 3 h
|
|
|
|
| controller | first within 10% s | settled s | recovery blocks | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | 12295.7 | 12295.7 | 1569 | 5.102 | 0.012 | 0.126 | 178.5 | 1648 | 1256 | 16185 | none |
|
|
| monero | 6432.8 | 6432.8 | 701 | 0.039 | 0.037 | 0.144 | 187.3 | 0 | 567 | 19356 | none |
|
|
| lwma60 | 577.9 | 577.9 | 111 | 0.154 | 0.131 | 0.088 | 118.7 | 0 | 55 | 24588 | none |
|
|
| lwma120 | 1073.6 | 1073.6 | 177 | 0.129 | 0.092 | 0.096 | 64.9 | 0 | 97 | 24205 | none |
|
|
| igneum | 657.4 | 657.4 | 147 | 0.062 | 0.038 | 0.135 | 35.3 | 0 | 90 | 24548 | 474 |
|
|
| igneum-literal | 967.0 | 967.0 | 146 | 0.062 | 0.034 | 0.130 | 121.1 | 0 | 86 | 24276 | 267 |
|
|
|
|
### epoch30: x1.3 or /1.3 at each epoch boundary from epoch 2
|
|
|
|
| controller | first within 10% s | settled s | worst recovery s | not recovered | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | 1583.0 | 1583.0 | 1974.6 | 0 | 0.043 | 0.010 | 0.130 | 12.3 | 0 | 0 | 29403 | none |
|
|
| monero | 456.2 | 456.2 | 603.3 | 0 | 0.116 | 0.038 | 0.141 | 16.0 | 0 | 0 | 28857 | none |
|
|
| lwma60 | 91.1 | 156.9 | 310.6 | 0 | 0.291 | 0.132 | 0.090 | 11.6 | 0 | 0 | 28658 | none |
|
|
| lwma120 | 136.9 | 153.1 | 240.8 | 0 | 0.229 | 0.094 | 0.097 | 11.5 | 0 | 0 | 28719 | none |
|
|
| igneum | 86.5 | 143.7 | 260.8 | 0 | 0.126 | 0.030 | 0.133 | 11.3 | 0 | 0 | 28735 | 351 |
|
|
| igneum-literal | 86.4 | 143.8 | 260.8 | 0 | 0.050 | 0.018 | 0.130 | 11.3 | 0 | 0 | 28775 | 149 |
|
|
|
|
### walk10: 10% per hour log random walk
|
|
|
|
| controller | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks |
|
|
|---|---|---|---|---|---|---|---|
|
|
| kaspa | 0.049 | 0.144 | 11.1 | 0 | 0 | 21728 | none |
|
|
| monero | 0.049 | 0.143 | 10.6 | 0 | 0 | 21541 | none |
|
|
| lwma60 | 0.132 | 0.088 | 11.1 | 0 | 0 | 21486 | none |
|
|
| lwma120 | 0.093 | 0.105 | 10.5 | 0 | 0 | 21518 | none |
|
|
| igneum | 0.062 | 0.130 | 11.2 | 0 | 0 | 21521 | 519 |
|
|
| igneum-literal | 0.055 | 0.136 | 11.1 | 0 | 0 | 21523 | 184 |
|
|
|
|
### hop3: 3x pool hops in and out every 15 min from 3 h
|
|
|
|
| controller | first within 10% s | settled s | worst recovery s | not recovered | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | none | none | none | 12 | 0 | 0.012 | 0.126 | 21.0 | 1208 | 1036 | 22128 | none |
|
|
| monero | 336.7 | 336.7 | 362.4 | 6 | 0.062 | 0.037 | 0.144 | 18.6 | 2438 | 1437 | 20382 | none |
|
|
| lwma60 | 109.5 | 166.9 | 373.4 | 0 | 0.270 | 0.131 | 0.088 | 14.7 | 111 | 42 | 21408 | none |
|
|
| lwma120 | 161.8 | 184.3 | 292.1 | 0 | 0.201 | 0.092 | 0.096 | 15.0 | 215 | 129 | 21364 | none |
|
|
| igneum | 124.0 | 189.5 | 410.3 | 0 | 0.229 | 0.038 | 0.135 | 11.8 | 213 | 182 | 21228 | 8054 |
|
|
| igneum-literal | 429.3 | 372.9 | 493.1 | 8 | 0.202 | 0.034 | 0.130 | 16.1 | 86 | 529 | 20913 | 4294 |
|
|
|
|
### hop10: 10x pool hops in and out every 15 min from 3 h
|
|
|
|
| controller | first within 10% s | settled s | worst recovery s | not recovered | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | none | none | none | 12 | 0 | 0.012 | 0.126 | 52.1 | 5700 | 1035 | 22951 | none |
|
|
| monero | 283.5 | 283.5 | 312.9 | 6 | 0.085 | 0.037 | 0.144 | 83.2 | 3551 | 569 | 19203 | none |
|
|
| lwma60 | 165.5 | 263.9 | 542.0 | 0 | 0.242 | 0.131 | 0.088 | 34.3 | 315 | 198 | 21008 | none |
|
|
| lwma120 | 282.8 | 325.5 | 789.0 | 0 | 0.199 | 0.092 | 0.096 | 30.2 | 576 | 417 | 20676 | none |
|
|
| igneum | 208.1 | 211.9 | 382.9 | 0 | 0.230 | 0.038 | 0.135 | 25.0 | 422 | 321 | 20631 | 8445 |
|
|
| igneum-literal | 466.6 | 505.8 | 698.0 | 6 | 0.237 | 0.034 | 0.130 | 35.7 | 816 | 666 | 20683 | 5432 |
|
|
|
|
### polluted: window polluted by a pre-step slow period (21 min at 0.11 blocks/s, 13 min idle, then 0.6 blocks/s at genesis difficulty)
|
|
|
|
| controller | first within 10% s | settled s | recovery blocks | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks | peak rate | trough rate after 10 min |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | 650.7 | 2748.3 | 5163 | 6.942 | 0.010 | 0.134 | 11.2 | 2320 | 0 | 18592 | none | 7.9 | 0.6 |
|
|
| monero | 124.0 | 124.0 | 735 | 0.092 | 0.032 | 0.142 | 10.4 | 675 | 0 | 17641 | none | 15.0 | 0.9 |
|
|
| lwma60 | 66.1 | 66.1 | 113 | 0.183 | 0.132 | 0.089 | 11.3 | 36 | 0 | 17138 | none | 5.7 | 0.6 |
|
|
| lwma120 | 110.3 | 110.3 | 201 | 0.147 | 0.091 | 0.108 | 10.5 | 74 | 0 | 17190 | none | 6.0 | 0.7 |
|
|
| igneum | 70.0 | 70.0 | 136 | 0.180 | 0.049 | 0.122 | 11.3 | 72 | 0 | 17005 | 2585 | 8.5 | 0.6 |
|
|
| igneum-literal | 817.0 | 1876.4 | 2546 | 0.197 | 0.040 | 0.141 | 11.3 | 571 | 0 | 17618 | 1986 | 8.4 | 0.6 |
|
|
|
|
### warmup-hard: genesis difficulty 10x too hard
|
|
|
|
| controller | first within 10% s | settled s | recovery blocks | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | 5790.7 | none | none | 92.876 | 32.727 | 3.002 | 67.2 | 4860 | 599 | 6444 | none |
|
|
| monero | 286.6 | 286.6 | 159 | 0.047 | 0.038 | 0.135 | 17.5 | 0 | 33 | 7011 | none |
|
|
| lwma60 | 155.2 | 155.2 | 118 | 0.147 | 0.132 | 0.078 | 10.5 | 0 | 18 | 7128 | none |
|
|
| lwma120 | 187.9 | 187.9 | 152 | 0.111 | 0.095 | 0.102 | 10.5 | 0 | 18 | 7128 | none |
|
|
| igneum | 321.9 | 321.9 | 199 | 0.024 | 0.031 | 0.126 | 10.5 | 0 | 23 | 6953 | 138 |
|
|
| igneum-literal | 351.4 | 702.7 | 568 | 0.024 | 0.019 | 0.134 | 10.5 | 0 | 23 | 6979 | 179 |
|
|
|
|
### warmup-easy: genesis difficulty 10x too easy
|
|
|
|
| controller | first within 10% s | settled s | recovery blocks | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | 1554.8 | 1554.8 | 3168 | 0.011 | 0.008 | 0.137 | 9.8 | 599 | 0 | 8869 | none |
|
|
| monero | 95.4 | 95.4 | 76 | 0.091 | 0.038 | 0.154 | 16.1 | 16 | 16 | 7145 | none |
|
|
| lwma60 | 57.9 | 57.9 | 87 | 0.183 | 0.133 | 0.073 | 9.2 | 8 | 0 | 7192 | none |
|
|
| lwma120 | 88.3 | 88.3 | 136 | 0.147 | 0.096 | 0.099 | 9.4 | 8 | 0 | 7225 | none |
|
|
| igneum | 58.7 | 58.7 | 114 | 0.082 | 0.029 | 0.133 | 10.3 | 61 | 0 | 7192 | 120 |
|
|
| igneum-literal | 58.4 | 58.4 | 114 | 0.086 | 0.015 | 0.129 | 10.3 | 61 | 0 | 7209 | 191 |
|
|
|
|
## Synthetic set, +-500 ms timestamp jitter
|
|
|
|
python3 sim.py --ts-noise 500 --profiles up50,down50,epoch30,hop10,polluted
|
|
|
|
### up50: hash rate x50 at 3 h
|
|
|
|
| controller | first within 10% s | settled s | recovery blocks | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | 1535.1 | 1535.1 | 4997 | 0.050 | 0.010 | 0.125 | 8.0 | 3876 | 0 | 21640 | none |
|
|
| monero | 113.1 | 186.1 | 807 | 0.039 | 0.034 | 0.127 | 8.8 | 656 | 0 | 18496 | none |
|
|
| lwma60 | 158.7 | 158.7 | 238 | 0.142 | 0.125 | 0.087 | 9.6 | 83 | 0 | 17939 | none |
|
|
| lwma120 | 139.8 | 139.8 | 305 | 0.115 | 0.085 | 0.104 | 9.3 | 171 | 0 | 18047 | none |
|
|
| igneum | 168.5 | 168.5 | 288 | 0.024 | 0.046 | 0.133 | 8.6 | 131 | 0 | 18082 | 435 |
|
|
| igneum-literal | 115.8 | 115.8 | 253 | 0.026 | 0.039 | 0.114 | 8.6 | 143 | 0 | 18145 | 338 |
|
|
|
|
### down50: hash rate /50 at 3 h
|
|
|
|
| controller | first within 10% s | settled s | recovery blocks | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | 12523.3 | 12523.3 | 1531 | 5.826 | 0.010 | 0.125 | 138.0 | 1736 | 1224 | 16001 | none |
|
|
| monero | 6425.5 | 6425.5 | 686 | 0.061 | 0.034 | 0.127 | 191.9 | 0 | 555 | 19343 | none |
|
|
| lwma60 | 712.2 | 846.7 | 232 | 0.168 | 0.125 | 0.087 | 77.8 | 0 | 51 | 24398 | none |
|
|
| lwma120 | 965.9 | 965.9 | 156 | 0.140 | 0.085 | 0.104 | 80.7 | 0 | 93 | 24224 | none |
|
|
| igneum | 895.5 | 1046.6 | 289 | 0.135 | 0.046 | 0.133 | 49.4 | 0 | 90 | 24438 | 593 |
|
|
| igneum-literal | 805.8 | 933.2 | 254 | 0.142 | 0.039 | 0.114 | 114.6 | 0 | 91 | 24579 | 307 |
|
|
|
|
### epoch30: x1.3 or /1.3 at each epoch boundary from epoch 2
|
|
|
|
| controller | first within 10% s | settled s | worst recovery s | not recovered | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | 1534.5 | 1534.5 | 1859.4 | 0 | 0.042 | 0.010 | 0.120 | 10.4 | 0 | 0 | 29420 | none |
|
|
| monero | 440.2 | 440.2 | 559.7 | 0 | 0.089 | 0.038 | 0.124 | 10.0 | 0 | 0 | 28818 | none |
|
|
| lwma60 | 63.2 | 63.2 | 131.8 | 0 | 0.256 | 0.119 | 0.087 | 11.9 | 0 | 0 | 28592 | none |
|
|
| lwma120 | 84.3 | 123.6 | 259.8 | 0 | 0.223 | 0.079 | 0.097 | 10.4 | 0 | 0 | 28657 | none |
|
|
| igneum | 55.2 | 55.2 | 172.1 | 0 | 0.200 | 0.036 | 0.130 | 9.9 | 0 | 0 | 28888 | 619 |
|
|
| igneum-literal | 51.4 | 51.4 | 172.1 | 0 | 0.108 | 0.036 | 0.106 | 10.1 | 0 | 0 | 28953 | 276 |
|
|
|
|
### hop10: 10x pool hops in and out every 15 min from 3 h
|
|
|
|
| controller | first within 10% s | settled s | worst recovery s | not recovered | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | none | none | none | 12 | 0 | 0.010 | 0.125 | 34.3 | 5786 | 1007 | 23012 | none |
|
|
| monero | 276.9 | 276.9 | 305.1 | 6 | 0.083 | 0.034 | 0.127 | 76.5 | 3569 | 557 | 19172 | none |
|
|
| lwma60 | 178.1 | 209.9 | 352.7 | 0 | 0.201 | 0.125 | 0.087 | 42.2 | 281 | 192 | 20902 | none |
|
|
| lwma120 | 307.9 | 317.6 | 729.2 | 0 | 0.115 | 0.085 | 0.104 | 38.8 | 600 | 412 | 20529 | none |
|
|
| igneum | 205.1 | 228.0 | 491.7 | 0 | 0.130 | 0.046 | 0.133 | 31.9 | 430 | 320 | 20770 | 8333 |
|
|
| igneum-literal | 473.2 | 382.0 | 647.2 | 9 | 0.086 | 0.039 | 0.114 | 28.1 | 714 | 759 | 20753 | 5370 |
|
|
|
|
### polluted: window polluted by a pre-step slow period (21 min at 0.11 blocks/s, 13 min idle, then 0.6 blocks/s at genesis difficulty)
|
|
|
|
| controller | first within 10% s | settled s | recovery blocks | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks | peak rate | trough rate after 10 min |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | 721.0 | 2722.4 | 5176 | 7.512 | 0.017 | 0.117 | 10.0 | 2384 | 0 | 18668 | none | 8.5 | 0.6 |
|
|
| monero | 126.9 | 211.0 | 826 | 0.077 | 0.032 | 0.133 | 9.7 | 675 | 0 | 17706 | none | 14.9 | 0.9 |
|
|
| lwma60 | 89.4 | 89.4 | 131 | 0.168 | 0.128 | 0.088 | 11.9 | 35 | 0 | 17088 | none | 5.7 | 0.6 |
|
|
| lwma120 | 173.7 | 173.7 | 259 | 0.138 | 0.086 | 0.092 | 10.4 | 77 | 0 | 17152 | none | 5.9 | 0.7 |
|
|
| igneum | 71.3 | 71.3 | 142 | 0.152 | 0.042 | 0.120 | 10.6 | 81 | 0 | 17139 | 2823 | 8.5 | 0.7 |
|
|
| igneum-literal | 715.3 | 2041.7 | 2720 | 0.110 | 0.036 | 0.120 | 11.1 | 633 | 0 | 17775 | 2018 | 8.5 | 0.7 |
|
|
|
|
## The devnet record
|
|
|
|
python3 sim.py --profiles none --record devnet-2026-10-03.csv --events 2026-10-03T19:28:05+00:00,2026-10-03T19:42:40+00:00
|
|
|
|
### Exact replay of Kaspa's rule on the record
|
|
|
|
Blocks 3682, chain blocks 1656, retargets checked 1056, exact before the first mismatch 0, mismatches 1056, first at daa 845: have 0x1e00a097 want 0x1e009b9a
|
|
(A chain-only replay cannot see the merged blocks that Kaspa's sampled window includes once the DAG widens.)
|
|
|
|
Real profile segments (hash rate estimated as expected hashes over wall time):
|
|
|
|
| from s | to s | blocks/s at genesis difficulty | MH/s |
|
|
|---|---|---|---|
|
|
| 0 | 1215 | 0.114 | 30.7 |
|
|
| 1215 | 2090 | 0.006 | 1.5 |
|
|
| 2090 | 4064 | 0.433 | 116.2 |
|
|
|
|
### real: the devnet record replayed as a hash-rate profile
|
|
|
|
| controller | first within 10% s | settled s | recovery blocks | overshoot | steady std of rate | steady blocks/min CV | worst gap s | blocks above 2x | blocks below 0.5x | blocks | fast-lane blocks | blocks within 10% | step factor |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| kaspa | 261.9 | none | none | 6.244 | 1.599 | 0.567 | 7.8 | 2340 | 0 | 4776 | none | 0 | 75.7 |
|
|
| monero | 135.9 | 135.9 | 729 | 0.092 | 0.027 | 0.119 | 6.8 | 672 | 0 | 3729 | none | 2822 | 75.7 |
|
|
| lwma60 | 74.6 | 74.6 | 157 | 0.183 | 0.109 | 0.067 | 7.4 | 87 | 0 | 3890 | none | 2175 | 75.7 |
|
|
| lwma120 | 156.5 | 156.5 | 330 | 0.147 | 0.084 | 0.086 | 7.1 | 174 | 0 | 3691 | none | 2390 | 75.7 |
|
|
| igneum | 78.7 | 78.7 | 192 | 0.180 | 0.087 | 0.105 | 7.3 | 132 | 0 | 3740 | 2484 | 2608 | 75.7 |
|
|
| igneum-literal | 482.4 | 1516.2 | 2112 | 0.008 | 0.456 | 0.186 | 7.4 | 515 | 0 | 4119 | 1959 | 2170 | 75.7 |
|
|
|
|
## Tuning sweeps
|
|
|
|
First sweep (symmetric 3% clamp, cap 6 T baseline):
|
|
|
|
### Tune ns
|
|
|
|
| ctrl | up50 rec | up50 first | up50 std | down50 rec | down50 first | down50 std | down50 gap | epoch30 rec | epoch30 first | epoch30 std | walk10 rec | walk10 first | walk10 std | walk10 >2x/<0.5x | hop10 rec | hop10 first | hop10 std | polluted rec | polluted first | polluted std | polluted peak |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| ns=60 | 72.8 | 72.8 | 0.069 | 1843.1 | 1843.1 | 0.069 | 114.2 | 127.0 | 80.2 | 0.067 | none | none | 0.089 | 0/0 | 301.6 | 251.0 | 0.069 | 56.4 | 56.4 | 0.083 | 4.4 |
|
|
| ns=120 | 63.0 | 63.0 | 0.040 | 1786.2 | 1786.2 | 0.040 | 211.2 | 155.9 | 99.0 | 0.033 | none | none | 0.061 | 0/0 | 275.6 | 275.6 | 0.040 | 69.3 | 69.3 | 0.048 | 5.8 |
|
|
| ns=180 | 63.3 | 63.3 | 0.035 | 2131.4 | 2131.4 | 0.035 | 125.1 | 156.3 | 99.0 | 0.017 | none | none | 0.056 | 0/0 | 356.1 | 356.1 | 0.035 | 76.5 | 76.5 | 0.042 | 5.6 |
|
|
|
|
### Tune trig
|
|
|
|
| ctrl | up50 rec | up50 first | up50 std | down50 rec | down50 first | down50 std | down50 gap | epoch30 rec | epoch30 first | epoch30 std | walk10 rec | walk10 first | walk10 std | walk10 >2x/<0.5x | hop10 rec | hop10 first | hop10 std | polluted rec | polluted first | polluted std | polluted peak |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| trig=0.15 | 66.7 | 66.7 | 0.077 | 1591.5 | 1591.5 | 0.077 | 98.7 | 137.3 | 107.3 | 0.070 | none | none | 0.082 | 0/0 | 312.9 | 261.8 | 0.077 | 58.1 | 58.1 | 0.075 | 5.8 |
|
|
| trig=0.25 | 63.0 | 63.0 | 0.040 | 1786.2 | 1786.2 | 0.040 | 211.2 | 155.9 | 99.0 | 0.033 | none | none | 0.061 | 0/0 | 275.6 | 275.6 | 0.040 | 69.3 | 69.3 | 0.048 | 5.8 |
|
|
| trig=0.35 | 62.9 | 62.9 | 0.034 | 1835.4 | 1835.4 | 0.034 | 126.4 | 156.3 | 99.0 | 0.016 | none | none | 0.054 | 0/0 | 328.5 | 279.2 | 0.034 | 78.4 | 78.4 | 0.042 | 5.5 |
|
|
|
|
### Tune clamp_pct
|
|
|
|
| ctrl | up50 rec | up50 first | up50 std | down50 rec | down50 first | down50 std | down50 gap | epoch30 rec | epoch30 first | epoch30 std | walk10 rec | walk10 first | walk10 std | walk10 >2x/<0.5x | hop10 rec | hop10 first | hop10 std | polluted rec | polluted first | polluted std | polluted peak |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| clamp_pct=0.02 | 84.0 | 84.0 | 0.039 | 2588.2 | 2588.2 | 0.039 | 216.8 | 156.3 | 99.4 | 0.031 | none | none | 0.060 | 0/0 | 373.6 | 336.9 | 0.039 | 80.1 | 80.1 | 0.046 | 5.4 |
|
|
| clamp_pct=0.03 | 63.0 | 63.0 | 0.040 | 1786.2 | 1786.2 | 0.040 | 211.2 | 155.9 | 99.0 | 0.033 | none | none | 0.061 | 0/0 | 275.6 | 275.6 | 0.040 | 69.3 | 69.3 | 0.048 | 5.8 |
|
|
| clamp_pct=0.05 | 62.2 | 62.2 | 0.040 | 1312.5 | 1312.5 | 0.040 | 173.8 | 155.8 | 98.9 | 0.034 | none | none | 0.062 | 0/0 | 284.6 | 258.8 | 0.040 | 59.9 | 59.9 | 0.049 | 5.4 |
|
|
|
|
### Tune ease_pct
|
|
|
|
| ctrl | up50 rec | up50 first | up50 std | down50 rec | down50 first | down50 std | down50 gap | epoch30 rec | epoch30 first | epoch30 std | walk10 rec | walk10 first | walk10 std | walk10 >2x/<0.5x | hop10 rec | hop10 first | hop10 std | polluted rec | polluted first | polluted std | polluted peak |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| ease_pct=0.03 | 63.0 | 63.0 | 0.040 | 1786.2 | 1786.2 | 0.040 | 211.2 | 155.9 | 99.0 | 0.033 | none | none | 0.061 | 0/0 | 275.6 | 275.6 | 0.040 | 69.3 | 69.3 | 0.048 | 5.8 |
|
|
| ease_pct=0.06 | 62.7 | 62.7 | 0.039 | 1282.5 | 1282.5 | 0.039 | 176.0 | 155.6 | 98.8 | 0.031 | none | none | 0.061 | 0/0 | 299.5 | 265.0 | 0.039 | 58.5 | 58.5 | 0.048 | 5.8 |
|
|
| ease_pct=0.1 | 62.2 | 62.2 | 0.039 | 1164.4 | 1164.4 | 0.039 | 65.3 | 155.5 | 98.8 | 0.030 | none | none | 0.062 | 0/0 | 253.4 | 253.4 | 0.039 | 71.7 | 71.7 | 0.048 | 6.2 |
|
|
|
|
### Tune k0
|
|
|
|
| ctrl | up50 rec | up50 first | up50 std | down50 rec | down50 first | down50 std | down50 gap | epoch30 rec | epoch30 first | epoch30 std | walk10 rec | walk10 first | walk10 std | walk10 >2x/<0.5x | hop10 rec | hop10 first | hop10 std | polluted rec | polluted first | polluted std | polluted peak |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| k0=8 | 63.0 | 63.0 | 0.040 | 1786.6 | 1786.6 | 0.040 | 211.1 | 156.0 | 99.0 | 0.033 | none | none | 0.061 | 0/0 | 311.5 | 280.9 | 0.040 | 67.1 | 67.1 | 0.048 | 5.5 |
|
|
| k0=16 | 63.0 | 63.0 | 0.040 | 1786.2 | 1786.2 | 0.040 | 211.2 | 155.9 | 99.0 | 0.033 | none | none | 0.061 | 0/0 | 275.6 | 275.6 | 0.040 | 69.3 | 69.3 | 0.048 | 5.8 |
|
|
| k0=32 | 63.0 | 63.0 | 0.040 | 1786.9 | 1786.9 | 0.040 | 211.9 | 156.0 | 99.1 | 0.033 | none | none | 0.061 | 0/0 | 290.0 | 263.0 | 0.040 | 71.4 | 71.4 | 0.047 | 5.7 |
|
|
|
|
### Tune cap
|
|
|
|
| ctrl | up50 rec | up50 first | up50 std | down50 rec | down50 first | down50 std | down50 gap | epoch30 rec | epoch30 first | epoch30 std | walk10 rec | walk10 first | walk10 std | walk10 >2x/<0.5x | hop10 rec | hop10 first | hop10 std | polluted rec | polluted first | polluted std | polluted peak |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| cap=6 | 63.0 | 63.0 | 0.040 | 1786.2 | 1786.2 | 0.040 | 211.2 | 155.9 | 99.0 | 0.033 | none | none | 0.061 | 0/0 | 275.6 | 275.6 | 0.040 | 69.3 | 69.3 | 0.048 | 5.8 |
|
|
| cap=20 | 63.8 | 63.8 | 0.039 | 1703.7 | 1703.7 | 0.039 | 165.8 | 143.7 | 86.8 | 0.033 | none | none | 0.061 | 0/0 | 274.9 | 257.2 | 0.039 | 62.9 | 62.9 | 0.048 | 5.8 |
|
|
| cap=132 | 63.8 | 63.8 | 0.039 | 1649.6 | 1649.6 | 0.039 | 161.0 | 143.7 | 86.8 | 0.033 | none | none | 0.061 | 0/0 | 263.5 | 238.2 | 0.039 | 75.8 | 75.8 | 0.048 | 13.1 |
|
|
|
|
Second sweep (harden 3%, ease 10%, cap 6 T baseline; the cap row fixed the final value at 20 T):
|
|
|
|
### Tune ns
|
|
|
|
| ctrl | up50 rec | up50 first | up50 std | down50 rec | down50 first | down50 std | down50 gap | epoch30 rec | epoch30 first | epoch30 std | walk10 rec | walk10 first | walk10 std | walk10 >2x/<0.5x | hop10 rec | hop10 first | hop10 std | polluted rec | polluted first | polluted std | polluted peak |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| ns=60 | 57.5 | 57.5 | 0.080 | 595.9 | 595.9 | 0.080 | 87.5 | 120.2 | 92.6 | 0.076 | none | none | 0.093 | 0/0 | 201.2 | 152.1 | 0.080 | 60.8 | 60.8 | 0.090 | 5.2 |
|
|
| ns=120 | 62.2 | 62.2 | 0.039 | 1164.4 | 1164.4 | 0.039 | 65.3 | 155.5 | 98.8 | 0.030 | none | none | 0.062 | 0/0 | 253.4 | 253.4 | 0.039 | 71.7 | 71.7 | 0.048 | 6.2 |
|
|
| ns=180 | 63.5 | 63.5 | 0.034 | 1742.3 | 1742.3 | 0.034 | 93.4 | 155.8 | 98.8 | 0.017 | none | none | 0.056 | 0/0 | 354.2 | 344.3 | 0.034 | 77.3 | 77.3 | 0.042 | 5.7 |
|
|
|
|
### Tune trig
|
|
|
|
| ctrl | up50 rec | up50 first | up50 std | down50 rec | down50 first | down50 std | down50 gap | epoch30 rec | epoch30 first | epoch30 std | walk10 rec | walk10 first | walk10 std | walk10 >2x/<0.5x | hop10 rec | hop10 first | hop10 std | polluted rec | polluted first | polluted std | polluted peak |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| trig=0.15 | 63.2 | 63.2 | 0.078 | 1098.2 | 1098.2 | 0.078 | 75.1 | 136.1 | 106.1 | 0.072 | none | none | 0.083 | 0/0 | 244.8 | 234.9 | 0.078 | 62.1 | 62.1 | 0.075 | 5.2 |
|
|
| trig=0.25 | 62.2 | 62.2 | 0.039 | 1164.4 | 1164.4 | 0.039 | 65.3 | 155.5 | 98.8 | 0.030 | none | none | 0.062 | 0/0 | 253.4 | 253.4 | 0.039 | 71.7 | 71.7 | 0.048 | 6.2 |
|
|
| trig=0.35 | 63.5 | 63.5 | 0.034 | 1238.4 | 1238.4 | 0.034 | 75.5 | 155.8 | 98.8 | 0.016 | none | none | 0.054 | 0/0 | 276.3 | 263.9 | 0.034 | 63.1 | 63.1 | 0.042 | 5.8 |
|
|
|
|
### Tune clamp_pct
|
|
|
|
| ctrl | up50 rec | up50 first | up50 std | down50 rec | down50 first | down50 std | down50 gap | epoch30 rec | epoch30 first | epoch30 std | walk10 rec | walk10 first | walk10 std | walk10 >2x/<0.5x | hop10 rec | hop10 first | hop10 std | polluted rec | polluted first | polluted std | polluted peak |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| clamp_pct=0.02 | 97.1 | 97.1 | 0.037 | 1091.3 | 1091.3 | 0.037 | 71.6 | 155.3 | 98.7 | 0.027 | none | none | 0.061 | 0/0 | 269.7 | 258.5 | 0.037 | 71.9 | 71.9 | 0.048 | 6.2 |
|
|
| clamp_pct=0.03 | 62.2 | 62.2 | 0.039 | 1164.4 | 1164.4 | 0.039 | 65.3 | 155.5 | 98.8 | 0.030 | none | none | 0.062 | 0/0 | 253.4 | 253.4 | 0.039 | 71.7 | 71.7 | 0.048 | 6.2 |
|
|
| clamp_pct=0.05 | 60.1 | 60.1 | 0.040 | 1371.6 | 1371.6 | 0.040 | 175.9 | 155.5 | 98.6 | 0.033 | none | none | 0.063 | 0/0 | 295.1 | 262.7 | 0.040 | 71.6 | 71.6 | 0.049 | 6.1 |
|
|
|
|
### Tune ease_pct
|
|
|
|
| ctrl | up50 rec | up50 first | up50 std | down50 rec | down50 first | down50 std | down50 gap | epoch30 rec | epoch30 first | epoch30 std | walk10 rec | walk10 first | walk10 std | walk10 >2x/<0.5x | hop10 rec | hop10 first | hop10 std | polluted rec | polluted first | polluted std | polluted peak |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| ease_pct=0.03 | 63.0 | 63.0 | 0.040 | 1786.2 | 1786.2 | 0.040 | 211.2 | 155.9 | 99.0 | 0.033 | none | none | 0.061 | 0/0 | 275.6 | 275.6 | 0.040 | 69.3 | 69.3 | 0.048 | 5.8 |
|
|
| ease_pct=0.06 | 62.7 | 62.7 | 0.039 | 1282.5 | 1282.5 | 0.039 | 176.0 | 155.6 | 98.8 | 0.031 | none | none | 0.061 | 0/0 | 299.5 | 265.0 | 0.039 | 58.5 | 58.5 | 0.048 | 5.8 |
|
|
| ease_pct=0.1 | 62.2 | 62.2 | 0.039 | 1164.4 | 1164.4 | 0.039 | 65.3 | 155.5 | 98.8 | 0.030 | none | none | 0.062 | 0/0 | 253.4 | 253.4 | 0.039 | 71.7 | 71.7 | 0.048 | 6.2 |
|
|
| ease_pct=0.15 | 61.6 | 61.6 | 0.038 | 1111.4 | 1111.4 | 0.038 | 65.4 | 155.2 | 98.4 | 0.030 | none | none | 0.062 | 0/0 | 261.6 | 250.5 | 0.038 | 67.1 | 67.1 | 0.048 | 6.4 |
|
|
|
|
### Tune k0
|
|
|
|
| ctrl | up50 rec | up50 first | up50 std | down50 rec | down50 first | down50 std | down50 gap | epoch30 rec | epoch30 first | epoch30 std | walk10 rec | walk10 first | walk10 std | walk10 >2x/<0.5x | hop10 rec | hop10 first | hop10 std | polluted rec | polluted first | polluted std | polluted peak |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| k0=8 | 62.2 | 62.2 | 0.038 | 1144.7 | 1144.7 | 0.038 | 65.3 | 155.5 | 98.7 | 0.030 | none | none | 0.062 | 0/0 | 247.7 | 247.7 | 0.038 | 70.2 | 70.2 | 0.048 | 6.2 |
|
|
| k0=16 | 62.2 | 62.2 | 0.039 | 1164.4 | 1164.4 | 0.039 | 65.3 | 155.5 | 98.8 | 0.030 | none | none | 0.062 | 0/0 | 253.4 | 253.4 | 0.039 | 71.7 | 71.7 | 0.048 | 6.2 |
|
|
| k0=32 | 62.2 | 62.2 | 0.038 | 1169.9 | 1169.9 | 0.038 | 65.3 | 155.7 | 98.9 | 0.030 | none | none | 0.061 | 0/0 | 287.5 | 266.4 | 0.038 | 71.4 | 71.4 | 0.048 | 6.3 |
|
|
|
|
### Tune cap
|
|
|
|
| ctrl | up50 rec | up50 first | up50 std | down50 rec | down50 first | down50 std | down50 gap | epoch30 rec | epoch30 first | epoch30 std | walk10 rec | walk10 first | walk10 std | walk10 >2x/<0.5x | hop10 rec | hop10 first | hop10 std | polluted rec | polluted first | polluted std | polluted peak |
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
| cap=6 | 62.2 | 62.2 | 0.039 | 1164.4 | 1164.4 | 0.039 | 65.3 | 155.5 | 98.8 | 0.030 | none | none | 0.062 | 0/0 | 253.4 | 253.4 | 0.039 | 71.7 | 71.7 | 0.048 | 6.2 |
|
|
| cap=20 | 61.7 | 61.7 | 0.038 | 657.4 | 657.4 | 0.038 | 35.3 | 143.7 | 86.5 | 0.030 | none | none | 0.062 | 0/0 | 211.9 | 208.1 | 0.038 | 70.0 | 70.0 | 0.049 | 8.5 |
|
|
| cap=132 | 61.7 | 61.7 | 0.038 | 629.5 | 629.5 | 0.038 | 32.4 | 143.7 | 86.5 | 0.030 | none | none | 0.062 | 0/0 | 212.9 | 209.1 | 0.038 | 63.8 | 63.8 | 0.049 | 16.4 |
|
|
|
|
## Test network
|
|
|
|
Igneum rule, 3 nodes, 3 CPU miners, 20 minutes (`testnet-igneum-2026-10-03.csv`), analysed with the same 61-block mean as the simulator:
|
|
|
|
```
|
|
block 1 at 2026-10-03T21:38:32.221000 schedule start 21:38:31 = 1 s before block 1
|
|
miner starts (s from block 1): [('A', -1.221), ('B', 358.779), ('C', 358.779), ('B+C stop', 778.8)]
|
|
| from s | blocks | blocks/s | mean difficulty | MH/s (work over 30 s) |
|
|
|---|---|---|---|---|
|
|
| 0 | 5 | 0.17 | 262,143 | 0.087 |
|
|
| 30 | 3 | 0.10 | 262,143 | 0.052 |
|
|
| 60 | 6 | 0.20 | 190,283 | 0.076 |
|
|
| 90 | 22 | 0.73 | 62,248 | 0.091 |
|
|
| 120 | 16 | 0.53 | 33,904 | 0.036 |
|
|
| 150 | 25 | 0.83 | 31,146 | 0.052 |
|
|
| 180 | 37 | 1.23 | 31,340 | 0.077 |
|
|
| 210 | 38 | 1.27 | 32,492 | 0.082 |
|
|
| 240 | 27 | 0.90 | 32,722 | 0.059 |
|
|
| 270 | 30 | 1.00 | 32,591 | 0.065 |
|
|
| 300 | 29 | 0.97 | 32,698 | 0.063 |
|
|
| 330 | 28 | 0.93 | 32,395 | 0.060 |
|
|
| 360 | 57 | 1.90 | 35,345 | 0.134 |
|
|
| 390 | 25 | 0.83 | 44,446 | 0.074 |
|
|
| 420 | 26 | 0.87 | 35,183 | 0.061 |
|
|
| 450 | 23 | 0.77 | 34,670 | 0.053 |
|
|
| 480 | 39 | 1.30 | 34,488 | 0.090 |
|
|
| 510 | 34 | 1.13 | 34,902 | 0.079 |
|
|
| 540 | 48 | 1.60 | 38,841 | 0.124 |
|
|
| 570 | 27 | 0.90 | 49,788 | 0.090 |
|
|
| 600 | 31 | 1.03 | 49,682 | 0.103 |
|
|
| 630 | 39 | 1.30 | 56,451 | 0.147 |
|
|
| 660 | 23 | 0.77 | 57,562 | 0.088 |
|
|
| 690 | 36 | 1.20 | 57,271 | 0.137 |
|
|
| 720 | 20 | 0.67 | 58,646 | 0.078 |
|
|
| 750 | 35 | 1.17 | 51,839 | 0.121 |
|
|
| 780 | 16 | 0.53 | 43,030 | 0.046 |
|
|
| 810 | 19 | 0.63 | 40,907 | 0.052 |
|
|
| 840 | 26 | 0.87 | 40,517 | 0.070 |
|
|
| 870 | 15 | 0.50 | 39,733 | 0.040 |
|
|
| 900 | 30 | 1.00 | 28,790 | 0.058 |
|
|
| 930 | 17 | 0.57 | 26,404 | 0.030 |
|
|
| 960 | 43 | 1.43 | 24,354 | 0.070 |
|
|
| 990 | 27 | 0.90 | 26,346 | 0.047 |
|
|
| 1020 | 40 | 1.33 | 29,237 | 0.078 |
|
|
| 1050 | 42 | 1.40 | 38,348 | 0.107 |
|
|
| 1080 | 39 | 1.30 | 42,203 | 0.110 |
|
|
| 1110 | 21 | 0.70 | 41,639 | 0.058 |
|
|
| 1140 | 39 | 1.30 | 38,832 | 0.101 |
|
|
| 1170 | 30 | 1.00 | 39,650 | 0.079 |
|
|
|
|
segments (hash rate = expected hashes over wall time):
|
|
0 to 359 s: 0.0653 MH/s
|
|
359 to 779 s: 0.0988 MH/s
|
|
779 to 1192 s: 0.0686 MH/s
|
|
|
|
recovery after each event (61-block centred mean of expected rate within 10% of 1 block/s):
|
|
start at 0 s: first within 10% 132 s, settled (60 blocks) 132 s, worst gap 15.4 s, blocks after 1133
|
|
A at -1 s: first within 10% 134 s, settled (60 blocks) 134 s, worst gap 15.4 s, blocks after 1133
|
|
B at 359 s: first within 10% 214 s, settled (60 blocks) 214 s, worst gap 7.3 s, blocks after 869
|
|
C at 359 s: first within 10% 214 s, settled (60 blocks) 214 s, worst gap 7.3 s, blocks after 869
|
|
B+C stop at 779 s: first within 10% 85 s, settled (60 blocks) none s, worst gap 7.3 s, blocks after 404
|
|
```
|
|
|
|
Kaspa rule, same network and genesis, 10 minutes (`testnet-kaspa-2026-10-03.csv`): 70 blocks, bits 0x1e200000 on every header, 0.08 blocks/s, worst gap 63 s, delivered 0.042 MH/s; no retarget (block 600 was about 2 hours away).
|