能否通过JSON RPC API查询Solana指定验证节点的委托者列表?
Solana验证节点委托者质押数据获取方案
可以直接通过Solana原生JSON RPC API获取你需要的所有委托者质押数据,无需依赖第三方平台的封装接口,具体实现逻辑如下:
- 第一步调用
getProgramAccounts方法拉取目标节点的全部关联质押账户
查询的目标程序为Solana官方质押程序,ID为Stake11111111111111111111111111111111111111,请求参数中添加过滤器,筛选出委托验证节点地址为你指定的目标节点地址的所有质押账户即可。 - 第二步解析质押账户数据提取所需字段
对返回的质押账户序列化数据进行反序列化后,就能直接提取到所有你需要的信息:- 委托地址:质押账户的授权所有者地址
- 激活纪元:该笔质押生效的对应纪元编号
- 质押数量:已激活的质押金额,原生返回单位为lamports,除以1e9即可转换为SOL单位
- 占比:将所有委托的质押金额求和后,单笔质押金额除以总质押额乘以100即可算出占比数值
- 可选简化方案与注意事项
如果你不想手动处理RPC返回的原生序列化数据,可以直接使用Solana官方各语言版本的SDK(比如JS生态的@solana/web3.js、Python生态的solders等),调用其中封装好的质押数据查询方法,直接就能拿到结构化的委托列表数据,不需要自行做解析处理。
如果需要查询历史指定纪元的质押状态,额外调用getStakeActivation方法并传入对应纪元参数即可获取历史数据。
要是目标验证节点的委托量很大,调用公共RPC节点拉取全量质押账户可能会触发频率限制,你可以自行部署私有RPC节点,或者在请求时添加分页参数、调整超时时间来避免请求失败。
内容的提问来源于stack exchange,提问作者Nate
相关产品推荐
相关产品推荐

