新消息:Helius 收购 Light Protocol
Solana Parsed Events API 和 Parsed Streams 产品发布公告
博客/更新

推出 Parsed Events API 和 Parsed Streams

Helius 产品团队X 上的 Kiryl MiranovichLinkedIn 上的 Kiryl Miranovich
阅读需 5 分钟

Parsed Streams 和 Parsed Events API 是 Helius 推出的两款全新解析数据产品,可返回 3,600 多个程序的完整解码 Solana 交易。这些交易通过程序的链上 IDL 解码,包含:

  • 具名账户
  • 具名指令参数
  • 通俗易懂的摘要
  • 每笔 SOL 和代币转账

交易一经确认,Parsed Streams 就会通过 WebSocket 将匹配的交易推送给你。

Parsed Events API 则通过 REST 和 GraphQL 按需返回相同的解码模型,支持查询任意签名或任意地址的历史记录。

两款产品现已进入公开测试阶段,所有付费计划均可使用。

为什么读取 Solana 交易如此困难?

当你向标准 RPC 节点查询某笔交易中发生了什么时,得到的只是一串没有名称的账户地址,以及以不透明 base58 数据块表示的指令数据。

要将这些内容转换为“这个钱包在 Jupiter 上用 1,500 SOL 兑换了 PUMP”,传统上你必须:

  1. 获取交易,并识别它涉及的每个程序
  2. 查找每个程序的 IDL(即其公开接口),前提是该 IDL 存在
  3. 根据该 IDL 解码指令数据(通常为 Borsh)
  4. 将各位置的账户映射到对应角色:第三个地址是授权方还是目标地址?只有程序接口知道答案
  5. 递归处理内部指令(CPI),因为大多数实际活动都发生在其中,例如兑换过程中的代币转移
  6. 对你关注的每个程序重复上述操作,并在程序发布新版本时持续更新解码器

在回答第一个问题之前,这就需要投入数周的工程工作,也是开始使用 Solana 时最陡峭的学习曲线之一。链上数据虽然公开,却难以理解。

因此,我们构建了服务端解码层,让你无需再处理这些工作。

Parsed Events 响应中包含哪些内容?

每笔返回的交易都会通过 Helius IDL 目录完成解码。 

下面是一笔真实的 Jupiter 兑换交易,仅保留了重点内容:

代码
{
  "summary": {
    "type": "swap",
    "description": "GV6UUm… swapped 1500 SOL for 64672839.26195 PUMP via Jupiter",
    "parsedData": {
      "protocol": "jupiter",
      "in_amount": "1500000000000",
      "actual_out_amount": "64672839261950",
      "input_mint": "So11111111111111111111111111111111111111112",
      "output_mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn"
    }
  },
  "instructions": [
    {
      "programName": "jupiter",
      "instructionName": "shared_accounts_route_v2",
      "decoded": {
        "args": { "in_amount": "1500000000000", "slippage_bps": 2200 },
        "accounts": [
          { "name": "user_transfer_authority", "pubkey": "GV6UUm…", "isSigner": true },
          { "name": "source_mint", "pubkey": "So1111…" }
        ]
      }
    }
  ]
}

你无需猜测账户列表中的第三个地址代表什么,直接读取 "name": "user_transfer_authority" 即可。 

参数也会以解码后的形式返回:"slippage_bps": 2200,而不是原始字节。

交易级别的 summary 也可以原样展示给用户。

每个结果还会包含费用和费用支付方、原生 SOL 转账、SPL 和 Token-2022 转账,以及在元数据可用时解码后的自定义程序错误。 

对于目录之外的程序,指令会回退到原始数据和原始账户,因此你始终有可供处理的内容。

Parsed Streams:将解码后的交易推送给你

Parsed Streams 是一项 WebSocket 服务。它会监控每笔已确认的交易并进行解码,然后在服务端按指令级别筛选,将匹配过滤条件的交易推送给你。

你无需处理海量原始数据流,也无需维护解码器。

过滤器由五个字段组成:

  1. programs
  2. instructionNames
  3. accounts(按是否包含或具名角色筛选)
  4. includeCpi
  5. includeFailed

例如,“涉及此钱包的每条 Jupiter 路由指令”可以写成:

代码
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "parsedTransactionSubscribe",
  "params": [
    {
      "programs": ["JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"],
      "instructionNames": ["route", "shared_accounts_route"]
    }
  ]
}

每条通知都包含完整的解码交易,此外,matchedIndexes 会指向匹配过滤条件的指令。

如何获取 Solana 程序的指令名称?

猜测指令名称是导致过滤器无提示地匹配不到任何内容的最常见原因。要获取 Solana 程序的指令名称,请使用任意程序地址调用 describeProgram。它会返回匹配器用于比较的指令、事件和账户角色:

代码
{
  "id": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
  "name": "jupiter",
  "instructions": ["route", "shared_accounts_route", "exact_out_route"],
  "events": ["SwapEvent"],
  "roles": ["user_transfer_authority", "destination_token_account"]
}

查找程序,将名称添加到过滤器中,然后订阅。 

追踪 Jupiter 兑换指南将带你完成整个工作流程。

Parsed Events API:按需获取解码后的交易

如果你需要查询而非实时数据,Parsed Events API 会按请求应用相同的 IDL 目录解码。

解析交易接收签名并返回解码后的交易。

解析交易历史记录可分页浏览某个地址完整的解码历史记录,并优先返回最新交易。

代码
curl -X POST "https://mainnet.helius-rpc.com/v1/parsed-events/transactions?api-key=YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{"transactions": ["5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH"]}'

这两种方法也可通过 GraphQL 使用,因此你可以只选择应用需要的解析字段。

Parsed Events 与 Enhanced Transactions API 对比

Parsed Events 是 Enhanced Transactions API 的后继产品。 

Enhanced Transactions 会将交易归类为固定的事件类型,而 Parsed Events 则通过 IDL 目录解码每条指令。对于无法识别的程序,它会回退到原始数据,而不是返回 UNKNOWN。

如果你目前正在使用 Enhanced Transactions API,迁移指南会映射每个端点、参数和响应字段,并提供可由你的智能体运行的提示词,帮助你完成迁移。

哪种解析工具适合我?

你的需求使用工具
实时接收解码后的交易,并在服务端完成筛选Parsed Streams
解码特定签名,或分页浏览某个地址的历史记录Parsed Events API
获取原始海量数据流并在客户端进行控制,以最低延迟接收已处理交易LaserStream
大规模获取原始交易历史记录并进行回填getTransactionsForAddress
获取某个钱包地址可供人类阅读的代币和原生 SOL 转账对象getTransfersByAddress

这两款新产品共用同一个解码引擎,因此无论交易来自数据流还是 REST 调用,其呈现方式都完全相同。更重要的是,你可以使用 Parsed Events 基于历史记录构建原型,再切换到 Parsed Streams 获取实时数据,而无需修改解析代码。

开始使用

Parsed Streams 和 Parsed Events API 现已进入公开测试阶段,所有付费计划均可使用。前往 Helius 控制面板获取你的 API 密钥。

请使用以下端点进行连接:

Parsed Streams: 

wss://fs-beta.helius-rpc.com/?api-key=YOUR_API_KEY

Parsed Events API: 

https://mainnet.helius-rpc.com/v1/parsed-events/...?api-key=YOUR_API_KEY

指南

通过 Parsed Streams 快速入门,你只需几分钟即可收到第一条解码通知;Parsed Events 快速入门则会指导你解析第一个签名。 

如有任何问题,请通过 Telegram 或 Discord 联系我们。

订阅 Helius

及时了解 Solana 开发的最新动态,并在我们发布新内容时收到更新