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

# 许可制产品与合规

> Composer API 如何处理许可制金库存入所需的产品授权，以及目前支持哪些许可制金库。

有些金库只有在发行方或协议授权后才接受存入，例如通过白名单、合规检查或签名许可。Composer API 支持存入这些许可制金库。在准备交易时，Composer 会检查产品的授权要求，并在需要时获取授权数据、将其纳入存入调用，从而遵守而非绕过产品的访问控制。

<Note>
  Composer 不执行 KYC 或 AML 检查，不为用户办理准入，也不授予访问权限。资格规则和准入流程仍由发行方或协议以及作为集成方的你负责。
</Note>

## 可用范围

* **支持的金库向所有集成方开放。** [支持的许可制金库](#支持的许可制金库)中列出的金库可通过 Composer API 使用，无需额外开通金库权限。Composer API 的常规认证要求仍然适用，参见[快速入门](/composer/composer-api/quickstart)。
* **每个新的许可制产品都需要先由 LI.FI 集成。** 不同产品的授权机制不同，因此 LI.FI 必须先集成其授权服务，才能将存入路由至该产品。如需提供尚未列出的许可制金库，请[联系 LI.FI 团队](#添加许可制金库)。

## 各方职责

| 参与方 | 在存入体验中的角色 |
| - | - |
| 你的应用 | 让用户选择金库和资金资产，在产品有要求时引导用户完成准入流程，向 Composer API 请求存入，并展示交易及其结果。 |
| Composer | 在产品支持时检查现有授权，在需要时获取并纳入授权数据，并在返回待签署交易前进行模拟。 |
| 发行方或协议 | 定义资格规则和授权机制，在需要时为用户办理准入，并在存入执行时于链上验证授权。 |

## 存入流程如何运作

1. **在需要时引导用户完成准入。** 当产品有要求时，将用户引导至发行方的准入流程。有些产品根据钱包筛查结果授权，无需单独的准入步骤。
2. **请求存入。** 将流程发送至 `POST /compose`，提供用户的真实地址、资金资产和目标金库。流程和输入绑定方式参见[构建 Flow](/composer/composer-api/guides/build-a-flow)。不要使用占位地址：Composer 根据该地址推导用户的执行代理，并针对相应地址评估授权。
3. **Composer 检查资格并处理授权。** Composer 检查是否允许该笔存入，并获取准备交易所需的授权数据。如果产品拒绝存入，Composer 会返回错误。对于支持现有权限的产品，Composer 可以使用有效权限，无需请求新签名。授权对象由产品决定，可能是用户的执行代理，而非用户的钱包。授权形式（例如签名或权限授予）也由产品决定。
4. **Composer 准备交易。** Composer 将所需的授权数据纳入存入调用，与兑换等资金操作组合，并模拟结果。HTTP 200 响应表示准备阶段的授权要求已满足，不一定表示刚刚签发了新授权。没有单独的资格字段可供读取。
5. **执行并展示结果。** 用户签署并提交交易，执行代理执行调用，协议在存入过程中验证授权。对于延迟结算的产品，应将份额交付与资金交易分开跟踪。

<Warning>
  授权数据可能有时效限制或只能使用一次。应在用户准备签署时请求新交易，而不是保存已准备好的 calldata 留待日后提交。
</Warning>

执行代理和编译流水线的工作方式参见[执行模型](/composer/composer-api/concepts/execution-model)。

## 处理结果

授权发生在 Composer 准备交易期间，因此授权遭拒或获取失败时，`POST /compose` 会返回 [`ComposeError`](/composer/composer-api/reference/error-codes)，不会生成 calldata。

| 结果 | 错误 kind | HTTP | 应用应如何处理 |
| - | - | - | - |
| 授权要求已满足，交易已准备好 | 无 | 200 | 将准备好的交易呈现给用户签署。 |
| 产品拒绝存入，例如地址不符合资格 | `resolution_rejected` | 422 | 不要重试相同请求。展示消息，并在适用时引导用户完成发行方的准入流程。 |
| 无法访问授权服务，或服务返回不可用的响应 | `resolution_error` | 503 | 按退避策略重试。 |
| 准备好的交易在默认 `run.simulationPolicy: "strict"` 下模拟回退 | `simulation_revert` | 422 | 重试前检查回退详情。 |
| 准备好的交易在 `run.simulationPolicy: "allow-revert"` 下模拟回退 | `simulation_revert` | 206 | 部分响应包含 calldata 和回退诊断信息；不要将其视为模拟成功，也不要在处理失败原因前直接提交。 |

原始 HTTP 错误响应中的字段为 `error.kind` 和 `error.message`。后者供人阅读，可以展示或记录，但不要通过匹配文本进行程序判断。HTTP 206 响应同样包含 `success: false`，并携带部分结果数据。参见 [Allow-revert 模式](/composer/composer-api/reference/error-codes#allow-revert-mode)。

## 与 RWA 路由的关系

存入代币化现实世界资产可能受到三个独立层面的影响：

| 层面 | 由谁决定 | 适用范围 |
| - | - | - |
| 发行方准入资格 | 发行方或协议的准入流程与链上规则 | 所有存入，无论使用哪个 API |
| Composer 授权 | 产品的现有权限或授权服务，由 Composer 检查 | 通过 Composer API 准备的存入（本页） |
| 合作方 RWA 政策 | 你的公司，在 LI.FI Partner Portal 中配置 | LI.FI quote 和 route 端点中标记为 `rwa` 的代币 |

因此，不同 API 的结果形式不同。LI.FI quote API 拒绝许可制资产时，会返回无路由结果及原因；Composer API 则返回 `resolution_rejected` 错误。LI.FI API 的资格检查和合作方 RWA 政策参见[现实世界资产](/enterprise/real-world-assets)。

## 支持的许可制金库

以下许可制金库可通过 Composer API 使用。随着产品增加，覆盖范围也会变化。当前路由覆盖范围参见[支持的协议与链](/composer/protocols-and-chains)。

### Nest

Nest 金库的份额代币在所列各链上使用相同地址。

| 金库 | 份额代币 | 链 |
| - | - | - |
| Nest Alpha Vault (nALPHA) | `0x593ccca4c4bf58b7526a4c164ceef4003c6388db` | Ethereum, BNB Chain, World Chain, Plasma, Plume |
| Nest Treasury Vault (nTBILL) | `0xe72fe64840f4ef80e3ec73a1c749491b5c938cb9` | Ethereum, BNB Chain, World Chain, Plasma, Plume |
| Nest Basis Vault (nBASIS) | `0x11113ff3a60c2450f4b22515cb760417259ee94b` | Ethereum, BNB Chain, World Chain, Plasma, Plume |
| Nest BlackOpal LiquidStone II Vault (nOPAL) | `0x119dd7daff816f29d7ee47596ae5e4bdc4299165` | Ethereum, BNB Chain, World Chain, Plasma, Plume |
| Nest Credit Vault (nCREDIT) | `0xa5f78b2a0ab85429d2dfbf8b60abc70f4cec066c` | Ethereum, BNB Chain, Plasma, Plume |
| Nest ACRDX Vault (nACRDX) | `0x2a3e301dbd45c143dfbb7b1ce1c55bf0bbf161cb` | Ethereum, BNB Chain, Plasma, Plume |
| Nest Wisdom Vault (nWISDOM) | `0x29bf22381a5811dec89dc7b46a5ce57ad02c0240` | Ethereum, BNB Chain, Plasma, Plume |
| Nest Falcon Vault (nFALCON) | `0x066d10e240999aea6798b2e2ca0bdac2923cbdff` | Ethereum, BNB Chain, Plume |
| Nest OnRe Vault (nONRE) | `0x1939531162b2780e2fb5e01d68c6f545467a786d` | Ethereum, BNB Chain, Plume |
| Prime Vault (nPRIME) | `0x6fec234e8801ed88964bc058a0f9fbcc9fcbd2eb` | Ethereum, BNB Chain, Plume |
| Nest Liquid Credit Vault (nLCRD) | `0xdf45b8322ea4ce898331602e2d1f3d1a67ae0ee8` | Ethereum, Plume |
| Nest AXI Vault (nAXI) | `0x7488b23f4c26b44eef2e0766896be47443e86d79` | Ethereum, Plume |
| Nest BlackRock iShares AAA CLO Active ETF Vault (nCLOA) | `0x63810d7f1c7b4dbfb60c173ba120a2be98b59e13` | Ethereum, Plume |
| Plume Factor Vault (FACTOR) | `0x1f37620a0e0660db3cdbb8cdbf62d8099f959925` | Ethereum, Plume |

### Maple Syrup

Maple 检查的是执行代理的出借方权限，而非用户钱包的权限。如果代理已经获授权，Composer 会使用现有权限，不再请求新签名。否则，Composer 会获取签名并准备授权加存入调用；代理尚未获授权时，单笔交易只能存入一个 Syrup 池。权限可能被撤销，因此准备后续交易时会再次检查。

| 池 | 池代币 | 链 |
| - | - | - |
| syrupUSDC | `0x80ac24aa929eaf5013f6436cda2a7ba190f5cc0b` | Ethereum |
| syrupUSDT | `0x356b8d89c1e1239cbbb9de4815c39a1474d5ba7d` | Ethereum |
| syrupUSDG | `0x87b65c4aaffa76881f9e96f3e7ed945ddfc3cd7a` | Ethereum |

## 添加许可制金库

<Card title="联系 LI.FI 团队" icon="envelope" href="https://li.fi/contact-us/">
  请告知你希望提供或分发哪个许可制金库、需要支持哪些链，以及发行方如何授权存入。我们会与你和发行方共同确定授权集成的范围。
</Card>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.