# Ekubo 仓位为什么单币或费用变少：核对 NFT 管理合约、区间与净领取

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

按原仓位链/manager/tokenId查身份与价格方向，区分本金、累计grossfees、协议费、collect/withdraw及实际接收，不把API图片当资产凭证。

## 使用工具
- [Ekubo](https://lianxiaozhi.com/tools/ekubo) · [官方入口](https://ekubo.org/)

## 前置条件
- 准备已有仓位页面/脱敏记录：网络、Positions manager地址、完整tokenId字符串、poolKey/token0/token1/decimals、fee/extension、tick范围及原持有人/授权/费用/退出记录。
- 价格/区间说明适用于匹配产品；固定de94c77 v3.2.0 BasePositions方法只用于对应EVM实现，不能推旧3.1.1ID盐编码或StarknetABI。仅查看已有记录，不mint、转NFT、collect/withdraw或调metadata/业务API/RPC。

## 1. 先固定 NFT 的链、manager 和完整 ID

Ekubo流动性仓位为Positions发行的ERC721，NFT本身代表underlying权益，不能当无价值纪念图片出售。记录原网络、manager与tokenId完整整数文本，避免表格/Number截断大ID。

官方表有3.1.1原manager与3.2.0 192bit manager；两代无迁移、已有仓位仍可有效，Robinhood仅原版。旧NFT不会自动换新地址，前端canonical地址不是所有历史仓位；tokenURI/API图片正常也不能证明持有权或余额。

核对结果：链/manager/完整ID及代际明确，metadata未替代资产或所有权。
依据：[Ekubo：V3 两代 managers 与链可用状态](https://docs.ekubo.org/reference/contracts/evm-v3/)
依据：[Ekubo：NFT 权益、本金与净费用](https://docs.ekubo.org/products/liquidity/)
依据：[Ekubo 固定 V3.2.0：查询、collect 与 withdraw](https://raw.githubusercontent.com/EkuboProtocol/evm-contracts/de94c77a665c54f4c848185872b8a55b2c28c1bc/src/base/BasePositions.sol)

## 2. 核 pool 身份和价格显示方向

对原仓位抄tokenpair、fee、tickspacing和extension；同两种token但费用/间距/扩展不同就是不同pool配置。界面base/quote选择只改变价格展示，quote是分子，不能因ETH/USDC与USDC/ETH显示不同直接称仓位错误。

原tick/sqrtRatio要按部署和token精度解释：Starknet sqrt64.128与EVM浮点96bit不同，fee分别除2^128/2^64。若只有原整数不知版本，保留未知，不直接把fee当bps或把sqrtRatio当美元价格。

核对结果：pool配置、价格方向和二进制单位有依据，未知未默认换算。
依据：[Ekubo：池身份、价格区间与协议费](https://docs.ekubo.org/user-guides/add-liquidity/)
依据：[Ekubo：价格与费用二进制单位](https://docs.ekubo.org/reference/price-representation/)
依据：[Ekubo：V3 两代 managers 与链可用状态](https://docs.ekubo.org/reference/contracts/evm-v3/)

## 3. 比较原区间与同一时点价格

保存原价格上下界/tick和同一读取时点市场价；官方AddLiquidity说明越出区间不再actively赚费用，上边界全quote、下边界全base。原deposit两币比例不是当前保证，单币不自动等丢失一种币。

窄区间会改变资产组合并有divergence loss，不按页面APR估计承诺本金或收益。价格方向倒置、旧快照/读取失败不能用“out of range”替代具体原因；先核区间和价格是否采用相同表示。

核对结果：区间/价格同方向同时点，单币原因有证据或明确待核。
依据：[Ekubo：池身份、价格区间与协议费](https://docs.ekubo.org/user-guides/add-liquidity/)
依据：[Ekubo：NFT 权益、本金与净费用](https://docs.ekubo.org/products/liquidity/)
依据：[Ekubo：价格与费用二进制单位](https://docs.ekubo.org/reference/price-representation/)

## 4. 把 principal、liquidity 和 gross fees 分列

匹配3.2.0已有方法结果时，getPositionFeesAndLiquidity返回liquidity、principal0/1、fees0/1；liquidity不是token金额，两币principal/fees各用自身精度。该读取结果费用还未在Positions collect阶段扣协议fee，不能把gross当钱包净领取。

canonical Positions正文EVM扣所collect swapfees的10%，Starknet20%；本金退出费canonical为0而代码另有withdraw配置。第三方manager可自设费，不能用Core免费或10%去扣全部本金。缺部署/构造参数证据时保留真实净费未知，不给精确到账数。

核对结果：本金、流动性指标、grossfees、协议费用与两币精度分开。
依据：[Ekubo 固定 V3.2.0：查询、collect 与 withdraw](https://raw.githubusercontent.com/EkuboProtocol/evm-contracts/de94c77a665c54f4c848185872b8a55b2c28c1bc/src/base/BasePositions.sol)
依据：[Ekubo 固定 V3.2.0：本金费与 swap 费字段](https://raw.githubusercontent.com/EkuboProtocol/evm-contracts/de94c77a665c54f4c848185872b8a55b2c28c1bc/src/Positions.sol)
依据：[Ekubo：NFT 权益、本金与净费用](https://docs.ekubo.org/products/liquidity/)
依据：[Ekubo：池身份、价格区间与协议费](https://docs.ekubo.org/user-guides/add-liquidity/)

## 5. 核原 collect/withdraw 的目标和费用选项

固定3.2.0 collectFees实际调用withdraw(liquidity0,recipient,withFees=true)：0liquidity是只收费用，不是无操作或全部退本金。withdraw可单列recipient/withFees；核原请求到底退出多少liquidity、是否同时collect，以及原接收地址。

源码先收费用并扣swap协议fee，再取本金/相应withdrawfee，最后合并两币转recipient。函数有authorizedForNft，NFT持有人/已批准主体与manager的owner管理角色不能混同；没有原授权/回执不猜可以领取，更不要转NFT来测试。

核对结果：collect与本金退出、原recipient和授权身份清楚，合计返回未当实收。
依据：[Ekubo 固定 V3.2.0：查询、collect 与 withdraw](https://raw.githubusercontent.com/EkuboProtocol/evm-contracts/de94c77a665c54f4c848185872b8a55b2c28c1bc/src/base/BasePositions.sol)
依据：[Ekubo 固定 V3.2.0：本金费与 swap 费字段](https://raw.githubusercontent.com/EkuboProtocol/evm-contracts/de94c77a665c54f4c848185872b8a55b2c28c1bc/src/Positions.sol)
依据：[Ekubo：V3 两代 managers 与链可用状态](https://docs.ekubo.org/reference/contracts/evm-v3/)

## 6. 分开核扩展奖励和实际接收

普通pool swapfees、MEV附加、激励和Ve33排放不同：当前Trading说MEV额外费在后续timestamp首次交互按当时activeLP归属，不保证被收费那笔经过的所有仓位等分；Ve33 LP可赚排放而voters赚swapfees，不能统一按普通费用期待。

对已有成功领取/退出回执核同token/recipient实际金额并单列Gas，失败/未确认/空数据各自保存；WithdrawOverflow仅对匹配固定原请求liquidity超int128max的错误解释，不能用费用变少推失败。完成对账仍需原接收证据，NFT图或函数读值不足。

核对结果：池费、扩展/奖励、本金及实际收款分开，缺回执结论止于待核。
依据：[Ekubo：当前 Trading 与区块固定路由](https://docs.ekubo.org/products/trading/)
依据：[Ekubo：NFT 权益、本金与净费用](https://docs.ekubo.org/products/liquidity/)
依据：[Ekubo 固定 V3.2.0：查询、collect 与 withdraw](https://raw.githubusercontent.com/EkuboProtocol/evm-contracts/de94c77a665c54f4c848185872b8a55b2c28c1bc/src/base/BasePositions.sol)

## 常见错误
- manager代际、完整ID、poolconfig与区间一起定位；新canonical并不要求所有旧仓位迁移。
- 累计费用查询可能是gross，10%/20%扣的是所收swapfees而不是全部本金或交易额。
- NFT为资金权益；不为排错转移、出售或批准NFT，不把元数据服务当余额证明。

## 完成检查
- 形成链/manager/ID、pool与区间、principal/gross/net费用、原collect/withdraw及接收对照。
- documentation；不读取实际用户NFT/余额或调用API/SDK/钱包/领取，当前部署和资金结果未验收。

## 相关知识
- [合约代码已验证，为什么仍不能直接判断安全？](https://lianxiaozhi.com/learn/verified-contract-boundaries)
- [原始、解码和整理后的链上数据有什么区别？](https://lianxiaozhi.com/learn/raw-decoded-curated-data)
- [Gas 怎么计算？交易失败为什么仍可能扣费](https://lianxiaozhi.com/learn/gas-and-failed-transactions)
- [钱包签消息与签交易有什么区别？不付 Gas 的签名也要读内容](https://lianxiaozhi.com/learn/wallet-message-vs-transaction)
- [区块确认与最终性是什么？交易成功和充值到账为何不同步](https://lianxiaozhi.com/learn/confirmations-and-finality)

## 官方依据
- [Ekubo：V3 两代 managers 与链可用状态](https://docs.ekubo.org/reference/contracts/evm-v3/)
- [Ekubo：NFT 权益、本金与净费用](https://docs.ekubo.org/products/liquidity/)
- [Ekubo 固定 V3.2.0：查询、collect 与 withdraw](https://raw.githubusercontent.com/EkuboProtocol/evm-contracts/de94c77a665c54f4c848185872b8a55b2c28c1bc/src/base/BasePositions.sol)
- [Ekubo：池身份、价格区间与协议费](https://docs.ekubo.org/user-guides/add-liquidity/)
- [Ekubo：价格与费用二进制单位](https://docs.ekubo.org/reference/price-representation/)
- [Ekubo 固定 V3.2.0：本金费与 swap 费字段](https://raw.githubusercontent.com/EkuboProtocol/evm-contracts/de94c77a665c54f4c848185872b8a55b2c28c1bc/src/Positions.sol)
- [Ekubo：当前 Trading 与区块固定路由](https://docs.ekubo.org/products/trading/)
