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

# Liquidity Pool

> 为资产对提供流动性并管理汇率

<Note>
  简而言之<br />
  Blockradar 的 Liquidity Pool 允许已审核通过的 Liquidity Provider（LP）为资产对定义和管理汇率。汇率为内部 swap 引擎提供支持——当用户发起 swap 时，系统会自动从活跃的 LP 中选择最佳可用汇率，验证流动性，并执行交易。
</Note>

<img src="https://mintcdn.com/blockradar/JulBWGK83ekgPTqZ/images/rates.png?fit=max&auto=format&n=JulBWGK83ekgPTqZ&q=85&s=f84f7846199bb84fc2c0f5c7d3f5d2f2" alt="Blockradar Liquidity Pool 汇率" width="3018" height="1722" data-path="images/rates.png" />

## 前置条件

在使用 Liquidity Pool API 之前，请确保您已具备：

<Steps>
  <Step title="成为 Liquidity Provider">
    Liquidity Pool 仅向已审核通过的 Liquidity Provider 开放。要开始使用，请[填写 LP 申请表](https://airtable.com/appBkyXEaGJaQeMxF/pagmjSZwFRFa9OSme/form)，Blockradar 团队将审核您的申请并为您完成接入。
  </Step>

  <Step title="API 密钥">
    完成接入后，请从 [Blockradar Dashboard](https://dashboard.blockradar.co) 生成 API 密钥。前往 **Developers** 创建一个。
  </Step>

  <Step title="为您的 wallet 充值">
    请确保您的 treasury wallet 拥有足够的资产余额（用于您计划提供流动性的资产），以及用于支付网络手续费的原生代币。
  </Step>
</Steps>

## 工作原理

作为 Liquidity Provider，您可以为资产对（例如 BNB → USDC）定义汇率。当 Blockradar 平台上的用户发起 swap 时，系统会：

1. **查找匹配的汇率**——从所有活跃 LP 中针对所请求的资产对查找。
2. **对候选项进行排序**——按最佳汇率、LP 优先级和创建时间进行排序。
3. **验证流动性**——检查所选 LP 的 treasury wallet 是否有足够余额完成该 swap。
4. **执行 swap**——使用所选 LP 的汇率和 treasury 进行交易。

<CardGroup cols={2}>
  <Card title="Rate Management" icon="sliders">
    为任何受支持的资产对创建、更新、停用和重新启用汇率。
  </Card>

  <Card title="Amount Bands" icon="ruler-horizontal">
    为每个汇率定义最小和最大交易金额，以控制风险敞口并细分定价层级。
  </Card>

  <Card title="Version History" icon="clock-rotate-left">
    每次汇率变更都会创建一个新版本。完整历史记录会被保留，便于审计和分析。
  </Card>

  <Card title="Automatic Selection" icon="wand-magic-sparkles">
    系统会根据汇率、优先级和可用流动性，为每笔 swap 自动选择最佳的 LP。
  </Card>
</CardGroup>

## Rate Lifecycle

汇率遵循清晰的生命周期，并具有完整的版本跟踪：

### 1. 创建汇率

为资产对定义新的汇率。该汇率以 **active** 状态从版本 1 开始。

<CodeGroup>
  ```bash Curl theme={null}
  curl --request POST \
    --url https://api.blockradar.co/v1/rates \
    --header 'Content-Type: application/json' \
    --header 'x-api-key: <api-key>' \
    --data '{
      "fromAsset": "BNB",
      "toAsset": "USDC",
      "rate": "605.50",
      "minAmount": "0.01",
      "maxAmount": "100"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.blockradar.co/v1/rates', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': apiKey
    },
    body: JSON.stringify({
      fromAsset: 'BNB',
      toAsset: 'USDC',
      rate: '605.50',
      minAmount: '0.01',
      maxAmount: '100'
    })
  }).then(r => r.json());

  console.log('Rate created:', response.data);
  ```
</CodeGroup>

### 请求参数

| 参数          | 类型     | 是否必填 | 说明                       |
| ----------- | ------ | ---- | ------------------------ |
| `fromAsset` | string | 是    | 要从中**转出**的资产符号（例如 `BNB`） |
| `toAsset`   | string | 是    | 要**转入**的资产符号（例如 `USDC`）  |
| `rate`      | string | 是    | 汇率。以字符串形式提供，避免浮点精度问题     |
| `minAmount` | string | 是    | 此汇率的最小交易金额（含）            |
| `maxAmount` | string | 否    | 最大交易金额（不含）。省略表示无上限       |

### 创建响应

```json theme={null}
{
  "message": "Rate created successfully",
  "statusCode": 201,
  "data": {
    "id": "d69078ef-2467-40f4-bb00-63394efe32c0",
    "fromAsset": "BNB",
    "toAsset": "USDC",
    "rate": "605.50",
    "minAmount": "0.01",
    "maxAmount": "100",
    "isActive": true,
    "status": "active",
    "version": 1,
    "network": "testnet",
    "createdAt": "2026-02-19T07:50:17.042Z"
  }
}
```

### 2. 更新汇率

修改现有活跃汇率的汇率值或金额限制。这将创建一个**新版本**——之前的版本会被自动标记为 `superseded`。

<CodeGroup>
  ```bash Curl theme={null}
  curl --request PATCH \
    --url https://api.blockradar.co/v1/rates/{id} \
    --header 'Content-Type: application/json' \
    --header 'x-api-key: <api-key>' \
    --data '{
      "rate": "610.00",
      "minAmount": "0.005"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(`https://api.blockradar.co/v1/rates/${rateId}`, {
    method: 'PATCH',
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': apiKey
    },
    body: JSON.stringify({
      rate: '610.00',
      minAmount: '0.005'
    })
  }).then(r => r.json());

  console.log('Rate updated:', response.data);
  ```
</CodeGroup>

<Info>
  仅提供您希望更改的字段——支持部分更新。
</Info>

### 3. 停用汇率

临时下线一个汇率。该汇率将变为 **deactivated** 状态，不会再被选中用于 swap。

<CodeGroup>
  ```bash Curl theme={null}
  curl --request PATCH \
    --url https://api.blockradar.co/v1/rates/{id}/deactivate \
    --header 'Content-Type: application/json' \
    --header 'x-api-key: <api-key>' \
    --data '{
      "reason": "Pausing for maintenance"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    `https://api.blockradar.co/v1/rates/${rateId}/deactivate`,
    {
      method: 'PATCH',
      headers: {
        'Content-Type': 'application/json',
        'x-api-key': apiKey
      },
      body: JSON.stringify({
        reason: 'Pausing for maintenance'
      })
    }
  ).then(r => r.json());

  console.log('Rate deactivated:', response.data);
  ```
</CodeGroup>

### 4. 重新启用汇率

将已停用的汇率重新上线。这将创建一个状态为 `active` 的**新版本**。

<CodeGroup>
  ```bash Curl theme={null}
  curl --request PATCH \
    --url https://api.blockradar.co/v1/rates/{id}/reactivate \
    --header 'x-api-key: <api-key>'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    `https://api.blockradar.co/v1/rates/${rateId}/reactivate`,
    {
      method: 'PATCH',
      headers: { 'x-api-key': apiKey }
    }
  ).then(r => r.json());

  console.log('Rate reactivated:', response.data);
  ```
</CodeGroup>

## Pricing Tools

在为新层级报价或对现有层级重新定价之前，请使用 Pricing Tools 检查您自己的覆盖范围，并与同业务板块的其他 Liquidity Provider 进行对比。

### 查询某资产对的活跃汇率

`GET /rates/check-pair` 会返回您在当前环境中为某资产对配置的所有活跃汇率，包括每个汇率的金额区间。可用于在开设新层级之前确认您是否已在为该资产对报价。

<CodeGroup>
  ```bash Curl theme={null}
  curl --request GET \
    --url 'https://api.blockradar.co/v1/rates/check-pair?fromAsset=USDT&toAsset=cNGN' \
    --header 'x-api-key: <api-key>'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://api.blockradar.co/v1/rates/check-pair?fromAsset=USDT&toAsset=cNGN',
    { headers: { 'x-api-key': apiKey } }
  ).then(r => r.json());

  console.log('Active rates:', response.data.rates);
  ```
</CodeGroup>

```json Response theme={null}
{
  "message": "Pair check completed",
  "statusCode": 200,
  "data": {
    "fromAsset": "USDT",
    "toAsset": "cNGN",
    "hasActiveRates": true,
    "activeRateCount": 2,
    "rates": [
      {
        "id": "d69078ef-2467-40f4-bb00-63394efe32c0",
        "rate": "1545.00",
        "minAmount": "10",
        "maxAmount": "1000",
        "version": 1,
        "createdAt": "2026-04-12T09:14:22.501Z"
      },
      {
        "id": "5b6683f0-6e92-4eaf-ae8d-5f2ddd76b376",
        "rate": "1547.50",
        "minAmount": "1000",
        "maxAmount": null,
        "version": 3,
        "createdAt": "2026-04-12T09:18:41.022Z"
      }
    ]
  }
}
```

### 与其他 LP 进行对标

`GET /rates/market-benchmark` 会返回您所在业务板块中其他 Liquidity Provider 针对某资产对的最佳竞争汇率。您自身的汇率会被排除，以便您看到自己实际在与之竞争的报价。每个资产对的结果会被缓存 60 秒。

传入 `amount` 可将基准限制为金额区间覆盖该交易规模的汇率，或传入 `pairs`（用逗号分隔的 `from:to` 条目，最多 20 个），即可在一次调用中获取一组基准。

<CodeGroup>
  ```bash Single pair theme={null}
  curl --request GET \
    --url 'https://api.blockradar.co/v1/rates/market-benchmark?fromAsset=USDT&toAsset=cNGN' \
    --header 'x-api-key: <api-key>'
  ```

  ```bash Batch theme={null}
  curl --request GET \
    --url 'https://api.blockradar.co/v1/rates/market-benchmark?pairs=USDT:cNGN,cNGN:USDT' \
    --header 'x-api-key: <api-key>'
  ```

  ```javascript JavaScript theme={null}
  const single = await fetch(
    'https://api.blockradar.co/v1/rates/market-benchmark?fromAsset=USDT&toAsset=cNGN',
    { headers: { 'x-api-key': apiKey } }
  ).then(r => r.json());

  const batch = await fetch(
    'https://api.blockradar.co/v1/rates/market-benchmark?pairs=USDT:cNGN,cNGN:USDT',
    { headers: { 'x-api-key': apiKey } }
  ).then(r => r.json());
  ```
</CodeGroup>

```json Single pair response theme={null}
{
  "message": "Market benchmark retrieved",
  "statusCode": 200,
  "data": {
    "fromAsset": "USDT",
    "toAsset": "cNGN",
    "bestRate": "1547.50"
  }
}
```

```json Batch response theme={null}
{
  "message": "Market benchmark retrieved",
  "statusCode": 200,
  "data": [
    { "fromAsset": "USDT", "toAsset": "cNGN", "bestRate": "1547.50" },
    { "fromAsset": "cNGN", "toAsset": "USDT", "bestRate": "0.000647" }
  ]
}
```

<Info>
  当没有其他 LP 为该资产对（或所提供的金额区间）设置活跃汇率时，`bestRate` 为 `null`。
</Info>

### 查看 Treasury 余额

`GET /rates/treasury-balances` 会返回出现在您活跃汇率中每种资产的聚合 treasury 余额，并按区块链分类。可用于监控您所报价资产对的流动性覆盖情况。

响应会排除链上余额为零的资产，并对同一资产/wallet 对被多个汇率引用时的条目进行去重。

<CodeGroup>
  ```bash Curl theme={null}
  curl --request GET \
    --url https://api.blockradar.co/v1/rates/treasury-balances \
    --header 'x-api-key: <api-key>'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://api.blockradar.co/v1/rates/treasury-balances',
    { headers: { 'x-api-key': apiKey } }
  ).then(r => r.json());

  console.log('Treasury balances:', response.data);
  ```
</CodeGroup>

```json Response theme={null}
{
  "message": "Treasury balances retrieved successfully",
  "statusCode": 200,
  "data": [
    {
      "asset": "USDT",
      "totalBalance": "5000.00",
      "totalConvertedBalance": "5000.00",
      "chains": [
        {
          "blockchain": "ethereum",
          "balance": "3000.00",
          "convertedBalance": "3000.00",
          "walletAddress": "0xA1b2C3d4E5f6789012345678901234567890aBcD"
        },
        {
          "blockchain": "polygon",
          "balance": "2000.00",
          "convertedBalance": "2000.00",
          "walletAddress": "0xA1b2C3d4E5f6789012345678901234567890aBcD"
        }
      ]
    }
  ]
}
```

## 汇率版本控制

每次汇率被更新或重新启用时，都会创建一个新版本。先前的版本会被标记为 `superseded`。这提供了完整的审计轨迹。

| 字段               | 说明                       |
| ---------------- | ------------------------ |
| `version`        | 顺序版本号，从 1 开始             |
| `rootRateId`     | 指向原始汇率——同一链路中的所有版本共享此 ID |
| `previousRateId` | 指向紧接的上一版本                |

### 版本链示例

```
v1 (active)  →  v2 (active, v1 superseded)  →  v3 (deactivated)  →  v4 (active, v3 superseded)
```

### 查看汇率历史

获取某汇率的完整版本历史：

<CodeGroup>
  ```bash Curl theme={null}
  curl --request GET \
    --url https://api.blockradar.co/v1/rates/{id}/history \
    --header 'x-api-key: <api-key>'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    `https://api.blockradar.co/v1/rates/${rateId}/history`,
    {
      headers: { 'x-api-key': apiKey }
    }
  ).then(r => r.json());

  console.log('History:', response.data);
  console.log('Page:', response.meta.currentPage);
  ```
</CodeGroup>

### 历史响应

```json theme={null}
{
  "message": "Rate history retrieved successfully",
  "statusCode": 200,
  "data": [
    {
      "id": "d69078ef-2467-40f4-bb00-63394efe32c0",
      "fromAsset": "BNB",
      "toAsset": "USDC",
      "network": "testnet",
      "rate": "605.50",
      "minAmount": "0.01",
      "maxAmount": null,
      "isActive": false,
      "status": "deactivated",
      "version": 1,
      "previousRateId": null,
      "rootRateId": null,
      "createdBy": "86964e42-79dc-4267-a2ca-3612c4b095a8",
      "deactivatedBy": "86964e42-79dc-4267-a2ca-3612c4b095a8",
      "deactivatedAt": "2026-02-25T18:13:48.113Z",
      "deactivationReason": "re",
      "createdAt": "2026-02-19T07:50:17.042Z",
      "updatedAt": "2026-02-25T18:13:48.101Z"
    }
  ],
  "meta": {
    "totalItems": 1,
    "itemCount": 1,
    "itemsPerPage": 10,
    "totalPages": 1,
    "currentPage": 1
  }
}
```

## 汇率状态

| 状态            | 说明                  |
| ------------- | ------------------- |
| `active`      | 当前在线，可被选中用于 swap    |
| `superseded`  | 已被更新或重新启用产生的更新版本所替代 |
| `deactivated` | 已被手动下线——可重新启用       |

<Warning>
  `superseded` 是终态——这些记录属于历史记录，无法再被修改。
</Warning>

## Amount Bands

每个汇率覆盖一个由 `minAmount` 和 `maxAmount` 定义的交易金额区间：

* **`minAmount`**——下限（含）。低于此金额的交易不会使用该汇率。
* **`maxAmount`**——上限（不含）。设置为 `null`（即省略）表示无上限。

### 同一资产对的多个汇率

您可以为同一资产对创建具有不同金额区间的多个汇率，以提供分层定价：

| 汇率     | 区间            | 使用场景   |
| ------ | ------------- | ------ |
| 605.00 | 0.01 – 10 BNB | 小额交易   |
| 606.50 | 10 – 100 BNB  | 中等金额交易 |
| 608.00 | 100+ BNB      | 大额交易   |

<Warning>
  同一资产对的金额区间**不得重叠**。如果新汇率的区间与同一资产对的另一个活跃汇率发生重叠，系统将拒绝该汇率。
</Warning>

## 流动性验证

在使用您的汇率执行 swap 之前，系统会验证您的 treasury wallet 是否拥有：

1. **足够的目标资产代币余额**，以覆盖 swap 输出（`amount x rate`）。
2. **足够的原生代币余额**（ETH、BNB 等），以支付转账的网络手续费。

如果您的 wallet 余额不足，系统会跳过您的汇率，转而使用下一个可用的 LP。当您的流动性较低时，您将通过电子邮件收到提醒。

<Tip>
  请保持 treasury wallet 资金充足，以避免错过 swap 机会。当余额低于阈值时，系统会通知您。
</Tip>

## 最佳实践

### Rate Management

* **关注市场行情**，定期更新汇率以保持竞争力
* **使用 Amount Bands** 为不同交易规模提供分层定价
* 在维护期间或高波动时段**停用汇率**，而不是直接删除
* **查看 Version History** 以跟踪汇率随时间的变化

### 流动性

* 在 treasury wallet 中**为目标资产和原生代币都保留充足余额**
* **设置监控**，以便接收余额过低的警报
* **主动为 wallet 充值**，避免出现服务中断

## API 参考

| Endpoint                                                                        | 说明                           |
| ------------------------------------------------------------------------------- | ---------------------------- |
| [Create Rate](/en/api-reference/liquidity-pool/create-rate)                     | 为资产对创建新的汇率                   |
| [Get Rate](/en/api-reference/liquidity-pool/get-rate)                           | 通过 ID 获取单个汇率                 |
| [Update Rate](/en/api-reference/liquidity-pool/update-rate)                     | 更新现有汇率（会创建新版本）               |
| [Deactivate Rate](/en/api-reference/liquidity-pool/deactivate-rate)             | 下线一个汇率                       |
| [Reactivate Rate](/en/api-reference/liquidity-pool/reactivate-rate)             | 将已停用的汇率重新上线                  |
| [Get Rate History](/en/api-reference/liquidity-pool/get-rate-history)           | 查看某汇率的完整版本历史                 |
| [Check Pair](/en/api-reference/liquidity-pool/check-pair)                       | 列出您针对特定资产对的活跃汇率              |
| [Get Market Benchmark](/en/api-reference/liquidity-pool/get-market-benchmark)   | 某资产对（或一批资产对）的最佳竞争汇率，不含您自己的报价 |
| [Get Treasury Balances](/en/api-reference/liquidity-pool/get-treasury-balances) | 按资产和区块链聚合的 treasury 余额       |

## 支持

* **电子邮件**：[support@blockradar.co](mailto:support@blockradar.co)
* **成为 LP**：[在此申请](https://airtable.com/appBkyXEaGJaQeMxF/pagmjSZwFRFa9OSme/form)，表明您成为 Liquidity Provider 的意向

<Note>
  Liquidity Pool 面向机构和专业的流动性提供者设计。[申请成为 LP](https://airtable.com/appBkyXEaGJaQeMxF/pagmjSZwFRFa9OSme/form)，然后在 testnet 上测试您的汇率配置，再正式上线。
</Note>
