# Fluid fToken 提取前核对：份额、preview、可提取上限与收益字段

整理：链小知（AI 辅助）
资料核对日期：2026-10-12
引用地址：https://lianxiaozhi.com/tools/guides/fluid-ftoken-withdraw-preview-rate-check
难度：进阶
核验方式：官方文档整理，未执行真实账户操作

识别单资产fToken，把可兑换余额、退出上限与APR分开，并按实际版本选择原生币与ERC-20路径。

## 使用工具
- [Fluid Lending / Borrow](https://lianxiaozhi.com/tools/fluid) · [官方入口](https://fluid.io/)

## 前置条件
- 已有公开或脱敏的fToken地址、链ID、shares余额及同一时点的只读结果；没有结果时只完成字段准备，不编造余额。
- 记录合约ABI/部署版本；固定源码说明以9496626f71a761fc296dc3b2efbfd54c504e18f0为界，不直接套旧线上结构。

## 1. 固定链与 fToken 的 underlying

先从官方部署表定位该链的LendingFactory/resolver，再把已有fToken地址与factory枚举或合约身份对应。名称以f开头不足以证明官方部署，computeFToken算出地址也不证明已经部署。

按匹配ABI核对asset()、decimals、isNativeUnderlying。fToken是单资产供应份额；native variant的asset仍是WETH，而Liquidity内部可能用原生币占位地址。不要把占位地址填进ERC-20 asset字段。

核对结果：链、fToken、underlying及decimals有明确对应，且没有把Vault NFT当供应份额。
依据：[Fluid 固定官方部署表](https://raw.githubusercontent.com/Instadapp/fluid-contracts-public/9496626f71a761fc296dc3b2efbfd54c504e18f0/deployments/deployments.md)
依据：[Fluid 固定 fToken SPEC](https://raw.githubusercontent.com/Instadapp/fluid-contracts-public/9496626f71a761fc296dc3b2efbfd54c504e18f0/contracts/protocols/lending/fToken/SPEC.md)
依据：[Fluid 固定 LendingResolver SPEC](https://raw.githubusercontent.com/Instadapp/fluid-contracts-public/9496626f71a761fc296dc3b2efbfd54c504e18f0/contracts/periphery/resolvers/lending/SPEC.md)
依据：[Fluid 动态限额与金额口径](https://docs.fluid.instadapp.io/integrate/understanding-fluid-key-concepts-and-practices.html)

## 2. 把份额数量兑换为资产余额

取已有balanceOf(owner)的shares，以convertToAssets(shares)或previewRedeem(shares)核对对应资产原始数量，再按underlying decimals显示。份额与资产即便decimals相同，也不能默认1:1。

固定规范中redeem输入shares、withdraw输入assets；previewRedeem向下取整、previewWithdraw返回所需烧毁shares并向上取整。要比较的是同一种单位，不把assets直接与shares余额相减。

核对结果：每个数标明shares/assets、原始整数/显示值和时间；退出预览使用匹配输入单位。
依据：[Fluid 固定 fToken SPEC](https://raw.githubusercontent.com/Instadapp/fluid-contracts-public/9496626f71a761fc296dc3b2efbfd54c504e18f0/contracts/protocols/lending/fToken/SPEC.md)

## 3. 先核对 maxWithdraw，再解释退出限制

已有结果中把maxWithdraw(owner)与convertToAssets(balanceOf(owner))并排。固定fToken规范以份额可兑换值和Liquidity可提取额较小者确定上限；preview数值大并不保证现在可退出该数额。

动态withdrawal limit是必须保留的供应余额，不是可提取额。例如官方示例供应15、限额12，则额度边界为3；这个例子不是当前市场的15/12配置。实际流动性还可能把可提取额压得更低，存取会影响扩展过程，不能承诺固定等待时间。

核对结果：可兑换余额、动态额度与实时流动性分开；缺少maxWithdraw结果不写“可全部退出”。
依据：[Fluid 固定 fToken SPEC](https://raw.githubusercontent.com/Instadapp/fluid-contracts-public/9496626f71a761fc296dc3b2efbfd54c504e18f0/contracts/protocols/lending/fToken/SPEC.md)
依据：[Fluid 动态限额与金额口径](https://docs.fluid.instadapp.io/integrate/understanding-fluid-key-concepts-and-practices.html)

## 4. 按 ABI 版本拆分收益与额外奖励

旧在线v2说明totalRate=supplyRate+rewardsRate，不包含asset.stakingApr或额外Merkle奖励。2026固定LendingResolver改用liquidityRate、relativeModelRate、staticModelRate、totalRate；不可依字段相似拼接两版结果。

新resolver通常100=1%：streaming总率为liquidityRate+relativeModelRate；static总率为max(0,liquidityRate+staticModelRate)，offset可能为负。举例300与-50得到250，即2.5%APR；这只是单位示例，不是当前报价。isStaticRate仍为真不代表rewardsActive仍有效。

核对结果：记录数据来自API还是哪个ABI；总APR没有重复加奖励或把APR当保证APY。
依据：[Fluid 在线利率集成说明](https://docs.fluid.instadapp.io/integrate/lend-borrow-yield-rates.html)
依据：[Fluid 固定 LendingResolver SPEC](https://raw.githubusercontent.com/Instadapp/fluid-contracts-public/9496626f71a761fc296dc3b2efbfd54c504e18f0/contracts/periphery/resolvers/lending/SPEC.md)
依据：[Fluid Lending/Borrow 官方 FAQ](https://fluid-support.zendesk.com/hc/en-us/articles/28793236317980-General-Lending-Borrow-FAQs)

## 5. 检查权限与原生币路径后形成退出准备结果

已有退出请求核对owner、receiver、assets/shares和方法名称：普通withdraw/redeem、native variant的withdrawNative/redeemNative范围不同。第三方spender操作可能消耗owner的份额授权；许可和签名不是只读预览。

按已有日志区分超份额、动态限额或流动性不足；链费取具体网络报价，不套统一值。最后列出身份、余额、preview、maxWithdraw、收益版本和缺失项，保留实际执行和到账为待验证。

核对结果：准备结果没有调用updateRates、permit、withdraw、redeem或广播；接收资产与权限边界明确。
依据：[Fluid 固定 fToken SPEC](https://raw.githubusercontent.com/Instadapp/fluid-contracts-public/9496626f71a761fc296dc3b2efbfd54c504e18f0/contracts/protocols/lending/fToken/SPEC.md)
依据：[Fluid 固定 LendingResolver SPEC](https://raw.githubusercontent.com/Instadapp/fluid-contracts-public/9496626f71a761fc296dc3b2efbfd54c504e18f0/contracts/periphery/resolvers/lending/SPEC.md)
依据：[Fluid 动态限额与金额口径](https://docs.fluid.instadapp.io/integrate/understanding-fluid-key-concepts-and-practices.html)

## 常见错误
- DOMAIN_SEPARATOR成功和resolver的eip2612Deposits只是能力探测，不等于完整permit安全保证。
- 批量resolver调用一项revert可使整批失败，缺结果不是该fToken余额为零。
- 固定源码存在新静态rate model功能，不证明用户现有合约已升级到同样结构。

## 完成检查
- 形成带单位、时间与版本的退出核对结果，并把到账、当前市场开放状态列为未验证。
- 全部步骤为文档核验流程，未实际调用RPC或使用用户账户。

## 相关知识
- [ERC-4626 Vault 份额是什么？钱包余额怎样对应底层资产](https://lianxiaozhi.com/learn/erc4626-vault-shares)
- [Gas 怎么计算？交易失败为什么仍可能扣费](https://lianxiaozhi.com/learn/gas-and-failed-transactions)

## 官方依据
- [Fluid 固定官方部署表](https://raw.githubusercontent.com/Instadapp/fluid-contracts-public/9496626f71a761fc296dc3b2efbfd54c504e18f0/deployments/deployments.md)
- [Fluid 固定 fToken SPEC](https://raw.githubusercontent.com/Instadapp/fluid-contracts-public/9496626f71a761fc296dc3b2efbfd54c504e18f0/contracts/protocols/lending/fToken/SPEC.md)
- [Fluid 固定 LendingResolver SPEC](https://raw.githubusercontent.com/Instadapp/fluid-contracts-public/9496626f71a761fc296dc3b2efbfd54c504e18f0/contracts/periphery/resolvers/lending/SPEC.md)
- [Fluid 动态限额与金额口径](https://docs.fluid.instadapp.io/integrate/understanding-fluid-key-concepts-and-practices.html)
- [Fluid 在线利率集成说明](https://docs.fluid.instadapp.io/integrate/lend-borrow-yield-rates.html)
- [Fluid Lending/Borrow 官方 FAQ](https://fluid-support.zendesk.com/hc/en-us/articles/28793236317980-General-Lending-Borrow-FAQs)
