From e6a857d5f545572c43b535e4ebf0be770665642d Mon Sep 17 00:00:00 2001 From: PhilWindle Date: Thu, 9 Jan 2025 17:14:44 +0000 Subject: [PATCH 1/2] Proving Job Id sanity check --- yarn-project/circuit-types/src/interfaces/proving-job.ts | 6 +++++- .../src/proving_broker/broker_prover_facade.ts | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/yarn-project/circuit-types/src/interfaces/proving-job.ts b/yarn-project/circuit-types/src/interfaces/proving-job.ts index 635fbfd6e574..4e53d30d1c85 100644 --- a/yarn-project/circuit-types/src/interfaces/proving-job.ts +++ b/yarn-project/circuit-types/src/interfaces/proving-job.ts @@ -296,7 +296,11 @@ export const makeProvingJobId = (epochNumber: number, type: ProvingRequestType, export const getEpochFromProvingJobId = (id: ProvingJobId) => { const components = id.split(':'); - return +components[0]; + const epochNumber = parseInt(components[0], 10); + if (!Number.isSafeInteger(epochNumber) || epochNumber < 0) { + throw new Error(`Proving Job ID ${id} does not contain valid epoch`); + } + return epochNumber; }; export type ProvingJob = z.infer; diff --git a/yarn-project/prover-client/src/proving_broker/broker_prover_facade.ts b/yarn-project/prover-client/src/proving_broker/broker_prover_facade.ts index 30f265b806cc..45822143bea7 100644 --- a/yarn-project/prover-client/src/proving_broker/broker_prover_facade.ts +++ b/yarn-project/prover-client/src/proving_broker/broker_prover_facade.ts @@ -8,6 +8,7 @@ import { ProvingRequestType, type PublicInputsAndRecursiveProof, type ServerCircuitProver, + makeProvingJobId, } from '@aztec/circuit-types'; import { type AVM_PROOF_LENGTH_IN_FIELDS, @@ -564,6 +565,6 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver { private generateId(type: ProvingRequestType, inputs: { toBuffer(): Buffer }, epochNumber = 0) { const inputsHash = sha256(inputs.toBuffer()); - return `${epochNumber}:${ProvingRequestType[type]}:${inputsHash.toString('hex')}`; + return makeProvingJobId(epochNumber, type, inputsHash.toString('hex')); } } From a9daf6f9a668a9821342bbcfc49f70f018bfa3c5 Mon Sep 17 00:00:00 2001 From: PhilWindle Date: Thu, 9 Jan 2025 17:23:54 +0000 Subject: [PATCH 2/2] Check array length --- yarn-project/circuit-types/src/interfaces/proving-job.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn-project/circuit-types/src/interfaces/proving-job.ts b/yarn-project/circuit-types/src/interfaces/proving-job.ts index 4e53d30d1c85..8f652491c78d 100644 --- a/yarn-project/circuit-types/src/interfaces/proving-job.ts +++ b/yarn-project/circuit-types/src/interfaces/proving-job.ts @@ -296,7 +296,7 @@ export const makeProvingJobId = (epochNumber: number, type: ProvingRequestType, export const getEpochFromProvingJobId = (id: ProvingJobId) => { const components = id.split(':'); - const epochNumber = parseInt(components[0], 10); + const epochNumber = components.length < 1 ? Number.NaN : parseInt(components[0], 10); if (!Number.isSafeInteger(epochNumber) || epochNumber < 0) { throw new Error(`Proving Job ID ${id} does not contain valid epoch`); }