Skip to content

Commit

Permalink
consortium-v2: add additional check in verify cascading fields (#448)
Browse files Browse the repository at this point in the history
  • Loading branch information
andicrypt committed May 16, 2024
1 parent 4e37c72 commit 3d8fa39
Showing 1 changed file with 19 additions and 11 deletions.
30 changes: 19 additions & 11 deletions consensus/consortium/v2/consortium.go
Original file line number Diff line number Diff line change
Expand Up @@ -391,20 +391,24 @@ func (c *Consortium) verifyCascadingFields(chain consensus.ChainHeaderReader, he
// Check extra data
isEpoch := number%c.config.EpochV2 == 0 || c.chainConfig.IsOnConsortiumV2(header.Number)

if !isEpoch && len(extraData.CheckpointValidators) != 0 {
if !isEpoch && (len(extraData.CheckpointValidators) != 0 || len(extraData.BlockProducers) != 0) {
return consortiumCommon.ErrExtraValidators
}

if isTrippEffective && isEpoch && len(extraData.BlockProducers) == 0 {
return consortiumCommon.ErrExtraValidators
}

if isTrippEffective && c.IsPeriodBlock(chain, header) && len(extraData.CheckpointValidators) == 0 {
return consortiumCommon.ErrExtraValidators
}

if !isTrippEffective && len(extraData.BlockProducers) != 0 {
return consortiumCommon.ErrExtraValidators
if isTrippEffective{
if isEpoch && len(extraData.BlockProducers) == 0 {
return consortiumCommon.ErrExtraValidators
}
if c.IsPeriodBlock(chain, header) && len(extraData.CheckpointValidators) == 0 {
return consortiumCommon.ErrExtraValidators
}
} else {
if isEpoch && len(extraData.CheckpointValidators) == 0 {
return consortiumCommon.ErrExtraValidators
}
if len(extraData.BlockProducers) != 0 {
return consortiumCommon.ErrExtraValidators
}
}

if isShillin && extraData.HasFinalityVote == 1 {
Expand Down Expand Up @@ -741,6 +745,8 @@ func (c *Consortium) getCheckpointValidatorsFromContract(
BlsPublicKey: blsPublicKey,
Weight: weights[i],
})
} else {
log.Info("Failed to get bls public key", "err", err, "candidate", candidate, "number", header.Number)
}
}
return checkpointValidators, blockProducers, nil
Expand All @@ -760,6 +766,8 @@ func (c *Consortium) getCheckpointValidatorsFromContract(
if err == nil {
filteredValidators = append(filteredValidators, validator)
blsPublicKeys = append(blsPublicKeys, blsPublicKey)
} else {
log.Info("Failed to get bls public key", "err", err, "validator", validator, "number", header.Number)
}
}
}
Expand Down

0 comments on commit 3d8fa39

Please sign in to comment.