Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions process/block/baseProcess.go
Original file line number Diff line number Diff line change
Expand Up @@ -2232,3 +2232,12 @@ func (bp *baseProcessor) addPrevProofIfNeeded(header data.HeaderHandler) error {
header.SetPreviousProof(prevBlockProof)
return nil
}

func (bp *baseProcessor) getHeaderHash(header data.HeaderHandler) ([]byte, error) {
marshalledHeader, errMarshal := bp.marshalizer.Marshal(header)
if errMarshal != nil {
return nil, errMarshal
}

return bp.hasher.Compute(string(marshalledHeader)), nil
}
33 changes: 19 additions & 14 deletions process/block/metablock.go
Original file line number Diff line number Diff line change
Expand Up @@ -1904,7 +1904,7 @@ func (mp *metaProcessor) checkShardHeadersValidity(metaHdr *block.MetaBlock) (ma
}
if mp.enableEpochsHandler.IsFlagEnabledInEpoch(common.EquivalentMessagesFlag, shardHdr.GetEpoch()) {
if shardData.Epoch != shardHdr.GetEpoch() {
return nil, process.ErrEpochMissmatch
return nil, process.ErrEpochMismatch
}
}

Expand Down Expand Up @@ -1987,22 +1987,18 @@ func (mp *metaProcessor) checkShardHeadersFinality(
continue
}

isNotarizedBasedOnProofs, errCheckProof := mp.checkShardHeaderFinalityBasedOnProofs(lastVerifiedHdr, shardId)
if isNotarizedBasedOnProofs {
if errCheckProof != nil {
return errCheckProof
}

continue
}

// verify if there are "K" block after current to make this one final
nextBlocksVerified := uint32(0)
isNotarizedBasedOnProofs := false
for _, shardHdr := range finalityAttestingShardHdrs[shardId] {
var errCheckProof error
isNotarizedBasedOnProofs, errCheckProof = mp.checkShardHeaderFinalityBasedOnProofs(shardHdr, shardId)
// if the header is notarized based on proofs and there is no error, break the loop
// if there is any error, forward it, header is not final
if isNotarizedBasedOnProofs {
if errCheckProof != nil {
return err
}

break
}

if nextBlocksVerified >= mp.shardBlockFinality {
break
}
Expand All @@ -2016,6 +2012,15 @@ func (mp *metaProcessor) checkShardHeadersFinality(
continue
}

isNotarizedBasedOnProofs, errCheckProof = mp.checkShardHeaderFinalityBasedOnProofs(shardHdr, shardId)
if isNotarizedBasedOnProofs {
if errCheckProof != nil {
return errCheckProof
}

break
}

lastVerifiedHdr = shardHdr
nextBlocksVerified += 1
}
Expand Down
9 changes: 0 additions & 9 deletions process/block/shardblock.go
Original file line number Diff line number Diff line change
Expand Up @@ -640,15 +640,6 @@ func (sp *shardProcessor) checkMetaHdrFinality(header data.HeaderHandler) error
return nil
}

func (sp *shardProcessor) getHeaderHash(header data.HeaderHandler) ([]byte, error) {
marshalledHeader, errMarshal := sp.marshalizer.Marshal(header)
if errMarshal != nil {
return nil, errMarshal
}

return sp.hasher.Compute(string(marshalledHeader)), nil
}

func (sp *shardProcessor) checkAndRequestIfMetaHeadersMissing() {
orderedMetaBlocks, _ := sp.blockTracker.GetTrackedHeaders(core.MetachainShardId)

Expand Down
4 changes: 2 additions & 2 deletions process/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -1275,5 +1275,5 @@ var ErrInvalidHeaderProof = errors.New("invalid equivalent proof")
// ErrUnexpectedHeaderProof signals that a header proof has been provided unexpectedly
var ErrUnexpectedHeaderProof = errors.New("unexpected header proof")

// ErrEpochMissmatch signals that the epoch do not match
var ErrEpochMissmatch = errors.New("epoch missmatch")
// ErrEpochMismatch signals that the epoch do not match
var ErrEpochMismatch = errors.New("epoch mismatch")
8 changes: 6 additions & 2 deletions process/track/blockProcessor.go
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,11 @@ func (bp *blockProcessor) checkHeaderFinality(

if bp.enableEpochsHandler.IsFlagEnabledInEpoch(common.EquivalentMessagesFlag, header.GetEpoch()) {
// the index in argument is for the next block after header
if bp.proofsPool.HasProof(header.GetShardID(), sortedHeadersHashes[index-1]) {
hashIndex := index
if index > 0 {
hashIndex = index - 1
}
if bp.proofsPool.HasProof(header.GetShardID(), sortedHeadersHashes[hashIndex]) {
return nil
}

Expand All @@ -339,7 +343,7 @@ func (bp *blockProcessor) checkHeaderFinality(
// if the currentHeader(the one that should confirm the finality of the prev)
// is the epoch start block of equivalent messages, we must check for its proof as well
if bp.enableEpochsHandler.IsFlagEnabledInEpoch(common.EquivalentMessagesFlag, currHeader.GetEpoch()) {
if bp.proofsPool.HasProof(currHeader.GetShardID(), sortedHeadersHashes[index]) {
if bp.proofsPool.HasProof(currHeader.GetShardID(), sortedHeadersHashes[i]) {
return nil
}

Expand Down
Loading