diff --git a/packages/taiko-client/cmd/flags/prover.go b/packages/taiko-client/cmd/flags/prover.go index eb821348d1..44893953ed 100644 --- a/packages/taiko-client/cmd/flags/prover.go +++ b/packages/taiko-client/cmd/flags/prover.go @@ -40,6 +40,13 @@ var ( Category: proverCategory, EnvVars: []string{"RAIKO_JWT_PATH"}, } + RaikoRequestTimeout = &cli.DurationFlag{ + Name: "raiko.requestTimeout", + Usage: "Timeout in minutes for raiko request", + Category: commonCategory, + Value: 10 * time.Minute, + EnvVars: []string{"RAIKO_REQUEST_TIMEOUT"}, + } StartingBlockID = &cli.Uint64Flag{ Name: "prover.startingBlockID", Usage: "If set, prover will start proving blocks from the block with this ID", @@ -235,4 +242,5 @@ var ProverFlags = MergeFlags(CommonFlags, []cli.Flag{ L1NodeVersion, L2NodeVersion, BlockConfirmations, + RaikoRequestTimeout, }, TxmgrFlags) diff --git a/packages/taiko-client/prover/config.go b/packages/taiko-client/prover/config.go index 616e7c0a72..9f56594fbe 100644 --- a/packages/taiko-client/prover/config.go +++ b/packages/taiko-client/prover/config.go @@ -57,6 +57,7 @@ type Config struct { GuardianProverHealthCheckServerEndpoint *url.URL RaikoHostEndpoint string RaikoJWT string + RaikoRequestTimeout time.Duration L1NodeVersion string L2NodeVersion string BlockConfirmations uint64 @@ -163,6 +164,7 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) { L1ProverPrivKey: l1ProverPrivKey, RaikoHostEndpoint: c.String(flags.RaikoHostEndpoint.Name), RaikoJWT: common.Bytes2Hex(jwtSecret), + RaikoRequestTimeout: c.Duration(flags.RaikoRequestTimeout.Name), StartingBlockID: startingBlockID, Dummy: c.Bool(flags.Dummy.Name), GuardianProverMinorityAddress: common.HexToAddress(c.String(flags.GuardianProverMinority.Name)), diff --git a/packages/taiko-client/prover/init.go b/packages/taiko-client/prover/init.go index 2e5fdb8064..58d8404709 100644 --- a/packages/taiko-client/prover/init.go +++ b/packages/taiko-client/prover/init.go @@ -108,10 +108,11 @@ func (p *Prover) initProofSubmitters( producer = &proofProducer.OptimisticProofProducer{} case encoding.TierSgxID: producer = &proofProducer.SGXProofProducer{ - RaikoHostEndpoint: p.cfg.RaikoHostEndpoint, - JWT: p.cfg.RaikoJWT, - ProofType: proofProducer.ProofTypeSgx, - Dummy: p.cfg.Dummy, + RaikoHostEndpoint: p.cfg.RaikoHostEndpoint, + JWT: p.cfg.RaikoJWT, + ProofType: proofProducer.ProofTypeSgx, + Dummy: p.cfg.Dummy, + RaikoRequestTimeout: p.cfg.RaikoRequestTimeout, } case encoding.TierGuardianMinorityID: producer = proofProducer.NewGuardianProofProducer(encoding.TierGuardianMinorityID, p.cfg.EnableLivenessBondProof) diff --git a/packages/taiko-client/prover/proof_producer/sgx_producer.go b/packages/taiko-client/prover/proof_producer/sgx_producer.go index 1cb9752575..698296c067 100644 --- a/packages/taiko-client/prover/proof_producer/sgx_producer.go +++ b/packages/taiko-client/prover/proof_producer/sgx_producer.go @@ -26,16 +26,13 @@ const ( ProofTypeCPU = "native" ) -var ( - defaultRequestTimeout = 10 * time.Minute -) - // SGXProofProducer generates a SGX proof for the given block. type SGXProofProducer struct { - RaikoHostEndpoint string // a proverd RPC endpoint - ProofType string // Proof type - JWT string // JWT provided by Raiko - Dummy bool + RaikoHostEndpoint string // a proverd RPC endpoint + ProofType string // Proof type + JWT string // JWT provided by Raiko + Dummy bool + RaikoRequestTimeout time.Duration DummyProofProducer } @@ -118,7 +115,7 @@ func (s *SGXProofProducer) callProverDaemon(ctx context.Context, opts *ProofRequ start = time.Now() ) - ctx, cancel := rpc.CtxWithTimeoutOrDefault(ctx, defaultRequestTimeout) + ctx, cancel := rpc.CtxWithTimeoutOrDefault(ctx, s.RaikoRequestTimeout) defer cancel() output, err := s.requestProof(ctx, opts)