Skip to content

Commit 6f4d2fe

Browse files
committed
Validate parent hash in fast forward case
1 parent 8e97c09 commit 6f4d2fe

File tree

6 files changed

+283
-91
lines changed

6 files changed

+283
-91
lines changed

api/heimdallv2/milestone/milestone.pulsar.go

+113-37
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/abci.go

+11-9
Original file line numberDiff line numberDiff line change
@@ -389,16 +389,24 @@ func (app *HeimdallApp) PreBlocker(ctx sdk.Context, req *abci.RequestFinalizeBlo
389389
}
390390

391391
var lastEndBlock *uint64 = nil
392+
var lastEndHash []byte
392393
if hasMilestone {
393394
lastMilestone, err := app.MilestoneKeeper.GetLastMilestone(ctx)
394395
if err != nil {
395396
logger.Error("Error occurred while fetching the last milestone", "error", err)
396397
return nil, err
397398
}
398399
lastEndBlock = &lastMilestone.EndBlock
400+
lastEndHash = lastMilestone.Hash
399401
}
400402

401-
majorityMilestone, aggregatedProposers, proposer, err := milestoneAbci.GetMajorityMilestoneProposition(validatorSet, extVoteInfo, logger, lastEndBlock)
403+
majorityMilestone, aggregatedProposers, proposer, err := milestoneAbci.GetMajorityMilestoneProposition(
404+
validatorSet,
405+
extVoteInfo,
406+
logger,
407+
lastEndBlock,
408+
lastEndHash,
409+
)
402410
if err != nil {
403411
logger.Error("Error occurred while getting majority milestone proposition", "error", err)
404412
return nil, err
@@ -423,24 +431,18 @@ func (app *HeimdallApp) PreBlocker(ctx sdk.Context, req *abci.RequestFinalizeBlo
423431

424432
addMilestoneCtx, msCache := app.cacheTxContext(ctx)
425433

426-
if lastEndBlock != nil {
427-
*lastEndBlock += 1
428-
} else {
429-
lastEndBlock = new(uint64)
430-
}
431-
432434
logger.Debug("Adding milestone", "hashes",
433435
strutil.HashesToString(majorityMilestone.BlockHashes),
434436
"startBlock", majorityMilestone.StartBlockNumber,
435-
"endBlock", *lastEndBlock,
437+
"endBlock", majorityMilestone.StartBlockNumber+uint64(len(majorityMilestone.BlockHashes)-1),
436438
"proposer", proposer,
437439
)
438440

439441
if err := app.MilestoneKeeper.AddMilestone(addMilestoneCtx, milestoneTypes.Milestone{
440442
Proposer: proposer,
441443
Hash: majorityMilestone.BlockHashes[len(majorityMilestone.BlockHashes)-1],
442444
StartBlock: majorityMilestone.StartBlockNumber,
443-
EndBlock: *lastEndBlock,
445+
EndBlock: majorityMilestone.StartBlockNumber + uint64(len(majorityMilestone.BlockHashes)-1),
444446
BorChainId: params.ChainParams.BorChainId,
445447
MilestoneId: common.Bytes2Hex(aggregatedProposers),
446448
Timestamp: uint64(ctx.BlockHeader().Time.Unix()),

proto/heimdallv2/milestone/milestone.proto

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ message MilestoneProposition {
3434

3535
repeated bytes block_hashes = 1 [ (amino.dont_omitempty) = true ];
3636
uint64 start_block_number = 2 [ (amino.dont_omitempty) = true ];
37+
bytes parent_hash = 3 [ (amino.dont_omitempty) = true ];
3738
}
3839

3940
message Params {

0 commit comments

Comments
 (0)