> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kronex.network/llms.txt
> Use this file to discover all available pages before exploring further.

# Difficulty

> How Kronex retargets toward a 10-second block, and why there is no difficulty bomb.

Kronex keeps the shape of the Ethereum EIP-100 difficulty controller — uncle
aware, clamped at -99, stepping by one 2048th of the parent difficulty — and
changes two things about it.

```text theme={null}
adjustment = max( (2 if parent has uncles else 1) - (block_time - parent_time) / 7 , -99 )
difficulty = parent_difficulty + parent_difficulty / 2048 * adjustment
```

**The duration divisor is 7, not 9.** That moves the solo-mining equilibrium
from roughly 13 seconds to `7 / ln(2)`, about 10.1 seconds, which is the block
time Kronex targets.

**There is no difficulty bomb.** Kronex has no ice age, so nothing exponential
is added on top and no scheduled fork is needed to defuse anything.

| Constant           | Value  |
| ------------------ | ------ |
| Duration divisor   | 7      |
| Bound divisor      | 2048   |
| Clamp              | -99    |
| Minimum difficulty | 131072 |
| Target block time  | 10 s   |

## Parent chains retarget separately

The controller above governs the kHeavyHash seal. Merge-mined work is tracked
per parent chain, because their block times span an order of magnitude and a
single threshold could not serve all of them.

| Parent chain | Donor block time | Target shares per Kronex block |
| ------------ | ---------------- | ------------------------------ |
| Bitcoin Cash | 600 s            | 8                              |
| Litecoin     | 150 s            | 8                              |
| Ravencoin    | 60 s             | 8                              |
| Zcash        | 75 s             | 8                              |

Each chain's retarget moves its share difficulty toward the rate that produces
that share count. Where donor protection is configured, the budget also shrinks
linearly once Kronex difficulty passes 75% of the donor chain's own difficulty
and reaches zero at 90%, so Kronex stops asking a parent chain for more work
before it becomes a burden on it.

## Difficulty and share difficulty

Consensus difficulty is not the number a pool hands a miner. The two scales are
exactly 2^32 apart, and mixing them up is the single most common integration
bug — a pool that converts by hand usually ends up either accepting nothing or
accepting everything.

Take the boundary from index `[2]` of the [`krnx_getWork`](/rpc/krnx/getWork)
result, which is already `2^256 / difficulty`, and let the stratum layer scale
from there.
