@@ -34,8 +34,16 @@ func GetFinalityProviderUptime(exporter *common.Exporter) (types.BabylonFinality
34
34
35
35
exporter .Debugf ("got active finality providers: %d" , len (activeProviders ))
36
36
37
+ fpInfoList , jailedCnt := addActiveStatus (activeProviders , finalityProviderInfos )
38
+ fpTotal := types.FinalityProviderTotal {
39
+ Active : len (activeProviders ),
40
+ Inactive : len (finalityProviderInfos ) - len (activeProviders ),
41
+ Jailed : jailedCnt ,
42
+ Unjailed : len (finalityProviderInfos ) - jailedCnt ,
43
+ }
44
+
37
45
// 5. get lity providers' uptime status
38
- finalityProviderUptimeStatus , err := commonapi .GetFinalityProviderUptime (exporter .CommonClient , addActiveStatus ( activeProviders , finalityProviderInfos ) )
46
+ finalityProviderUptimeStatus , err := commonapi .GetFinalityProviderUptime (exporter .CommonClient , fpInfoList )
39
47
if err != nil {
40
48
return types.BabylonFinalityProviderUptimeStatues {}, errors .Wrap (err , "failed to get babylon finality providers uptime" )
41
49
}
@@ -72,17 +80,23 @@ func GetFinalityProviderUptime(exporter *common.Exporter) (types.BabylonFinality
72
80
MinSignedPerWindow : minSignedPerWindow ,
73
81
FinalityProvidersStatus : finalityProviderUptimeStatus ,
74
82
LastFinalizedBlockInfo : LastFinalizedBlockInfo ,
83
+ FinalityProviderTotal : fpTotal ,
75
84
}, nil
76
85
}
77
86
78
- func addActiveStatus (activeProviders []commontypes.FinalityProvider , finalityProviderInfos []commontypes.FinalityProviderInfo ) []commontypes.FinalityProviderInfo {
87
+ func addActiveStatus (activeProviders []commontypes.FinalityProvider , finalityProviderInfos []commontypes.FinalityProviderInfo ) ( []commontypes.FinalityProviderInfo , int ) {
79
88
activeFpMap := make (map [string ]commontypes.FinalityProvider , len (activeProviders ))
80
89
for _ , fp := range activeProviders {
81
90
activeFpMap [fp .BtcPkHex ] = fp
82
91
}
83
92
93
+ jailedCnt := 0
84
94
// Modify the original slice using index-based iteration
85
95
for i := range finalityProviderInfos {
96
+ if finalityProviderInfos [i ].Jailed {
97
+ jailedCnt ++
98
+ }
99
+
86
100
fp , exist := activeFpMap [finalityProviderInfos [i ].BTCPK ]
87
101
if exist {
88
102
// NOTE: fp.VotingPower must will be integer, so no need to check error
@@ -92,7 +106,7 @@ func addActiveStatus(activeProviders []commontypes.FinalityProvider, finalityPro
92
106
}
93
107
}
94
108
95
- return finalityProviderInfos
109
+ return finalityProviderInfos , jailedCnt
96
110
}
97
111
98
112
func getLastFinalizedBlockInfo (votes []string , fps []commontypes.FinalityProvider ) types.LastFinalizedBlockInfo {
0 commit comments