Skip to content

Commit

Permalink
fix index out of range
Browse files Browse the repository at this point in the history
  • Loading branch information
unclezoro committed Aug 10, 2020
1 parent 85ebea9 commit 4f431e0
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 13 deletions.
8 changes: 6 additions & 2 deletions consensus/parlia/parlia.go
Original file line number Diff line number Diff line change
Expand Up @@ -1145,7 +1145,11 @@ func backOffTime(snap *Snapshot, val common.Address) uint64 {
if snap.inturn(val) {
return 0
} else {
dis := snap.distanceToInTurn(val)
idx := snap.indexOfVal(val)
if idx < 0 {
// The backOffTime does not matter when a validator is not authorized.
return 0
}
s := rand.NewSource(int64(snap.Number))
r := rand.New(s)
n := len(snap.Validators)
Expand All @@ -1156,7 +1160,7 @@ func backOffTime(snap *Snapshot, val common.Address) uint64 {
r.Shuffle(n, func(i, j int) {
backOffSteps[i], backOffSteps[j] = backOffSteps[j], backOffSteps[i]
})
delay := initialBackOffTime + backOffSteps[dis]*wiggleTime
delay := initialBackOffTime + backOffSteps[idx]*wiggleTime
return delay
}
}
Expand Down
16 changes: 6 additions & 10 deletions consensus/parlia/snapshot.go
Original file line number Diff line number Diff line change
Expand Up @@ -216,18 +216,14 @@ func (s *Snapshot) inturn(validator common.Address) bool {
return validators[offset] == validator
}

func (s *Snapshot) distanceToInTurn(validator common.Address) uint64 {
func (s *Snapshot) indexOfVal(validator common.Address) int {
validators := s.validators()
offset := (s.Number + 1) % uint64(len(validators))
idx := uint64(0)
for idx < uint64(len(validator)) && validators[idx] != validator {
idx++
}
if offset > idx {
return uint64(len(validators)) + idx - offset
} else {
return idx - offset
for idx, val := range validators {
if val == validator {
return idx
}
}
return -1
}

func (s *Snapshot) supposeValidator() common.Address {
Expand Down
2 changes: 1 addition & 1 deletion params/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ var (
PetersburgBlock: big.NewInt(0),
IstanbulBlock: big.NewInt(0),
MuirGlacierBlock: big.NewInt(0),
RamanujanBlock: big.NewInt(317974),
RamanujanBlock: big.NewInt(400),
Parlia: &ParliaConfig{
Period: 3,
Epoch: 200,
Expand Down

0 comments on commit 4f431e0

Please sign in to comment.