From 15f8b0bc63567d4e42321b0bb38cfa077d8281f8 Mon Sep 17 00:00:00 2001 From: HAOYUatHZ Date: Tue, 1 Aug 2023 20:02:44 +0800 Subject: [PATCH] more fix more fix more fix more fix more fix --- common/types/message/message.go | 2 ++ common/types/message/message_test.go | 26 ++++++++++++------- .../internal/controller/api/prover_test.go | 4 +-- .../internal/logic/proof/proof_receiver.go | 10 +++++-- coordinator/internal/logic/verifier/mock.go | 12 +++++++-- .../internal/logic/verifier/verifier.go | 2 +- coordinator/test/mock_prover.go | 2 +- 7 files changed, 40 insertions(+), 18 deletions(-) diff --git a/common/types/message/message.go b/common/types/message/message.go index 2e504b3065..f121c77e50 100644 --- a/common/types/message/message.go +++ b/common/types/message/message.go @@ -208,10 +208,12 @@ type TaskMsg struct { ChunkTaskDetail *ChunkTaskDetail `json:"chunk_task_detail,omitempty"` } +// ChunkTaskDetail is a type containing ChunkTask detail. type ChunkTaskDetail struct { BlockHashes []common.Hash `json:"block_hashes"` } +// BatchTaskDetail is a type containing BatchTask detail. type BatchTaskDetail struct { ChunkInfos []*ChunkInfo `json:"chunk_infos"` SubProofs []*ChunkProof `json:"sub_proofs"` diff --git a/common/types/message/message_test.go b/common/types/message/message_test.go index 41aa187090..8fac73c0fc 100644 --- a/common/types/message/message_test.go +++ b/common/types/message/message_test.go @@ -68,9 +68,11 @@ func TestProofMessageSignVerifyPublicKey(t *testing.T) { Type: ProofTypeChunk, Status: StatusOk, ChunkProof: &ChunkProof{ - Proof: []byte("testProof"), - Instance: []byte("testInstance"), - Vk: []byte("testVk"), + StorageTrace: []byte("testStorageTrace"), + Protocol: []byte("testProtocol"), + Proof: []byte("testProof"), + Instances: []byte("testInstance"), + Vk: []byte("testVk"), }, Error: "testError", }, @@ -94,15 +96,17 @@ func TestProofDetailHash(t *testing.T) { Type: ProofTypeChunk, Status: StatusOk, ChunkProof: &ChunkProof{ - Proof: []byte("testProof"), - Instance: []byte("testInstance"), - Vk: []byte("testVk"), + StorageTrace: []byte("testStorageTrace"), + Protocol: []byte("testProtocol"), + Proof: []byte("testProof"), + Instances: []byte("testInstance"), + Vk: []byte("testVk"), }, Error: "testError", } hash, err := proofDetail.Hash() assert.NoError(t, err) - expectedHash := "f7c02bb8b9ff58a5ba61bb76a8b1fb76a023df9da2982d073d20e67f5e72df47" + expectedHash := "4165f5ab3399001002a5b8e4062914249a2deb72f6133d647b586f53e236802d" assert.Equal(t, expectedHash, hex.EncodeToString(hash)) } @@ -127,9 +131,11 @@ func TestProofMsgPublicKey(t *testing.T) { Type: ProofTypeChunk, Status: StatusOk, ChunkProof: &ChunkProof{ - Proof: []byte("testProof"), - Instance: []byte("testInstance"), - Vk: []byte("testVk"), + StorageTrace: []byte("testStorageTrace"), + Protocol: []byte("testProtocol"), + Proof: []byte("testProof"), + Instances: []byte("testInstance"), + Vk: []byte("testVk"), }, Error: "testError", }, diff --git a/coordinator/internal/controller/api/prover_test.go b/coordinator/internal/controller/api/prover_test.go index 076fa91a8e..78836afa47 100644 --- a/coordinator/internal/controller/api/prover_test.go +++ b/coordinator/internal/controller/api/prover_test.go @@ -284,14 +284,14 @@ func TestProver_SubmitProof(t *testing.T) { var tmpVerifier *verifier.Verifier convey.Convey("verifier proof failure", t, func() { targetErr := errors.New("verify proof failure") - patchGuard.ApplyMethodFunc(tmpVerifier, "VerifyProof", func(proof *message.BatchProof) (bool, error) { + patchGuard.ApplyMethodFunc(tmpVerifier, "VerifyBatchProof", func(proof *message.BatchProof) (bool, error) { return false, targetErr }) err1 := proverController.SubmitProof(tmpProof) assert.Nil(t, err1) }) - patchGuard.ApplyMethodFunc(tmpVerifier, "VerifyProof", func(proof *message.BatchProof) (bool, error) { + patchGuard.ApplyMethodFunc(tmpVerifier, "VerifyBatchProof", func(proof *message.BatchProof) (bool, error) { return true, nil }) diff --git a/coordinator/internal/logic/proof/proof_receiver.go b/coordinator/internal/logic/proof/proof_receiver.go index d05478309d..d62a378b24 100644 --- a/coordinator/internal/logic/proof/proof_receiver.go +++ b/coordinator/internal/logic/proof/proof_receiver.go @@ -122,8 +122,14 @@ func (m *ZKProofReceiver) HandleZkProof(ctx context.Context, proofMsg *message.P coordinatorProofsReceivedTotalCounter.Inc(1) - // TODO: add switch case for ChunkProof & BatchProof - success, verifyErr := m.verifier.VerifyProof(proofMsg.BatchProof) + var success bool + var verifyErr error + if proofMsg.Type == message.ProofTypeChunk { + success, verifyErr = m.verifier.VerifyChunkProof(proofMsg.ChunkProof) + } else if proofMsg.Type == message.ProofTypeBatch { + success, verifyErr = m.verifier.VerifyBatchProof(proofMsg.BatchProof) + } + if verifyErr != nil || !success { if verifyErr != nil { // TODO: this is only a temp workaround for testnet, we should return err in real cases diff --git a/coordinator/internal/logic/verifier/mock.go b/coordinator/internal/logic/verifier/mock.go index c19183bc0e..f3a8eb3f51 100644 --- a/coordinator/internal/logic/verifier/mock.go +++ b/coordinator/internal/logic/verifier/mock.go @@ -18,8 +18,16 @@ func NewVerifier(_ *config.VerifierConfig) (*Verifier, error) { return &Verifier{}, nil } -// VerifyProof always return true -func (v *Verifier) VerifyProof(proof *message.BatchProof) (bool, error) { +// VerifyChunkProof return a mock verification result for a ChunkProof. +func (v *Verifier) VerifyChunkProof(proof *message.ChunkProof) (bool, error) { + if string(proof.Proof) == InvalidTestProof { + return false, nil + } + return true, nil +} + +// VerifyBatchProof return a mock verification result for a BatchProof. +func (v *Verifier) VerifyBatchProof(proof *message.BatchProof) (bool, error) { if string(proof.Proof) == InvalidTestProof { return false, nil } diff --git a/coordinator/internal/logic/verifier/verifier.go b/coordinator/internal/logic/verifier/verifier.go index 03711f9a3b..7580bb7520 100644 --- a/coordinator/internal/logic/verifier/verifier.go +++ b/coordinator/internal/logic/verifier/verifier.go @@ -76,7 +76,7 @@ func (v *Verifier) VerifyBatchProof(proof *message.BatchProof) (bool, error) { func (v *Verifier) VerifyChunkProof(proof *message.ChunkProof) (bool, error) { if v.cfg.MockMode { log.Info("Mock mode, verifier disabled") - if string(proof.ChunkProofInner.Proof) == InvalidTestProof { + if string(proof.Proof) == InvalidTestProof { return false, nil } return true, nil diff --git a/coordinator/test/mock_prover.go b/coordinator/test/mock_prover.go index 40ee835f21..8293819285 100644 --- a/coordinator/test/mock_prover.go +++ b/coordinator/test/mock_prover.go @@ -141,7 +141,7 @@ func (r *mockProver) loop(t *testing.T, client *client2.Client, proofTime time.D if proofStatus == generatedFailed { proof.Status = message.StatusProofError } else if proofStatus == verifiedFailed { - proof.ProofDetail.ChunkProof.ChunkProofInner.Proof = []byte(verifier.InvalidTestProof) + proof.ProofDetail.ChunkProof.Proof = []byte(verifier.InvalidTestProof) proof.ProofDetail.BatchProof.Proof = []byte(verifier.InvalidTestProof) } assert.NoError(t, proof.Sign(r.privKey))