@aztec/sequencer-client 0.27.2 → 0.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/block_builder/index.d.ts +3 -1
- package/dest/block_builder/index.d.ts.map +1 -1
- package/dest/block_builder/solo_block_builder.d.ts +10 -5
- package/dest/block_builder/solo_block_builder.d.ts.map +1 -1
- package/dest/block_builder/solo_block_builder.js +119 -52
- package/dest/prover/empty.d.ts +13 -1
- package/dest/prover/empty.d.ts.map +1 -1
- package/dest/prover/empty.js +19 -1
- package/dest/prover/index.d.ts +14 -2
- package/dest/prover/index.d.ts.map +1 -1
- package/dest/sequencer/abstract_phase_manager.d.ts +0 -2
- package/dest/sequencer/abstract_phase_manager.d.ts.map +1 -1
- package/dest/sequencer/abstract_phase_manager.js +30 -7
- package/dest/sequencer/app_logic_phase_manager.d.ts +0 -2
- package/dest/sequencer/app_logic_phase_manager.d.ts.map +1 -1
- package/dest/sequencer/app_logic_phase_manager.js +10 -15
- package/dest/sequencer/sequencer.d.ts +4 -1
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +8 -4
- package/dest/sequencer/setup_phase_manager.d.ts +0 -2
- package/dest/sequencer/setup_phase_manager.d.ts.map +1 -1
- package/dest/sequencer/setup_phase_manager.js +8 -12
- package/dest/sequencer/tail_phase_manager.d.ts +0 -2
- package/dest/sequencer/tail_phase_manager.d.ts.map +1 -1
- package/dest/sequencer/tail_phase_manager.js +7 -11
- package/dest/sequencer/teardown_phase_manager.d.ts +0 -2
- package/dest/sequencer/teardown_phase_manager.d.ts.map +1 -1
- package/dest/sequencer/teardown_phase_manager.js +8 -12
- package/dest/sequencer/utils.d.ts +8 -0
- package/dest/sequencer/utils.d.ts.map +1 -0
- package/dest/sequencer/utils.js +28 -0
- package/dest/simulator/index.d.ts +13 -1
- package/dest/simulator/index.d.ts.map +1 -1
- package/dest/simulator/index.js +1 -1
- package/dest/simulator/public_executor.d.ts +6 -3
- package/dest/simulator/public_executor.d.ts.map +1 -1
- package/dest/simulator/public_executor.js +36 -15
- package/dest/simulator/rollup.d.ts +13 -1
- package/dest/simulator/rollup.d.ts.map +1 -1
- package/dest/simulator/rollup.js +24 -2
- package/package.json +13 -13
- package/src/block_builder/index.ts +3 -1
- package/src/block_builder/solo_block_builder.ts +150 -52
- package/src/prover/empty.ts +23 -0
- package/src/prover/index.ts +18 -1
- package/src/sequencer/abstract_phase_manager.ts +37 -8
- package/src/sequencer/app_logic_phase_manager.ts +10 -16
- package/src/sequencer/sequencer.ts +12 -3
- package/src/sequencer/setup_phase_manager.ts +8 -15
- package/src/sequencer/tail_phase_manager.ts +6 -11
- package/src/sequencer/teardown_phase_manager.ts +8 -15
- package/src/sequencer/utils.ts +30 -0
- package/src/simulator/index.ts +15 -0
- package/src/simulator/public_executor.ts +37 -14
- package/src/simulator/rollup.ts +39 -0
|
@@ -11,9 +11,11 @@ export interface BlockBuilder {
|
|
|
11
11
|
* Note that the number of txs need to be a power of two.
|
|
12
12
|
* @param globalVariables - Global variables to include in the block.
|
|
13
13
|
* @param txs - Processed txs to include.
|
|
14
|
+
* @param newModelL1ToL2Messages - L1 to L2 messages emitted by the new inbox.
|
|
14
15
|
* @param newL1ToL2Messages - L1 to L2 messages to be part of the block.
|
|
15
16
|
* @returns The new L2 block along with its proof from the root circuit.
|
|
16
17
|
*/
|
|
17
|
-
buildL2Block(globalVariables: GlobalVariables, txs: ProcessedTx[],
|
|
18
|
+
buildL2Block(globalVariables: GlobalVariables, txs: ProcessedTx[], newModelL1ToL2Messages: Fr[], // TODO(#4492): Rename this when purging the old inbox
|
|
19
|
+
newL1ToL2Messages: Fr[]): Promise<[L2Block, Proof]>;
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/block_builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/block_builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;OAQG;IACH,YAAY,CACV,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,WAAW,EAAE,EAClB,sBAAsB,EAAE,EAAE,EAAE,EAAE,sDAAsD;IACpF,iBAAiB,EAAE,EAAE,EAAE,GACtB,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;CAC9B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { L2Block, MerkleTreeId } from '@aztec/circuit-types';
|
|
2
|
-
import { AppendOnlyTreeSnapshot, BaseOrMergeRollupPublicInputs, BaseRollupInputs, ConstantRollupData, GlobalVariables, MembershipWitness, MergeRollupInputs, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NullifierLeafPreimage, PartialStateReference, PreviousRollupData, Proof, PublicDataTreeLeaf, PublicDataTreeLeafPreimage, RollupKernelData, RollupTypes, RootRollupInputs, RootRollupPublicInputs, StateReference, VerificationKey } from '@aztec/circuits.js';
|
|
2
|
+
import { AppendOnlyTreeSnapshot, BaseOrMergeRollupPublicInputs, BaseParityInputs, BaseRollupInputs, ConstantRollupData, GlobalVariables, MembershipWitness, MergeRollupInputs, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NullifierLeafPreimage, PartialStateReference, PreviousRollupData, Proof, PublicDataTreeLeaf, PublicDataTreeLeafPreimage, RollupKernelData, RollupTypes, RootParityInput, RootParityInputs, RootRollupInputs, RootRollupPublicInputs, StateReference, VerificationKey } from '@aztec/circuits.js';
|
|
3
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { Tuple } from '@aztec/foundation/serialize';
|
|
5
5
|
import { MerkleTreeOperations } from '@aztec/world-state';
|
|
@@ -24,24 +24,29 @@ export declare class SoloBlockBuilder implements BlockBuilder {
|
|
|
24
24
|
* Builds an L2 block with the given number containing the given txs, updating state trees.
|
|
25
25
|
* @param globalVariables - Global variables to be used in the block.
|
|
26
26
|
* @param txs - Processed transactions to include in the block.
|
|
27
|
+
* @param newModelL1ToL2Messages - L1 to L2 messages emitted by the new inbox.
|
|
27
28
|
* @param newL1ToL2Messages - L1 to L2 messages to be part of the block.
|
|
28
29
|
* @param timestamp - Timestamp of the block.
|
|
29
30
|
* @returns The new L2 block and a correctness proof as returned by the root rollup circuit.
|
|
30
31
|
*/
|
|
31
|
-
buildL2Block(globalVariables: GlobalVariables, txs: ProcessedTx[],
|
|
32
|
+
buildL2Block(globalVariables: GlobalVariables, txs: ProcessedTx[], newModelL1ToL2Messages: Fr[], // TODO(#4492): Rename this when purging the old inbox
|
|
33
|
+
newL1ToL2Messages: Fr[]): Promise<[L2Block, Proof]>;
|
|
32
34
|
protected validateTxs(txs: ProcessedTx[]): void;
|
|
33
35
|
protected getTreeSnapshot(id: MerkleTreeId): Promise<AppendOnlyTreeSnapshot>;
|
|
34
|
-
protected runCircuits(globalVariables: GlobalVariables, txs: ProcessedTx[],
|
|
36
|
+
protected runCircuits(globalVariables: GlobalVariables, txs: ProcessedTx[], newModelL1ToL2Messages: Fr[], // TODO(#4492): Rename this when purging the old inbox
|
|
37
|
+
newL1ToL2Messages: Fr[]): Promise<[RootRollupPublicInputs, Proof]>;
|
|
38
|
+
protected baseParityCircuit(inputs: BaseParityInputs): Promise<RootParityInput>;
|
|
39
|
+
protected rootParityCircuit(inputs: RootParityInputs): Promise<RootParityInput>;
|
|
35
40
|
protected baseRollupCircuit(tx: ProcessedTx, inputs: BaseRollupInputs, treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>): Promise<[BaseOrMergeRollupPublicInputs, Proof]>;
|
|
36
41
|
protected createMergeRollupInputs(left: [BaseOrMergeRollupPublicInputs, Proof], right: [BaseOrMergeRollupPublicInputs, Proof]): MergeRollupInputs;
|
|
37
42
|
protected mergeRollupCircuit(mergeInputs: MergeRollupInputs): Promise<[BaseOrMergeRollupPublicInputs, Proof]>;
|
|
38
43
|
protected getVerificationKey(type: RollupTypes): VerificationKey;
|
|
39
|
-
protected rootRollupCircuit(left: [BaseOrMergeRollupPublicInputs, Proof], right: [BaseOrMergeRollupPublicInputs, Proof], newL1ToL2Messages: Tuple<Fr, typeof NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP>): Promise<[RootRollupPublicInputs, Proof]>;
|
|
44
|
+
protected rootRollupCircuit(left: [BaseOrMergeRollupPublicInputs, Proof], right: [BaseOrMergeRollupPublicInputs, Proof], l1ToL2Roots: RootParityInput, newL1ToL2Messages: Tuple<Fr, typeof NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP>): Promise<[RootRollupPublicInputs, Proof]>;
|
|
40
45
|
protected validatePartialState(partialState: PartialStateReference, treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>): void;
|
|
41
46
|
protected validateState(state: StateReference): Promise<void>;
|
|
42
47
|
protected validateRootOutput(rootOutput: RootRollupPublicInputs): Promise<void>;
|
|
43
48
|
protected validateSimulatedTree(localTree: AppendOnlyTreeSnapshot, simulatedTree: AppendOnlyTreeSnapshot, name: TreeNames, label?: string): void;
|
|
44
|
-
protected getRootRollupInput(rollupOutputLeft: BaseOrMergeRollupPublicInputs, rollupProofLeft: Proof, rollupOutputRight: BaseOrMergeRollupPublicInputs, rollupProofRight: Proof, newL1ToL2Messages: Tuple<Fr, typeof NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP>): Promise<RootRollupInputs>;
|
|
49
|
+
protected getRootRollupInput(rollupOutputLeft: BaseOrMergeRollupPublicInputs, rollupProofLeft: Proof, rollupOutputRight: BaseOrMergeRollupPublicInputs, rollupProofRight: Proof, l1ToL2Roots: RootParityInput, newL1ToL2Messages: Tuple<Fr, typeof NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP>): Promise<RootRollupInputs>;
|
|
45
50
|
protected getPreviousRollupDataFromPublicInputs(rollupOutput: BaseOrMergeRollupPublicInputs, rollupProof: Proof, vk: VerificationKey): PreviousRollupData;
|
|
46
51
|
protected getKernelDataFor(tx: ProcessedTx): RollupKernelData;
|
|
47
52
|
protected getMembershipWitnessFor<N extends number>(value: Fr, treeId: MerkleTreeId, height: N): Promise<MembershipWitness<N>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solo_block_builder.d.ts","sourceRoot":"","sources":["../../src/block_builder/solo_block_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,YAAY,EAAY,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAEL,sBAAsB,EACtB,6BAA6B,EAC7B,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAMf,iBAAiB,EACjB,iBAAiB,EAMjB,mCAAmC,
|
|
1
|
+
{"version":3,"file":"solo_block_builder.d.ts","sourceRoot":"","sources":["../../src/block_builder/solo_block_builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Body, L2Block, MerkleTreeId } from '@aztec/circuit-types';
|
|
2
|
-
import { ARCHIVE_HEIGHT, AppendOnlyTreeSnapshot, BaseRollupInputs, ConstantRollupData, L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, MAX_NEW_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_READS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MembershipWitness, MergeRollupInputs, NOTE_HASH_SUBTREE_HEIGHT, NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NullifierLeafPreimage, PUBLIC_DATA_SUBTREE_HEIGHT, PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH, PUBLIC_DATA_TREE_HEIGHT, PartialStateReference, PreviousRollupData, PublicDataTreeLeaf, PublicDataTreeLeafPreimage, ROLLUP_VK_TREE_HEIGHT, RollupKernelCircuitPublicInputs, RollupKernelData, RollupTypes, RootRollupInputs, StateDiffHints, VK_TREE_HEIGHT, } from '@aztec/circuits.js';
|
|
2
|
+
import { ARCHIVE_HEIGHT, AppendOnlyTreeSnapshot, BaseParityInputs, BaseRollupInputs, ConstantRollupData, L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, MAX_NEW_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_READS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MembershipWitness, MergeRollupInputs, NOTE_HASH_SUBTREE_HEIGHT, NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_BASE_PARITY_PER_ROOT_PARITY, NullifierLeafPreimage, PUBLIC_DATA_SUBTREE_HEIGHT, PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH, PUBLIC_DATA_TREE_HEIGHT, PartialStateReference, PreviousRollupData, PublicDataTreeLeaf, PublicDataTreeLeafPreimage, ROLLUP_VK_TREE_HEIGHT, RollupKernelCircuitPublicInputs, RollupKernelData, RollupTypes, RootParityInput, RootParityInputs, RootRollupInputs, StateDiffHints, VK_TREE_HEIGHT, } from '@aztec/circuits.js';
|
|
3
3
|
import { assertPermutation, makeTuple } from '@aztec/foundation/array';
|
|
4
4
|
import { toBigIntBE } from '@aztec/foundation/bigint-buffer';
|
|
5
5
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
@@ -32,15 +32,17 @@ export class SoloBlockBuilder {
|
|
|
32
32
|
* Builds an L2 block with the given number containing the given txs, updating state trees.
|
|
33
33
|
* @param globalVariables - Global variables to be used in the block.
|
|
34
34
|
* @param txs - Processed transactions to include in the block.
|
|
35
|
+
* @param newModelL1ToL2Messages - L1 to L2 messages emitted by the new inbox.
|
|
35
36
|
* @param newL1ToL2Messages - L1 to L2 messages to be part of the block.
|
|
36
37
|
* @param timestamp - Timestamp of the block.
|
|
37
38
|
* @returns The new L2 block and a correctness proof as returned by the root rollup circuit.
|
|
38
39
|
*/
|
|
39
|
-
async buildL2Block(globalVariables, txs,
|
|
40
|
+
async buildL2Block(globalVariables, txs, newModelL1ToL2Messages, // TODO(#4492): Rename this when purging the old inbox
|
|
41
|
+
newL1ToL2Messages) {
|
|
40
42
|
// Check txs are good for processing by checking if all the tree snapshots in header are non-empty
|
|
41
43
|
this.validateTxs(txs);
|
|
42
44
|
// We fill the tx batch with empty txs, we process only one tx at a time for now
|
|
43
|
-
const [circuitsOutput, proof] = await this.runCircuits(globalVariables, txs, newL1ToL2Messages);
|
|
45
|
+
const [circuitsOutput, proof] = await this.runCircuits(globalVariables, txs, newModelL1ToL2Messages, newL1ToL2Messages);
|
|
44
46
|
// Collect all new nullifiers, commitments, and contracts from all txs in this block
|
|
45
47
|
const txEffects = txs.map(tx => toTxEffect(tx));
|
|
46
48
|
const blockBody = new Body(padArrayEnd(newL1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP), txEffects);
|
|
@@ -78,65 +80,129 @@ export class SoloBlockBuilder {
|
|
|
78
80
|
const treeInfo = await this.db.getTreeInfo(id);
|
|
79
81
|
return new AppendOnlyTreeSnapshot(Fr.fromBuffer(treeInfo.root), Number(treeInfo.size));
|
|
80
82
|
}
|
|
81
|
-
async runCircuits(globalVariables, txs,
|
|
83
|
+
async runCircuits(globalVariables, txs, newModelL1ToL2Messages, // TODO(#4492): Rename this when purging the old inbox
|
|
84
|
+
newL1ToL2Messages) {
|
|
82
85
|
// Check that the length of the array of txs is a power of two
|
|
83
86
|
// See https://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2
|
|
84
87
|
if (txs.length < 2 || (txs.length & (txs.length - 1)) !== 0) {
|
|
85
88
|
throw new Error(`Length of txs for the block should be a power of two and at least two (got ${txs.length})`);
|
|
86
89
|
}
|
|
90
|
+
// BASE PARITY CIRCUIT (run in parallel)
|
|
91
|
+
let baseParityInputs = [];
|
|
92
|
+
let elapsedBaseParityOutputsPromise;
|
|
93
|
+
{
|
|
94
|
+
const newModelL1ToL2MessagesTuple = padArrayEnd(newModelL1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
|
|
95
|
+
baseParityInputs = Array.from({ length: NUM_BASE_PARITY_PER_ROOT_PARITY }, (_, i) => BaseParityInputs.fromSlice(newModelL1ToL2MessagesTuple, i));
|
|
96
|
+
const baseParityOutputs = [];
|
|
97
|
+
for (const inputs of baseParityInputs) {
|
|
98
|
+
baseParityOutputs.push(this.baseParityCircuit(inputs));
|
|
99
|
+
}
|
|
100
|
+
elapsedBaseParityOutputsPromise = elapsed(() => Promise.all(baseParityOutputs));
|
|
101
|
+
}
|
|
87
102
|
// padArrayEnd throws if the array is already full. Otherwise it pads till we reach the required size
|
|
88
103
|
const newL1ToL2MessagesTuple = padArrayEnd(newL1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
|
|
89
|
-
//
|
|
104
|
+
// BASE ROLLUP CIRCUIT (run in parallel)
|
|
105
|
+
let elapsedBaseRollupOutputsPromise;
|
|
90
106
|
const baseRollupInputs = [];
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
baseRollupOutputs
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
for (let i = 0; i < mergeInputs.length; i++) {
|
|
110
|
-
this.debug(`Simulated base rollup circuit`, {
|
|
111
|
-
eventName: 'circuit-simulation',
|
|
112
|
-
circuitName: 'base-rollup',
|
|
113
|
-
duration: duration / mergeInputs.length,
|
|
114
|
-
inputSize: baseRollupInputs[i].toBuffer().length,
|
|
115
|
-
outputSize: mergeInputs[i][0].toBuffer().length,
|
|
116
|
-
});
|
|
107
|
+
{
|
|
108
|
+
// Perform all tree insertions and retrieve snapshots for all base rollups
|
|
109
|
+
const treeSnapshots = [];
|
|
110
|
+
for (const tx of txs) {
|
|
111
|
+
const input = await this.buildBaseRollupInput(tx, globalVariables);
|
|
112
|
+
baseRollupInputs.push(input);
|
|
113
|
+
const promises = [MerkleTreeId.NOTE_HASH_TREE, MerkleTreeId.NULLIFIER_TREE, MerkleTreeId.PUBLIC_DATA_TREE].map(async (id) => {
|
|
114
|
+
return { key: id, value: await this.getTreeSnapshot(id) };
|
|
115
|
+
});
|
|
116
|
+
const snapshots = new Map((await Promise.all(promises)).map(obj => [obj.key, obj.value]));
|
|
117
|
+
treeSnapshots.push(snapshots);
|
|
118
|
+
}
|
|
119
|
+
// Run the base rollup circuits for the txs in parallel
|
|
120
|
+
const baseRollupOutputs = [];
|
|
121
|
+
for (let i = 0; i < txs.length; i++) {
|
|
122
|
+
baseRollupOutputs.push(this.baseRollupCircuit(txs[i], baseRollupInputs[i], treeSnapshots[i]));
|
|
123
|
+
}
|
|
124
|
+
elapsedBaseRollupOutputsPromise = elapsed(() => Promise.all(baseRollupOutputs));
|
|
117
125
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
126
|
+
// ROOT PARITY CIRCUIT
|
|
127
|
+
let elapsedRootParityOutputPromise;
|
|
128
|
+
let rootParityInputs;
|
|
129
|
+
{
|
|
130
|
+
// First we await the base parity outputs
|
|
131
|
+
const [duration, baseParityOutputs] = await elapsedBaseParityOutputsPromise;
|
|
132
|
+
// We emit stats for base parity circuits
|
|
133
|
+
for (let i = 0; i < baseParityOutputs.length; i++) {
|
|
134
|
+
this.debug(`Simulated base parity circuit`, {
|
|
135
|
+
eventName: 'circuit-simulation',
|
|
136
|
+
circuitName: 'base-parity',
|
|
137
|
+
duration: duration / baseParityOutputs.length,
|
|
138
|
+
inputSize: baseParityInputs[i].toBuffer().length,
|
|
139
|
+
outputSize: baseParityOutputs[i].toBuffer().length,
|
|
140
|
+
});
|
|
124
141
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
142
|
+
rootParityInputs = new RootParityInputs(baseParityOutputs);
|
|
143
|
+
elapsedRootParityOutputPromise = elapsed(() => this.rootParityCircuit(rootParityInputs));
|
|
144
|
+
}
|
|
145
|
+
// MERGE ROLLUP CIRCUIT (each layer run in parallel)
|
|
146
|
+
let mergeOutputLeft;
|
|
147
|
+
let mergeOutputRight;
|
|
148
|
+
{
|
|
149
|
+
// Run merge rollups in layers until we have only two outputs
|
|
150
|
+
const [duration, mergeInputs] = await elapsedBaseRollupOutputsPromise;
|
|
151
|
+
// We emit stats for base rollup circuits
|
|
152
|
+
for (let i = 0; i < mergeInputs.length; i++) {
|
|
153
|
+
this.debug(`Simulated base rollup circuit`, {
|
|
128
154
|
eventName: 'circuit-simulation',
|
|
129
|
-
circuitName: '
|
|
130
|
-
duration: duration /
|
|
131
|
-
inputSize:
|
|
132
|
-
outputSize:
|
|
155
|
+
circuitName: 'base-rollup',
|
|
156
|
+
duration: duration / mergeInputs.length,
|
|
157
|
+
inputSize: baseRollupInputs[i].toBuffer().length,
|
|
158
|
+
outputSize: mergeInputs[i][0].toBuffer().length,
|
|
133
159
|
});
|
|
134
160
|
}
|
|
135
|
-
mergeRollupInputs =
|
|
161
|
+
let mergeRollupInputs = mergeInputs;
|
|
162
|
+
while (mergeRollupInputs.length > 2) {
|
|
163
|
+
const mergeInputStructs = [];
|
|
164
|
+
for (const pair of chunk(mergeRollupInputs, 2)) {
|
|
165
|
+
const [r1, r2] = pair;
|
|
166
|
+
mergeInputStructs.push(this.createMergeRollupInputs(r1, r2));
|
|
167
|
+
}
|
|
168
|
+
const [duration, mergeOutputs] = await elapsed(() => Promise.all(mergeInputStructs.map(async (input) => await this.mergeRollupCircuit(input))));
|
|
169
|
+
// We emit stats for merge rollup circuits
|
|
170
|
+
for (let i = 0; i < mergeOutputs.length; i++) {
|
|
171
|
+
this.debug(`Simulated merge rollup circuit`, {
|
|
172
|
+
eventName: 'circuit-simulation',
|
|
173
|
+
circuitName: 'merge-rollup',
|
|
174
|
+
duration: duration / mergeOutputs.length,
|
|
175
|
+
inputSize: mergeInputStructs[i].toBuffer().length,
|
|
176
|
+
outputSize: mergeOutputs[i][0].toBuffer().length,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
mergeRollupInputs = mergeOutputs;
|
|
180
|
+
}
|
|
181
|
+
// Run the root rollup with the last two merge rollups (or base, if no merge layers)
|
|
182
|
+
[mergeOutputLeft, mergeOutputRight] = mergeRollupInputs;
|
|
136
183
|
}
|
|
137
|
-
//
|
|
138
|
-
const [
|
|
139
|
-
|
|
184
|
+
// Finally, we emit stats for root parity circuit
|
|
185
|
+
const [duration, rootParityOutput] = await elapsedRootParityOutputPromise;
|
|
186
|
+
this.debug(`Simulated root parity circuit`, {
|
|
187
|
+
eventName: 'circuit-simulation',
|
|
188
|
+
circuitName: 'root-parity',
|
|
189
|
+
duration: duration,
|
|
190
|
+
inputSize: rootParityInputs.toBuffer().length,
|
|
191
|
+
outputSize: rootParityOutput.toBuffer().length,
|
|
192
|
+
});
|
|
193
|
+
return this.rootRollupCircuit(mergeOutputLeft, mergeOutputRight, rootParityOutput, newL1ToL2MessagesTuple);
|
|
194
|
+
}
|
|
195
|
+
async baseParityCircuit(inputs) {
|
|
196
|
+
this.debug(`Running base parity circuit`);
|
|
197
|
+
const parityPublicInputs = await this.simulator.baseParityCircuit(inputs);
|
|
198
|
+
const proof = await this.prover.getBaseParityProof(inputs, parityPublicInputs);
|
|
199
|
+
return new RootParityInput(proof, parityPublicInputs);
|
|
200
|
+
}
|
|
201
|
+
async rootParityCircuit(inputs) {
|
|
202
|
+
this.debug(`Running root parity circuit`);
|
|
203
|
+
const parityPublicInputs = await this.simulator.rootParityCircuit(inputs);
|
|
204
|
+
const proof = await this.prover.getRootParityProof(inputs, parityPublicInputs);
|
|
205
|
+
return new RootParityInput(proof, parityPublicInputs);
|
|
140
206
|
}
|
|
141
207
|
async baseRollupCircuit(tx, inputs, treeSnapshots) {
|
|
142
208
|
this.debug(`Running base rollup for ${tx.hash}`);
|
|
@@ -169,9 +235,9 @@ export class SoloBlockBuilder {
|
|
|
169
235
|
throw new Error(`No verification key available for ${type}`);
|
|
170
236
|
}
|
|
171
237
|
}
|
|
172
|
-
async rootRollupCircuit(left, right, newL1ToL2Messages) {
|
|
238
|
+
async rootRollupCircuit(left, right, l1ToL2Roots, newL1ToL2Messages) {
|
|
173
239
|
this.debug(`Running root rollup circuit`);
|
|
174
|
-
const rootInput = await this.getRootRollupInput(...left, ...right, newL1ToL2Messages);
|
|
240
|
+
const rootInput = await this.getRootRollupInput(...left, ...right, l1ToL2Roots, newL1ToL2Messages);
|
|
175
241
|
// Update the local trees to include the new l1 to l2 messages
|
|
176
242
|
await this.db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, newL1ToL2Messages.map(m => m.toBuffer()));
|
|
177
243
|
// Simulate and get proof for the root circuit
|
|
@@ -213,7 +279,7 @@ export class SoloBlockBuilder {
|
|
|
213
279
|
}
|
|
214
280
|
}
|
|
215
281
|
// Builds the inputs for the root rollup circuit, without making any changes to trees
|
|
216
|
-
async getRootRollupInput(rollupOutputLeft, rollupProofLeft, rollupOutputRight, rollupProofRight, newL1ToL2Messages) {
|
|
282
|
+
async getRootRollupInput(rollupOutputLeft, rollupProofLeft, rollupOutputRight, rollupProofRight, l1ToL2Roots, newL1ToL2Messages) {
|
|
217
283
|
const vk = this.getVerificationKey(rollupOutputLeft.rollupType);
|
|
218
284
|
const previousRollupData = [
|
|
219
285
|
this.getPreviousRollupDataFromPublicInputs(rollupOutputLeft, rollupProofLeft, vk),
|
|
@@ -234,6 +300,7 @@ export class SoloBlockBuilder {
|
|
|
234
300
|
const newArchiveSiblingPath = makeTuple(ARCHIVE_HEIGHT, i => (i < newArchiveSiblingPathArray.length ? newArchiveSiblingPathArray[i] : Fr.ZERO), 0);
|
|
235
301
|
return RootRollupInputs.from({
|
|
236
302
|
previousRollupData,
|
|
303
|
+
l1ToL2Roots,
|
|
237
304
|
newL1ToL2Messages,
|
|
238
305
|
newL1ToL2MessageTreeRootSiblingPath,
|
|
239
306
|
startL1ToL2MessageTreeSnapshot,
|
|
@@ -421,4 +488,4 @@ export class SoloBlockBuilder {
|
|
|
421
488
|
return new MembershipWitness(height, 0n, makeTuple(height, () => Fr.ZERO));
|
|
422
489
|
}
|
|
423
490
|
}
|
|
424
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sb19ibG9ja19idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jsb2NrX2J1aWxkZXIvc29sb19ibG9ja19idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLHNCQUFzQixDQUFDO0FBRTdFLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsc0JBQXNCLEVBRXRCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFFbEIsMkJBQTJCLEVBQzNCLHdDQUF3QyxFQUN4Qyx5QkFBeUIsRUFDekIsNEJBQTRCLEVBQzVCLHNDQUFzQyxFQUN0QyxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixxQ0FBcUMsRUFDckMsd0JBQXdCLEVBQ3hCLHFDQUFxQyxFQUNyQyxxQkFBcUIsRUFDckIsbUNBQW1DLEVBQ25DLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsdUNBQXVDLEVBQ3ZDLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsa0JBQWtCLEVBRWxCLGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIscUJBQXFCLEVBQ3JCLCtCQUErQixFQUMvQixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLGdCQUFnQixFQUVoQixjQUFjLEVBRWQsY0FBYyxHQUVmLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBUyxZQUFZLEVBQUUsY0FB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
|
|
491
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sb19ibG9ja19idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jsb2NrX2J1aWxkZXIvc29sb19ibG9ja19idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLHNCQUFzQixDQUFDO0FBRTdFLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsc0JBQXNCLEVBRXRCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBRWxCLDJCQUEyQixFQUMzQix3Q0FBd0MsRUFDeEMseUJBQXlCLEVBQ3pCLDRCQUE0QixFQUM1QixzQ0FBc0MsRUFDdEMsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIscUNBQXFDLEVBQ3JDLHdCQUF3QixFQUN4QixxQ0FBcUMsRUFDckMscUJBQXFCLEVBQ3JCLG1DQUFtQyxFQUNuQywrQkFBK0IsRUFDL0IscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQix1Q0FBdUMsRUFDdkMsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFFbEIsa0JBQWtCLEVBQ2xCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsK0JBQStCLEVBQy9CLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFFaEIsY0FBYyxFQUVkLGNBQWMsR0FFZixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVB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
|
package/dest/prover/empty.d.ts
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
|
-
import { BaseOrMergeRollupPublicInputs, BaseRollupInputs, MergeRollupInputs, Proof, PublicCircuitPublicInputs, PublicKernelCircuitPublicInputs, RootRollupInputs, RootRollupPublicInputs } from '@aztec/circuits.js';
|
|
1
|
+
import { BaseOrMergeRollupPublicInputs, BaseParityInputs, BaseRollupInputs, MergeRollupInputs, ParityPublicInputs, Proof, PublicCircuitPublicInputs, PublicKernelCircuitPublicInputs, RootParityInputs, RootRollupInputs, RootRollupPublicInputs } from '@aztec/circuits.js';
|
|
2
2
|
import { PublicProver, RollupProver } from './index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Prover implementation that returns empty proofs and overrides aggregation objects.
|
|
5
5
|
*/
|
|
6
6
|
export declare class EmptyRollupProver implements RollupProver {
|
|
7
|
+
/**
|
|
8
|
+
* Creates an empty proof for the given input.
|
|
9
|
+
* @param inputs - Inputs to the circuit.
|
|
10
|
+
* @param publicInputs - Public inputs of the circuit obtained via simulation, modified by this call.
|
|
11
|
+
*/
|
|
12
|
+
getBaseParityProof(inputs: BaseParityInputs, publicInputs: ParityPublicInputs): Promise<Proof>;
|
|
13
|
+
/**
|
|
14
|
+
* Creates an empty proof for the given input.
|
|
15
|
+
* @param inputs - Inputs to the circuit.
|
|
16
|
+
* @param publicInputs - Public inputs of the circuit obtained via simulation, modified by this call.
|
|
17
|
+
*/
|
|
18
|
+
getRootParityProof(inputs: RootParityInputs, publicInputs: ParityPublicInputs): Promise<Proof>;
|
|
7
19
|
/**
|
|
8
20
|
* Creates an empty proof for the given input.
|
|
9
21
|
* @param _input - Input to the circuit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty.d.ts","sourceRoot":"","sources":["../../src/prover/empty.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,6BAA6B,EAC7B,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAOxD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,6BAA6B,GAAG,OAAO,CAAC,KAAK,CAAC;IAK/G;;;;OAIG;IACG,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,6BAA6B,GAAG,OAAO,CAAC,KAAK,CAAC;IAIjH;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC;CAIzG;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD;;;OAGG;IACG,qBAAqB,CAAC,aAAa,EAAE,yBAAyB,GAAG,OAAO,CAAC,KAAK,CAAC;IAIrF;;;OAGG;IACG,2BAA2B,CAAC,aAAa,EAAE,+BAA+B,GAAG,OAAO,CAAC,KAAK,CAAC;CAGlG"}
|
|
1
|
+
{"version":3,"file":"empty.d.ts","sourceRoot":"","sources":["../../src/prover/empty.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,6BAA6B,EAC7B,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAOxD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAKpG;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAKpG;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,6BAA6B,GAAG,OAAO,CAAC,KAAK,CAAC;IAK/G;;;;OAIG;IACG,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,6BAA6B,GAAG,OAAO,CAAC,KAAK,CAAC;IAIjH;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC;CAIzG;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD;;;OAGG;IACG,qBAAqB,CAAC,aAAa,EAAE,yBAAyB,GAAG,OAAO,CAAC,KAAK,CAAC;IAIrF;;;OAGG;IACG,2BAA2B,CAAC,aAAa,EAAE,+BAA+B,GAAG,OAAO,CAAC,KAAK,CAAC;CAGlG"}
|
package/dest/prover/empty.js
CHANGED
|
@@ -7,6 +7,24 @@ const EMPTY_PROOF_SIZE = 42;
|
|
|
7
7
|
* Prover implementation that returns empty proofs and overrides aggregation objects.
|
|
8
8
|
*/
|
|
9
9
|
export class EmptyRollupProver {
|
|
10
|
+
/**
|
|
11
|
+
* Creates an empty proof for the given input.
|
|
12
|
+
* @param inputs - Inputs to the circuit.
|
|
13
|
+
* @param publicInputs - Public inputs of the circuit obtained via simulation, modified by this call.
|
|
14
|
+
*/
|
|
15
|
+
async getBaseParityProof(inputs, publicInputs) {
|
|
16
|
+
publicInputs.aggregationObject = AggregationObject.makeFake();
|
|
17
|
+
return new Proof(Buffer.alloc(EMPTY_PROOF_SIZE, 0));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Creates an empty proof for the given input.
|
|
21
|
+
* @param inputs - Inputs to the circuit.
|
|
22
|
+
* @param publicInputs - Public inputs of the circuit obtained via simulation, modified by this call.
|
|
23
|
+
*/
|
|
24
|
+
async getRootParityProof(inputs, publicInputs) {
|
|
25
|
+
publicInputs.aggregationObject = AggregationObject.makeFake();
|
|
26
|
+
return new Proof(Buffer.alloc(EMPTY_PROOF_SIZE, 0));
|
|
27
|
+
}
|
|
10
28
|
/**
|
|
11
29
|
* Creates an empty proof for the given input.
|
|
12
30
|
* @param _input - Input to the circuit.
|
|
@@ -54,4 +72,4 @@ export class EmptyPublicProver {
|
|
|
54
72
|
return new Proof(Buffer.alloc(EMPTY_PROOF_SIZE, 0));
|
|
55
73
|
}
|
|
56
74
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmVyL2VtcHR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtDQUFrQztBQUNsQyxPQUFPLEVBQ0wsaUJBQWlCLEVBTWpCLEtBQUssR0FNTixNQUFNLG9CQUFvQixDQUFDO0FBSTVCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBRTVCLDJGQUEyRjtBQUMzRixzQ0FBc0M7QUFFdEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBd0IsRUFBRSxZQUFnQztRQUNqRixZQUFZLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBd0IsRUFBRSxZQUFnQztRQUNqRixZQUFZLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBd0IsRUFBRSxZQUEyQztRQUM1RixZQUFZLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsbUJBQW1CLENBQUMsTUFBeUIsRUFBRSxZQUEyQztRQUM5RixZQUFZLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBd0IsRUFBRSxZQUFvQztRQUNyRixZQUFZLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCOzs7T0FHRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxhQUF3QztRQUNsRSxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLDJCQUEyQixDQUFDLGFBQThDO1FBQzlFLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRiJ9
|
package/dest/prover/index.d.ts
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
|
-
import { BaseOrMergeRollupPublicInputs, BaseRollupInputs, MergeRollupInputs, Proof, PublicCircuitPublicInputs, PublicKernelCircuitPublicInputs, RootRollupInputs, RootRollupPublicInputs } from '@aztec/circuits.js';
|
|
1
|
+
import { BaseOrMergeRollupPublicInputs, BaseParityInputs, BaseRollupInputs, MergeRollupInputs, ParityPublicInputs, Proof, PublicCircuitPublicInputs, PublicKernelCircuitPublicInputs, RootParityInputs, RootRollupInputs, RootRollupPublicInputs } from '@aztec/circuits.js';
|
|
2
2
|
/**
|
|
3
|
-
* Generates proofs for
|
|
3
|
+
* Generates proofs for parity and rollup circuits.
|
|
4
4
|
*/
|
|
5
5
|
export interface RollupProver {
|
|
6
|
+
/**
|
|
7
|
+
* Creates a proof for the given input.
|
|
8
|
+
* @param input - Input to the circuit.
|
|
9
|
+
* @param publicInputs - Public inputs of the circuit obtained via simulation, modified by this call.
|
|
10
|
+
*/
|
|
11
|
+
getBaseParityProof(inputs: BaseParityInputs, publicInputs: ParityPublicInputs): Promise<Proof>;
|
|
12
|
+
/**
|
|
13
|
+
* Creates a proof for the given input.
|
|
14
|
+
* @param input - Input to the circuit.
|
|
15
|
+
* @param publicInputs - Public inputs of the circuit obtained via simulation, modified by this call.
|
|
16
|
+
*/
|
|
17
|
+
getRootParityProof(inputs: RootParityInputs, publicInputs: ParityPublicInputs): Promise<Proof>;
|
|
6
18
|
/**
|
|
7
19
|
* Creates a proof for the given input.
|
|
8
20
|
* @param input - Input to the circuit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,6BAA6B,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEzG;;;;OAIG;IACH,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,6BAA6B,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE3G;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CACnG;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,YAAY,EAAE,yBAAyB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE/E;;;OAGG;IACH,2BAA2B,CAAC,YAAY,EAAE,+BAA+B,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CAC5F"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE/F;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE/F;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,6BAA6B,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEzG;;;;OAIG;IACH,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,6BAA6B,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE3G;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CACnG;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,YAAY,EAAE,yBAAyB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE/E;;;OAGG;IACH,2BAA2B,CAAC,YAAY,EAAE,+BAA+B,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CAC5F"}
|
|
@@ -6,7 +6,6 @@ import { MerkleTreeOperations } from '@aztec/world-state';
|
|
|
6
6
|
import { PublicProver } from '../prover/index.js';
|
|
7
7
|
import { PublicKernelCircuitSimulator } from '../simulator/index.js';
|
|
8
8
|
import { HintsBuilder } from './hints_builder.js';
|
|
9
|
-
import { FailedTx } from './processed_tx.js';
|
|
10
9
|
export declare enum PublicKernelPhase {
|
|
11
10
|
SETUP = "setup",
|
|
12
11
|
APP_LOGIC = "app-logic",
|
|
@@ -45,7 +44,6 @@ export declare abstract class AbstractPhaseManager {
|
|
|
45
44
|
*/
|
|
46
45
|
revertReason: SimulationError | undefined;
|
|
47
46
|
}>;
|
|
48
|
-
abstract rollback(tx: Tx, err: unknown): Promise<FailedTx>;
|
|
49
47
|
static extractEnqueuedPublicCallsByPhase(publicInputs: PrivateKernelTailCircuitPublicInputs, enqueuedPublicFunctionCalls: PublicCallRequest[]): Record<PublicKernelPhase, PublicCallRequest[]>;
|
|
50
48
|
protected extractEnqueuedPublicCalls(tx: Tx): PublicCallRequest[];
|
|
51
49
|
protected processEnqueuedPublicCalls(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs, previousPublicKernelProof: Proof): Promise<[PublicKernelCircuitPublicInputs, Proof, FunctionL2Logs[], SimulationError | undefined]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract_phase_manager.d.ts","sourceRoot":"","sources":["../../src/sequencer/abstract_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgB,eAAe,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAKL,EAAE,EACF,eAAe,EACf,MAAM,EAeN,oCAAoC,EACpC,KAAK,EACL,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EAIzB,+BAA+B,EAC/B,gBAAgB,EAOjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAqB,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAEL,qBAAqB,EACrB,cAAc,EAIf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAK1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"abstract_phase_manager.d.ts","sourceRoot":"","sources":["../../src/sequencer/abstract_phase_manager.ts"],"names":[],"mappings":"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"}
|