> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 解析事件快速入门

> 解析您的第一次交易，获取解析的地址历史记录，并分页浏览结果。另外，还有两个端点的REST参考。

<Tip>
  首次接触解析事件？请先阅读解析流的[心智模型](/docs/zh/parsed-streams#the-mental-model)——解析事件通过REST和GraphQL返回相同的解码指令。
</Tip>

## 快速入门

<Steps>
  <Step title="获取访问权限">
    解析事件处于封闭测试阶段。确认它已经为您的项目启用。要加入封闭测试，请[在此申请](https://form.typeform.com/to/BlFWKbC9)。

    使用您的项目API密钥进行认证，该密钥作为`api-key`查询参数传递。
  </Step>

  <Step title="解析交易">
    将签名传递到`transactions`的body字段中：

    <Tabs>
      <Tab title="JavaScript">
        ```javascript theme={"system"}
        const parseTransactions = async () => {
          const url = "https://<ENDPOINT>/transactions?api-key=YOUR_API_KEY";

          const response = await fetch(url, {
            method: "POST",
            headers: {
              "Content-Type": "application/json",
            },
            body: JSON.stringify({
              transactions: [
                "5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH",
              ],
              includeRawTransaction: false,
            }),
          });

          const data = await response.json();
          console.log(data);
        };

        parseTransactions();
        ```
      </Tab>

      <Tab title="cURL">
        ```bash theme={"system"}
        curl -X POST "https://<ENDPOINT>/transactions?api-key=YOUR_API_KEY" \
          -H "content-type: application/json" \
          -d '{
            "transactions": [
              "5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH"
            ],
            "includeRawTransaction": false
          }'
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="读取结果">
    响应包含每个请求签名的一个结果，按输入顺序排列。每个结果包括`signature`，`parserStatus`，以及`parsed`或`parserError`：

    ```json [expandable] theme={"system"}
    [
      {
        "signature": "5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH",
        "parserStatus": "OK",
        "parsed": {
          "slot": 433950192,
          "blockTime": 1784487060,
          "fee": 2005000,
          "feePayer": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52",
          "transactionStatus": "OK",
          "nativeTransfers": [
            {
              "fromUserAccount": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52",
              "toUserAccount": "teBPkZtsnaKDpGHTy1KUZeh1PbVtbrKXhzruYpRiUUs",
              "amount": 1500000000000
            }
          ],
          "tokenTransfers": [
            {
              "fromUserAccount": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52",
              "toUserAccount": "7iWnBRRhBCiNXXPhqiGzvvBkKrvFSWqqmxRyu9VyYBxE",
              "fromTokenAccount": "teBPkZtsnaKDpGHTy1KUZeh1PbVtbrKXhzruYpRiUUs",
              "toTokenAccount": "2oL6my4QDDCfpgJZX1bZV1NgbmuNptKdgcE8wJm6efgk",
              "rawTokenAmount": 1498500000000,
              "decimals": 9,
              "tokenStandard": "Fungible",
              "mint": "So11111111111111111111111111111111111111112"
            }
          ],
          "summary": {
            "type": "swap",
            "description": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52 swapped 1500 SOL for 64672839.26195 pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn via Jupiter",
            "parsedData": {
              "type": "swap",
              "protocol": "jupiter",
              "kind": "swap",
              "in_amount": "1500000000000",
              "actual_out_amount": "64672839261950",
              "input_mint": "So11111111111111111111111111111111111111112",
              "output_mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn",
              "inner_swaps": [
                {
                  "amm_program_id": "",
                  "amm_program_name": null,
                  "input_amount": "470229300000",
                  "output_amount": "35579021038",
                  "input_mint": "So11111111111111111111111111111111111111112",
                  "output_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
                },
                {
                  "amm_program_id": "",
                  "amm_program_name": null,
                  "input_amount": "1028270700000",
                  "output_amount": "77798063361",
                  "input_mint": "So11111111111111111111111111111111111111112",
                  "output_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
                },
                {
                  "amm_program_id": "",
                  "amm_program_name": null,
                  "input_amount": "14625643887",
                  "output_amount": "8348494812168",
                  "input_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                  "output_mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn"
                },
                {
                  "amm_program_id": "",
                  "amm_program_name": null,
                  "input_amount": "35566391375",
                  "output_amount": "20283004384731",
                  "input_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                  "output_mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn"
                },
                {
                  "amm_program_id": "",
                  "amm_program_name": null,
                  "input_amount": "63185049137",
                  "output_amount": "36041340065051",
                  "input_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                  "output_mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn"
                }
              ]
            }
          },
          "instructions": [
            {
              "topIxIdx": 5,
              "innerIxIdx": 2,
              "stackHeight": 3,
              "programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
              "rawAccounts": [
                "2oL6my4QDDCfpgJZX1bZV1NgbmuNptKdgcE8wJm6efgk",
                "ATRsNGv2nDw7hSMfkUTBoVUDsFDwN7po7KbecyiGWNB4",
                "7iWnBRRhBCiNXXPhqiGzvvBkKrvFSWqqmxRyu9VyYBxE"
              ],
              "rawData": "3JvpRSxKFyKV",
              "summary": {
                "type": "transfer",
                "description": "7iWnBRRhBCiNXXPhqiGzvvBkKrvFSWqqmxRyu9VyYBxE transferred 470.2293 SOL from 7iWnBRRhBCiNXXPhqiGzvvBkKrvFSWqqmxRyu9VyYBxE to 8FnX3xo2yYw3EUE6w3nQA4GfXGS9wpK6oj3veJpbFzLo",
                "parsedData": null
              },
              "programName": "token",
              "instructionName": "transfer",
              "decoded": {
                "args": {
                  "amount": "470229300000"
                },
                "accounts": [
                  {
                    "name": "source_account",
                    "pubkey": "2oL6my4QDDCfpgJZX1bZV1NgbmuNptKdgcE8wJm6efgk",
                    "isSigner": false,
                    "isWritable": true
                  },
                  {
                    "name": "destination_account",
                    "pubkey": "ATRsNGv2nDw7hSMfkUTBoVUDsFDwN7po7KbecyiGWNB4",
                    "isSigner": false,
                    "isWritable": true
                  },
                  {
                    "name": "owner_or_delegate",
                    "pubkey": "7iWnBRRhBCiNXXPhqiGzvvBkKrvFSWqqmxRyu9VyYBxE",
                    "isSigner": true,
                    "isWritable": false
                  }
                ]
              }
            },
            {
              "topIxIdx": 5,
              "innerIxIdx": 1,
              "stackHeight": 2,
              "programId": "BiSoNHVpsVZW2F7rx2eQ59yQwKxzU5NvBcmKshCSUypi",
              "rawAccounts": [
                "7iWnBRRhBCiNXXPhqiGzvvBkKrvFSWqqmxRyu9VyYBxE",
                "8FnX3xo2yYw3EUE6w3nQA4GfXGS9wpK6oj3veJpbFzLo",
                "ATRsNGv2nDw7hSMfkUTBoVUDsFDwN7po7KbecyiGWNB4",
                "2Y7HATmn9aJBcxCskE5V2U2epmjvkZmB51zTJBbhj4cU",
                "2oL6my4QDDCfpgJZX1bZV1NgbmuNptKdgcE8wJm6efgk",
                "EpdaePzdqRkMtdZJquVPUWgyoJ5YEEpYALki6dv9VBrt",
                "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
                "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
                "Sysvar1nstructions1111111111111111111111111",
                "J1to1yufRnoWn81KYg1XkTWzmKjnYSnmE2VY8DGUJ9Qv"
              ],
              "rawData": "67t827t7UwAMHa6U18HnBBLj",
              "summary": null,
              "programName": "bison_fi",
              "instructionName": null,
              "decoded": null
            }
          ]
        }
      }
    ]
    ```

    该示例缩减为两个指令：一个在路径内部解码的代币转账，以及一个AMM指令，其程序目录已知但无法解码，因此`instructionName`为`null`，而`rawData`和`rawAccounts`仍然可用。查看[解析响应](/docs/zh/parsed-events/parsed-response)以获取每个字段和完整的示例响应。
  </Step>

  <Step title="获取地址历史">
    `POST /transaction-history`返回一个地址的相同`TransactionResult`项目，默认为最新的：

    <Tabs>
      <Tab title="JavaScript">
        ```javascript theme={"system"}
        const fetchTransactionHistory = async () => {
          const url = "https://<ENDPOINT>/transaction-history?api-key=YOUR_API_KEY";

          const response = await fetch(url, {
            method: "POST",
            headers: {
              "Content-Type": "application/json",
            },
            body: JSON.stringify({
              address: "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52",
              limit: 100,
              sortOrder: "desc",
              commitment: "confirmed",
            }),
          });

          const page = await response.json();
          console.log(page.data);
          console.log(page.paginationToken);
        };

        fetchTransactionHistory();
        ```
      </Tab>

      <Tab title="cURL">
        ```bash theme={"system"}
        curl -X POST "https://<ENDPOINT>/transaction-history?api-key=YOUR_API_KEY" \
          -H "content-type: application/json" \
          -d '{
              "address": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52",
              "limit": 100,
              "sortOrder": "desc",
              "commitment": "confirmed"
            }'
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="分页">
    历史响应将结果包装在一个页面对象中。在下一个请求中传递`paginationToken`以继续。如果`paginationToken`缺失，表示服务已达到可用页面范围的末尾。
  </Step>
</Steps>

## 指南

<CardGroup cols={2}>
  <Card title="获取Pump.fun代币" icon="rocket" href="/docs/zh/parsed-events/guides/fetch-pumpfun-mints">
    分页浏览一个钱包在Pump.fun上部署的每个代币。
  </Card>

  <Card title="使用GraphQL查询" icon="diagram-project" href="/docs/zh/parsed-events/guides/query-with-graphql">
    精确选择您的应用所需的解析字段。
  </Card>
</CardGroup>

## REST参考

两个端点通过`POST`接受JSON正文，在Helius团队与您共享的端点进行认证，使用`api-key`查询参数。请求主体拒绝未知字段，因此拼写错误会出现明显的错误提示，而不是被静默忽略。

### 解析交易

`POST /transactions`通过签名获取完整的Solana交易，使用相同的基于IDL的指令解码器进行解码，该解码器支持[解析流](/docs/zh/parsed-streams)，并返回每个请求签名的一个`TransactionResult`。相同的方法在GraphQL中可作为`transactions`使用。

响应顺序与输入顺序相匹配，包括重复的签名。缺失的交易和每个项目解析失败的结果返回为项目级别的`parserStatus: "ERROR"`结果：

```json theme={"system"}
[
  {
    "signature": "5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH",
    "parserStatus": "ERROR",
    "parserError": {
      "code": "transaction_not_found",
      "message": "transaction was not found"
    }
  }
]
```

#### 请求正文

<ParamField body="transactions" type="string[]" required>
  要解析的交易签名。最大批次大小为100。
</ParamField>

<ParamField body="commitment" type="string" default="confirmed">
  获取交易时使用的承诺级别。

  * `confirmed`
  * `finalized`
</ParamField>

<ParamField body="includeRawTransaction" type="boolean" default="false">
  当`true`时，包含原始Solana交易负载作为每个结果的`rawTransaction`。
</ParamField>

#### 注意事项

* 不支持`processed`承诺。
* 除非`includeRawTransaction`为`true`，否则省略`rawTransaction`。
* 交易执行失败仍然可以解析。在这种情况下，`parsed.transactionStatus`为`ERROR`，并且当可用时，交易错误会在`parsed.error`上暴露。
* 请求级别的验证错误返回错误响应，而不是项目级别的结果。

### 解析的交易历史

`POST /transaction-history`返回一个地址的解析交易历史。支持分页、签名范围、槽位范围、区块时间范围、排序顺序和可选的原始交易。相同的方法在GraphQL中可作为`transactionsByAddress`使用。

与传统的[增强交易](/docs/zh/enhanced-transactions/transaction-history)地址端点不同，请求参数以JSON正文而不是查询字符串参数发送。

#### 请求正文

<ParamField body="address" type="string" required>
  要获取其交易历史的地址。
</ParamField>

<ParamField body="limit" type="number" default="100">
  要返回的交易数量。必须在`1`和`100`之间。
</ParamField>

<ParamField body="beforeSignature" type="string">
  返回此签名之前的交易。
</ParamField>

<ParamField body="afterSignature" type="string">
  返回此签名之后的交易。
</ParamField>

<ParamField body="paginationToken" type="string">
  上一个响应返回的游标。
</ParamField>

<ParamField body="sortOrder" type="string" default="desc">
  返回交易的排序顺序。

  * `asc`
  * `desc`
</ParamField>

<ParamField body="commitment" type="string" default="confirmed">
  历史记录获取时使用的承诺级别。

  * `confirmed`
  * `finalized`
</ParamField>

<ParamField body="includeRawTransaction" type="boolean" default="false">
  当`true`时，包含原始Solana交易负载作为每个结果的`rawTransaction`。
</ParamField>

<ParamField body="slot" type="object">
  槽位比较范围。每个范围是可选的：`gt`，`gte`，`lt`，`lte`。
</ParamField>

<ParamField body="time" type="object">
  以Unix秒为单位的区块时间比较范围。每个范围是可选的：`gt`，`gte`，`lt`，`lte`。
</ParamField>

#### 分页

响应具有此形状。每个`data`项目使用解析交易返回的相同`TransactionResult`格式：

```json [expandable] theme={"system"}
{
  "data": [
    {
      "signature": "5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH",
      "parserStatus": "OK",
      "parsed": {
        "slot": 433950192,
        "blockTime": 1784487060,
        "fee": 2005000,
        "feePayer": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52",
        "transactionStatus": "OK",
        "nativeTransfers": [],
        "tokenTransfers": [],
        "summary": {
          "type": "swap",
          "description": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52 swapped 1500 SOL for 64672839.26195 pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn via Jupiter",
          "parsedData": {
            "type": "swap",
            "protocol": "jupiter",
            "kind": "swap",
            "in_amount": "1500000000000",
            "actual_out_amount": "64672839261950",
            "input_mint": "So11111111111111111111111111111111111111112",
            "output_mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn",
            "inner_swaps": [
              {
                "amm_program_id": "",
                "amm_program_name": null,
                "input_amount": "470229300000",
                "output_amount": "35579021038",
                "input_mint": "So11111111111111111111111111111111111111112",
                "output_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
              },
              {
                "amm_program_id": "",
                "amm_program_name": null,
                "input_amount": "1028270700000",
                "output_amount": "77798063361",
                "input_mint": "So11111111111111111111111111111111111111112",
                "output_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
              },
              {
                "amm_program_id": "",
                "amm_program_name": null,
                "input_amount": "14625643887",
                "output_amount": "8348494812168",
                "input_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                "output_mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn"
              },
              {
                "amm_program_id": "",
                "amm_program_name": null,
                "input_amount": "35566391375",
                "output_amount": "20283004384731",
                "input_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                "output_mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn"
              },
              {
                "amm_program_id": "",
                "amm_program_name": null,
                "input_amount": "63185049137",
                "output_amount": "36041340065051",
                "input_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                "output_mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn"
              }
            ]
          }
        },
        "instructions": []
      }
    }
  ],
  "paginationToken": "433950192:0"
}
```

在下一个请求中传递`paginationToken`以继续。如果`paginationToken`缺失，服务已达到可用页面范围的末尾。
