Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions packages/sequencer/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,12 @@ export * from "./protocol/baselayer/fees/ConstantFeeStrategy";
export * from "./protocol/production/helpers/UntypedOption";
export * from "./protocol/production/helpers/UntypedStateTransition";
export * from "./protocol/production/tasks/TransactionProvingTask";
export * from "./protocol/production/tasks/TransactionReductionTask";
export * from "./protocol/production/tasks/RuntimeProvingTask";
export * from "./protocol/production/tasks/StateTransitionTask";
export * from "./protocol/production/tasks/StateTransitionReductionTask";
export * from "./protocol/production/tasks/NewBlockTask";
export * from "./protocol/production/tasks/BlockReductionTask";
export * from "./protocol/production/tasks/serializers/ArtifactionRecordSerializer";
export * from "./protocol/production/tasks/serializers/BlockProofSerializer";
export * from "./protocol/production/tasks/serializers/DecodedStateSerializer";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
} from "@proto-kit/protocol";
import {
CompileRegistry,
dependencyFactory,
ProvableMethodExecutionContext,
} from "@proto-kit/common";

Expand All @@ -22,9 +23,12 @@ import {
ProofTaskSerializer,
} from "../../../helpers/utils";

import { BlockProverCompileTask } from "./compile/ProtocolCompileTask";

@injectable()
@scoped(Lifecycle.ContainerScoped)
@task()
@dependencyFactory()
export class BlockReductionTask
extends TaskWorkerModule
implements Task<PairTuple<BlockProof>, BlockProof>
Expand All @@ -45,6 +49,14 @@ export class BlockReductionTask
this.blockProver = this.protocol.blockProver;
}

public static dependencies() {
return {
BlockProverCompileTask: {
useClass: BlockProverCompileTask,
},
};
}

public inputSerializer(): TaskSerializer<PairTuple<BlockProof>> {
return new PairProofTaskSerializer(
this.blockProver.zkProgrammable.zkProgram[0].Proof
Expand Down
11 changes: 11 additions & 0 deletions packages/sequencer/src/protocol/production/tasks/NewBlockTask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import { Bool } from "o1js";
import {
ProvableMethodExecutionContext,
CompileRegistry,
dependencyFactory,
} from "@proto-kit/common";

import { Task, TaskSerializer } from "../../../worker/flow/Task";
Expand All @@ -35,6 +36,7 @@ import type { TaskStateRecord } from "../tracing/BlockTracingService";

import { NewBlockProvingParametersSerializer } from "./serializers/NewBlockProvingParametersSerializer";
import { executeWithPrefilledStateService } from "./TransactionProvingTask";
import { BlockProverCompileTask } from "./compile/ProtocolCompileTask";

export type NewBlockArguments = {
args: BlockArguments;
Expand All @@ -61,6 +63,7 @@ export type NewBlockProvingParameters = PairingDerivedInput<
@injectable()
@scoped(Lifecycle.ContainerScoped)
@task()
@dependencyFactory()
export class NewBlockTask
extends TaskWorkerModule
implements Task<NewBlockProvingParameters, BlockProof>
Expand All @@ -85,6 +88,14 @@ export class NewBlockTask
this.blockProver = protocol.blockProver;
}

public static dependencies() {
return {
BlockProverCompileTask: {
useClass: BlockProverCompileTask,
},
};
}

public inputSerializer(): TaskSerializer<NewBlockProvingParameters> {
const stProofSerializer = new ProofTaskSerializer(
this.stateTransitionProver.zkProgrammable.zkProgram[0].Proof
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
RuntimeMethodExecutionContext,
} from "@proto-kit/protocol";
import { Proof } from "o1js";
import { CompileRegistry } from "@proto-kit/common";
import { CompileRegistry, dependencyFactory } from "@proto-kit/common";

import { Task, TaskSerializer } from "../../../worker/flow/Task";
import { ProofTaskSerializer } from "../../../helpers/utils";
Expand All @@ -23,6 +23,7 @@ import { PendingTransaction } from "../../../mempool/PendingTransaction";
import { TaskStateRecord } from "../tracing/BlockTracingService";

import { RuntimeProofParametersSerializer } from "./serializers/RuntimeProofParametersSerializer";
import { RuntimeCompileTask } from "./compile/RuntimeCompileTask";

type RuntimeProof = Proof<undefined, MethodPublicOutput>;

Expand All @@ -35,6 +36,7 @@ export interface RuntimeProofParameters {
@injectable()
@scoped(Lifecycle.ContainerScoped)
@task()
@dependencyFactory()
export class RuntimeProvingTask
extends TaskWorkerModule
implements Task<RuntimeProofParameters, RuntimeProof>
Expand All @@ -52,6 +54,14 @@ export class RuntimeProvingTask
super();
}

public static dependencies() {
return {
RuntimeCompileTask: {
useClass: RuntimeCompileTask,
},
};
}

public inputSerializer(): TaskSerializer<RuntimeProofParameters> {
return new RuntimeProofParametersSerializer();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
} from "@proto-kit/protocol";
import {
CompileRegistry,
dependencyFactory,
ProvableMethodExecutionContext,
} from "@proto-kit/common";

Expand All @@ -22,9 +23,12 @@ import {
ProofTaskSerializer,
} from "../../../helpers/utils";

import { STProverCompileTask } from "./compile/ProtocolCompileTask";

@injectable()
@scoped(Lifecycle.ContainerScoped)
@task()
@dependencyFactory()
export class StateTransitionReductionTask
extends TaskWorkerModule
implements Task<PairTuple<StateTransitionProof>, StateTransitionProof>
Expand All @@ -46,6 +50,14 @@ export class StateTransitionReductionTask
this.stateTransitionProver = this.protocol.stateTransitionProver;
}

public static dependencies() {
return {
STProverCompileTask: {
useClass: STProverCompileTask,
},
};
}

public inputSerializer(): TaskSerializer<PairTuple<StateTransitionProof>> {
return new PairProofTaskSerializer(
this.stateTransitionProver.zkProgrammable.zkProgram[0].Proof
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import {
} from "../../../worker/worker/TaskWorkerModule";

import { StateTransitionParametersSerializer } from "./serializers/StateTransitionParametersSerializer";
import { STProverCompileTask } from "./compile/ProtocolCompileTask";

export interface StateTransitionProofParameters {
publicInput: StateTransitionProverPublicInput;
Expand Down Expand Up @@ -69,9 +70,9 @@ export class StateTransitionTask

public static dependencies() {
return {
// STProverCompileTask: {
// useClass: STProverCompileTask,
// },
STProverCompileTask: {
useClass: STProverCompileTask,
},
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { inject, injectable, Lifecycle, scoped } from "tsyringe";
import {
ProvableMethodExecutionContext,
CompileRegistry,
dependencyFactory,
} from "@proto-kit/common";

import { ProofTaskSerializer } from "../../../helpers/utils";
Expand All @@ -26,6 +27,7 @@ import type { TaskStateRecord } from "../tracing/BlockTracingService";

import { TransactionProvingTaskParameterSerializer } from "./serializers/TransactionProvingTaskParameterSerializer";
import { TransactionProvingTaskParameters } from "./serializers/types/TransactionProvingTypes";
import { TransactionProverCompileTask } from "./compile/ProtocolCompileTask";

export async function executeWithPrefilledStateService<Return>(
stateServiceProvider: StateServiceProvider,
Expand Down Expand Up @@ -53,6 +55,7 @@ export async function executeWithPrefilledStateService<Return>(
@injectable()
@scoped(Lifecycle.ContainerScoped)
@task()
@dependencyFactory()
export class TransactionProvingTask
extends TaskWorkerModule
implements Task<TransactionProvingTaskParameters, TransactionProof>
Expand All @@ -77,6 +80,14 @@ export class TransactionProvingTask
this.transactionProver = protocol.transactionProver;
}

public static dependencies() {
return {
TransactionProverCompileTask: {
useClass: TransactionProverCompileTask,
},
};
}

public inputSerializer(): TaskSerializer<TransactionProvingTaskParameters> {
const runtimeProofSerializer = new ProofTaskSerializer(
this.runtimeProofType
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
} from "@proto-kit/protocol";
import {
CompileRegistry,
dependencyFactory,
ProvableMethodExecutionContext,
} from "@proto-kit/common";

Expand All @@ -22,9 +23,12 @@ import {
ProofTaskSerializer,
} from "../../../helpers/utils";

import { TransactionProverCompileTask } from "./compile/ProtocolCompileTask";

@injectable()
@scoped(Lifecycle.ContainerScoped)
@task()
@dependencyFactory()
export class TransactionReductionTask
extends TaskWorkerModule
implements Task<PairTuple<TransactionProof>, TransactionProof>
Expand All @@ -45,6 +49,14 @@ export class TransactionReductionTask
this.transactionProver = this.protocol.transactionProver;
}

public static dependencies() {
return {
TransactionProverCompileTask: {
useClass: TransactionProverCompileTask,
},
};
}

public inputSerializer(): TaskSerializer<PairTuple<TransactionProof>> {
return new PairProofTaskSerializer(
this.transactionProver.zkProgrammable.zkProgram[0].Proof
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
CompilableModule,
safeParseJson,
NoConfig,
ChildVerificationKeyService,
} from "@proto-kit/common";
import {
Protocol,
Expand Down Expand Up @@ -39,6 +40,10 @@ export abstract class CircuitCompileTask<
protected readonly contractArgsRegistry: ContractArgsRegistry
) {
super();

this.protocol.dependencyContainer
.resolve(ChildVerificationKeyService)
.setCompileRegistry(this.compileRegistry);
}

public inputSerializer(): TaskSerializer<CompilerTaskParams> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { inject, injectable, Lifecycle, scoped } from "tsyringe";
import {
ArtifactRecord,
ChildVerificationKeyService,
CompilableModule,
CompileRegistry,
log,
Expand Down Expand Up @@ -34,8 +33,7 @@ export class SettlementCompileTask extends CircuitCompileTask {
compileRegistry: CompileRegistry,
contractArgsRegistry: ContractArgsRegistry,
@inject("BatchProducerModule", { isOptional: true })
batchProducerModule: BatchProducerModule | undefined,
private readonly childVkService: ChildVerificationKeyService
batchProducerModule: BatchProducerModule | undefined
) {
super(protocol, compileRegistry, contractArgsRegistry);

Expand Down Expand Up @@ -93,8 +91,6 @@ export class SettlementCompileTask extends CircuitCompileTask {
}

public async getTargets(): Promise<CompilableModule[]> {
this.childVkService.setCompileRegistry(this.compileRegistry);

return this.getSettlementTargets();
}
}
2 changes: 1 addition & 1 deletion packages/sequencer/src/sequencer/SequencerStartupModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,9 +168,9 @@ export class SequencerStartupModule
const root = await this.compileRuntime(flow);

const tasks = [
this.blockProverCompileTask,
this.stProverCompileTask,
this.transactionProverCompileTask,
this.blockProverCompileTask,
];
await mapSequential(tasks, async (task) => {
await this.compileProtocol(flow, task, root);
Expand Down
11 changes: 11 additions & 0 deletions packages/sequencer/src/settlement/tasks/SettlementProvingTask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
CompileRegistry,
mapSequential,
safeParseJson,
dependencyFactory,
} from "@proto-kit/common";
import {
MandatoryProtocolModulesRecord,
Expand Down Expand Up @@ -40,6 +41,7 @@ import {
} from "../../helpers/utils";
import { Task, TaskSerializer } from "../../worker/flow/Task";
import { task, TaskWorkerModule } from "../../worker/worker/TaskWorkerModule";
import { SettlementCompileTask } from "../../protocol/production/tasks/compile/SettlementCompileTask";

import { ContractRegistry } from "./ContractRegistry";

Expand Down Expand Up @@ -75,6 +77,7 @@ export class SomeProofSubclass extends Proof<Field, Void> {
@injectable()
@scoped(Lifecycle.ContainerScoped)
@task()
@dependencyFactory()
export class SettlementProvingTask
extends TaskWorkerModule
implements Task<TransactionTaskArgs, TransactionTaskResult>
Expand Down Expand Up @@ -104,6 +107,14 @@ export class SettlementProvingTask
}
}

public static dependencies() {
return {
SettlementCompileTask: {
useClass: SettlementCompileTask,
},
};
}

private async withCustomInstance<T>(
transaction: Transaction<false, true>,
state: ChainStateTaskArgs,
Expand Down
Loading