为什么要迁移?
增强交易API是一个处于维护模式的遗留产品:它仍然有效,但不再接受新的解析器类型或功能工作。其继任者是解析事件,通过IDL目录解码指令,该目录也支持解析流。 区别在于交易的解码方式。增强交易将交易分类为固定列表的事件类型之一(TRANSFER,SWAP,NFT_SALE,…)并返回其已知类型的预构建摘要。解析事件针对程序的IDL——超过3600个程序——解码每个指令到命名参数和命名账户,并在其上构建摘要:
解析事件在付费计划中处于开放测试版。在全面上市前,API可能仍会更改;增强交易在此期间仍然有效,因此您可以按自己的节奏迁移。
端点映射
两个解析事件方法都是POST请求到https://mainnet.helius-rpc.com,使用您已经在使用的api-key查询参数进行身份验证。
历史端点将所有输入从查询字符串参数移入JSON体。请求体拒绝未知字段,因此拼写错误会被明显地拒绝,而不是被静默忽略。
前后对比
同一任务——在两个API中获取钱包的解析历史:参数映射
解析交易
POST /v0/transactions → POST /v1/parsed-events/transactions
新选项没有旧选项等效:
includeRawTransaction返回原始Solana交易负载和解析结果。
交易历史
GET /v0/addresses/{address}/transactions → POST /v1/parsed-events/transaction-history。每个查询参数成为JSON体字段:
在此过程中,三个默认值发生变化:
limit默认为100而不是10。commitment默认为confirmed而不是finalized;不支持processed。sortOrder保持相同的asc/desc值,以desc作为默认值。
paginationToken而不是beforeSignature——请参见下文的简化分页。
旧的type参数没有解析事件等效——没有服务器端交易类型过滤。客户端侧在parsed.summary.type上过滤(swap,transfer,add_liquidity,…),或者在解码指令本身上过滤,这比旧的固定类型更精确。对于实时特定类型的订阅,解析流在服务器端指令级别进行过滤。
响应字段映射
增强交易返回一个丰富交易的平面数组。解析事件将每个结果包装在一个信封中——{ signature, parserStatus, parsed }——历史响应将数组包装在一个包含paginationToken的页面对象中。解析字段映射如下:
最大的变化是一个没有旧等效项的新字段:
parsed.instructions[]包含执行顺序中的每个顶级和内层指令,其中decoded.args和decoded.accounts从程序的IDL中命名。增强交易为每个交易提供一个事件摘要,解析事件提供摘要和完整解码指令列表。有关每个字段,请参见解析响应。
迁移步骤
1
交换端点
将解析交易调用指向
POST /v1/parsed-events/transactions,将历史记录调用指向POST /v1/parsed-events/transaction-history。同一主机,同一api-key查询参数。历史记录请求从GET带查询参数更改为带JSON体的POST——根据上面的映射移动每个参数。2
更新响应处理
解开新信封:检查
parserStatus === "OK",然后从parsed而不是顶级读取字段。重命名timestamp为blockTime,从summary中读取description和type(保护null),并在旧代码读取tokenAmount的位置除以rawTokenAmount。3
替换类型过滤
旧代码通过
type=...时,在客户端侧对返回项进行parsed.summary.type或parsed.instructions[]过滤——例如,“指令中programId为Jupiter且instructionName为route”的位置替换type=SWAP为您可以实际验证的东西。如果类型过滤器存在是为了驱动实时订阅,将该消费者移动到解析流,该流在服务器端的指令级别进行过滤。4
简化分页
用当
paginationToken替换before-signature光标循环:paginationToken缺失时,循环结束。旧的运行时搜索错误(“未能在搜索期内找到事件”)及其继续签名处理完全消失——删除该代码。5
验证旧输出
对于一个示例地址,从两个API获取相同页面并比较签名集合、费用和转账金额。然后部署并删除旧代码路径。在您迁移期间,增强交易保留工作——没有强制截止。
行为差异审核
- 默认承诺。 历史默认为
confirmed,而旧端点默认为finalized。如果您的管道依赖于最终性,请显式传递commitment: "finalized"。不支持processed。 - 逐项错误。 无法解析的签名不再导致请求失败——它作为一个带有
parserStatus: "ERROR"和parserError的项返回。请逐项而不是逐请求处理。 - 摘要覆盖范围。 对于没有识别到的交易级动作的交易,
summary为null。在这种情况下,旧API返回type: "UNKNOWN";新API仍然提供每个解码指令供您使用。 - 访问。 解析事件在付费计划中处于开放测试版,并且在全面上市前,API可能仍会更改。
让AI代理进行迁移
如果您使用Claude Code、Cursor或其他编码代理,请将以下提示粘贴到您的代码库代理会话中。它会查找增强交易调用点并重写它们。下一步
解析事件快速入门
解析您的第一笔交易,获取地址历史,并分页浏览结果。
解析响应
解析交易、转账和指令的字段参考。
解析流
实时通过WebSocket进行相同解码,服务器端过滤。
getTransactionsForAddress
带令牌账户支持和服务器端过滤的原始交易历史。