Skip to content

Commit

Permalink
Fix non-consecutive milestone error
Browse files Browse the repository at this point in the history
  • Loading branch information
avalkov committed Feb 24, 2025
1 parent c6b6203 commit b60bf44
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
2 changes: 2 additions & 0 deletions app/abci.go
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,8 @@ func (app *HeimdallApp) PreBlocker(ctx sdk.Context, req *abci.RequestFinalizeBlo

logger.Debug("Adding milestone", "hashes", hashesToString(majorityMilestone.BlockHashes), "startBlock", majorityMilestone.StartBlockNumber, "endBlock", majorityMilestone.StartBlockNumber+uint64(len(majorityMilestone.BlockHashes)), "proposer", proposer)

logger.Error("nonconsec Adding milestone", "reqBlock", ctx.BlockHeight(), "startBlock", majorityMilestone.StartBlockNumber, "endBlock", majorityMilestone.StartBlockNumber+uint64(len(majorityMilestone.BlockHashes)-1))

if err := app.MilestoneKeeper.AddMilestone(addMilestoneCtx, milestoneTypes.Milestone{
Proposer: proposer,
Hash: majorityMilestone.BlockHashes[len(majorityMilestone.BlockHashes)-1],
Expand Down
17 changes: 15 additions & 2 deletions x/milestone/abci/abci.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,20 @@ func GenMilestoneProposition(ctx sdk.Context, milestoneKeeper *keeper.Keeper, co

logger.Debug("blocksSinceLastMilestone", "blocksSinceLastMilestone", blocksSinceLastMilestone)

logger.Error("nonconsec", "pendingMilestone", pendingMilestone)
logger.Error("nonconsec", "milestone", milestone)

// TODO: make blocksSinceLastMilestone limit configurable
propStartBlock := uint64(0)
if pendingMilestone != nil && milestone != nil && blocksSinceLastMilestone < 6 {
if pendingMilestone != nil && milestone != nil && blocksSinceLastMilestone > 6 {
logger.Error("nonconsec 1")
propStartBlock = milestone.EndBlock + 1
} else {
if pendingMilestone != nil {
logger.Error("nonconsec 2")
propStartBlock = pendingMilestone.StartBlockNumber + uint64(len(pendingMilestone.BlockHashes))
} else if milestone != nil {
logger.Error("nonconsec 3")
propStartBlock = milestone.EndBlock + 1
} else {
propStartBlock = 0
Expand All @@ -61,6 +67,8 @@ func GenMilestoneProposition(ctx sdk.Context, milestoneKeeper *keeper.Keeper, co
return nil, err
}

logger.Error("nonconsec Propose milestone", "propStartBlock", propStartBlock, "reqBlock", reqBlock, "blockHashes", len(blockHashes), "endBlock", propStartBlock+uint64(len(blockHashes)-1))

milestoneProp := &sidetxs.MilestoneProposition{
BlockHashes: blockHashes,
StartBlockNumber: propStartBlock,
Expand Down Expand Up @@ -114,8 +122,10 @@ func GetMajorityMilestoneProposition(ctx sdk.Context, validatorSet stakeTypes.Va
prefix = append(prefix, voteExtension.MilestoneProposition.BlockHashes[i])

hash := common.BytesToHash(bytes.Join(prefix, []byte{'|'})).String()
prefixCopy := make([][]byte, len(prefix))
copy(prefixCopy, prefix)
hashToProp[hash] = &sidetxs.MilestoneProposition{
BlockHashes: prefix,
BlockHashes: prefixCopy,
StartBlockNumber: voteExtension.MilestoneProposition.StartBlockNumber,
}
if _, ok := hashToVotingPower[hash]; !ok {
Expand Down Expand Up @@ -148,6 +158,9 @@ func GetMajorityMilestoneProposition(ctx sdk.Context, validatorSet stakeTypes.Va
if votingPower > maxVotingPower {
maxVotingPower = votingPower
maxHash = hash
} else if votingPower == maxVotingPower &&
len(hashToProp[hash].BlockHashes) > len(hashToProp[maxHash].BlockHashes) {
maxHash = hash
}
}

Expand Down

0 comments on commit b60bf44

Please sign in to comment.