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

# Uniswap V4 Hooks

> LFG.RICH 如何使用 Uniswap V4 Hook 路由交易、定价、地板价、手续费和借贷逻辑。

LFG.RICH 基于 Uniswap V4 Hook 架构构建。Hook 不只是辅助合约，而是官方代币协议逻辑的核心：联合曲线、地板价会计、手续费路由、推荐奖励分配、抵押借贷规则，全部由 Hook 执行。

用户看到的交易流程很简单，但链上路径是固定的：

<CardGroup cols={2}>
  <Card title="Factory" icon="industry">
    创建官方 LFG.RICH 代币，并把它们注册到 Hook。
  </Card>

  <Card title="Uniswap V4 Hook" icon="anchor">
    强制定价、地板价、储备、费用、抵押品、借贷和 hook callbacks。
  </Card>

  <Card title="Swap Router" icon="route">
    为用户和集成提供简单的买入和卖出入口。
  </Card>

  <Card title="Pool Manager" icon="layer-group">
    执行 Hook 和 Router 使用的 Uniswap V4 unlock、swap、settlement 和 callback 流程。
  </Card>
</CardGroup>

```txt theme={null}
用户钱包
  -> Swap Router
  -> Pool Manager unlock(...)
  -> Pool Manager swap(...)
  -> Uniswap V4 Hook beforeSwap(...)
  -> 自定义曲线、地板价、手续费和会计逻辑
  -> Pool Manager settle / take 结算
```

## 主要合约

| 合约              | 职责                                           |
| --------------- | -------------------------------------------- |
| Factory         | 创建官方 LFG.RICH 代币，并将它们注册到 hook。               |
| Uniswap V4 Hook | 处理定价、地板价、储备、手续费、抵押、借贷和 hook 回调。              |
| Swap Router     | 为用户和集成方提供简单的买入和卖出函数。                         |
| Token           | 由 Factory 创建的 ERC20 兼容代币合约。                  |
| Pool Manager    | hook 和 router 流程使用的 Uniswap V4 Pool Manager。 |

## BSC V5 地址

| 合约              | 地址                                           |
| --------------- | -------------------------------------------- |
| Factory         | `0x429a7ef0129649a97bb3f1e961dd56d9bd4ac01f` |
| Uniswap V4 Hook | `0xc18e6e1926113cdcf53f3ec1a89d3eb84cc6a888` |
| Swap Router     | `0x4018abd5d24ee48c642e7e518a8aef03b59ec150` |
| Token           | 由 Factory 为每次创建单独部署。                         |
| Pool Manager    | `0x28e2Ea090877bF75740558f6BFB36A5ffeE9e9dF` |

## PoolKey 和 poolId

每个官方代币都有自己的 Uniswap V4 `PoolKey` 和自己的 `poolId`。

```solidity theme={null}
struct PoolKey {
    address currency0;   // 原生 BNB，用 address(0) 表示
    address currency1;   // 代币地址
    uint24 fee;          // 3000
    int24 tickSpacing;   // 60
    address hooks;       // Uniswap V4 Hook
}
```

集成时最重要的规则是：**不要猜测使用哪个池**。必须为当前代币解析 `poolId` 和 `PoolKey`。

```txt theme={null}
poolId = token.pool_id || token.poolId || hook.tokenToPoolId(tokenAddress)
key    = factory.getPoolKey(tokenAddress)
```

网站代码会把代币的 `poolId` 视为交易上下文的一部分。估算使用 `poolId`，买卖执行使用 `PoolKey`。

## 为什么 Hook 很重要

Hook 让代币不再像普通的、由创建者管理 LP 的代币。创建者不会拿到可移除的 LP token。交易者也不会与随意的第三方池交互。官方交易会进入协议合约，由 Hook 对所有人执行同一套定价、地板价、手续费、推荐和抵押规则。

协议执行路径保持一致：

* 买入和卖出使用官方 Swap Router；
* 定价由 Hook 计算；
* 代币铸造和销毁由 Hook 控制；
* 抵押借贷使用同一个基于 `poolId` 的状态；
* 地板价更新与该代币自身协议状态绑定；
* 推荐奖励由链上邀请绑定决定。

## 重要集成规则

<Warning>
  旧 V3 示例不能直接用于 V5。V5 的估算函数包含用户地址，创建代币使用 `devBuyEth`，买卖必须使用该代币正确的 `PoolKey` 路由。
</Warning>

V5 应使用以下模式：

<Steps>
  <Step title="加载代币数据">
    从 API 代币数据或已知代币地址开始。
  </Step>

  <Step title="解析 poolId">
    使用 `token.pool_id`、`token.poolId`，或 `hook.tokenToPoolId(tokenAddress)`。
  </Step>

  <Step title="解析 PoolKey">
    使用 `factory.getPoolKey(tokenAddress)`，或根据已验证的 V5 常量构建。
  </Step>

  <Step title="使用 Hook + poolId + 用户地址估算">
    V5 估算函数包含钱包地址，因为推荐状态可能改变费用接收方。
  </Step>

  <Step title="使用 Swap Router + PoolKey 执行买入/卖出">
    交易执行使用该代币对应的 PoolKey。
  </Step>

  <Step title="使用 Hook + poolId 执行借贷">
    Borrow、borrowMore、repay 和状态读取使用 Hook 和 `poolId`。
  </Step>
</Steps>
