Skip to content

Commit b03e496

Browse files
chainimport: refactor header verification at target height
In this commit, we consolidate block header and filter header verification logic into reusable verification functions at target height. The main motive behind is change is allowing flexibility when adapting the appendMode parameter later
1 parent 1f9b2df commit b03e496

File tree

2 files changed

+39
-9
lines changed

2 files changed

+39
-9
lines changed

chainimport/headers_import.go

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,28 @@ func (h *headersImport) verifyHeadersAtTargetHeight(height uint32) error {
316316
height, headerMetadata.startHeight,
317317
)
318318

319+
if err := h.verifyBlockHeadersAtTargetHeight(
320+
height, importSourceIndex,
321+
); err != nil {
322+
return fmt.Errorf("failed to verify block headers at target "+
323+
"height %d: %w", height, err)
324+
}
325+
326+
if err := h.verifyFilterHeadersAtTargetHeight(
327+
height, importSourceIndex,
328+
); err != nil {
329+
return fmt.Errorf("failed to verify filter headers at target "+
330+
"height %d: %w", height, err)
331+
}
332+
333+
return nil
334+
}
335+
336+
// verifyBlockHeadersAtTargetHeight ensures block headers at the specified
337+
// height match exactly between import and target sources.
338+
func (h *headersImport) verifyBlockHeadersAtTargetHeight(height uint32,
339+
importSourceIndex uint32) error {
340+
319341
importSourceHeader, err := h.blockHeadersImportSource.GetHeader(
320342
importSourceIndex,
321343
)
@@ -346,7 +368,17 @@ func (h *headersImport) verifyHeadersAtTargetHeight(height uint32) error {
346368
sourceBlkHeaderHash, targetBlkHeaderHash)
347369
}
348370

349-
importSourceHeader, err = h.filterHeadersImportSource.GetHeader(
371+
log.Debugf("Block headers from import and target sources verified at "+
372+
"height %d", height)
373+
return nil
374+
}
375+
376+
// verifyFilterHeadersAtTargetHeight ensures filter headers at the specified
377+
// height match exactly between import and target sources.
378+
func (h *headersImport) verifyFilterHeadersAtTargetHeight(height uint32,
379+
importSourceIndex uint32) error {
380+
381+
importSourceHeader, err := h.filterHeadersImportSource.GetHeader(
350382
importSourceIndex,
351383
)
352384
if err != nil {
@@ -376,10 +408,8 @@ func (h *headersImport) verifyHeadersAtTargetHeight(height uint32) error {
376408
sourceFilterHeaderHash, targetFilterHeaderHash)
377409
}
378410

379-
log.Debugf("Headers from %s (block) and %s (filter) verified at "+
380-
"height %d", h.blockHeadersImportSource.GetURI(),
381-
h.filterHeadersImportSource.GetURI(), height)
382-
411+
log.Debugf("Filter headers from import and target sources verified at "+
412+
"height %d", height)
383413
return nil
384414
}
385415

chainimport/headers_import_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2851,8 +2851,8 @@ func TestImportAndTargetSourcesChainContinuityConstraint(t *testing.T) {
28512851
}
28522852
},
28532853
expectErr: true,
2854-
expectErrMsg: "genesis header mismatch: block header " +
2855-
"mismatch at height 0",
2854+
expectErrMsg: "genesis header mismatch: failed to " +
2855+
"verify block headers at target height 0",
28562856
},
28572857
{
28582858
name: "ErrorOnGenesisFilterHeadersMismatch",
@@ -2920,8 +2920,8 @@ func TestImportAndTargetSourcesChainContinuityConstraint(t *testing.T) {
29202920
}
29212921
},
29222922
expectErr: true,
2923-
expectErrMsg: "genesis header mismatch: filter " +
2924-
"header mismatch at height 0",
2923+
expectErrMsg: "genesis header mismatch: failed to " +
2924+
"verify filter headers at target height 0",
29252925
},
29262926
{
29272927
name: "ValidateOnGenesisHeightSuccessfully",

0 commit comments

Comments
 (0)