getInflationReward RPC 方法允许您查询特定纪元中一个或多个地址获得的通胀 奖励(通常称为质押奖励)。
这对于验证质押账户或任何可能收到通胀奖励的账户所收到的奖励非常有用。
避免批处理以提高性能 批处理归档方法会显著增加延迟。不允许超过10个请求的批处理。
常见用例
验证质押奖励: 检查质押账户是否在过去的纪元中获得了预期的奖励。
跟踪奖励历史: 查询多个纪元的奖励,以建立一个地址的历史记录。
审计验证者支付: 验证者可以使用此方法验证奖励分配(尽管奖励是支付给质押账户的,而不是直接支付给验证者身份)。
请求参数
该方法需要两个主要参数:
addresses (字符串数组):要查询的账户的base-58编码公钥列表。允许的地址数量可能因RPC提供商而异(例如,Helius允许付费计划最多1005个)。
config (对象,可选):一个包含以下可选字段的配置对象:
commitment (字符串,可选):指定承诺级别 。如果未提供,默认为finalized。
epoch (整数,可选):要获取奖励的纪元编号。如果省略,RPC节点通常会使用最近完成的已分发奖励的纪元。
minContextSlot (整数,可选):请求可以评估的最小槽位。这确保查询针对至少处理到该槽位的账本状态进行。
响应结构
JSON-RPC响应的result字段将是一个数组,对应于输入的addresses数组。结果数组中的每个元素将是:
一个对象 ,包含通胀奖励的详细信息,如果该地址在指定的纪元中获得了奖励。
null 如果该地址在该纪元中没有收到通胀奖励或账户不存在。
奖励对象具有以下字段:
epoch (u64):奖励被记入的纪元。
effectiveSlot (u64):奖励被应用并生效的插槽。
amount (u64):奖励的金额,以 lamports 为单位。
postBalance (u64):奖励记入后账户的余额,以 lamports 为单位。
commission (u8 | undefined):对于投票账户,这是奖励记入时验证者收取的佣金百分比(0-100)。对于非投票账户,将是 undefined。
1. 获取单个地址的通胀奖励(上一个纪元)
此示例获取特定地址在最近完成的纪元中的通胀奖励。
cURL
JavaScript (using @solana/web3.js)
# Replace YOUR_VOTE_ACCOUNT_PUBKEY with an actual vote account public key
# Replace <api-key> with your Helius API key
curl https://mainnet.helius-rpc.com/?api-key= < api-ke y > -X POST -H "Content-Type: application/json" -d \
'{
"jsonrpc": "2.0",
"id": 1,
"method": "getInflationReward",
"params": [
["YOUR_VOTE_ACCOUNT_PUBKEY"]
]
}'
2. 获取多个地址在特定纪元的通胀奖励
cURL
JavaScript (using @solana/web3.js)
# Replace <api-key> with your Helius API key
# Replace PUBKEY_1 and PUBKEY_2 with actual public keys
curl https://mainnet.helius-rpc.com/?api-key= < api-ke y > -X POST -H "Content-Type: application/json" -d \
'{
"jsonrpc": "2.0",
"id": 1,
"method": "getInflationReward",
"params": [
["PUBKEY_1", "PUBKEY_2"],
{ "epoch": 450, "commitment": "confirmed" }
]
}'
开发者提示
纪元特定性: 奖励每个纪元记入一次。确保您查询的是正确的纪元编号。
奖励的时间: 通胀奖励在纪元结束时计算,并在下一个纪元开始时应用。effectiveSlot 指示何时发生这种情况。
空结果: 地址的 null 结果表示在指定的纪元中未找到该地址的奖励。这可能是因为账户不符合条件(例如,不是足够抵押的抵押账户)、奖励为零或账户当时不存在。
速率限制: 注意 RPC 提供者的速率限制,尤其是在查询大量地址时。
本指南帮助您使用getInflationReward方法准确检索和验证Solana网络上的质押奖励。