# Wormholescan 查不到VAA：核对环境、emitter与sequence

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

用Wormhole三元消息身份和已有响应定位问题，区分Explorer与legacy Guardian封装、原VAA编码、分页窗口和重组重复记录。

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

## 前置条件
- 已有源交易/事件记录中的emitter_chain、emitter_address与sequence，以及取得日期、环境与脱敏查询响应。
- 查询参数必须来自对应应用发消息事件，不从收款人地址或交易hash猜emitter/sequence。
- 只整理文档与既有记录，不向Wormholescan、Guardian或其他业务接口发请求，也不提交VAA。

## 1. 先确认mainnet、testnet与namespace

官方指南列mainnet https://api.wormholescan.io/api/v1、testnet https://api.testnet.wormholescan.io/api/v1。现行Swagger又区分Explorer/api/v1与legacy Guardian/v1，先抄原host/path，不用重复/api/v1或把两种响应互换。

Wormhole chain ID不是EVM chain ID：规范映射Solana=1、Ethereum=2；这不代表Ethereum主网EVM chainId=2。同一数值也不能代替环境；测试网资产/消息不与主网样本合并。

核对结果：原请求环境、namespace和Wormhole chain ID可追溯；链名与原数字没有互猜。
依据：[Wormhole 官方 Wormholescan 查询教程](https://wormhole.com/docs/ai/pages/products-messaging-guides-wormholescan-api.md)
依据：[Wormholescan 当前 Swagger 查询方法](https://api.wormholescan.io/swagger.json)

## 2. 核对三元身份和32字节地址

VAA按emitter_chain/emitter_address/sequence识别，emitter是调用Core发消息的应用合约/程序，不是用户发送地址、token地址、目标接收人或Core地址的通用替代。根据已有事件取完整值。

Wormhole地址格式是32字节hex；EVM与Solana原地址格式不同，Solana base58不能靠字符串补0转换。sequence是u64，保存精确十进制字符串，避免JS Number超安全整数；官方SDK转换仅作格式依据，未安装或运行。

核对结果：三元值来自同一消息事件，格式/大sequence精度完整，错地址或未知事件先列出。
依据：[Wormhole VAA身份与最终性](https://wormhole.com/docs/protocol/infrastructure/vaas/)
依据：[Wormhole 32字节地址格式](https://wormhole.com/docs/ai/pages/reference-wormhole-formatted-addresses.md)
依据：[Wormholescan 当前 Swagger 查询方法](https://api.wormholescan.io/swagger.json)

## 3. 按方法检查响应外壳

Explorer GET /api/v1/vaas/{chain_id}/{emitter}/{seq}的规范路径占位符原写:chain_id/:emitter/:seq，表示替换参数，不是把冒号字面值当业务URL。200 schema为对象data数组及pagination；同ID可能不止一项，逐项核对id、emitterChain、emitterAddr、digest。

legacy GET /v1/signed_vaa/{chain_id}/{emitter}/{seq}定义为vaaBytes封装，不含Explorer txHash/payload等扩展。原响应是null、空data、缺data或错误时分列，不用从另一个namespace的样例补字段。

核对结果：每条VAA原记录与自身方法匹配；空数组、null、缺字段与HTTP失败未合并。
依据：[Wormholescan 当前 Swagger 查询方法](https://api.wormholescan.io/swagger.json)

## 4. 保留原VAA编码与解析边界

当前Swagger VaaDoc.vaa及legacy vaaBytes声明integer数组；官方SDK3.x的Operation.vaa.raw却声明string，响应编码存在文档差异。先保存实际JSON类型与来源方法，不能对任意数组调用base64解码，也不能把未经确认的字符串一律认定hex/base64。

parsedPayload参数只说在可解析时附加payload；缺payload不等于无VAA。txHash/payload/isSolanaShim是Explorer扩展，不是VAA核心头字段；guardianSetIndex或原字节存在也不等于本地验签完成或目标合约已接受。

核对结果：记录区分索引扩展、原VAA字节/编码与解析结果；未执行decode/验签的部分明确未验证。
依据：[Wormholescan 当前 Swagger 查询方法](https://api.wormholescan.io/swagger.json)
依据：[Wormhole 官方 Wormholescan 查询教程](https://wormhole.com/docs/ai/pages/products-messaging-guides-wormholescan-api.md)
依据：[Wormhole VAA身份与最终性](https://wormhole.com/docs/protocol/infrastructure/vaas/)

## 5. 检查重复VAA与源链最终性

低consistency或源链未最终确认时，重组可能让看似相同三元ID产生不同VAA。逐项保留digest、isDuplicated、txHash、timestamp/indexedAt/updatedAt；不要仅凭sequence去重删除内容不同的记录。

当前规范还有同ID/duplicated查询定义，但不需要现场补查。没有已有重复列表或源最终性证据时，写“重复/重组待核”。VAA是Guardian证明，原核心消息不自带唯一目标链；目标路由由应用payload和消费逻辑决定，不能据VAA存在判代币到账。

核对结果：消息身份与内容差异可复核；最终性、Guardian签署和目标消费三个状态分开。
依据：[Wormholescan 当前 Swagger 查询方法](https://api.wormholescan.io/swagger.json)
依据：[Wormhole VAA身份与最终性](https://wormhole.com/docs/protocol/infrastructure/vaas/)

## 6. 复核分页时间范围与原错误

如果记录来自VAA列表/api/v1/vaas/，核对txHash、page/pageSize、sortOrder（ASC/DESC）和from/to。该列表明确RFC3339匹配VAA timestamp；只有to时from默认前两周，只有from时to默认后两周，不能把漏出的旧消息当不存在。

响应pagination.next只有string定义，未明确终页哨兵/page起点；按原记录留页/next、不要猜空值代表全量完成。400/500等HTTP失败保留，不转换为0消息。官方称公共无需认证但部分方法限速，没有本轮具体RPM或免费额度，不能承诺无限重试。

核对结果：结论说明身份错误、环境/封装差异、窗口漏项、重复可能或仍未知；未取得数据不当链上无消息。
依据：[Wormholescan 当前 Swagger 查询方法](https://api.wormholescan.io/swagger.json)

## 常见错误
- 把用户/收款地址或EVM chainId当Wormhole emitter/chain ID，或sequence浮点化。
- 把Explorer data数组、legacy vaaBytes和Operation.vaa.raw当同一种JSON封装/编码。
- 忽略默认两周时间窗口，将空页或缺parsedPayload当VAA不存在。
- VAA存在/Guardian签署不等于目标执行、到账或独立签名验证；同ID重组内容不能盲目去重。

## 完成检查
- 记录环境、namespace、三元ID、原响应类型、原字节与重复/时间范围。
- 能明确排查分支与补证条件，不承诺当前业务API可用或已取得/验证VAA。

## 相关知识
- [Wormhole VAA 为什么要同时核对来源链确认状态？](https://lianxiaozhi.com/learn/wormhole-vaa-finality)
- [区块确认与最终性是什么？交易成功和充值到账为何不同步](https://lianxiaozhi.com/learn/confirmations-and-finality)
- [原始、解码和整理后的链上数据有什么区别？](https://lianxiaozhi.com/learn/raw-decoded-curated-data)
- [跨链显示已发送却未到账？来源交易、消息与目标执行分开查](https://lianxiaozhi.com/learn/bridge-transfer-status)

## 官方依据
- [Wormhole 官方 Wormholescan 查询教程](https://wormhole.com/docs/ai/pages/products-messaging-guides-wormholescan-api.md)
- [Wormholescan 当前 Swagger 查询方法](https://api.wormholescan.io/swagger.json)
- [Wormhole VAA身份与最终性](https://wormhole.com/docs/protocol/infrastructure/vaas/)
- [Wormhole 32字节地址格式](https://wormhole.com/docs/ai/pages/reference-wormhole-formatted-addresses.md)
