> For the complete documentation index, see [llms.txt](https://streamlock.gitbook.io/streamlock-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://streamlock.gitbook.io/streamlock-docs/core-concepts/freeze-and-unlock.md).

# Freeze & Unlock Windows

Streamlock uses a milestone-based lifecycle to manage when selling and withdrawals can occur. Understanding these phases is essential to timing your exits.

***

## The Lifecycle: GRIND → FREEZE → UNLOCK → GRIND

Every token pool on Streamlock cycles through three phases:

| Phase      | What Happens                            | Selling Allowed?           |
| ---------- | --------------------------------------- | -------------------------- |
| **GRIND**  | Price works toward the milestone target | No (tokens locked)         |
| **FREEZE** | Target hit — pool freezes               | No                         |
| **UNLOCK** | Window opens for selling/withdrawing    | Yes (with time-decay fees) |

After the unlock window closes, the pool enters a new GRIND phase with a higher milestone target. The cycle repeats.

***

## GRIND Phase

The active trading phase. Buyers purchase tokens, and the community works ("grinds") to push the price toward the current milestone target.

During GRIND:

* Buying is open (subject to epoch caps)
* Selling and withdrawals are **not available**
* Price progress toward target is tracked on the token page

***

## FREEZE Phase

When the market price hits or exceeds the milestone target, the pool enters a **freeze**.

**Purpose:**

* Prevents immediate sell-the-news dumps
* Gives the community time to recognize the milestone
* Creates a predictable transition to the unlock window

**Duration:**

* Milestone 1: **24 hours** (86,400 seconds)
* Subsequent milestones get shorter: `base / (1 + (m-1)/5)`

| Milestone | Freeze Duration |
| --------- | --------------- |
| 1         | 24h             |
| 2         | 20h             |
| 3         | \~17.1h         |
| 5         | \~13.3h         |
| 10        | \~8.7h          |

During freeze:

* No selling or withdrawals
* Buying is still open
* Price is above target by definition

***

## UNLOCK Phase

After the freeze ends, the **unlock window** opens. This is the only time you can sell tokens or withdraw from your stream.

**Duration:**

* Milestone 1: **48 hours** (172,800 seconds)
* Subsequent milestones get longer: `base × (1 + (m-1)/3)`

| Milestone | Unlock Window |
| --------- | ------------- |
| 1         | 48h           |
| 2         | 64h           |
| 3         | \~80h         |
| 5         | \~112h        |
| 10        | \~192h        |

During the unlock window:

* Sell your tokens for SOL via the AMM
* Withdraw tokens to your wallet
* Sell fees start high (\~50%) and decay to \~1% by end of window

After the unlock window closes, any unsold tokens remain locked. The pool enters a new GRIND phase with a higher milestone target.

***

## What if the price moves during the unlock window?

The unlock window runs on a **fixed timer** — it opens when the freeze ends and closes after its set duration. Price movements during the window do **not** shorten, extend, or reopen it, and when it closes the milestone **always** advances to the next, higher target. A few things follow from this that are important to understand before you hold:

**If price falls during the window:** the next milestone target still rises (e.g. M1 → M2 is 2×). The pool returns to GRIND — where selling is closed — until that higher target is reached. In other words, **the exit bar only goes up; it never resets lower.** This is the core commitment of the mechanism: it structurally prevents the panic-dump death spiral that kills most tokens, but it also means a holder who doesn't exit during a window stays locked until the next, higher target is hit.

**You earn while you wait.** Being locked is not dead time. **40% of every trading fee collected during unlock windows is distributed to holders** (the protocol takes a share, and 10% goes to the creator). Sell fees start at \~50% early in the window — so the holders who wait are continuously subsidized by the traders who exit. Holding through the cycles is a yield-bearing position, funded by the people who sell.

**If price runs far above the next target:** milestones don't skip — the pool advances one freeze → unlock cycle at a time until it catches up to where price is. A strong run means *more* upcoming windows (and more fee rewards), reached in sequence rather than all at once.

> **Plan your exits around the windows.** Because the bar only rises and selling is window-only, decide your exit *before* a window opens, not after price has already moved. The unlock window — not the grind phase — is where you act.

***

## Milestone Progression

Each time a target is hit and the cycle completes, the next target is set higher:

```
Next Target = Current Target × (1 + 1/√milestone)
```

| Milestone | Multiplier | Example (starting at 0.0001 SOL) |
| --------- | ---------- | -------------------------------- |
| 1 → 2     | 2.0×       | 0.0001 → 0.0002                  |
| 2 → 3     | \~1.71×    | 0.0002 → 0.000342                |
| 3 → 4     | \~1.58×    | 0.000342 → 0.000540              |
| 5 → 6     | \~1.45×    | —                                |
| 10 → 11   | \~1.32×    | —                                |

Target growth slows with each milestone, making each successive target harder but still achievable.

***

## Anti-Whale Time Lock

If you purchase more than the 1% holding limit, excess tokens go into a separate time-locked position:

| Position Type      | Lock Conditions                                                                                     |
| ------------------ | --------------------------------------------------------------------------------------------------- |
| Price-gated stream | Until milestone target hit + unlock window                                                          |
| Excess (>1%)       | Milestone-anchored: 67-day cliff from `max(buy_time, first_milestone_hit)`, then 67-day linear vest |

The excess lock runs through the same vesting backend as the primary stream — [Locksmith](/streamlock-docs/core-concepts/locksmith.md) for new pools, Streamflow for legacy / opt-in pools. The schedule:

* **Cliff anchor**: whichever is later — the user's buy time or the pool's first-milestone-hit timestamp. Adding 67 days gives the effective cliff date.
* **Linear vest**: 67 days after cliff, releasing roughly `1/67` of the excess per day.
* **Claim path**: a protocol-run crank advances the drip during the pool's active UNLOCK windows; holders claim accumulated SOL from their entitlement ledger whenever.
* **Cancel bypass**: if a stream is cancelled, the recipient can always drain the vault residual regardless of milestone state.

This ensures fair distribution without preventing large buyers from participating — and closes the pump-and-dump timing loophole where a whale could wait out a fixed calendar timer independent of the token's performance.

***

## Dispute Window (Gaming)

For the gaming system, dispute windows protect players from incorrect game results.

**How it works:**

1. Game ends → Results submitted by operator
2. **Dispute window opens** (typically 1 hour)
3. Players can challenge results if incorrect
4. Window closes → Results finalized
5. Entitlement changes applied to ledgers

**What you can dispute:**

* Incorrect game outcomes
* Wrong entitlement calculations
* Operator errors

**Cost:** Small dispute fee (refunded if dispute is valid)

***

## Timing Summary

```
     ┌──────────┐     ┌──────────┐     ┌──────────┐
     │  GRIND   │────▶│  FREEZE  │────▶│  UNLOCK  │
     │          │     │          │     │  WINDOW  │
     │ Buy open │     │ No sell  │     │ Sell open│
     │ No sell  │     │ 24h (M1) │     │ 48h (M1) │
     └────┬─────┘     └──────────┘     └────┬─────┘
          │                                  │
          │         New target set            │
          ◀──────────────────────────────────-┘
```

For gaming:

```
GAME ENDS
    ↓
┌─────────────────┐
│ Results Submit  │  ← Operator posts outcomes
└────────┬────────┘
         ↓
┌─────────────────┐
│ Dispute Window  │  ← Players can challenge (~1 hour)
└────────┬────────┘
         ↓
┌─────────────────┐
│   Finalized     │  ← Entitlements updated
└─────────────────┘
```

***

## Key Takeaways

1. **Three phases** — GRIND (buy/hold), FREEZE (wait), UNLOCK (sell/withdraw)
2. **Freeze gets shorter** with each milestone — rewarding long-term holders
3. **Unlock window gets longer** with each milestone — more time to exit
4. **The exit bar only rises** — milestones advance on the window timer regardless of price, so plan exits around windows; holders earn **40% of unlock-window fees** while they wait
5. **Sell fees decay** during the unlock window — patience pays off
6. **Milestone-anchored lock on excess** — 67-day cliff from the later of buy or first milestone, then 67-day vesting for anti-whale
7. **1-hour dispute window** — Challenge bad game results quickly

***

## Related

* [Target Price & Milestones](/streamlock-docs/core-concepts/target-price.md) - How targets progress
* [Streaming Proceeds](/streamlock-docs/core-concepts/streaming-proceeds.md) - How settlement works
* [Fee Structure](/streamlock-docs/fees-and-economics/fee-structure.md) - Fees during the unlock window
