您好,请问在验证节点详情页面,这 1 2 3 4 5 这几个数据在链上怎么查询?如果链上没有直接查询的方法,那么在这个去中心化 的 truthless 的链上,我要怎么从我自己节点的数据上计算得到这几个数据呢?
1、当选验证节点:需要每一个验证周期(每个结算周期开始查询验证人详情接口)进行统计,如果当选验证节点,则累加一次。
2、委托数:每一笔交易进行解析,如果为成功的委托交易,则对应委托节点累加1,如果失败的委托交易则不累加。同理对于成功的全赎回委托交易,则需要委托数减一。
3、年化率计算公式如下:
最近4个结算周期,每个结算周期节点实际获得的收益(分配后的区块奖励+分配后的质押奖励+出块的交易手续费)W;最近4个结算周期,每个结算周期节点实际自身质押的token数(包含后续新增质押锁定状态的质押)C
节点收益率=[(W1+W2+W3+W4)/(C1+C2+C3+C4)]*(当前增发周期的结算周期数)*100%
4、委托年化率同节点年化率公式,只是对应的收益和成本是委托的收益和成本
5、待领取委托数计算:累计的委托奖励数减去累计的已领取委托奖励即可。累计的领取奖励数由每次领取奖励交易和全部赎回委托的奖励进行累计。
你好,请问上面的问题1,统计验证节点的当选次数,如果我现在要查询历史的验证周期验证人详情,该怎么查询?
历史验证周期的人数无法查询到,只能通过重放交易,然后进行实时查询。
那我现在不依赖于你们的浏览器,想查询我的节点的当选验证人次数,我要从区块 0 开始遍历所有的区块以及交易,在这个过程中,我要怎么查到我的 验证人当选次数呢?检查什么交易?他们字段关键字是什么样子的
这个暂时没有办法从交易中或者区块中解析出来。只能在当时进行的时候统计,因为
1、链是通过vrf等机制去重放的时候选择相同的验证节点,保证一致性
2、链是不存储过程数据的
解决方式:
1、修改源码
自己在原有链代码中增加自己的存储代码(比如每个结算周期开始存储该结算周期的验证列表),然后提供接口对外,后续你自己调用自己的节点接口查询历史的验证列表
2、集成vrf算法(复杂度较高)
自己实现一套与链相同vrf选举算法,每一次输入相同的权重和节点列表,得到选举的列表
建议使用第一种方式