From 019136e0fa875f0f276349fe9b34aea6832af9a9 Mon Sep 17 00:00:00 2001 From: ejMina226 <118474890+ejMina226@users.noreply.github.com> Date: Thu, 7 Nov 2024 17:43:48 +0000 Subject: [PATCH 1/9] Add comment (WIP) --- .../protocol/src/prover/statetransition/StateTransitionProver.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/protocol/src/prover/statetransition/StateTransitionProver.ts b/packages/protocol/src/prover/statetransition/StateTransitionProver.ts index ff271f607..1b3f6074c 100644 --- a/packages/protocol/src/prover/statetransition/StateTransitionProver.ts +++ b/packages/protocol/src/prover/statetransition/StateTransitionProver.ts @@ -85,6 +85,7 @@ export class StateTransitionProverProgrammable extends ZkProgrammable< publicInput: StateTransitionProverPublicInput, publicOutput: StateTransitionProverPublicOutput, + // Add in argument for StateTransitionTaskParameters methods: { proveBatch: { privateInputs: [StateTransitionProvableBatch], From f125d7e4099afc35b37b62d08f6fa1b76f7f4a87 Mon Sep 17 00:00:00 2001 From: ejMina226 <118474890+ejMina226@users.noreply.github.com> Date: Fri, 8 Nov 2024 10:27:21 +0000 Subject: [PATCH 2/9] Add in details STProver --- .../src/model/StateTransitionProvableBatch.ts | 15 +++++++++++++-- .../statetransition/StateTransitionProver.ts | 1 - 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/protocol/src/model/StateTransitionProvableBatch.ts b/packages/protocol/src/model/StateTransitionProvableBatch.ts index 741301007..863f4cf6c 100644 --- a/packages/protocol/src/model/StateTransitionProvableBatch.ts +++ b/packages/protocol/src/model/StateTransitionProvableBatch.ts @@ -1,5 +1,5 @@ import { Bool, Provable, Struct } from "o1js"; -import { range } from "@proto-kit/common"; +import { range, RollupMerkleTreeWitness } from "@proto-kit/common"; import { constants } from "../Constants"; @@ -60,15 +60,22 @@ export class StateTransitionProvableBatch extends Struct({ ProvableStateTransitionType, constants.stateTransitionProverBatchSize ), + + merkleWitnesses: Provable.Array( + RollupMerkleTreeWitness, + constants.stateTransitionProverBatchSize + ), }) { public static fromMappings( transitions: { transition: ProvableStateTransition; type: ProvableStateTransitionType; + merkleWitnesses: RollupMerkleTreeWitness; }[] ): StateTransitionProvableBatch { const batch = transitions.map((entry) => entry.transition); const transitionTypes = transitions.map((entry) => entry.type); + const merkleWitnesses = transitions.map((entry) => entry.merkleWitnesses); // Check that order is correct let normalSTsStarted = false; @@ -88,12 +95,14 @@ export class StateTransitionProvableBatch extends Struct({ return new StateTransitionProvableBatch({ batch, transitionTypes, + merkleWitnesses, }); } public static fromTransitions( transitions: ProvableStateTransition[], - protocolTransitions: ProvableStateTransition[] + protocolTransitions: ProvableStateTransition[], + merkleWitnesses: RollupMerkleTreeWitness[] ): StateTransitionProvableBatch { const array = transitions.slice().concat(protocolTransitions); @@ -113,12 +122,14 @@ export class StateTransitionProvableBatch extends Struct({ return new StateTransitionProvableBatch({ batch: array, transitionTypes, + merkleWitnesses, }); } private constructor(object: { batch: ProvableStateTransition[]; transitionTypes: ProvableStateTransitionType[]; + merkleWitnesses: RollupMerkleTreeWitness[]; }) { super(object); } diff --git a/packages/protocol/src/prover/statetransition/StateTransitionProver.ts b/packages/protocol/src/prover/statetransition/StateTransitionProver.ts index 1b3f6074c..ff271f607 100644 --- a/packages/protocol/src/prover/statetransition/StateTransitionProver.ts +++ b/packages/protocol/src/prover/statetransition/StateTransitionProver.ts @@ -85,7 +85,6 @@ export class StateTransitionProverProgrammable extends ZkProgrammable< publicInput: StateTransitionProverPublicInput, publicOutput: StateTransitionProverPublicOutput, - // Add in argument for StateTransitionTaskParameters methods: { proveBatch: { privateInputs: [StateTransitionProvableBatch], From fd1270455f7ec78ec8c56fd65226ef89afc525f3 Mon Sep 17 00:00:00 2001 From: ejMina226 <118474890+ejMina226@users.noreply.github.com> Date: Fri, 8 Nov 2024 11:16:03 +0000 Subject: [PATCH 3/9] Add in MerkleWitnesses to Batch --- packages/protocol/src/model/StateTransitionProvableBatch.ts | 5 ++--- .../src/protocol/production/tasks/StateTransitionTask.ts | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/protocol/src/model/StateTransitionProvableBatch.ts b/packages/protocol/src/model/StateTransitionProvableBatch.ts index 863f4cf6c..82d061642 100644 --- a/packages/protocol/src/model/StateTransitionProvableBatch.ts +++ b/packages/protocol/src/model/StateTransitionProvableBatch.ts @@ -70,12 +70,11 @@ export class StateTransitionProvableBatch extends Struct({ transitions: { transition: ProvableStateTransition; type: ProvableStateTransitionType; - merkleWitnesses: RollupMerkleTreeWitness; - }[] + }[], + merkleWitnesses: RollupMerkleTreeWitness[] ): StateTransitionProvableBatch { const batch = transitions.map((entry) => entry.transition); const transitionTypes = transitions.map((entry) => entry.type); - const merkleWitnesses = transitions.map((entry) => entry.merkleWitnesses); // Check that order is correct let normalSTsStarted = false; diff --git a/packages/sequencer/src/protocol/production/tasks/StateTransitionTask.ts b/packages/sequencer/src/protocol/production/tasks/StateTransitionTask.ts index 4afdbff0b..5a340e21f 100644 --- a/packages/sequencer/src/protocol/production/tasks/StateTransitionTask.ts +++ b/packages/sequencer/src/protocol/production/tasks/StateTransitionTask.ts @@ -68,6 +68,7 @@ export class StateTransitionTask witnessProviderReference.setWitnessProvider(witnessProvider); const stBatch = input.stateTransitions.slice(); + const merkleWitnesses = input.merkleWitnesses.slice(); // Array.from({ // length: ProtocolConstants.stateTransitionProverBatchSize - stBatch.length, // }).forEach(() => { @@ -78,7 +79,7 @@ export class StateTransitionTask const output = await this.stateTransitionProver.runBatch( input.publicInput, - StateTransitionProvableBatch.fromMappings(stBatch) + StateTransitionProvableBatch.fromMappings(stBatch, merkleWitnesses) ); log.debug("STTask public io:", { input: StateTransitionProverPublicInput.toJSON(input.publicInput), From 4716476c8e86afccda7da1118d14686e60aa6920 Mon Sep 17 00:00:00 2001 From: ejMina226 <118474890+ejMina226@users.noreply.github.com> Date: Fri, 8 Nov 2024 11:19:53 +0000 Subject: [PATCH 4/9] Change method to use witness --- .../statetransition/StateTransitionProver.ts | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/packages/protocol/src/prover/statetransition/StateTransitionProver.ts b/packages/protocol/src/prover/statetransition/StateTransitionProver.ts index ff271f607..df47562f9 100644 --- a/packages/protocol/src/prover/statetransition/StateTransitionProver.ts +++ b/packages/protocol/src/prover/statetransition/StateTransitionProver.ts @@ -27,7 +27,6 @@ import { StateTransitionProverPublicInput, StateTransitionProverPublicOutput, } from "./StateTransitionProvable"; -import { StateTransitionWitnessProvider } from "./StateTransitionWitnessProvider"; import { StateTransitionWitnessProviderReference } from "./StateTransitionWitnessProviderReference"; const errors = { @@ -132,14 +131,6 @@ export class StateTransitionProverProgrammable extends ZkProgrammable< ]; } - private get witnessProvider(): StateTransitionWitnessProvider { - const provider = this.witnessProviderReference.getWitnessProvider(); - if (provider === undefined) { - throw errors.noWitnessProviderSet(); - } - return provider; - } - /** * Applies the state transitions to the current stateRoot * and returns the new prover state @@ -168,12 +159,19 @@ export class StateTransitionProverProgrammable extends ZkProgrammable< const transitions = transitionBatch.batch; const types = transitionBatch.transitionTypes; + const merkleWitness = transitionBatch.merkleWitnesses; for ( let index = 0; index < constants.stateTransitionProverBatchSize; index++ ) { - this.applyTransition(state, transitions[index], types[index], index); + this.applyTransition( + state, + transitions[index], + types[index], + merkleWitness[index], + index + ); } return state; @@ -187,12 +185,9 @@ export class StateTransitionProverProgrammable extends ZkProgrammable< state: StateTransitionProverExecutionState, transition: ProvableStateTransition, type: ProvableStateTransitionType, + witness: RollupMerkleTreeWitness, index = 0 ) { - const witness = Provable.witness(RollupMerkleTreeWitness, () => - this.witnessProvider.getWitness(transition.path) - ); - const membershipValid = witness.checkMembership( state.stateRoot, transition.path, From 9d329685fc9cbb9a3279fcd277d9e2e6978dfdc2 Mon Sep 17 00:00:00 2001 From: ejMina226 <118474890+ejMina226@users.noreply.github.com> Date: Fri, 8 Nov 2024 13:36:54 +0000 Subject: [PATCH 5/9] Add in default for MerkleWitness --- packages/protocol/src/model/StateTransitionProvableBatch.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/protocol/src/model/StateTransitionProvableBatch.ts b/packages/protocol/src/model/StateTransitionProvableBatch.ts index 82d061642..f8b89ee4e 100644 --- a/packages/protocol/src/model/StateTransitionProvableBatch.ts +++ b/packages/protocol/src/model/StateTransitionProvableBatch.ts @@ -75,7 +75,7 @@ export class StateTransitionProvableBatch extends Struct({ ): StateTransitionProvableBatch { const batch = transitions.map((entry) => entry.transition); const transitionTypes = transitions.map((entry) => entry.type); - + const witnesses = merkleWitnesses.slice(); // Check that order is correct let normalSTsStarted = false; transitionTypes.forEach((x) => { @@ -90,11 +90,12 @@ export class StateTransitionProvableBatch extends Struct({ while (batch.length < constants.stateTransitionProverBatchSize) { batch.push(ProvableStateTransition.dummy()); transitionTypes.push(ProvableStateTransitionType.normal); + witnesses.push(new RollupMerkleTreeWitness({ path: [], isLeft: [] })); } return new StateTransitionProvableBatch({ batch, transitionTypes, - merkleWitnesses, + merkleWitnesses: witnesses, }); } From 0d17c694ffdc7dea8df4d4857f0b42504c8d169a Mon Sep 17 00:00:00 2001 From: ejMina226 <118474890+ejMina226@users.noreply.github.com> Date: Fri, 8 Nov 2024 14:04:55 +0000 Subject: [PATCH 6/9] Add in default for MerkleWitness --- .../src/model/StateTransitionProvableBatch.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/protocol/src/model/StateTransitionProvableBatch.ts b/packages/protocol/src/model/StateTransitionProvableBatch.ts index f8b89ee4e..cbd7283be 100644 --- a/packages/protocol/src/model/StateTransitionProvableBatch.ts +++ b/packages/protocol/src/model/StateTransitionProvableBatch.ts @@ -1,5 +1,10 @@ import { Bool, Provable, Struct } from "o1js"; -import { range, RollupMerkleTreeWitness } from "@proto-kit/common"; +import { + InMemoryMerkleTreeStorage, + range, + RollupMerkleTree, + RollupMerkleTreeWitness, +} from "@proto-kit/common"; import { constants } from "../Constants"; @@ -90,7 +95,11 @@ export class StateTransitionProvableBatch extends Struct({ while (batch.length < constants.stateTransitionProverBatchSize) { batch.push(ProvableStateTransition.dummy()); transitionTypes.push(ProvableStateTransitionType.normal); - witnesses.push(new RollupMerkleTreeWitness({ path: [], isLeft: [] })); + witnesses.push( + new RollupMerkleTree(new InMemoryMerkleTreeStorage()).getWitness( + BigInt(0) + ) + ); } return new StateTransitionProvableBatch({ batch, From ad77ecee549c07946cd78af564ecd9975bc3e6ae Mon Sep 17 00:00:00 2001 From: ejMina226 <118474890+ejMina226@users.noreply.github.com> Date: Fri, 8 Nov 2024 15:33:09 +0000 Subject: [PATCH 7/9] Fix naming --- .../src/prover/statetransition/StateTransitionProver.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/protocol/src/prover/statetransition/StateTransitionProver.ts b/packages/protocol/src/prover/statetransition/StateTransitionProver.ts index df47562f9..3346a5e4d 100644 --- a/packages/protocol/src/prover/statetransition/StateTransitionProver.ts +++ b/packages/protocol/src/prover/statetransition/StateTransitionProver.ts @@ -185,10 +185,10 @@ export class StateTransitionProverProgrammable extends ZkProgrammable< state: StateTransitionProverExecutionState, transition: ProvableStateTransition, type: ProvableStateTransitionType, - witness: RollupMerkleTreeWitness, + merkleWitness: RollupMerkleTreeWitness, index = 0 ) { - const membershipValid = witness.checkMembership( + const membershipValid = merkleWitness.checkMembership( state.stateRoot, transition.path, transition.from.value @@ -203,7 +203,7 @@ export class StateTransitionProverProgrammable extends ZkProgrammable< ) ); - const newRoot = witness.calculateRoot(transition.to.value); + const newRoot = merkleWitness.calculateRoot(transition.to.value); state.stateRoot = Provable.if( transition.to.isSome, From 9b173ff04355fd7d2aee7290e3b329ea25fb8eb1 Mon Sep 17 00:00:00 2001 From: ejMina226 <118474890+ejMina226@users.noreply.github.com> Date: Fri, 8 Nov 2024 15:43:38 +0000 Subject: [PATCH 8/9] Remove unneeded classes. --- packages/protocol/src/index.ts | 2 - .../StateTransitionProvable.ts | 4 -- .../statetransition/StateTransitionProver.ts | 14 ++--- .../StateTransitionWitnessProvider.ts | 23 -------- ...StateTransitionWitnessProviderReference.ts | 17 ------ packages/sequencer/src/index.ts | 2 - .../production/tasks/StateTransitionTask.ts | 14 +---- .../src/state/MerkleStoreWitnessProvider.ts | 21 -------- .../prefilled/PreFilledWitnessProvider.ts | 54 ------------------- 9 files changed, 4 insertions(+), 147 deletions(-) delete mode 100644 packages/protocol/src/prover/statetransition/StateTransitionWitnessProvider.ts delete mode 100644 packages/protocol/src/prover/statetransition/StateTransitionWitnessProviderReference.ts delete mode 100644 packages/sequencer/src/state/MerkleStoreWitnessProvider.ts delete mode 100644 packages/sequencer/src/state/prefilled/PreFilledWitnessProvider.ts diff --git a/packages/protocol/src/index.ts b/packages/protocol/src/index.ts index 1a24ea093..7ba1b9780 100644 --- a/packages/protocol/src/index.ts +++ b/packages/protocol/src/index.ts @@ -24,8 +24,6 @@ export * from "./prover/block/accummulators/BlockHashMerkleTree"; export * from "./prover/block/services/RuntimeVerificationKeyRootService"; export * from "./prover/statetransition/StateTransitionProver"; export * from "./prover/statetransition/StateTransitionProvable"; -export * from "./prover/statetransition/StateTransitionWitnessProvider"; -export * from "./prover/statetransition/StateTransitionWitnessProviderReference"; export * from "./protocol/Protocol"; export * from "./protocol/ProtocolModule"; export * from "./protocol/ProtocolEnvironment"; diff --git a/packages/protocol/src/prover/statetransition/StateTransitionProvable.ts b/packages/protocol/src/prover/statetransition/StateTransitionProvable.ts index d6fc39c23..1c7e02f6e 100644 --- a/packages/protocol/src/prover/statetransition/StateTransitionProvable.ts +++ b/packages/protocol/src/prover/statetransition/StateTransitionProvable.ts @@ -3,8 +3,6 @@ import { WithZkProgrammable } from "@proto-kit/common"; import { StateTransitionProvableBatch } from "../../model/StateTransitionProvableBatch"; -import { StateTransitionWitnessProviderReference } from "./StateTransitionWitnessProviderReference"; - export class StateTransitionProverPublicInput extends Struct({ stateTransitionsHash: Field, protocolTransitionsHash: Field, @@ -29,8 +27,6 @@ export interface StateTransitionProvable StateTransitionProverPublicInput, StateTransitionProverPublicOutput > { - witnessProviderReference: StateTransitionWitnessProviderReference; - runBatch: ( publicInput: StateTransitionProverPublicInput, batch: StateTransitionProvableBatch diff --git a/packages/protocol/src/prover/statetransition/StateTransitionProver.ts b/packages/protocol/src/prover/statetransition/StateTransitionProver.ts index 3346a5e4d..51301625a 100644 --- a/packages/protocol/src/prover/statetransition/StateTransitionProver.ts +++ b/packages/protocol/src/prover/statetransition/StateTransitionProver.ts @@ -27,7 +27,6 @@ import { StateTransitionProverPublicInput, StateTransitionProverPublicOutput, } from "./StateTransitionProvable"; -import { StateTransitionWitnessProviderReference } from "./StateTransitionWitnessProviderReference"; const errors = { propertyNotMatching: (property: string, step: string) => @@ -63,8 +62,7 @@ export class StateTransitionProverProgrammable extends ZkProgrammable< StateTransitionProverPublicOutput > { public constructor( - private readonly stateTransitionProver: StateTransitionProver, - public readonly witnessProviderReference: StateTransitionWitnessProviderReference + private readonly stateTransitionProver: StateTransitionProver ) { super(); } @@ -338,15 +336,9 @@ export class StateTransitionProver { public zkProgrammable: StateTransitionProverProgrammable; - public constructor( - // Injected - public readonly witnessProviderReference: StateTransitionWitnessProviderReference - ) { + public constructor() { super(); - this.zkProgrammable = new StateTransitionProverProgrammable( - this, - witnessProviderReference - ); + this.zkProgrammable = new StateTransitionProverProgrammable(this); } public runBatch( diff --git a/packages/protocol/src/prover/statetransition/StateTransitionWitnessProvider.ts b/packages/protocol/src/prover/statetransition/StateTransitionWitnessProvider.ts deleted file mode 100644 index a002c7db9..000000000 --- a/packages/protocol/src/prover/statetransition/StateTransitionWitnessProvider.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { Field } from "o1js"; -import { injectable } from "tsyringe"; -import { RollupMerkleTreeWitness } from "@proto-kit/common"; - -/** - * Interface for providing merkle witnesses to the state-transition prover - */ -export interface StateTransitionWitnessProvider { - /** - * Provides the merkle witness corresponding to the given key - * @param key Merkle-tree key - */ - getWitness: (key: Field) => RollupMerkleTreeWitness; -} - -@injectable() -export class NoOpStateTransitionWitnessProvider - implements StateTransitionWitnessProvider -{ - public getWitness(): RollupMerkleTreeWitness { - return new RollupMerkleTreeWitness({ path: [], isLeft: [] }); - } -} diff --git a/packages/protocol/src/prover/statetransition/StateTransitionWitnessProviderReference.ts b/packages/protocol/src/prover/statetransition/StateTransitionWitnessProviderReference.ts deleted file mode 100644 index 12a894a4f..000000000 --- a/packages/protocol/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { injectable, Lifecycle, scoped } from "tsyringe"; - -import { StateTransitionWitnessProvider } from "./StateTransitionWitnessProvider"; - -@injectable() -@scoped(Lifecycle.ContainerScoped) -export class StateTransitionWitnessProviderReference { - private witnessProvider?: StateTransitionWitnessProvider; - - public setWitnessProvider(provider: StateTransitionWitnessProvider) { - this.witnessProvider = provider; - } - - public getWitnessProvider(): StateTransitionWitnessProvider | undefined { - return this.witnessProvider; - } -} diff --git a/packages/sequencer/src/index.ts b/packages/sequencer/src/index.ts index 87cea4a29..85c8faf55 100644 --- a/packages/sequencer/src/index.ts +++ b/packages/sequencer/src/index.ts @@ -60,14 +60,12 @@ export * from "./helpers/query/QueryBuilderFactory"; export * from "./helpers/query/NetworkStateQuery"; export * from "./helpers/query/NetworkStateTransportModule"; export * from "./state/prefilled/PreFilledStateService"; -export * from "./state/prefilled/PreFilledWitnessProvider"; export * from "./state/async/AsyncMerkleTreeStore"; export * from "./state/async/AsyncStateService"; export * from "./state/merkle/CachedMerkleTreeStore"; export * from "./state/merkle/SyncCachedMerkleTreeStore"; export * from "./state/state/DummyStateService"; export * from "./state/state/CachedStateService"; -export * from "./state/MerkleStoreWitnessProvider"; export * from "./settlement/SettlementModule"; export * from "./settlement/messages/WithdrawalQueue"; export * from "./settlement/messages/IncomingMessageAdapter"; diff --git a/packages/sequencer/src/protocol/production/tasks/StateTransitionTask.ts b/packages/sequencer/src/protocol/production/tasks/StateTransitionTask.ts index 5a340e21f..e3631581d 100644 --- a/packages/sequencer/src/protocol/production/tasks/StateTransitionTask.ts +++ b/packages/sequencer/src/protocol/production/tasks/StateTransitionTask.ts @@ -18,7 +18,6 @@ import { ProofTaskSerializer, } from "../../../helpers/utils"; import { TaskWorkerModule } from "../../../worker/worker/TaskWorkerModule"; -import { PreFilledWitnessProvider } from "../../../state/prefilled/PreFilledWitnessProvider"; import { StateTransitionParametersSerializer, @@ -61,12 +60,6 @@ export class StateTransitionTask public async compute( input: StateTransitionProofParameters ): Promise { - const witnessProvider = new PreFilledWitnessProvider(input.merkleWitnesses); - - const { witnessProviderReference } = this.stateTransitionProver; - const previousProvider = witnessProviderReference.getWitnessProvider(); - witnessProviderReference.setWitnessProvider(witnessProvider); - const stBatch = input.stateTransitions.slice(); const merkleWitnesses = input.merkleWitnesses.slice(); // Array.from({ @@ -86,14 +79,9 @@ export class StateTransitionTask output: StateTransitionProverPublicOutput.toJSON(output), }); - const proof = await this.executionContext + return await this.executionContext .current() .result.prove(); - - if (previousProvider !== undefined) { - witnessProviderReference.setWitnessProvider(previousProvider); - } - return proof; } public async prepare(): Promise { diff --git a/packages/sequencer/src/state/MerkleStoreWitnessProvider.ts b/packages/sequencer/src/state/MerkleStoreWitnessProvider.ts deleted file mode 100644 index ad6632616..000000000 --- a/packages/sequencer/src/state/MerkleStoreWitnessProvider.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { injectable } from "tsyringe"; -import { StateTransitionWitnessProvider } from "@proto-kit/protocol"; -import { - MerkleTreeStore, - RollupMerkleTree, - RollupMerkleTreeWitness, -} from "@proto-kit/common"; -import { Field } from "o1js"; - -@injectable() -export class MerkleStoreWitnessProvider - implements StateTransitionWitnessProvider -{ - private readonly tree = new RollupMerkleTree(this.merkleStore); - - public constructor(private readonly merkleStore: MerkleTreeStore) {} - - public getWitness(key: Field): RollupMerkleTreeWitness { - return this.tree.getWitness(key.toBigInt()); - } -} diff --git a/packages/sequencer/src/state/prefilled/PreFilledWitnessProvider.ts b/packages/sequencer/src/state/prefilled/PreFilledWitnessProvider.ts deleted file mode 100644 index b88894a2d..000000000 --- a/packages/sequencer/src/state/prefilled/PreFilledWitnessProvider.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { StateTransitionWitnessProvider } from "@proto-kit/protocol"; -import { - InMemoryMerkleTreeStorage, - RollupMerkleTree, - RollupMerkleTreeWitness, -} from "@proto-kit/common"; -import { Field } from "o1js"; - -const errors = { - noWitnessAvailable: () => - new Error("No new witnesses are available, prefill empty"), - - keysDoNotMatch: () => - new Error("Key of provided witness and request do not match"), -}; - -export class PreFilledWitnessProvider - implements StateTransitionWitnessProvider -{ - private readonly witnesses: RollupMerkleTreeWitness[]; - - private cursor = 0; - - public constructor(witnesses: RollupMerkleTreeWitness[]) { - // Reverse so that we can conviniently .pop() one-by-one - this.witnesses = witnesses; - } - - public getWitness(key: Field): RollupMerkleTreeWitness { - // dummy ST - if (key.equals(Field(0)).toBoolean()) { - // return some witness here, it won't get checked in the circuit - - return new RollupMerkleTree(new InMemoryMerkleTreeStorage()).getWitness( - BigInt(0) - ); - } - - const witness = this.witnesses[this.cursor % this.witnesses.length]; - - // TODO Introduce something that throws this if it overflows before a new prover run begins - // if (witness === undefined) { - // throw errors.noWitnessAvailable(); - // } - - const computedKey = witness.calculateIndex(); - - if (!computedKey.equals(key).toBoolean()) { - throw errors.keysDoNotMatch(); - } - this.cursor += 1; - return witness; - } -} From 2cc6d3702f7c1ceedda51c56436bb3521d63e51a Mon Sep 17 00:00:00 2001 From: ejMina226 <118474890+ejMina226@users.noreply.github.com> Date: Fri, 8 Nov 2024 15:50:23 +0000 Subject: [PATCH 9/9] Fix testing protocol. --- packages/protocol/test/TestingProtocol.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/protocol/test/TestingProtocol.ts b/packages/protocol/test/TestingProtocol.ts index 93617307e..09e82cbd1 100644 --- a/packages/protocol/test/TestingProtocol.ts +++ b/packages/protocol/test/TestingProtocol.ts @@ -7,7 +7,6 @@ import { BlockProver, LastStateRootBlockHook, MethodPublicOutput, - NoOpStateTransitionWitnessProvider, Protocol, StateTransitionProver, } from "../src"; @@ -39,7 +38,6 @@ export function createAndInitTestingProtocol() { protocol.create(() => container.createChildContainer()); protocol.registerValue({ - StateTransitionWitnessProvider: new NoOpStateTransitionWitnessProvider(), Runtime: new RuntimeMock(), });