diff --git a/indexer/synchronizer.go b/indexer/synchronizer.go index 5453bf1c..6f2e2a1b 100644 --- a/indexer/synchronizer.go +++ b/indexer/synchronizer.go @@ -188,19 +188,21 @@ func (sync *synchronizerState) syncEpoch(syncEpoch uint64) bool { ValidatorBalances: make(map[uint64]uint64), }, } - epochValidators, err := sync.indexer.rpcClient.GetStateValidators(epochAssignments.DependendState) - if err != nil { - logger.Errorf("Error fetching epoch %v validators (state: %v): %v", syncEpoch, epochAssignments.DependendState, err) - } else { - for idx := 0; idx < len(epochValidators.Data); idx++ { - validator := epochValidators.Data[idx] - epochStats.Validators.ValidatorBalances[uint64(validator.Index)] = uint64(validator.Validator.EffectiveBalance) - if !strings.HasPrefix(validator.Status, "active") { - continue + if epochAssignments != nil { + epochValidators, err := sync.indexer.rpcClient.GetStateValidators(epochAssignments.DependendState) + if err != nil { + logger.Errorf("Error fetching epoch %v validators (state: %v): %v", syncEpoch, epochAssignments.DependendState, err) + } else { + for idx := 0; idx < len(epochValidators.Data); idx++ { + validator := epochValidators.Data[idx] + epochStats.Validators.ValidatorBalances[uint64(validator.Index)] = uint64(validator.Validator.EffectiveBalance) + if !strings.HasPrefix(validator.Status, "active") { + continue + } + epochStats.Validators.ValidatorCount++ + epochStats.Validators.ValidatorBalance += uint64(validator.Balance) + epochStats.Validators.EligibleAmount += uint64(validator.Validator.EffectiveBalance) } - epochStats.Validators.ValidatorCount++ - epochStats.Validators.ValidatorBalance += uint64(validator.Balance) - epochStats.Validators.EligibleAmount += uint64(validator.Validator.EffectiveBalance) } } if sync.checkKillChan(0) { diff --git a/indexer/writeDb.go b/indexer/writeDb.go index 6427b9fb..24c701f1 100644 --- a/indexer/writeDb.go +++ b/indexer/writeDb.go @@ -35,15 +35,17 @@ func persistEpochData(epoch uint64, blockMap map[uint64][]*BlockInfo, epochStats // insert slot assignments firstSlot := epoch * utils.Config.Chain.Config.SlotsPerEpoch - slotAssignments := make([]*dbtypes.SlotAssignment, utils.Config.Chain.Config.SlotsPerEpoch) - for slotIdx := uint64(0); slotIdx < utils.Config.Chain.Config.SlotsPerEpoch; slotIdx++ { - slot := firstSlot + slotIdx - slotAssignments[slotIdx] = &dbtypes.SlotAssignment{ - Slot: slot, - Proposer: epochStats.Assignments.ProposerAssignments[slot], + if epochStats.Assignments != nil { + slotAssignments := make([]*dbtypes.SlotAssignment, utils.Config.Chain.Config.SlotsPerEpoch) + for slotIdx := uint64(0); slotIdx < utils.Config.Chain.Config.SlotsPerEpoch; slotIdx++ { + slot := firstSlot + slotIdx + slotAssignments[slotIdx] = &dbtypes.SlotAssignment{ + Slot: slot, + Proposer: epochStats.Assignments.ProposerAssignments[slot], + } } + db.InsertSlotAssignments(slotAssignments, tx) } - db.InsertSlotAssignments(slotAssignments, tx) // insert epoch db.InsertEpoch(dbEpoch, tx)