概览
GraphQL 接口公开了两个解析事件方法:通过transactions 解析交易,以及通过 transactionsByAddress 解析交易历史。向 POST /v1/parsed-events/graphql 发送 GraphQL 操作。它返回与 REST 终端 相同的解析交易模型,同时允许客户端仅选择他们需要的字段。
仅当字段被选择时,GraphQL 才会包括 rawTransaction。动态解析器有效负载仍然是 JSON 标量,包括解码的指令 args、事务执行 error、摘要 parsedData 和 rawTransaction。
终端
向POST /v1/parsed-events/graphql 发送 GraphQL 操作。使用 api-key 查询参数进行认证。
- JavaScript
- cURL
const url = "https://mainnet.helius-rpc.com/v1/parsed-events/graphql?api-key=YOUR_API_KEY";
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
query: `query ParseTransactions($signatures: [String!]!) {
transactions(signatures: $signatures, commitment: CONFIRMED) {
signature
parserStatus
}
}`,
variables: {
signatures: [
"5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH",
],
},
}),
});
const data = await response.json();
console.log(data);
curl -X POST "https://mainnet.helius-rpc.com/v1/parsed-events/graphql?api-key=YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"query": "query ParseTransactions($signatures: [String!]!) { transactions(signatures: $signatures, commitment: CONFIRMED) { signature parserStatus } }",
"variables": {
"signatures": ["5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH"]
}
}'
解析交易
query ParseTransactions($signatures: [String!]!) {
transactions(signatures: $signatures, commitment: CONFIRMED) {
signature
parserStatus
parsed {
slot
blockTime
fee
feePayer
transactionStatus
nativeTransfers {
fromUserAccount
toUserAccount
amount
}
tokenTransfers {
fromUserAccount
toUserAccount
fromTokenAccount
toTokenAccount
rawTokenAmount
decimals
tokenStandard
mint
}
summary {
type
description
parsedData
}
instructions {
instructionIndex
innerInstructionIndex
programId
programName
instructionName
summary {
type
description
parsedData
}
decoded {
args
accounts {
name
pubkey
isSigner
isWritable
}
}
}
}
parserError {
code
message
}
}
}
{
"signatures": ["5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH"]
}
解析的交易历史
query AddressHistory($address: String!) {
transactionsByAddress(
address: $address
limit: 100
sortOrder: DESC
commitment: CONFIRMED
filters: {
slot: { gte: 300000000 }
}
) {
data {
signature
parserStatus
parsed {
slot
blockTime
nativeTransfers {
fromUserAccount
toUserAccount
amount
}
tokenTransfers {
fromUserAccount
toUserAccount
rawTokenAmount
decimals
mint
}
}
}
paginationToken
}
}
{
"address": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52"
}
查询参数
transactions
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
signatures | [String!]! | - | 要解析的交易签名。 |
commitment | Commitment | CONFIRMED | CONFIRMED 或 FINALIZED。 |
transactionsByAddress
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
address | String! | - | 要获取其交易历史的地址。 |
limit | Int | 100 | 返回交易的数量。必须在 1 和 100 之间。 |
beforeSignature | String | - | 返回此签名前的交易。 |
afterSignature | String | - | 返回此签名后的交易。 |
paginationToken | String | - | 拥有形状 slot:transactionIndex 的游标。 |
sortOrder | SortOrder | DESC | ASC 或 DESC。 |
commitment | Commitment | CONFIRMED | CONFIRMED 或 FINALIZED。 |
filters | AddressTransactionFiltersInput | - | 可选 slot 和 time 界限。 |
原始交易
选择rawTransaction 以包含原始交易 JSON:
query ParseWithRaw($signatures: [String!]!) {
transactions(signatures: $signatures) {
signature
rawTransaction
parsed {
slot
}
}
}
rawTransaction,服务不会在响应中包含它。