# Nodit Sui gRPC 余额排查：HTTP 200 还要检查 trailers

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

对照 Sui v2 StateService/GetBalance 的既有记录，检查 proto、owner/coin_type、认证和 grpc-status，避免空对象误判零余额。

## 使用工具
- [Nodit](https://lianxiaozhi.com/tools/nodit) · [官方入口](https://nodit.io/)

## 前置条件
- 准备 Sui Mainnet 完整公开 owner 地址、完整 coin type、已脱敏的 gRPC 请求/响应和 trailers。
- 记录使用的 proto/SDK 版本与原生 gRPC 或 gRPC-Web 类型；本任务不需要恢复材料或签名。

## 1. 确认 gRPC 协议、服务与版本

当前官方入口为 sui-mainnet.nodit.io:443，方法为 sui.rpc.v2.StateService/GetBalance。原生 gRPC 使用 TLS/HTTP2；grpcurl 的主机写 HOST:443，不能把 REST URL、JSON-RPC method 或 gRPC-Web 线协议混入。核对本地 proto 根目录与 sui/rpc/v2/state_service.proto 路径，字段随所用版本确认。

核对结果：主机、v2 服务方法、传输类型和 proto 路径都匹配。
依据：[Nodit：Sui gRPC v2 GetBalance 字段和 trailers](https://developer.nodit.io/en/chains/sui/grpc-api/stateservice/getbalance/)

## 2. 核对项目 key 的 metadata

Sui 原生 gRPC 文档要求 x-api-key metadata。检查已脱敏请求是否包含正确项目 key 的位置及是否属于目标项目；项目 key 具有该项目 API 权限，应遮盖值。HTTP RPC 的路径 key/header 二选一规则属于另一种接口，不能据此把 key 追加到 gRPC 主机。

核对结果：认证走 gRPC metadata，凭据只留脱敏位置说明，项目和网络可追踪。
依据：[Nodit：Sui gRPC v2 GetBalance 字段和 trailers](https://developer.nodit.io/en/chains/sui/grpc-api/stateservice/getbalance/)
依据：[Nodit：项目 API key、网络覆盖及 RPC/Data API](https://developer.nodit.io/en/guides/quickstart-for-developers/)

## 3. 使用 owner 和完整 coin_type

GetBalance 需要 owner 与 coin_type 两个字段。例如原生 SUI 的 coin type 为 0x2::sui::SUI，其他资产用自己的完整类型；简称不足以识别资产。对照既有请求的 owner，不能用某个 coin object ID 代替收款账户。缺少任一字段先修正输入，不从错误响应推断余额。

核对结果：owner 是预期完整地址，coin_type 是实际资产完整类型，两字段均存在。
依据：[Nodit：Sui gRPC v2 GetBalance 字段和 trailers](https://developer.nodit.io/en/chains/sui/grpc-api/stateservice/getbalance/)

## 4. 同时查看 trailers 与余额消息

原生 gRPC 的 grpc-status/grpc-message 在 HTTP/2 trailers 中返回，所以 HTTP 200 只是传输状态的一部分。先确认客户端报告 RPC 成功，再读取 balance 消息内的 coin_type、balance、address_balance、coin_balance。保留整数原值，不用浮点数猜精度；文档示例 balance:{} 不足以证明账户余额为零。

核对结果：有客户端完成状态/trailers，响应 coin_type 匹配；字段缺失、失败与明确零值分开。
依据：[Nodit：Sui gRPC v2 GetBalance 字段和 trailers](https://developer.nodit.io/en/chains/sui/grpc-api/stateservice/getbalance/)

## 5. 整理证据缺口和服务用量

若日志只保存 HTTP 状态没有 trailers，结论写为 gRPC 结果待补；若 owner/coin_type 或 proto 不一致，先标参数或版本问题。当前方法文档列 Request CU 10，它是 Nodit 用量，不是 Sui 网络 Gas。项目支持范围和套餐权限按控制台既有记录核查，不能从多链平台介绍推导所有网络都支持这个方法。

核对结果：报告含网络、版本、字段、传输/业务状态及待补项，CU 与 Gas 不混淆。
依据：[Nodit：Sui gRPC v2 GetBalance 字段和 trailers](https://developer.nodit.io/en/chains/sui/grpc-api/stateservice/getbalance/)
依据：[Nodit：项目 API key、网络覆盖及 RPC/Data API](https://developer.nodit.io/en/guides/quickstart-for-developers/)

## 常见错误
- HTTP 200 加空 balance 对象不能单独判零余额。
- 原生 gRPC 的错误 trailers 与 gRPC-Web 返回方式不同。
- 余额整数需要资产精度才能显示数量，coin_type 简称不可代替完整标识。

## 完成检查
- 输出同 owner/coin_type 的明确余额原值或失败/未知状态，附 gRPC 完成证据及 proto 版本。
- 本教程只经官方正文核验，未执行认证 gRPC 调用或钱包操作。

## 相关知识
- [如何核对 Meme 币？先确认链、合约地址和交易池](https://lianxiaozhi.com/learn/meme-token-identity)
- [区块确认与最终性是什么？交易成功和充值到账为何不同步](https://lianxiaozhi.com/learn/confirmations-and-finality)

## 官方依据
- [Nodit：项目 API key、网络覆盖及 RPC/Data API](https://developer.nodit.io/en/guides/quickstart-for-developers/)
- [Nodit：Sui gRPC v2 GetBalance 字段和 trailers](https://developer.nodit.io/en/chains/sui/grpc-api/stateservice/getbalance/)
