Skip to content

Commit d0b0d0c

Browse files
committed
vote and syncInfo use epochInfo.Masternodes
1 parent e692e7f commit d0b0d0c

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

consensus/XDPoS/engines/engine_v2/syncInfo.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,35 +29,36 @@ func (x *XDPoS_v2) VerifySyncInfoMessage(chain consensus.ChainReader, syncInfo *
2929
return false, nil
3030
}
3131

32-
snapshot, err := x.getSnapshot(chain, qc.GapNumber, true)
33-
if err != nil {
34-
log.Error("[VerifySyncInfoMessage] fail to get snapshot for a syncInfo message", "blockNum", qc.ProposedBlockInfo.Number, "blockHash", qc.ProposedBlockInfo.Hash, "error", err)
35-
return false, err
36-
}
37-
3832
voteSigHash := types.VoteSigHash(&types.VoteForSign{
3933
ProposedBlockInfo: qc.ProposedBlockInfo,
4034
GapNumber: qc.GapNumber,
4135
})
4236

43-
if err := x.verifySignatures(voteSigHash, qc.Signatures, snapshot.NextEpochCandidates); err != nil {
37+
epochInfo, err := x.getEpochSwitchInfo(chain, nil, qc.ProposedBlockInfo.Hash)
38+
if err != nil {
39+
log.Error("[VerifySyncInfoMessage] fail to get epochInfo for qc syncInfo message", "blockNum", qc.ProposedBlockInfo.Number, "blockHash", qc.ProposedBlockInfo.Hash, "error", err)
40+
return false, err
41+
}
42+
43+
if err := x.verifySignatures(voteSigHash, qc.Signatures, epochInfo.Masternodes); err != nil {
4444
log.Warn("[VerifySyncInfoMessage] SyncInfo message verification failed due to QC", "blockNum", qc.ProposedBlockInfo.Number, "gapNum", qc.GapNumber, "round", qc.ProposedBlockInfo.Round, "error", err)
4545
return false, err
4646
}
4747

4848
if tc != nil { // tc is optional, when the node is starting up there is no TC at the memory
49-
snapshot, err = x.getSnapshot(chain, tc.GapNumber, true)
49+
// TODO: verify TC should use chain.currentHeader() ? if processing TC it should be latest round ?
50+
epochInfo, err := x.getEpochSwitchInfo(chain, chain.CurrentHeader(), chain.CurrentHeader().Hash())
5051
if err != nil {
51-
log.Error("[VerifySyncInfoMessage] Fail to get snapshot when verifying TC!", "tcGapNumber", tc.GapNumber)
52-
return false, fmt.Errorf("[VerifySyncInfoMessage] Unable to get snapshot, %s", err)
52+
log.Error("[VerifySyncInfoMessage] fail to get epochInfo for tc syncInfo message", "tcGapNumber", tc.GapNumber, "tcRound", tc.Round, "error", err)
53+
return false, err
5354
}
5455

5556
signedTimeoutObj := types.TimeoutSigHash(&types.TimeoutForSign{
5657
Round: tc.Round,
5758
GapNumber: tc.GapNumber,
5859
})
5960

60-
if err := x.verifySignatures(signedTimeoutObj, tc.Signatures, snapshot.NextEpochCandidates); err != nil {
61+
if err := x.verifySignatures(signedTimeoutObj, tc.Signatures, epochInfo.Masternodes); err != nil {
6162
log.Warn("[VerifySyncInfoMessage] SyncInfo message verification failed due to TC", "gapNum", tc.GapNumber, "round", tc.Round, "error", err)
6263
return false, err
6364
}

consensus/XDPoS/engines/engine_v2/vote.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,19 @@ func (x *XDPoS_v2) VerifyVoteMessage(chain consensus.ChainReader, vote *types.Vo
2121
log.Debug("[VerifyVoteMessage] Disqualified vote message as the proposed round does not match currentRound", "voteHash", vote.Hash(), "voteProposedBlockInfoRound", vote.ProposedBlockInfo.Round, "currentRound", x.currentRound)
2222
return false, nil
2323
}
24+
epochInfo, err := x.getEpochSwitchInfo(chain, chain.CurrentHeader(), chain.CurrentHeader().Hash())
2425

25-
snapshot, err := x.getSnapshot(chain, vote.GapNumber, true)
2626
if err != nil {
27-
log.Error("[VerifyVoteMessage] fail to get snapshot for a vote message", "blockNum", vote.ProposedBlockInfo.Number, "blockHash", vote.ProposedBlockInfo.Hash, "voteHash", vote.Hash(), "error", err.Error())
27+
log.Error("[VerifyVoteMessage] Fail to get epochInfo when verifying vote message!", "blockNum", vote.ProposedBlockInfo.Number, "blockHash", vote.ProposedBlockInfo.Hash, "voteHash", vote.Hash(), "voteGapNumber", vote.GapNumber, "err", err)
2828
return false, err
2929
}
30+
3031
verified, signer, err := x.verifyMsgSignature(types.VoteSigHash(&types.VoteForSign{
3132
ProposedBlockInfo: vote.ProposedBlockInfo,
3233
GapNumber: vote.GapNumber,
33-
}), vote.Signature, snapshot.NextEpochCandidates)
34+
}), vote.Signature, epochInfo.Masternodes)
3435
if err != nil {
35-
for i, mn := range snapshot.NextEpochCandidates {
36+
for i, mn := range epochInfo.Masternodes {
3637
log.Warn("[VerifyVoteMessage] Master node list item", "index", i, "Master node", mn.Hex())
3738
}
3839
log.Warn("[VerifyVoteMessage] Error while verifying vote message", "votedBlockNum", vote.ProposedBlockInfo.Number.Uint64(), "votedBlockHash", vote.ProposedBlockInfo.Hash.Hex(), "voteHash", vote.Hash(), "error", err.Error())

0 commit comments

Comments
 (0)