You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何单次请求获取Solana指定地址全部质押通胀奖励历史

Solana 全历史质押通胀奖励最优获取方案

核心结论

Solana 原生 JSON-RPC 没有提供单次请求直接返回某地址所有历史质押奖励的接口,但有两种远优于逐 epoch 单独发起请求的实现方案:


方案1:JSON-RPC 批量请求合并查询

你可以利用 JSON-RPC 的批量请求特性,把多个 epoch 的查询请求打包到同一个 HTTP 请求中发送,仅需1次HTTP交互即可拿到所有指定 epoch 的奖励数据,网络耗时可以降低到逐次请求的1/10甚至更低。
示例代码如下:

import requests
import json

url = "https://api.mainnet-beta.solana.com"
my_staking_address = "替换为你的质押地址"
# 自定义要查询的epoch范围,示例为查询epoch 200到250的奖励
target_epochs = range(200, 251)

# 构造批量请求payload
payload = []
for idx, epoch in enumerate(target_epochs):
    payload.append({
        "jsonrpc": "2.0",
        "id": idx,
        "method": "getInflationReward",
        "params": [
            [my_staking_address], {"epoch": epoch}
        ]
    })

# 单次请求发送所有查询
response = requests.post(url, json=payload).json()
# 解析返回结果即可得到所有epoch的奖励数据
print(response)

方案优缺点

  • 优点:数据直接来自链上通胀统计接口,准确性高,无需额外数据过滤
  • 缺点:需要预先确认你要查询的epoch范围

方案2:拉取地址交易历史过滤奖励记录

质押地址的每笔通胀奖励到账都会对应一条链上交易记录,你可以通过getSignaturesForAddress接口拉取该地址的所有历史交易,过滤出奖励类型的交易即可得到全量奖励历史,无需预先指定epoch范围。
示例代码逻辑:

import requests
import json

url = "https://api.mainnet-beta.solana.com"
my_staking_address = "替换为你的质押地址"

payload = {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getSignaturesForAddress",
    "params": [
        my_staking_address,
        {"limit": 1000} # 数据量不够可以用before参数分页拉取全量
    ]
}

response = requests.post(url, json=payload).json()
# 过滤交易类型为通胀奖励的记录即可得到全历史奖励
reward_records = [tx for tx in response["result"] if tx["memo"] and "inflation reward" in tx["memo"].lower()]
print(reward_records)

方案优缺点

  • 优点:无需预先知道epoch范围,配合分页可以一次性拉取全历史所有奖励
  • 缺点:需要做交易类型过滤,部分特殊节点返回的交易可能缺少memo标识,需要额外做字段校验

内容的提问来源于stack exchange,提问作者EllipticalInitial

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:24:04