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

# Geocurve

> Geode 的首个资产模板——具有价差动态的联合曲线代币，由 Uniswap v4 Hook 驱动。

<Frame>
  <video src="https://mintcdn.com/geode/MphrCaoj3gWuhBhR/launchpagevideo.mp4?fit=max&auto=format&n=MphrCaoj3gWuhBhR&q=85&s=93d2acaa0d44f8ee5c7aefb5baf99f30" autoPlay loop muted playsInline className="w-full rounded-lg" data-path="launchpagevideo.mp4" />
</Frame>

## 概述

Geocurve 是 Geode 的首个资产模板：Uniswap v4 Hook 代币的**联合曲线**。灵感来自 [SATO](https://sat0.org) 等代币开创的 Hook 格式。Geocurve 代币有一个简单的机制——全部供应量预铸给 Hook，曲线向买家分发代币，从卖家吸收代币。曲线处理一级发行；二级池创造自然的价差动态。

无需预先流动性，无预售，无隐藏分配。无未售出供应问题，无尴尬的 AMM 迁移。只有一条永久的曲线定义一级市场。

<Info>
  **游戏规则**：曲线创造一级发行。其他场所的二级池创造市场交易。两者之间的价差——曲线价格与二级市场价格的背离——就是游戏。
</Info>

## 工作原理

### 联合曲线

Geocurve 使用**虚拟恒定乘积**公式——与 Uniswap 相同的 `x × y = k` 数学，但有锚定曲线的虚拟储备：

```
(Vt - S) × (Ve + E) = Vt × Ve = K
```

其中：

* **Vt** = 虚拟代币储备（不可变，发行时设置，≥ totalSupply）
* **Ve** = 虚拟 ETH 储备（不可变，发行时设置）
* **S** = 累积分发给买家的代币
* **E** = 从销售中累积的真实 ETH
* **K** = 不变量常数（Vt × Ve）

### 起始价格

在发行时（S = 0, E = 0），价格为：

```
startingPrice = Ve / Vt
```

例如，Vt = 1,000,000,000 代币，Ve = 1 ETH，起始价格为 0.000000001 ETH/代币。

### 价格变动

**买入**从曲线分发代币。随着代币离开（S 增加），有效代币侧储备缩小，价格上升：

```
priceAfterBuy = (Ve + E + ethIn) / (Vt - S - tokensBought)
```

**卖出**将代币吸收回曲线。随着代币回归（S 减少），价格下降：

```
priceAfterSell = (Ve + E - ethReturned) / (Vt - S + tokensSold)
```

曲线完全可逆——代币可以随时买卖。

## 曲线数学

### 买入的 ETH 成本

从当前状态购买 `Δs` 代币需要多少 ETH？

```
ethIn = K / (Vt - S - Δs) - (Ve + E)
```

### 用 ETH 可获得的代币

花费 `ethIn` ETH 可获得多少代币？

```
Δs = (Vt - S) - K / (Ve + E + ethIn)
```

### 卖出的 ETH 回报

卖出 `Δs` 代币可获得多少 ETH？

```
ethOut = (Ve + E) - K / (Vt - S + Δs)
```

## 发行流程

<Steps>
  <Step title="部署">
    部署者调用 `GeodeFactory.launch()`，提供代币名称、符号、总供应量和虚拟储备（Vt, Ve）。工厂部署 `GeodeToken` ERC20，将全部供应量铸造给 Hook，初始化 v4 池为空壳，并注册永久联合曲线。全部在一笔交易中完成。
  </Step>

  <Step title="双路径交易">
    池进入**活跃**阶段，立即支持两条交易路径：

    * **直接交换**通过 `beforeSwap` → Hook 计算曲线输出并返回完整 delta
    * **基于意图的批量结算**通过 `geodeSettleBatch()` → 批量意图以曲线价格结算

    直接交换收取 0.3% 费用，三方分配：1/3 → 曲线 ETH 储备、1/3 → 协议金库、1/3 → 盈余池。批量结算对每个意图收取 0.1% 结算费。
  </Step>

  <Step title="永久一级市场">
    曲线是代币的永久一级市场。地板价随着储备费用的累积自然上升。随着代币获得关注，二级池可以在其他 Uniswap v4 池或 DEX 上出现——曲线价格和二级价格之间的价差成为交易游戏。
  </Step>
</Steps>

## 价差游戏

这就是 Geocurve 代币超越简单联合曲线的有趣之处。

曲线和二级市场回答**不同的问题**：

|           | 曲线（一级）              | 二级池             |
| --------- | ------------------- | --------------- |
| **反映什么**  | Hook 上的累积分发/吸收需求    | 更广泛的市场情绪和交易     |
| **价格变动**  | 确定性的：遵循 `x × y = k` | 市场驱动的：订单流、套利、投机 |
| **地板价**   | 通过储备费用单向上升          | 无固有地板           |
| **流动性来源** | 联合曲线储备              | 来自其他做市商的 LP 仓位  |

两个价格之间的**价差**创造了机会：

* 当二级市场**高于**曲线时 → 套利者可以从曲线买入，在二级市场卖出
* 当二级市场**低于**曲线时 → 套利者可以在二级市场买入，卖回给曲线
* 这种套利循环使两个价格保持松散联系，但价差本身就是一个特性

<Info>
  **为何重要**：与传统发射台模型将曲线"毕业"到 AMM（导致从虚拟曲线价格到真实池价格的尴尬转换）不同，Geocurve 永久存在。曲线就是一级市场。二级池是补充，不是替代。两者之间的价差就是游戏。
</Info>

## 批量结算在曲线上

批量结算期间，`ConstantProductCurveLib.computeLaunchSettlement()` 替代标准出清价格算法。关键区别：

* **出清价格** = 当前曲线现货价格（非 AMM 现货价格）
* **内部撮合**工作方式相同——反向流量以曲线价格交叉
* **剩余流量**通过 Hook 的储备路由（无 AMM 交换）
* **净买入剩余** → Hook 分发代币，ETH 进入 `launchEthReserve`
* **净卖出剩余** → Hook 吸收代币，ETH 从 `launchEthReserve` 返回

## GeodeFactory

工厂合约处理一笔交易发行：

1. 部署 `GeodeToken` ERC20（全部供应给 Hook）
2. 确定性计算 PoolKey
3. 初始化 v4 池为空壳（`sqrtPriceAtTick(0)`）
4. 在 Hook 上调用 `geodeInitializePool()` 配置曲线
5. 调用 `registerLaunch()` 设置永久曲线状态追踪

<CardGroup cols={2}>
  <Card title="无许可" icon="door-open">
    任何人都可以发行代币。无白名单，无审批流程。部署者只付 Gas。
  </Card>

  <Card title="公平发行" icon="scale-balanced">
    无预售，无隐藏分配。全部代币供应给联合曲线。每个买家以当前曲线价格获得代币。
  </Card>

  <Card title="上升的地板价" icon="chart-line">
    每次直接交换费用的 1/3 进入曲线的 ETH 储备，永久提高地板价。
  </Card>

  <Card title="最终买家" icon="shield">
    曲线始终有报价——代币可以随时卖回。虚拟 ETH 储备确保即使所有分发的代币都被卖回，价格也不会归零。
  </Card>
</CardGroup>

<Note>
  **永久设计**：Geocurve 是一级市场。没有"下一阶段"——曲线在代币的整个生命周期内提供一级发行、价格发现和上升的地板价。二级市场自然出现，创造使游戏有趣的价差动态。
</Note>
