From ffaab5806f7de10e1680c858cf326e86b640e3ff Mon Sep 17 00:00:00 2001 From: huangzhiran Date: Thu, 16 Oct 2025 17:56:56 +0800 Subject: [PATCH] add zk proof --- task/processor/processor.go | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/task/processor/processor.go b/task/processor/processor.go index 0af846f2..5e06a6db 100644 --- a/task/processor/processor.go +++ b/task/processor/processor.go @@ -16,6 +16,7 @@ import ( "github.com/ethereum/go-ethereum/rpc" "github.com/pkg/errors" + "github.com/iotexproject/w3bstream/metrics" "github.com/iotexproject/w3bstream/project" "github.com/iotexproject/w3bstream/smartcontracts/go/router" "github.com/iotexproject/w3bstream/task" @@ -47,21 +48,29 @@ type processor struct { func (r *processor) process(ts []*task.Task, c *project.Config, pid string) error { slog.Info("process tasks", "project_id", pid, "vm_type", c.VMTypeID, "tasks_len", len(ts)) startTime := time.Now() - // proof, err := r.handle(ts, c) - // if err != nil { - // metrics.FailedTaskNumMtc.WithLabelValues(pid).Inc() - // slog.Error("failed to handle task", "error", err) - // return err - // } + + var proof []byte + var err error + if pid != "9" { + proof, err = r.handle(ts, c) + if err != nil { + metrics.FailedTaskNumMtc.WithLabelValues(pid).Inc() + slog.Error("failed to handle task", "error", err) + return err + } + } processTime := time.Since(startTime) slog.Info("process task success", "project_id", pid, "process_time", processTime) //metrics.TaskDurationMtc.WithLabelValues(pid, t.ProjectVersion, t.ID.String()).Set(processTime.Seconds()) - pubkey, err := crypto.UnmarshalPubkey(ts[0].DevicePubKey) - if err != nil { - return errors.Wrap(err, "failed to unmarshal device public key") + if pid == "9" { + pubkey, err := crypto.UnmarshalPubkey(ts[0].DevicePubKey) + if err != nil { + return errors.Wrap(err, "failed to unmarshal device public key") + } + deviceAddr := crypto.PubkeyToAddress(*pubkey) + proof = common.LeftPadBytes(deviceAddr.Bytes(), 32) } - deviceAddr := crypto.PubkeyToAddress(*pubkey) tids := [][32]byte{} for _, t := range ts { @@ -81,7 +90,7 @@ func (r *processor) process(ts []*task.Task, c *project.Config, pid string) erro r.account, pidInt, tids, - common.LeftPadBytes(deviceAddr.Bytes(), 32), + proof, ) if err != nil { if jsonErr, ok := err.(rpc.DataError); ok {