Merge pull request #1056 from filecoin-project/fix/candidate-dupe
check for duplicate candidates in block headers
This commit is contained in:
commit
fd4af3f7a9
@ -545,7 +545,13 @@ func (syncer *Syncer) ValidateBlock(ctx context.Context, b *types.FullBlock) err
|
|||||||
return xerrors.Errorf("no candidates")
|
return xerrors.Errorf("no candidates")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wins := make(map[uint64]bool)
|
||||||
for _, t := range h.EPostProof.Candidates {
|
for _, t := range h.EPostProof.Candidates {
|
||||||
|
if wins[t.ChallengeIndex] {
|
||||||
|
return xerrors.Errorf("block had duplicate epost candidates")
|
||||||
|
}
|
||||||
|
wins[t.ChallengeIndex] = true
|
||||||
|
|
||||||
if !types.IsTicketWinner(t.Partial, ssize, snum.Uint64(), tpow) {
|
if !types.IsTicketWinner(t.Partial, ssize, snum.Uint64(), tpow) {
|
||||||
return xerrors.Errorf("miner created a block but was not a winner")
|
return xerrors.Errorf("miner created a block but was not a winner")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user