如何通过编程获取NEAR区块链中已质押的NEAR代币总量?
获取NEAR区块链总质押代币量的方法
目前NEAR没有直接返回全网总质押量的RPC接口,但可以通过以下两种方式计算得到:
方法一:遍历活跃验证节点累加质押量
- 获取活跃验证节点列表
通过validatorsRPC方法获取当前epoch的活跃验证节点信息:
{ "jsonrpc": "2.0", "id": 1, "method": "validators", "params": [null] }
接口返回的每个验证节点数据中,stake字段代表该节点的总质押量(包含自身质押和用户委托质押)。
- 累加所有节点质押量
遍历返回结果中的所有验证节点,将它们的stake值相加即可得到全网总质押量。注意:stake的单位是yoctoNEAR(1 NEAR = 10^24 yoctoNEAR),需要转换为NEAR单位。
方法二:通过官方质押池工厂合约查询
NEAR主网的staking.pool-factory.near合约提供了统计官方质押池总质押量的方法,调用方式如下:
{ "jsonrpc": "2.0", "id": 1, "method": "query", "params": { "request_type": "call_function", "finality": "final", "account_id": "staking.pool-factory.near", "method_name": "get_total_staked_balance", "args_base64": "e30=" } }
返回结果为所有通过该工厂创建的质押池的总质押量。如果存在未通过官方工厂创建的自定义质押池,该数值会有遗漏,此时建议结合方法一使用。
注意事项
- 所有返回的质押数值单位为yoctoNEAR,转换公式:
总质押NEAR = 总质押yoctoNEAR / 10^24 - 使用
finalfinality参数可确保获取的是已确认的链上数据
内容的提问来源于stack exchange,提问作者Mithun Pal
相关产品推荐
相关产品推荐

