From 8e62702478fdca5342173a5fc320972aeeefacbf Mon Sep 17 00:00:00 2001 From: ssd04 Date: Thu, 20 Feb 2025 14:11:32 +0200 Subject: [PATCH 1/2] add proof to pool on epoch transition --- factory/processing/processComponents.go | 1 + .../testProcessorNodeWithMultisigner.go | 3 +++ process/headerCheck/headerSignatureVerify.go | 15 ++++++++++++++- process/headerCheck/headerSignatureVerify_test.go | 2 ++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/factory/processing/processComponents.go b/factory/processing/processComponents.go index bfd985b4074..b41b9bedae6 100644 --- a/factory/processing/processComponents.go +++ b/factory/processing/processComponents.go @@ -296,6 +296,7 @@ func (pcf *processComponentsFactory) Create() (*processComponents, error) { FallbackHeaderValidator: fallbackHeaderValidator, EnableEpochsHandler: pcf.coreData.EnableEpochsHandler(), HeadersPool: pcf.data.Datapool().Headers(), + ProofsPool: pcf.data.Datapool().Proofs(), StorageService: pcf.data.StorageService(), } headerSigVerifier, err := headerCheck.NewHeaderSigVerifier(argsHeaderSig) diff --git a/integrationTests/testProcessorNodeWithMultisigner.go b/integrationTests/testProcessorNodeWithMultisigner.go index 7603865cc38..5ba26d0f10e 100644 --- a/integrationTests/testProcessorNodeWithMultisigner.go +++ b/integrationTests/testProcessorNodeWithMultisigner.go @@ -32,6 +32,7 @@ import ( "github.com/multiversx/mx-chain-go/testscommon" "github.com/multiversx/mx-chain-go/testscommon/chainParameters" "github.com/multiversx/mx-chain-go/testscommon/cryptoMocks" + "github.com/multiversx/mx-chain-go/testscommon/dataRetriever" "github.com/multiversx/mx-chain-go/testscommon/enableEpochsHandlerMock" "github.com/multiversx/mx-chain-go/testscommon/genericMocks" "github.com/multiversx/mx-chain-go/testscommon/genesisMocks" @@ -475,6 +476,7 @@ func CreateNodesWithNodesCoordinatorAndHeaderSigVerifier( FallbackHeaderValidator: &testscommon.FallBackHeaderValidatorStub{}, EnableEpochsHandler: enableEpochsHandlerMock.NewEnableEpochsHandlerStub(), HeadersPool: &mock.HeadersCacherStub{}, + ProofsPool: &dataRetriever.ProofsPoolMock{}, StorageService: &genericMocks.ChainStorerMock{}, } headerSig, _ := headerCheck.NewHeaderSigVerifier(&args) @@ -621,6 +623,7 @@ func CreateNodesWithNodesCoordinatorKeygenAndSingleSigner( FallbackHeaderValidator: &testscommon.FallBackHeaderValidatorStub{}, EnableEpochsHandler: enableEpochsHandlerMock.NewEnableEpochsHandlerStub(), HeadersPool: &mock.HeadersCacherStub{}, + ProofsPool: &dataRetriever.ProofsPoolMock{}, StorageService: &genericMocks.ChainStorerMock{}, } diff --git a/process/headerCheck/headerSignatureVerify.go b/process/headerCheck/headerSignatureVerify.go index 7e38d7b7be7..241ba2a4c21 100644 --- a/process/headerCheck/headerSignatureVerify.go +++ b/process/headerCheck/headerSignatureVerify.go @@ -38,6 +38,7 @@ type ArgsHeaderSigVerifier struct { FallbackHeaderValidator process.FallbackHeaderValidator EnableEpochsHandler common.EnableEpochsHandler HeadersPool dataRetriever.HeadersPool + ProofsPool dataRetriever.ProofsPool StorageService dataRetriever.StorageService } @@ -52,6 +53,7 @@ type HeaderSigVerifier struct { fallbackHeaderValidator process.FallbackHeaderValidator enableEpochsHandler common.EnableEpochsHandler headersPool dataRetriever.HeadersPool + proofsPool dataRetriever.ProofsPool storageService dataRetriever.StorageService } @@ -72,6 +74,7 @@ func NewHeaderSigVerifier(arguments *ArgsHeaderSigVerifier) (*HeaderSigVerifier, fallbackHeaderValidator: arguments.FallbackHeaderValidator, enableEpochsHandler: arguments.EnableEpochsHandler, headersPool: arguments.HeadersPool, + proofsPool: arguments.ProofsPool, storageService: arguments.StorageService, }, nil } @@ -114,6 +117,9 @@ func checkArgsHeaderSigVerifier(arguments *ArgsHeaderSigVerifier) error { if check.IfNil(arguments.HeadersPool) { return process.ErrNilHeadersDataPool } + if check.IfNil(arguments.ProofsPool) { + return process.ErrNilProofsPool + } if check.IfNil(arguments.StorageService) { return process.ErrNilStorageService } @@ -376,7 +382,14 @@ func (hsv *HeaderSigVerifier) verifyHeaderProofAtTransition(proof data.HeaderPro return err } - return multiSigVerifier.VerifyAggregatedSig(consensusPubKeys, proof.GetHeaderHash(), proof.GetAggregatedSignature()) + err = multiSigVerifier.VerifyAggregatedSig(consensusPubKeys, proof.GetHeaderHash(), proof.GetAggregatedSignature()) + if err != nil { + return err + } + + _ = hsv.proofsPool.AddProof(proof) + + return nil } // VerifyHeaderProof checks if the proof is correct for the header diff --git a/process/headerCheck/headerSignatureVerify_test.go b/process/headerCheck/headerSignatureVerify_test.go index e4cb49fa4b9..7947eb8b01e 100644 --- a/process/headerCheck/headerSignatureVerify_test.go +++ b/process/headerCheck/headerSignatureVerify_test.go @@ -22,6 +22,7 @@ import ( "github.com/multiversx/mx-chain-go/storage" "github.com/multiversx/mx-chain-go/testscommon" "github.com/multiversx/mx-chain-go/testscommon/cryptoMocks" + dataRetrieverMocks "github.com/multiversx/mx-chain-go/testscommon/dataRetriever" "github.com/multiversx/mx-chain-go/testscommon/enableEpochsHandlerMock" "github.com/multiversx/mx-chain-go/testscommon/genericMocks" "github.com/multiversx/mx-chain-go/testscommon/hashingMocks" @@ -64,6 +65,7 @@ func createHeaderSigVerifierArgs() *ArgsHeaderSigVerifier { }, nil }, }, + ProofsPool: &dataRetrieverMocks.ProofsPoolMock{}, StorageService: &genericMocks.ChainStorerMock{}, } } From 2b19590dd1f7f7fc55dcb4f2638651b93f6c91f0 Mon Sep 17 00:00:00 2001 From: ssd04 Date: Thu, 20 Feb 2025 14:30:32 +0200 Subject: [PATCH 2/2] add proof only on verify header with proof --- process/headerCheck/headerSignatureVerify.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/process/headerCheck/headerSignatureVerify.go b/process/headerCheck/headerSignatureVerify.go index 241ba2a4c21..306b5f8d759 100644 --- a/process/headerCheck/headerSignatureVerify.go +++ b/process/headerCheck/headerSignatureVerify.go @@ -327,7 +327,14 @@ func (hsv *HeaderSigVerifier) VerifyHeaderWithProof(header data.HeaderHandler) e return hsv.verifyHeaderProofAtTransition(prevProof) } - return hsv.VerifyHeaderProof(prevProof) + err = hsv.VerifyHeaderProof(prevProof) + if err != nil { + return err + } + + _ = hsv.proofsPool.AddProof(prevProof) + + return nil } func (hsv *HeaderSigVerifier) getHeaderForProofAtTransition(proof data.HeaderProofHandler) (data.HeaderHandler, error) { @@ -382,14 +389,7 @@ func (hsv *HeaderSigVerifier) verifyHeaderProofAtTransition(proof data.HeaderPro return err } - err = multiSigVerifier.VerifyAggregatedSig(consensusPubKeys, proof.GetHeaderHash(), proof.GetAggregatedSignature()) - if err != nil { - return err - } - - _ = hsv.proofsPool.AddProof(proof) - - return nil + return multiSigVerifier.VerifyAggregatedSig(consensusPubKeys, proof.GetHeaderHash(), proof.GetAggregatedSignature()) } // VerifyHeaderProof checks if the proof is correct for the header