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

# Dynawind

Dynawind is an on-chain idle roguelite on Robinhood Chain.

You own a champion. You send it into the ruins. Hours later it comes back with $WIND and less health, and you decide: bank it, or push on for double at the cost of more health. Heal when you're impatient, upgrade your Hearth when you're rich, come back tomorrow for the chest.

{% hint style="info" %}
**Status:** Some features described here are switched off and will be enabled one at a time.
{% endhint %}

|           |                                                                              |
| --------- | ---------------------------------------------------------------------------- |
| Chain     | Robinhood Chain (ID 4663), Ethereum L2                                       |
| Champions | 2,222 genesis                                                                |
| Token     | $WIND, fixed supply, launched on Pons; rewards come from an on-chain reserve |

***

## Play

***

### How to play

1. **Get $WIND.** Buy on the Pons launch page or the Uniswap pool linked from the site.
2. **Get a champion.** Mint a genesis champion with $WIND (or buy one on secondary). Genesis is capped at 2,222.
3. **Connect** at [dynawind.xyz](https://dynawind.xyz) on Robinhood Chain.
4. **Stake your champion.** Staking moves the champion into the game contract. An unstaked champion sits at home and earns nothing. You can unstake any time you're not mid-dungeon.
5. **Pick a Dungeon.** Shallows (2h), Depths (8h) or Abyss (24h). Each costs a small $WIND entry fee and some health.
6. **Wait**.
7. **Resolve.** When the timer ends, the Oracle draws the result: a multiplier on your base reward, or, if you went in under 30 HP, a chance of being downed.
8. **Claim, or push on.** Claim takes the reward (half now, half locked). Push on is a % gamble: win and the reward grows by up to 300%; lose and the ruins take 35–60% of it back, your champion drops 20 HP, and the pushing is over for this dungeon.
9. **Heal** with $WIND when you don't want to wait for regen.
10. **Repeat.** Streaks, levels and Hearth upgrades make every dungeon a little better.

{% hint style="warning" %}
Dungeon runs cost a small $WIND entry fee, so keep a little in your wallet after minting.
{% endhint %}

***

### Champions

Each champion is an ERC-721 with an on-chain trait seed set at mint.&#x20;

Traits are cosmetic. They do not change rewards. The things that change rewards live in the game contract, not the NFT, and they are earned: **level**, **strength**, **streak**, **Hearth level**.

#### **Training**

XP from adventuring earns the right to level and $WIND is the cost to train. Training costs one day's base gross at your current strength (strength × 120 $WIND). Half is burned, half goes to the treasury. Each level adds +2 strength up to the cap of 40.

#### Stats

| Stat     | Starts at | Changes how                                                            |
| -------- | --------- | ---------------------------------------------------------------------- |
| Health   | 100       | Dungeons cost it, time and heals restore it                            |
| Strength | 14        | +2 per level, capped at 40 (reached at level 14)                       |
| Level    | 1         | XP from dungeons: 1 XP per hour of run time. Level N needs 10×N XP     |
| Streak   | 0         | +1 per consecutive day with a resolved dungeon, resets on a missed day |
| Hearth   | 1         | Paid upgrades to 4                                                     |

#### Minting

Champions are minted with $WIND. Half the price is burned, half goes to the treasury. The price is set after the $WIND launch settles and is published on the site and in *Contracts*.

#### Supply

2,222, forever.

#### Fee share

Staked genesis champions receive a share of the creator fees from every $WIND swap, paid in ETH, pro-rata per staked champion. The fee rewards will be emitted on a schedule. Claim from the site or directly from the FeeSplitter contract when the rewards are live.

Royalties: 2.5% on marketplaces for the NFTs.

***

### Dungeons

Dungeons are the main gameplay loop in Dynawind. Champions need more health than the dungeon's cost to set out. The cost is an entry fee and health points, varying on dungeon tier. If your champion gets downed, you will have to heal before adventuring again.

| Run     | Duration | Entry fee | Health cost | Multiplier range |
| ------- | -------- | --------- | ----------- | ---------------- |
| Shallow | 2h       | 250 $WIND | 8 HP        | 0.70× to 1.10×   |
| Deep    | 8h       | 500 $WIND | 18 HP       | 0.80× to 1.50×   |
| Abyssal | 24h      | 750 $WIND | 35 HP       | 0.40× to 3.00×   |

#### The reward formula

```
base   = strength × 120 $WIND
base  ×= 1 + 0.02 × min(streak, 15)
base  ×= 1.4              if the dungeon started under 30 HP
base  ×= 1.1              if Hearth is level 3 or higher
reward = base × multiplier
reward = min(reward, champion's daily cap remaining, daily pool remaining)
```

Example: strength 20, 5-day streak, healthy, Hearth 2, depths dungeon rolls 1.2×. `20 × 120 = 2,400` → `× 1.10 = 2,640` → `× 1.2 = 3,168 $WIND`, clipped by the champion's daily cap. Half pays now, half locks.&#x20;

#### Push on

After a dungeon run resolves you can push on instead of claiming. You get one attempt at pushing on.

| Outcome                                              | Odds | Effect                                                                                          |
| ---------------------------------------------------- | ---- | ----------------------------------------------------------------------------------------------- |
| Double your $WIND from a dungeon.                    | 45%  | pending ×2                                                                                      |
| **Triple your $WIND from a dungeon.**                | 1%   | pending ×3                                                                                      |
| Nothing, your champion is lazy and rests.            | 6%   | no change, no HP loss                                                                           |
| Lose a portion of your pending $WIND from a dungeon. | 48%  | the ruins take back **35–60%** of the pending, −20 HP, and **pushing is over for this dungeon** |

#### The daily caps

Two throttles sit between the reserve and players:

1. **Per champion,** `maxPerChampionDaily`. Dungeons, push-on wins and chests all count toward it. This is the cap. When it's spent, that champion is done earning until tomorrow.
2. **Global backstop. A**t the first action of each day the contract snapshots `min(dailyPool, reserve / 15)` and total rewards that day can never exceed it. **When the day's pool runs low, a resolve pays whatever remains - possibly less than the formula, possibly zero. It refills 00:00 UTC.**

The reserve itself only refills from mint proceeds, buybacks and tithes; rewards are never and cannot be minted.

***

### Health and risk

Health is the cost of playing.

* **Regen:** +10 HP per day (+5 with a Cot), applied whenever you next act.
* **Heal:** instant, 20 $WIND per HP missing (2,000 for a full heal). Half burned, half to treasury.
* **Under 30 HP:** rewards get a +40% bonus, but the dungeon has a 35% chance to end with your champion **downed**.
* **Downed:** health goes to 0, the dungeon returns nothing, and the champion is out for 24 hours, after which it recovers to 30 HP. Or pay 1,500 $WIND to revive early.
* **Watchtower** (Hearth level 4) lowers the downed chance to 25%.

Champions are never burned. Downed is a timeout, not a death.

***

### The Hearth and The Cache

#### The Hearth

> In the contracts this field is still called `bunker` .

| Level          | Cost         | Effect                  |
| -------------- | ------------ | ----------------------- |
| 2 · Cot        | 2,500 $WIND  | +5 HP regen per day     |
| 3 · Forge      | 6,000 $WIND  | +10% dungeon reward     |
| 4 · Watchtower | 12,000 $WIND | Downed chance 35% → 25% |

Upgrades are permanent for that champion. Cost is split half burn, half treasury.

#### Daily chest from The Cache

One per champion per day. Receive a varied amount of $WIND. Open all for every ready champion.

***

### The Overseer and The Oracle

They wait past the gate and take their cut. Everything yield-shaped happens at the Overseer's stall.

#### Relics

**Divination is the relic gacha.** Pay the fee of **1,000 $WIND**, half burned on the spot, half to the treasury. The Seer draws a relic into the slot you chose: one of eight kinds, one of four tiers (Worn 60% / Fine 30% / Ancient 8% / Mythic 2% at launch). \
\
Two slots per champion. Three ways to pay: wallet $WIND at full price, **the tithe** (from a pending reward, 10% off), or **salvage-fed** (3 matching pieces, 25% off).

| Relic          | Does                                |
| -------------- | ----------------------------------- |
| Windvane       | raises the dungeon multiplier floor |
| Old Boots      | dungeons cost less health           |
| Lantern        | bigger daily chests                 |
| Whetstone      | +strength                           |
| Hourglass      | locked $WIND unlocks faster         |
| Woven Charm    | less of each reward locks           |
| Gargoyle Tooth | harder to be downed                 |
| Sparrow Skull  | +XP every dungeon                   |

Tiers: Worn, Fine, Ancient, Mythic (60 / 30 / 8 / 2%). A draw that isn't better than what you hold **grinds it to dust**, which is the residue of a failed divination. Ten dust buys a guaranteed Fine-or-better draw. Relics improve dungeon outcomes per their listed effects.

* **Relics belong to the champion**, not the wallet: two slots stored against the champion's id. Sell the champion NFT and its relics go with it.
* **Salvage and dust belong to the wallet.**&#x20;

#### Salvage

Champions bring salvage back from the ruins at a 40% chance per resolved dungeon.&#x20;

* **Temple Runes** broken from the fallen sanctums,&#x20;
* **Rusty Blades** left by those who never made it home,&#x20;
* **Thread** unwound from the Oracle's own weaving.&#x20;

Sell pieces to her for a little $WIND, or feed three matching pieces into a divination for a discount.

#### The Tithe

When a dungeon resolves you can pay for a divination straight out of the pending reward, before it banks, at a discount of 10%. Half of every tithe is burned; the rest returns to the reward reserve.

***

## Economy

***

### $WIND

$WIND is the only currency in Dynawind.

|          |                                                                                                                             |
| -------- | --------------------------------------------------------------------------------------------------------------------------- |
| Standard | ERC-20                                                                                                                      |
| Supply   | fixed at launch; nobody can mint more, including us                                                                         |
| Launch   | Pons                                                                                                                        |
| Swap fee | creator fee on every trade → *FeeSplitter*                                                                                  |
| Emission | capped per champion per day (`maxPerChampionDaily`), with a global daily pool of `min(dailyPool, reserve/15)` as a backstop |

#### Where $WIND comes from

The game holds a **reserve** filled by players: half of every champion mint, plus $WIND bought back from the pool with the treasury's share of swap fees. Rewards are paid from it:

1. Dungeon rewards (half liquid, half locked)
2. Daily chests

Each day the game pays out at most 1/15 of the reserve (and never more than the daily pool cap), so emissions rise and fall with fee income and the reserve can't be drained by rewards. `reserve()` on the game contract shows the balance at any time. When it's empty, rewards stop until it's topped up. Nothing is minted; there's no yield for holding.

#### Where $WIND goes

| Spend                    | Burned | Treasury                             |
| ------------------------ | ------ | ------------------------------------ |
| Dungeon entry fee        | 60%    | 40%                                  |
| Heal                     | 50%    | 50%                                  |
| Revive                   | 50%    | 50%                                  |
| Hearth upgrade           | 50%    | 50%                                  |
| Relic divination / Tithe | 50%    | 50% (Tithe: 50% burned, 50% reserve) |

The design target is that a champion played casually is roughly break-even and a champion played well is profitable. The heal price and the entry fees are the two knobs used to hold that line.

#### Numbers at a glance

| Thing                            | Default                              | % of supply |
| -------------------------------- | ------------------------------------ | ----------- |
| Champion summon                  | 4,000                                | 0.0004%     |
| Dungeon entry                    | 250 / 500 / 750                      | —           |
| Heal                             | 20 per HP (2,000 full)               | —           |
| Revive                           | 1,500                                | —           |
| Hearth: Cot / Forge / Watchtower | 2,500 / 6,000 / 12,000               | —           |
| Relic divination                 | 1,000 (tithe 900, salvage-fed 750)   | —           |
| Salvage sale                     | 100 each                             | —           |
| Chest max by Hearth              | 300 / 400 / 600 / 600                | —           |
| Base reward per strength         | 120                                  | —           |
| Per-champion daily cap           | 5,000                                | 0.0005%     |
| Global daily pool                | min(500,000, reserve/15)             | ≤0.05%      |
| Training (level up)              | one day's base gross: strength × 120 | —           |

**The backstop, in plain words**

The per-champion cap is the ceiling players feel. The **global daily pool** behind it is the ceiling the system feels: at the first action of each UTC day the contract snapshots `min(500,000, reserve ÷ 15)` and total rewards that day can never exceed it, no matter what.&#x20;

***

### Fee splits

| To                         | Share |
| -------------------------- | ----- |
| Staked champions, pro-rata | 40%   |
| Treasury                   | 30%   |
| Team                       | 30%   |

Anyone can call `distribute()`. Holders claim per champion. Shares are setters and any change is an on-chain event.

Champion mints burn half and send half to reward reserve.

```
   reserve ──rewards──▶ players ──run fees / heals / upgrades──▶ 50–60% burned
                                                              └──▶ 40–50% treasury
   $WIND swaps ──creator fee──▶ FeeSplitter ──▶ staked champions / treasury / team
   champion mint ($WIND) ──▶ 50% burned / 50% reward reserve
```

***

### Locked $WIND

Half of every run reward is locked to the champion that earned it.

* Locked $WIND unlocks **10% per day**, and only on days that champion resolves a run.
* Stop playing and it stops unlocking. Start again and it resumes.
* Unlocked $WIND is released from the reserve's committed balance.
* Locked $WIND is not transferable and remains with the champion. Claim before you sell.

***

## Protocol

***

### Contracts

Robinhood Chain mainnet (chain ID 4663). Explorer: [robinhoodchain.blockscout.com](https://robinhoodchain.blockscout.com).

| Contract             | Address                                    | Notes                                   |
| -------------------- | ------------------------------------------ | --------------------------------------- |
| $WIND                | 0xe2bc194dda67e9eebb95800c2256244e5a311ad9 | deployed by Pons; fixed supply          |
| FeeSplitter          | 0x56D809dA93Ae1e5017b0cB87CEb28D94616D572f | receives creator fees                   |
| DynawindChampions    | 0x2A09B6fc38A967c13C84A795eA5CAEad1D6eD6E9 | immutable logic, phased mint            |
| DynawindRuns (proxy) | 0xC5E38f30f1d1023BE8B51AF9991A05a09C0Ccca3 | UUPS, upgradeable (team key + timelock) |

***

### Risks

Read this before you buy a champion or hold $WIND.

* The contracts are tested but new. An audit is planned; until it's published, assume bugs exist. The game contract is pausable and upgradeable so bugs can be fixed.
* $WIND has no promised value. Tokens and NFTs are regulated differently by jurisdiction. Nothing here is investment advice.

***

### FAQ

**Can my champion die?** No. Downed is a 24h timeout. Champions are never burned.

**What's the wallet limit?** 16 champions per wallet.

**How is the outcome seed determined?** Outcome seed = keccak(operator signature || prior blockhash) - the operator cannot pick outcomes.

**Do I have to stake?** To play, yes. Staking moves the champion into the game contract. Unstake any time you're not mid-run and have no pending rewards to claim.

**What if I sell a champion with locked $WIND?** The locked balance stays with the champion. Claim your liquid $WIND before you list it.

**Why is the reward smaller than the formula says?** The daily pool has a formula for maximum reward dispersed. It refills every day at 00:00 UTC. Additionally, champions have a capped $WIND production daily.

**What if the champions don't sell out?** Then there are fewer champions. The cap is 2,222.

**Where does the ETH I earn from staking come from?** Swap fees on $WIND trades. No trades, no ETH.

**When is the Colosseum?** Phase 2.&#x20;


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://dynawind.gitbook.io/docs/dynawind.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
