De.Fi 排查已有 GraphQL 组合记录:链编号、V1/V2 与漏仓位
链小知 · 进阶 · 核验 · 依官方文档整理
用已有脱敏请求和响应核对内部 chain_id、地址与协议版本,避免把 HTTP 成功或 V2 无记录误判为全部仓位为零。
开始前准备
- 准备有权分析的已有 GraphQL 请求与 JSON 响应,包含请求时间、查询文本、HTTP 状态和脱敏地址标签;去掉 X-Api-Key 值。
- 最好同时有 chains 与 protocols 响应及账户额度说明。缺少响应可以按文档结构逐字段盘点,但不调用接口、申请 key 或补跑付费查询。
1. 确认入口和查询类型
核对记录目的地是否为 https://public-api.de.fi/graphql,以及查询使用 assetBalances、assetBalancesAdvanced、protocolBalance 或 protocolBalanceV2 中哪一种。钱包持币与协议仓位是不同查询范围。
业务认证要求 X-Api-Key 且预购 credits;复核只保留是否存在认证配置,不复制 key。缺认证或额度的失败不能作为钱包数据。
检查结果:记录包含 endpoint、查询名称和认证配置是否存在,秘密值已移除。
2. 用 chains 记录映射内部编号
在已有 chains { id name } 结果中核对请求里的 chainIds。官方明确内部1对应 Ethereum、2对应 BNB、3对应 Polygon,而非 BNB Chain 的实际56或 Polygon 的137。
保存内部编号与网络名称映射。不要把内部2理解为某条链的测试网 Chain ID,也不要用其它供应商链编号直接替换。缺 chains 响应时只保留文档例子作为待核映射。
检查结果:内部编号与目标网络有对应证据,实际 Chain ID 和供应商内部 ID 分列。
3. 核对地址数与资产查询覆盖
assetBalancesAdvanced 的示例用 chainIds、walletAddresses,并返回 total、wallet、chains.chain.id;按地址标签与链拆开检查,不能把一个地址的结果套到整个组合。
此接口为 BETA。文档先将 assetBalances 描述为 ERC20,后又给出非 EVM 场景说明;遇到非 EVM 记录需保留具体 schema/请求证据,不从概述推断所有非 EVM 参数都已支持。
检查结果:目标地址与链都有记录,未因汇总 total 非空就认定组合成员全部覆盖。
4. 核对协议版本与部分错误
查看已有 protocols(version: V2) 或 V1 响应,确认目标协议 slug 在对应版本里。V2 面向 TOP EVM 平台,其余含非 EVM 平台使用 V1 及逐链、地址、协议组合的 protocolBalance。
protocolBalanceV2 示例分别返回 errors 与 balances。保留 errors,并按 balances.protocol.slug、address、total 对照目标;有部分结果不能掩盖另一协议报错,也不能将缺失项补成0。
检查结果:每个目标协议有版本与结果对应,部分错误和未覆盖仓位单列。
5. 检查方法对应的 credits 和限制
用请求实际方法核对公开价目:assetBalances、protocolBalance 各10 credits、20次/分钟;chains、protocols 各1 credit、100次/分钟。复杂查询可能消耗更多 credits。
价格表没有独立列出 BETA advanced/V2 的费率,不能将10 credits/20次限制直接移植。API 表保留已 deprecated 的 shields 行,也不等于所有方法都退役或免费。
检查结果:额度说明对应实际方法;未报价的 BETA 项明确未知,没有为了验证而追加收费请求。
6. 形成可复查的漏仓位说明
整理地址标签、内部链编号、协议 slug、V1/V2、成功结果、errors、时间和缺项。仅在数据完整且无相应错误时解读返回 total;如果缺链、协议或成员,写出具体缺口。
HTTP 状态只说明传输层结果,不能替代查询数据、版本覆盖与索引时点。没有资料时止于待核清单,不触发新查询或连接钱包。
检查结果:得到可定位到查询和协议的排查清单,不将缺记录、错误或未知版本记为零持仓。
怎样确认完成
- 逐条说明已有查询覆盖的地址、链和协议版本,保留错误及缺失证据。
- 验证级别为文档核对;未调用认证服务、验证额度扣费或确认真实账户资产。
常见错误与边界
- 用56/137直接填入要求内部编号的 chainIds。
- V2 未覆盖某协议,却把 balances 没条目解释为无仓位。
- 只看 total 忽略 errors、多个成员或非 EVM schema 限制。