Skip to content

Commit

Permalink
fix (operator): don't sign invalid batches (#414)
Browse files Browse the repository at this point in the history
  • Loading branch information
taturosati committed Jun 15, 2024
1 parent 20f0388 commit 0fea7d5
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 13 deletions.
2 changes: 1 addition & 1 deletion aggregator/internal/pkg/aggregator.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ const MaxSentTxRetries = 5

func (agg *Aggregator) sendAggregatedResponseToContract(blsAggServiceResp blsagg.BlsAggregationServiceResponse) {
if blsAggServiceResp.Err != nil {
agg.logger.Error("BlsAggregationServiceResponse contains an error", "err", blsAggServiceResp.Err)
agg.logger.Warn("BlsAggregationServiceResponse contains an error", "err", blsAggServiceResp.Err)
return
}

Expand Down
22 changes: 10 additions & 12 deletions operator/pkg/operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,10 +144,9 @@ func (o *Operator) Start(ctx context.Context) error {
sub.Unsubscribe()
sub = o.SubscribeToNewTasks()
case newBatchLog := <-o.NewTaskCreatedChan:
// o.Logger.Infof("Received task with index: %d\n", newTaskCreatedLog.TaskIndex)
err := o.ProcessNewBatchLog(newBatchLog)
if err != nil {
o.Logger.Errorf("Batch did not verify", "err", err)
o.Logger.Infof("batch %x did not verify. Err: %v", newBatchLog.BatchMerkleRoot, err)
continue
}
responseSignature := o.SignTaskResponse(newBatchLog.BatchMerkleRoot)
Expand Down Expand Up @@ -197,8 +196,7 @@ func (o *Operator) ProcessNewBatchLog(newBatchLog *servicemanager.ContractAligne

for result := range results {
if !result {
o.Logger.Error("Proof did not verify")
return nil
return fmt.Errorf("invalid proof")
}
}

Expand Down Expand Up @@ -366,25 +364,25 @@ func (o *Operator) verifyPlonkProof(proofBytes []byte, pubInputBytes []byte, ver
proofReader := bytes.NewReader(proofBytes)
proof := plonk.NewProof(curve)
if _, err := proof.ReadFrom(proofReader); err != nil {
o.Logger.Errorf("Could not deserialize proof: %v", err)
o.Logger.Infof("Could not deserialize proof: %v", err)
return false
}

pubInputReader := bytes.NewReader(pubInputBytes)
pubInput, err := witness.New(curve.ScalarField())
if err != nil {
o.Logger.Errorf("Error instantiating witness: %v", err)
o.Logger.Infof("Error instantiating witness: %v", err)
return false
}
if _, err = pubInput.ReadFrom(pubInputReader); err != nil {
o.Logger.Errorf("Could not read PLONK public input: %v", err)
o.Logger.Infof("Could not read PLONK public input: %v", err)
return false
}

verificationKeyReader := bytes.NewReader(verificationKeyBytes)
verificationKey := plonk.NewVerifyingKey(curve)
if _, err = verificationKey.ReadFrom(verificationKeyReader); err != nil {
o.Logger.Errorf("Could not read PLONK verifying key from bytes: %v", err)
o.Logger.Infof("Could not read PLONK verifying key from bytes: %v", err)
return false
}

Expand All @@ -397,25 +395,25 @@ func (o *Operator) verifyGroth16Proof(proofBytes []byte, pubInputBytes []byte, v
proofReader := bytes.NewReader(proofBytes)
proof := groth16.NewProof(curve)
if _, err := proof.ReadFrom(proofReader); err != nil {
o.Logger.Errorf("Could not deserialize proof: %v", err)
o.Logger.Infof("Could not deserialize proof: %v", err)
return false
}

pubInputReader := bytes.NewReader(pubInputBytes)
pubInput, err := witness.New(curve.ScalarField())
if err != nil {
o.Logger.Errorf("Error instantiating witness: %v", err)
o.Logger.Infof("Error instantiating witness: %v", err)
return false
}
if _, err = pubInput.ReadFrom(pubInputReader); err != nil {
o.Logger.Errorf("Could not read Groth16 public input: %v", err)
o.Logger.Infof("Could not read Groth16 public input: %v", err)
return false
}

verificationKeyReader := bytes.NewReader(verificationKeyBytes)
verificationKey := groth16.NewVerifyingKey(curve)
if _, err = verificationKey.ReadFrom(verificationKeyReader); err != nil {
o.Logger.Errorf("Could not read Groth16 verifying key from bytes: %v", err)
o.Logger.Infof("Could not read Groth16 verifying key from bytes: %v", err)
return false
}

Expand Down

0 comments on commit 0fea7d5

Please sign in to comment.