From ceb53b39c9ac1f4d3de202d71ef680d0b93f0422 Mon Sep 17 00:00:00 2001 From: petricadaipegsp <155911522+petricadaipegsp@users.noreply.github.com> Date: Wed, 6 Nov 2024 00:04:14 +0100 Subject: [PATCH] Use peer address while checking if date time proofs should be created (#333) * Check PubSub key in trie, not proving key * Use gRPC errors --- .../data/data_clock_consensus_engine.go | 17 ++++++++++++----- node/rpc/data_worker_ipc_server.go | 8 +++----- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/node/consensus/data/data_clock_consensus_engine.go b/node/consensus/data/data_clock_consensus_engine.go index 221913e..2d615db 100644 --- a/node/consensus/data/data_clock_consensus_engine.go +++ b/node/consensus/data/data_clock_consensus_engine.go @@ -11,6 +11,7 @@ import ( "sync" "time" + "github.com/iden3/go-iden3-crypto/poseidon" pcrypto "github.com/libp2p/go-libp2p/core/crypto" "github.com/libp2p/go-libp2p/core/peer" "github.com/libp2p/go-libp2p/p2p/discovery/backoff" @@ -19,7 +20,9 @@ import ( "github.com/pkg/errors" "go.uber.org/zap" "google.golang.org/grpc" + "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/anypb" "source.quilibrium.com/quilibrium/monorepo/go-libp2p-blossomsub/pb" "source.quilibrium.com/quilibrium/monorepo/node/config" @@ -37,8 +40,6 @@ import ( const PEER_INFO_TTL = 60 * 60 * 1000 const UNCOOPERATIVE_PEER_INFO_TTL = 60 * 1000 -var ErrNoApplicableChallenge = errors.New("no applicable challenge") - type SyncStatusType int const ( @@ -509,6 +510,12 @@ func (e *DataClockConsensusEngine) Start() <-chan error { go e.runPreMidnightProofWorker() go func() { + h, err := poseidon.HashBytes(e.pubSub.GetPeerID()) + if err != nil { + panic(err) + } + peerProvingKeyAddress := h.FillBytes(make([]byte, 32)) + frame, err := e.dataTimeReel.Head() if err != nil { panic(err) @@ -551,8 +558,8 @@ func (e *DataClockConsensusEngine) Start() <-chan error { frame = nextFrame for i, trie := range e.GetFrameProverTries()[1:] { - if trie.Contains(e.provingKeyAddress) { - e.logger.Info("creating data shard ring proof", zap.Int("ring", i-1)) + if trie.Contains(peerProvingKeyAddress) { + e.logger.Info("creating data shard ring proof", zap.Int("ring", i)) e.PerformTimeProof(frame, frame.Difficulty, clients) } } @@ -609,7 +616,7 @@ func (e *DataClockConsensusEngine) PerformTimeProof( }, ) if err != nil { - if errors.Is(err, ErrNoApplicableChallenge) { + if status.Code(err) == codes.NotFound { break } if j == 0 { diff --git a/node/rpc/data_worker_ipc_server.go b/node/rpc/data_worker_ipc_server.go index 8a19a0c..8888a01 100644 --- a/node/rpc/data_worker_ipc_server.go +++ b/node/rpc/data_worker_ipc_server.go @@ -11,7 +11,6 @@ import ( "golang.org/x/crypto/sha3" "source.quilibrium.com/quilibrium/monorepo/node/config" - "source.quilibrium.com/quilibrium/monorepo/node/consensus/data" "source.quilibrium.com/quilibrium/monorepo/node/crypto" "source.quilibrium.com/quilibrium/monorepo/node/execution/intrinsics/token" "source.quilibrium.com/quilibrium/monorepo/node/p2p" @@ -22,7 +21,9 @@ import ( "github.com/pkg/errors" "go.uber.org/zap" "google.golang.org/grpc" + "google.golang.org/grpc/codes" "google.golang.org/grpc/reflection" + "google.golang.org/grpc/status" "google.golang.org/protobuf/proto" "source.quilibrium.com/quilibrium/monorepo/node/protobufs" ) @@ -152,10 +153,7 @@ func (r *DataWorkerIPCServer) CalculateChallengeProof( } if !found { - return nil, errors.Wrap( - data.ErrNoApplicableChallenge, - "calculate challenge proof", - ) + return nil, status.Error(codes.NotFound, "no applicable challenge") } proof, err := r.prover.CalculateChallengeProof( challenge,