@@ -73,7 +73,7 @@ func (c *compositeStakingStateReader) readStateBuckets(ctx context.Context, req
7373 }
7474
7575 // read LSD buckets
76- lsdBuckets , err := c .contractIndexer .Buckets ()
76+ lsdBuckets , err := c .contractIndexer .Buckets (inputHeight )
7777 if err != nil {
7878 return nil , 0 , err
7979 }
@@ -99,7 +99,7 @@ func (c *compositeStakingStateReader) readStateBucketsByVoter(ctx context.Contex
9999 }
100100
101101 // read LSD buckets
102- lsdBuckets , err := c .contractIndexer .Buckets ()
102+ lsdBuckets , err := c .contractIndexer .Buckets (height )
103103 if err != nil {
104104 return nil , 0 , err
105105 }
@@ -131,7 +131,7 @@ func (c *compositeStakingStateReader) readStateBucketsByCandidate(ctx context.Co
131131 if candidate == nil {
132132 return & iotextypes.VoteBucketList {}, height , nil
133133 }
134- lsdBuckets , err := c .contractIndexer .BucketsByCandidate (candidate .Owner )
134+ lsdBuckets , err := c .contractIndexer .BucketsByCandidate (candidate .Owner , height )
135135 if err != nil {
136136 return nil , 0 , err
137137 }
@@ -156,7 +156,7 @@ func (c *compositeStakingStateReader) readStateBucketByIndices(ctx context.Conte
156156 }
157157
158158 // read LSD buckets
159- lsdBuckets , err := c .contractIndexer .BucketsByIndices (req .GetIndex ())
159+ lsdBuckets , err := c .contractIndexer .BucketsByIndices (req .GetIndex (), height )
160160 if err != nil {
161161 return nil , 0 , err
162162 }
@@ -177,12 +177,16 @@ func (c *compositeStakingStateReader) readStateBucketCount(ctx context.Context,
177177 if ! c .isContractStakingEnabled () {
178178 return bucketCnt , height , nil
179179 }
180- buckets , err := c .contractIndexer .Buckets ()
180+ buckets , err := c .contractIndexer .Buckets (height )
181181 if err != nil {
182182 return nil , 0 , err
183183 }
184184 bucketCnt .Active += uint64 (len (buckets ))
185- bucketCnt .Total += c .contractIndexer .TotalBucketCount ()
185+ tbc , err := c .contractIndexer .TotalBucketCount (height )
186+ if err != nil {
187+ return nil , 0 , err
188+ }
189+ bucketCnt .Total += tbc
186190 return bucketCnt , height , nil
187191}
188192
@@ -220,7 +224,7 @@ func (c *compositeStakingStateReader) readStateCandidates(ctx context.Context, r
220224 return candidates , height , nil
221225 }
222226 for _ , candidate := range candidates .Candidates {
223- if err = addContractStakingVotes (candidate , c .contractIndexer ); err != nil {
227+ if err = addContractStakingVotes (candidate , c .contractIndexer , height ); err != nil {
224228 return nil , 0 , err
225229 }
226230 }
@@ -238,7 +242,7 @@ func (c *compositeStakingStateReader) readStateCandidateByName(ctx context.Conte
238242 if ! protocol .MustGetFeatureCtx (ctx ).AddContractStakingVotes {
239243 return candidate , height , nil
240244 }
241- if err := addContractStakingVotes (candidate , c .contractIndexer ); err != nil {
245+ if err := addContractStakingVotes (candidate , c .contractIndexer , height ); err != nil {
242246 return nil , 0 , err
243247 }
244248 return candidate , height , nil
@@ -255,7 +259,7 @@ func (c *compositeStakingStateReader) readStateCandidateByAddress(ctx context.Co
255259 if ! protocol .MustGetFeatureCtx (ctx ).AddContractStakingVotes {
256260 return candidate , height , nil
257261 }
258- if err := addContractStakingVotes (candidate , c .contractIndexer ); err != nil {
262+ if err := addContractStakingVotes (candidate , c .contractIndexer , height ); err != nil {
259263 return nil , 0 , err
260264 }
261265 return candidate , height , nil
@@ -275,7 +279,7 @@ func (c *compositeStakingStateReader) readStateTotalStakingAmount(ctx context.Co
275279 return accountMeta , height , nil
276280 }
277281 // add contract staking amount
278- buckets , err := c .contractIndexer .Buckets ()
282+ buckets , err := c .contractIndexer .Buckets (height )
279283 if err != nil {
280284 return nil , 0 , err
281285 }
@@ -291,7 +295,8 @@ func (c *compositeStakingStateReader) readStateContractStakingBucketTypes(ctx co
291295 if ! c .isContractStakingEnabled () {
292296 return & iotextypes.ContractStakingBucketTypeList {}, c .nativeSR .Height (), nil
293297 }
294- bts , err := c .contractIndexer .BucketTypes ()
298+ height := c .nativeSR .Height ()
299+ bts , err := c .contractIndexer .BucketTypes (height )
295300 if err != nil {
296301 return nil , 0 , err
297302 }
@@ -302,14 +307,14 @@ func (c *compositeStakingStateReader) readStateContractStakingBucketTypes(ctx co
302307 StakedDuration : uint32 (bt .Duration ),
303308 })
304309 }
305- return & iotextypes.ContractStakingBucketTypeList {BucketTypes : pbBts }, c . nativeSR . Height () , nil
310+ return & iotextypes.ContractStakingBucketTypeList {BucketTypes : pbBts }, height , nil
306311}
307312
308313func (c * compositeStakingStateReader ) isContractStakingEnabled () bool {
309314 return c .contractIndexer != nil
310315}
311316
312- func addContractStakingVotes (candidate * iotextypes.CandidateV2 , contractStakingSR ContractStakingIndexer ) error {
317+ func addContractStakingVotes (candidate * iotextypes.CandidateV2 , contractStakingSR ContractStakingIndexer , height uint64 ) error {
313318 votes , ok := big .NewInt (0 ).SetString (candidate .TotalWeightedVotes , 10 )
314319 if ! ok {
315320 return errors .Errorf ("invalid total weighted votes %s" , candidate .TotalWeightedVotes )
@@ -318,7 +323,11 @@ func addContractStakingVotes(candidate *iotextypes.CandidateV2, contractStakingS
318323 if err != nil {
319324 return err
320325 }
321- votes .Add (votes , contractStakingSR .CandidateVotes (addr ))
326+ contractVotes , err := contractStakingSR .CandidateVotes (addr , height )
327+ if err != nil {
328+ return err
329+ }
330+ votes .Add (votes , contractVotes )
322331 candidate .TotalWeightedVotes = votes .String ()
323332 return nil
324333}
0 commit comments