用途:Midnight Indexer 提供 GraphQL API,索引链上产生的区块、交易、合约动作与 UTXO 事件,是 DApp 前端读取公开链上状态的唯一方式。
主要能力:支持查询最新区块、按高度或哈希查区块、按地址查合约动作(最新、指定区块或指定交易)、按哈希查交易、查合约未屏蔽余额、查 DUST 生成状态;并通过 WebSocket 订阅合约动作、新区块、未屏蔽交易与屏蔽交易(钱包同步)。
使用方式:HTTP 查询用 POST,Content-Type: application/json;订阅用 WebSocket,协议 graphql-transport-ws,可用 graphql-ws 包。端点按网络区分:本地 undeployed 为 http://localhost:8088/api/v3/graphql(注意是 v3,用 v4 会 404);preview、preprod、mainnet 均为 /api/v4/graphql 及对应 wss 地址。合约状态返回十六进制 ContractState,需用编译合约生成的 ledger() 反序列化为类型化账本字段。
限制与注意:preview/preprod 托管索引器存在 offset: null 缺陷,不带 offset 调用 contractAction 或 queryContractState 会报内部错误,SDK 默认路径会触发;应改用显式自定义查询,或传入 offset: { blockOffset: { height: N } },生产环境可包装 indexerPublicDataProvider 绕过。ContractDeploy 的余额始终为空,仅 ContractCall 与 ContractUpdate 反映有效余额。DUST 的 currentCapacity 在首次支付费用后不再准确,因费用支付为屏蔽交易,索引器无法追踪,精确余额需查钱包 SDK。屏蔽交易订阅需先通过 connect mutation 获取 sessionId,通常由钱包 SDK 内部使用。官方参考包括 docs.midnight.network 的 v4 API 文档与 midnight-indexer 仓库的 schema-v4.graphql。