@aztec/sequencer-client 0.8.9 → 0.8.10
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/solo_block_builder.d.ts.map +1 -1
- package/dest/block_builder/solo_block_builder.js +3 -4
- package/dest/client/sequencer-client.d.ts +6 -1
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +8 -1
- package/dest/config.d.ts +9 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +1 -1
- package/dest/publisher/index.d.ts +0 -27
- package/dest/publisher/index.d.ts.map +1 -1
- package/dest/publisher/index.js +1 -1
- package/dest/publisher/l1-publisher.d.ts.map +1 -1
- package/dest/publisher/l1-publisher.js +1 -1
- package/dest/sequencer/config.d.ts +0 -8
- package/dest/sequencer/config.d.ts.map +1 -1
- package/dest/sequencer/sequencer.d.ts +6 -1
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +26 -11
- package/dest/simulator/public_executor.d.ts +1 -1
- package/dest/simulator/public_executor.d.ts.map +1 -1
- package/dest/simulator/public_executor.js +5 -5
- package/dest/simulator/public_kernel.d.ts.map +1 -1
- package/dest/simulator/public_kernel.js +5 -5
- package/dest/simulator/rollup.d.ts.map +1 -1
- package/dest/simulator/rollup.js +7 -7
- package/package.json +10 -10
- package/src/block_builder/solo_block_builder.ts +8 -3
- package/src/client/sequencer-client.ts +9 -1
- package/src/config.ts +13 -1
- package/src/publisher/index.ts +0 -28
- package/src/publisher/l1-publisher.ts +1 -1
- package/src/sequencer/config.ts +0 -10
- package/src/sequencer/sequencer.ts +28 -12
- package/src/simulator/public_executor.ts +5 -4
- package/src/simulator/public_kernel.ts +7 -6
- package/src/simulator/rollup.ts +10 -9
|
@@ -2,8 +2,8 @@ var _ContractsDataSourcePublicDB_instances, _ContractsDataSourcePublicDB_getCont
|
|
|
2
2
|
import { __classPrivateFieldGet } from "tslib";
|
|
3
3
|
import { PublicExecutor, } from '@aztec/acir-simulator';
|
|
4
4
|
import { CircuitsWasm, Fr } from '@aztec/circuits.js';
|
|
5
|
+
import { computePublicDataTreeIndex } from '@aztec/circuits.js/abis';
|
|
5
6
|
import { MerkleTreeId } from '@aztec/types';
|
|
6
|
-
import { computePublicDataTreeLeafIndex } from '@aztec/world-state';
|
|
7
7
|
/**
|
|
8
8
|
* Returns a new PublicExecutor simulator backed by the supplied merkle tree db and contract data source.
|
|
9
9
|
* @param merkleTree - A merkle tree database.
|
|
@@ -15,7 +15,7 @@ export function getPublicExecutor(merkleTree, publicContractsDB, l1toL2MessageSo
|
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* Implements the PublicContractsDB using a ContractDataSource.
|
|
18
|
-
*
|
|
18
|
+
* Progressively records contracts in transaction as they are processed in a block.
|
|
19
19
|
*/
|
|
20
20
|
export class ContractsDataSourcePublicDB {
|
|
21
21
|
constructor(db) {
|
|
@@ -82,7 +82,7 @@ class WorldStatePublicDB {
|
|
|
82
82
|
* @returns The current value in the storage slot.
|
|
83
83
|
*/
|
|
84
84
|
async storageRead(contract, slot) {
|
|
85
|
-
const index =
|
|
85
|
+
const index = computePublicDataTreeIndex(await CircuitsWasm.get(), contract, slot).value;
|
|
86
86
|
const cached = this.writeCache.get(index);
|
|
87
87
|
if (cached !== undefined)
|
|
88
88
|
return cached;
|
|
@@ -96,7 +96,7 @@ class WorldStatePublicDB {
|
|
|
96
96
|
* @param newValue - The new value to store.
|
|
97
97
|
*/
|
|
98
98
|
async storageWrite(contract, slot, newValue) {
|
|
99
|
-
const index =
|
|
99
|
+
const index = computePublicDataTreeIndex(await CircuitsWasm.get(), contract, slot).value;
|
|
100
100
|
this.writeCache.set(index, newValue);
|
|
101
101
|
}
|
|
102
102
|
}
|
|
@@ -123,4 +123,4 @@ export class WorldStateDB {
|
|
|
123
123
|
return await this.db.findLeafIndex(MerkleTreeId.PRIVATE_DATA_TREE, commitment.toBuffer());
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9wdWJsaWNfZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBSUwsY0FBYyxHQUVmLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFnQixZQUFZLEVBQWMsRUFBRSxFQUF1QyxNQUFNLG9CQUFvQixDQUFDO0FBQ3JILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JFLE9BQU8sRUFBaUUsWUFBWSxFQUFNLE1BQU0sY0FBYyxDQUFDO0FBRy9HOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixVQUFnQyxFQUNoQyxpQkFBb0MsRUFDcEMsbUJBQXdDLEVBQ3hDLFNBQTRCO0lBRTVCLE9BQU8sSUFBSSxjQUFjLENBQ3ZCLElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDLEVBQ2xDLGlCQUFpQixFQUNqQixJQUFJLFlBQVksQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsRUFDakQsU0FBUyxDQUNWLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDJCQUEyQjtJQUd0QyxZQUFvQixFQUFzQjs7UUFBdEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFGMUMsVUFBSyxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO0lBRUgsQ0FBQztJQUU5Qzs7O09BR0c7SUFDSSxlQUFlLENBQUMsRUFBTTtRQUMzQixLQUFLLE1BQU0sUUFBUSxJQUFJLEVBQUUsQ0FBQyxZQUFZLEVBQUU7WUFDdEMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7WUFFOUQsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQzVCLFNBQVM7YUFDVjtZQUVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_kernel.d.ts","sourceRoot":"","sources":["../../src/simulator/public_kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAA+B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"public_kernel.d.ts","sourceRoot":"","sources":["../../src/simulator/public_kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAA+B,MAAM,oBAAoB,CAAC;AAK/G,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,qBAAa,gCAAiC,YAAW,4BAA4B;IACnF,OAAO,CAAC,GAAG,CAAsD;IAEjE;;;;OAIG;IACU,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAa1G;;;;OAIG;IACU,oCAAoC,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAYhH"}
|
|
@@ -16,11 +16,11 @@ export class WasmPublicKernelCircuitSimulator {
|
|
|
16
16
|
async publicKernelCircuitPrivateInput(input) {
|
|
17
17
|
if (!input.previousKernel.publicInputs.isPrivate)
|
|
18
18
|
throw new Error(`Expected private kernel previous inputs`);
|
|
19
|
-
const [
|
|
19
|
+
const [duration, result] = await elapsed(() => simulatePublicKernelCircuit(input));
|
|
20
20
|
this.log(`Simulated public kernel circuit with private input`, {
|
|
21
21
|
eventName: 'circuit-simulation',
|
|
22
22
|
circuitName: 'public-kernel-private-input',
|
|
23
|
-
duration
|
|
23
|
+
duration,
|
|
24
24
|
inputSize: input.toBuffer().length,
|
|
25
25
|
outputSize: result.toBuffer().length,
|
|
26
26
|
});
|
|
@@ -34,15 +34,15 @@ export class WasmPublicKernelCircuitSimulator {
|
|
|
34
34
|
async publicKernelCircuitNonFirstIteration(input) {
|
|
35
35
|
if (input.previousKernel.publicInputs.isPrivate)
|
|
36
36
|
throw new Error(`Expected public kernel previous inputs`);
|
|
37
|
-
const [
|
|
37
|
+
const [duration, result] = await elapsed(() => simulatePublicKernelCircuit(input));
|
|
38
38
|
this.log(`Simulated public kernel circuit non-first iteration`, {
|
|
39
39
|
eventName: 'circuit-simulation',
|
|
40
40
|
circuitName: 'public-kernel-non-first-iteration',
|
|
41
|
-
duration
|
|
41
|
+
duration,
|
|
42
42
|
inputSize: input.toBuffer().length,
|
|
43
43
|
outputSize: result.toBuffer().length,
|
|
44
44
|
});
|
|
45
45
|
return result;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2tlcm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW11bGF0b3IvcHVibGljX2tlcm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdELDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0csT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS2xEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdDQUFnQztJQUE3QztRQUNVLFFBQUcsR0FBRyxpQkFBaUIsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBcUNuRSxDQUFDO0lBbkNDOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsK0JBQStCLENBQUMsS0FBeUI7UUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFNBQVM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDN0csTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxHQUFHLENBQUMsb0RBQW9ELEVBQUU7WUFDN0QsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixXQUFXLEVBQUUsNkJBQTZCO1lBQzFDLFFBQVE7WUFDUixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDbEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1NBQ0osQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLEtBQXlCO1FBQ3pFLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMzRyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxREFBcUQsRUFBRTtZQUM5RCxTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLFdBQVcsRUFBRSxtQ0FBbUM7WUFDaEQsUUFBUTtZQUNSLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTTtZQUNsQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07U0FDSixDQUFDLENBQUM7UUFDcEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/simulator/rollup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAGhB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EAIvB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/simulator/rollup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAGhB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EAIvB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,qBAAa,0BAA2B,YAAW,eAAe;IAChE,OAAO,CAAC,GAAG,CAA+C;IAE1D;;;;OAIG;IACU,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAiB/F;;;;OAIG;IACU,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAkBjG;;;;OAIG;IACU,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAiBzF"}
|
package/dest/simulator/rollup.js
CHANGED
|
@@ -15,14 +15,14 @@ export class WasmRollupCircuitSimulator {
|
|
|
15
15
|
*/
|
|
16
16
|
async baseRollupCircuit(input) {
|
|
17
17
|
const wasm = await CircuitsWasm.get();
|
|
18
|
-
const [
|
|
18
|
+
const [duration, result] = await elapsed(() => baseRollupSim(wasm, input));
|
|
19
19
|
if (result instanceof CircuitError) {
|
|
20
20
|
throw new CircuitError(result.code, result.message);
|
|
21
21
|
}
|
|
22
22
|
this.log(`Simulated base rollup circuit`, {
|
|
23
23
|
eventName: 'circuit-simulation',
|
|
24
24
|
circuitName: 'base-rollup',
|
|
25
|
-
duration
|
|
25
|
+
duration,
|
|
26
26
|
inputSize: input.toBuffer().length,
|
|
27
27
|
outputSize: result.toBuffer().length,
|
|
28
28
|
});
|
|
@@ -35,14 +35,14 @@ export class WasmRollupCircuitSimulator {
|
|
|
35
35
|
*/
|
|
36
36
|
async mergeRollupCircuit(input) {
|
|
37
37
|
const wasm = await CircuitsWasm.get();
|
|
38
|
-
const [
|
|
38
|
+
const [duration, result] = await elapsed(() => mergeRollupSim(wasm, input));
|
|
39
39
|
if (result instanceof CircuitError) {
|
|
40
40
|
throw new CircuitError(result.code, result.message);
|
|
41
41
|
}
|
|
42
42
|
this.log(`Simulated merge rollup circuit`, {
|
|
43
43
|
eventName: 'circuit-simulation',
|
|
44
44
|
circuitName: 'merge-rollup',
|
|
45
|
-
duration
|
|
45
|
+
duration,
|
|
46
46
|
inputSize: input.toBuffer().length,
|
|
47
47
|
outputSize: result.toBuffer().length,
|
|
48
48
|
});
|
|
@@ -55,18 +55,18 @@ export class WasmRollupCircuitSimulator {
|
|
|
55
55
|
*/
|
|
56
56
|
async rootRollupCircuit(input) {
|
|
57
57
|
const wasm = await CircuitsWasm.get();
|
|
58
|
-
const [
|
|
58
|
+
const [duration, result] = await elapsed(() => rootRollupSim(wasm, input));
|
|
59
59
|
if (result instanceof CircuitError) {
|
|
60
60
|
throw new CircuitError(result.code, result.message);
|
|
61
61
|
}
|
|
62
62
|
this.log(`Simulated root rollup circuit`, {
|
|
63
63
|
eventName: 'circuit-simulation',
|
|
64
64
|
circuitName: 'root-rollup',
|
|
65
|
-
duration
|
|
65
|
+
duration,
|
|
66
66
|
inputSize: input.toBuffer().length,
|
|
67
67
|
outputSize: result.toBuffer().length,
|
|
68
68
|
});
|
|
69
69
|
return result;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9yb2xsdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFlBQVksRUFDWixZQUFZLEVBSVosYUFBYSxFQUNiLGNBQWMsRUFDZCxhQUFhLEdBQ2QsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFLbEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sMEJBQTBCO0lBQXZDO1FBQ1UsUUFBRyxHQUFHLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFxRTVELENBQUM7SUFuRUM7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUF1QjtRQUNwRCxNQUFNLElBQUksR0FBRyxNQUFNLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLE1BQU0sWUFBWSxZQUFZLEVBQUU7WUFDbEMsTUFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNyRDtRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUU7WUFDeEMsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixXQUFXLEVBQUUsYUFBYTtZQUMxQixRQUFRO1lBQ1IsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1lBQ2xDLFVBQVUsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTTtTQUNKLENBQUMsQ0FBQztRQUVwQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsS0FBd0I7UUFDdEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdEMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxNQUFNLFlBQVksWUFBWSxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckQ7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFO1lBQ3pDLFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsV0FBVyxFQUFFLGNBQWM7WUFDM0IsUUFBUTtZQUNSLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTTtZQUNsQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07U0FDSixDQUFDLENBQUM7UUFFcEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBdUI7UUFDcEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdEMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxNQUFNLFlBQVksWUFBWSxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckQ7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFO1lBQ3hDLFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsV0FBVyxFQUFFLGFBQWE7WUFDMUIsUUFBUTtZQUNSLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTTtZQUNsQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07U0FDSixDQUFDLENBQUM7UUFFcEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"typedocOptions": {
|
|
@@ -32,15 +32,15 @@
|
|
|
32
32
|
"rootDir": "./src"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@aztec/acir-simulator": "0.8.
|
|
36
|
-
"@aztec/circuits.js": "0.8.
|
|
37
|
-
"@aztec/ethereum": "0.8.
|
|
38
|
-
"@aztec/foundation": "0.8.
|
|
39
|
-
"@aztec/l1-artifacts": "0.8.
|
|
40
|
-
"@aztec/merkle-tree": "0.8.
|
|
41
|
-
"@aztec/p2p": "0.8.
|
|
42
|
-
"@aztec/types": "0.8.
|
|
43
|
-
"@aztec/world-state": "0.8.
|
|
35
|
+
"@aztec/acir-simulator": "0.8.10",
|
|
36
|
+
"@aztec/circuits.js": "0.8.10",
|
|
37
|
+
"@aztec/ethereum": "0.8.10",
|
|
38
|
+
"@aztec/foundation": "0.8.10",
|
|
39
|
+
"@aztec/l1-artifacts": "0.8.10",
|
|
40
|
+
"@aztec/merkle-tree": "0.8.10",
|
|
41
|
+
"@aztec/p2p": "0.8.10",
|
|
42
|
+
"@aztec/types": "0.8.10",
|
|
43
|
+
"@aztec/world-state": "0.8.10",
|
|
44
44
|
"lodash.chunk": "^4.2.0",
|
|
45
45
|
"lodash.flatmap": "^4.5.0",
|
|
46
46
|
"lodash.pick": "^4.4.0",
|
|
@@ -36,7 +36,12 @@ import {
|
|
|
36
36
|
VerificationKey,
|
|
37
37
|
makeTuple,
|
|
38
38
|
} from '@aztec/circuits.js';
|
|
39
|
-
import {
|
|
39
|
+
import {
|
|
40
|
+
computeBlockHash,
|
|
41
|
+
computeBlockHashWithGlobals,
|
|
42
|
+
computeContractLeaf,
|
|
43
|
+
computeGlobalsHash,
|
|
44
|
+
} from '@aztec/circuits.js/abis';
|
|
40
45
|
import { toFriendlyJSON } from '@aztec/circuits.js/utils';
|
|
41
46
|
import { toBigIntBE } from '@aztec/foundation/bigint-buffer';
|
|
42
47
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
@@ -44,7 +49,7 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
44
49
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
45
50
|
import { Tuple, assertLength } from '@aztec/foundation/serialize';
|
|
46
51
|
import { ContractData, L2Block, L2BlockL2Logs, MerkleTreeId, PublicDataWrite, TxL2Logs } from '@aztec/types';
|
|
47
|
-
import { MerkleTreeOperations
|
|
52
|
+
import { MerkleTreeOperations } from '@aztec/world-state';
|
|
48
53
|
|
|
49
54
|
import chunk from 'lodash.chunk';
|
|
50
55
|
import flatMap from 'lodash.flatmap';
|
|
@@ -308,7 +313,7 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
308
313
|
// Update the root trees with the latest data and contract tree roots,
|
|
309
314
|
// and validate them against the output of the root circuit simulation
|
|
310
315
|
this.debug(`Updating and validating root trees`);
|
|
311
|
-
const globalVariablesHash = await
|
|
316
|
+
const globalVariablesHash = computeGlobalsHash(await CircuitsWasm.get(), left[0].constants.globalVariables);
|
|
312
317
|
await this.db.updateLatestGlobalVariablesHash(globalVariablesHash);
|
|
313
318
|
await this.db.updateHistoricBlocksTree(globalVariablesHash);
|
|
314
319
|
|
|
@@ -5,7 +5,7 @@ import { WorldStateSynchronizer } from '@aztec/world-state';
|
|
|
5
5
|
import { SoloBlockBuilder } from '../block_builder/solo_block_builder.js';
|
|
6
6
|
import { SequencerClientConfig } from '../config.js';
|
|
7
7
|
import { getGlobalVariableBuilder } from '../global_variable_builder/index.js';
|
|
8
|
-
import { Sequencer, getL1Publisher, getVerificationKeys } from '../index.js';
|
|
8
|
+
import { Sequencer, SequencerConfig, getL1Publisher, getVerificationKeys } from '../index.js';
|
|
9
9
|
import { EmptyRollupProver } from '../prover/empty.js';
|
|
10
10
|
import { PublicProcessorFactory } from '../sequencer/public_processor.js';
|
|
11
11
|
import { WasmRollupCircuitSimulator } from '../simulator/rollup.js';
|
|
@@ -64,6 +64,14 @@ export class SequencerClient {
|
|
|
64
64
|
return new SequencerClient(sequencer);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Updates sequencer config.
|
|
69
|
+
* @param config - New parameters.
|
|
70
|
+
*/
|
|
71
|
+
public updateSequencerConfig(config: SequencerConfig) {
|
|
72
|
+
this.sequencer.updateConfig(config);
|
|
73
|
+
}
|
|
74
|
+
|
|
67
75
|
/**
|
|
68
76
|
* Stops the sequencer from processing new txs.
|
|
69
77
|
*/
|
package/src/config.ts
CHANGED
|
@@ -5,10 +5,22 @@ import { GlobalReaderConfig } from './global_variable_builder/index.js';
|
|
|
5
5
|
import { PublisherConfig, TxSenderConfig } from './publisher/config.js';
|
|
6
6
|
import { SequencerConfig } from './sequencer/config.js';
|
|
7
7
|
|
|
8
|
+
/** Chain configuration. */
|
|
9
|
+
type ChainConfig = {
|
|
10
|
+
/** The chain id of the ethereum host. */
|
|
11
|
+
chainId: number;
|
|
12
|
+
/** The version of the rollup. */
|
|
13
|
+
version: number;
|
|
14
|
+
};
|
|
15
|
+
|
|
8
16
|
/**
|
|
9
17
|
* Configuration settings for the SequencerClient.
|
|
10
18
|
*/
|
|
11
|
-
export type SequencerClientConfig = PublisherConfig &
|
|
19
|
+
export type SequencerClientConfig = PublisherConfig &
|
|
20
|
+
TxSenderConfig &
|
|
21
|
+
SequencerConfig &
|
|
22
|
+
GlobalReaderConfig &
|
|
23
|
+
ChainConfig;
|
|
12
24
|
|
|
13
25
|
/**
|
|
14
26
|
* Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
|
package/src/publisher/index.ts
CHANGED
|
@@ -5,34 +5,6 @@ import { ViemTxSender } from './viem-tx-sender.js';
|
|
|
5
5
|
export { L1Publisher } from './l1-publisher.js';
|
|
6
6
|
export { PublisherConfig } from './config.js';
|
|
7
7
|
|
|
8
|
-
/** Stats logged for each L1 rollup publish tx.*/
|
|
9
|
-
export type L1PublishStats = {
|
|
10
|
-
/** Name of the event for metrics purposes */
|
|
11
|
-
eventName: 'rollup-published-to-l1';
|
|
12
|
-
/** Effective gas price of the tx. */
|
|
13
|
-
gasPrice: bigint;
|
|
14
|
-
/** Effective gas used in the tx. */
|
|
15
|
-
gasUsed: bigint;
|
|
16
|
-
/** Hash of the L1 tx. */
|
|
17
|
-
transactionHash: string;
|
|
18
|
-
/** Gas cost of the calldata. */
|
|
19
|
-
calldataGas: number;
|
|
20
|
-
/** Size in bytes of the calldata. */
|
|
21
|
-
calldataSize: number;
|
|
22
|
-
/** Number of txs in the L2 block. */
|
|
23
|
-
txCount: number;
|
|
24
|
-
/** Number of the L2 block. */
|
|
25
|
-
blockNumber: number;
|
|
26
|
-
/** Number of encrypted logs. */
|
|
27
|
-
encryptedLogCount?: number;
|
|
28
|
-
/** Number of unencrypted logs. */
|
|
29
|
-
unencryptedLogCount?: number;
|
|
30
|
-
/** Serialised size of encrypted logs. */
|
|
31
|
-
encryptedLogSize?: number;
|
|
32
|
-
/** Serialised size of unencrypted logs. */
|
|
33
|
-
unencryptedLogSize?: number;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
8
|
/**
|
|
37
9
|
* Returns a new instance of the L1Publisher.
|
|
38
10
|
* @param config - Configuration to initialize the new instance.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
2
|
import { InterruptableSleep } from '@aztec/foundation/sleep';
|
|
3
3
|
import { ExtendedContractData, L2Block } from '@aztec/types';
|
|
4
|
+
import { L1PublishStats } from '@aztec/types/stats';
|
|
4
5
|
|
|
5
6
|
import pick from 'lodash.pick';
|
|
6
7
|
|
|
7
8
|
import { L2BlockReceiver } from '../receiver.js';
|
|
8
9
|
import { PublisherConfig } from './config.js';
|
|
9
|
-
import { L1PublishStats } from './index.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Stats for a sent transaction.
|
package/src/sequencer/config.ts
CHANGED
|
@@ -14,14 +14,4 @@ export interface SequencerConfig {
|
|
|
14
14
|
* The minimum number of txs to include in a block.
|
|
15
15
|
*/
|
|
16
16
|
minTxsPerBlock?: number;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* The chain id of the ethereum host.
|
|
20
|
-
*/
|
|
21
|
-
chainId: number;
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* The version of the rollup.
|
|
25
|
-
*/
|
|
26
|
-
version: number;
|
|
27
17
|
}
|
|
@@ -2,8 +2,10 @@ import { GlobalVariables } from '@aztec/circuits.js';
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
5
|
+
import { Timer, elapsed } from '@aztec/foundation/timer';
|
|
5
6
|
import { P2P } from '@aztec/p2p';
|
|
6
7
|
import { ContractDataSource, L1ToL2MessageSource, L2Block, L2BlockSource, MerkleTreeId, Tx } from '@aztec/types';
|
|
8
|
+
import { L2BlockBuiltStats } from '@aztec/types/stats';
|
|
7
9
|
import { WorldStateStatus, WorldStateSynchronizer } from '@aztec/world-state';
|
|
8
10
|
|
|
9
11
|
import times from 'lodash.times';
|
|
@@ -27,7 +29,7 @@ import { PublicProcessorFactory } from './public_processor.js';
|
|
|
27
29
|
*/
|
|
28
30
|
export class Sequencer {
|
|
29
31
|
private runningPromise?: RunningPromise;
|
|
30
|
-
private pollingIntervalMs: number;
|
|
32
|
+
private pollingIntervalMs: number = 1000;
|
|
31
33
|
private maxTxsPerBlock = 32;
|
|
32
34
|
private minTxsPerBLock = 1;
|
|
33
35
|
private lastPublishedBlock = 0;
|
|
@@ -43,19 +45,23 @@ export class Sequencer {
|
|
|
43
45
|
private l1ToL2MessageSource: L1ToL2MessageSource,
|
|
44
46
|
private contractDataSource: ContractDataSource,
|
|
45
47
|
private publicProcessorFactory: PublicProcessorFactory,
|
|
46
|
-
config: SequencerConfig,
|
|
48
|
+
config: SequencerConfig = {},
|
|
47
49
|
private log = createDebugLogger('aztec:sequencer'),
|
|
48
50
|
) {
|
|
49
|
-
this.
|
|
50
|
-
if (config.maxTxsPerBlock) {
|
|
51
|
-
this.maxTxsPerBlock = config.maxTxsPerBlock;
|
|
52
|
-
}
|
|
53
|
-
if (config.minTxsPerBlock) {
|
|
54
|
-
this.minTxsPerBLock = config.minTxsPerBlock;
|
|
55
|
-
}
|
|
51
|
+
this.updateConfig(config);
|
|
56
52
|
this.log(`Initialized sequencer with ${this.minTxsPerBLock}-${this.maxTxsPerBlock} txs per block.`);
|
|
57
53
|
}
|
|
58
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Updates sequencer config.
|
|
57
|
+
* @param config - New parameters.
|
|
58
|
+
*/
|
|
59
|
+
public updateConfig(config: SequencerConfig) {
|
|
60
|
+
if (config.transactionPollingIntervalMS) this.pollingIntervalMs = config.transactionPollingIntervalMS;
|
|
61
|
+
if (config.maxTxsPerBlock) this.maxTxsPerBlock = config.maxTxsPerBlock;
|
|
62
|
+
if (config.minTxsPerBlock) this.minTxsPerBLock = config.minTxsPerBlock;
|
|
63
|
+
}
|
|
64
|
+
|
|
59
65
|
/**
|
|
60
66
|
* Starts the sequencer and moves to IDLE state. Blocks until the initial sync is complete.
|
|
61
67
|
*/
|
|
@@ -116,6 +122,7 @@ export class Sequencer {
|
|
|
116
122
|
// Do not go forward with new block if the previous one has not been mined and processed
|
|
117
123
|
if (!prevBlockSynced) return;
|
|
118
124
|
|
|
125
|
+
const workTimer = new Timer();
|
|
119
126
|
this.state = SequencerState.WAITING_FOR_TXS;
|
|
120
127
|
|
|
121
128
|
// Get txs to build the new block
|
|
@@ -139,7 +146,7 @@ export class Sequencer {
|
|
|
139
146
|
// Process txs and drop the ones that fail processing
|
|
140
147
|
// We create a fresh processor each time to reset any cached state (eg storage writes)
|
|
141
148
|
const processor = await this.publicProcessorFactory.create(prevGlobalVariables, newGlobalVariables);
|
|
142
|
-
const [processedTxs, failedTxs] = await processor.process(validTxs);
|
|
149
|
+
const [publicProcessorDuration, [processedTxs, failedTxs]] = await elapsed(() => processor.process(validTxs));
|
|
143
150
|
if (failedTxs.length > 0) {
|
|
144
151
|
const failedTxData = failedTxs.map(fail => fail.tx);
|
|
145
152
|
this.log(`Dropping failed txs ${(await Tx.getHashes(failedTxData)).join(', ')}`);
|
|
@@ -166,8 +173,17 @@ export class Sequencer {
|
|
|
166
173
|
this.log(`Assembling block with txs ${processedValidTxs.map(tx => tx.hash).join(', ')}`);
|
|
167
174
|
|
|
168
175
|
const emptyTx = await processor.makeEmptyProcessedTx();
|
|
169
|
-
const block = await
|
|
170
|
-
|
|
176
|
+
const [rollupCircuitsDuration, block] = await elapsed(() =>
|
|
177
|
+
this.buildBlock(processedValidTxs, l1ToL2Messages, emptyTx, newGlobalVariables),
|
|
178
|
+
);
|
|
179
|
+
|
|
180
|
+
this.log(`Assembled block ${block.number}`, {
|
|
181
|
+
eventName: 'l2-block-built',
|
|
182
|
+
duration: workTimer.ms(),
|
|
183
|
+
publicProcessDuration: publicProcessorDuration,
|
|
184
|
+
rollupCircuitsDuration: rollupCircuitsDuration,
|
|
185
|
+
...block.getStats(),
|
|
186
|
+
} satisfies L2BlockBuiltStats);
|
|
171
187
|
|
|
172
188
|
await this.publishExtendedContractData(validTxs, block);
|
|
173
189
|
|
|
@@ -6,8 +6,9 @@ import {
|
|
|
6
6
|
PublicStateDB,
|
|
7
7
|
} from '@aztec/acir-simulator';
|
|
8
8
|
import { AztecAddress, CircuitsWasm, EthAddress, Fr, FunctionSelector, HistoricBlockData } from '@aztec/circuits.js';
|
|
9
|
+
import { computePublicDataTreeIndex } from '@aztec/circuits.js/abis';
|
|
9
10
|
import { ContractDataSource, ExtendedContractData, L1ToL2MessageSource, MerkleTreeId, Tx } from '@aztec/types';
|
|
10
|
-
import { MerkleTreeOperations
|
|
11
|
+
import { MerkleTreeOperations } from '@aztec/world-state';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Returns a new PublicExecutor simulator backed by the supplied merkle tree db and contract data source.
|
|
@@ -31,7 +32,7 @@ export function getPublicExecutor(
|
|
|
31
32
|
|
|
32
33
|
/**
|
|
33
34
|
* Implements the PublicContractsDB using a ContractDataSource.
|
|
34
|
-
*
|
|
35
|
+
* Progressively records contracts in transaction as they are processed in a block.
|
|
35
36
|
*/
|
|
36
37
|
export class ContractsDataSourcePublicDB implements PublicContractsDB {
|
|
37
38
|
cache = new Map<string, ExtendedContractData>();
|
|
@@ -106,7 +107,7 @@ class WorldStatePublicDB implements PublicStateDB {
|
|
|
106
107
|
* @returns The current value in the storage slot.
|
|
107
108
|
*/
|
|
108
109
|
public async storageRead(contract: AztecAddress, slot: Fr): Promise<Fr> {
|
|
109
|
-
const index =
|
|
110
|
+
const index = computePublicDataTreeIndex(await CircuitsWasm.get(), contract, slot).value;
|
|
110
111
|
const cached = this.writeCache.get(index);
|
|
111
112
|
if (cached !== undefined) return cached;
|
|
112
113
|
const value = await this.db.getLeafValue(MerkleTreeId.PUBLIC_DATA_TREE, index);
|
|
@@ -120,7 +121,7 @@ class WorldStatePublicDB implements PublicStateDB {
|
|
|
120
121
|
* @param newValue - The new value to store.
|
|
121
122
|
*/
|
|
122
123
|
public async storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<void> {
|
|
123
|
-
const index =
|
|
124
|
+
const index = computePublicDataTreeIndex(await CircuitsWasm.get(), contract, slot).value;
|
|
124
125
|
this.writeCache.set(index, newValue);
|
|
125
126
|
}
|
|
126
127
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PublicKernelInputs, PublicKernelPublicInputs, simulatePublicKernelCircuit } from '@aztec/circuits.js';
|
|
2
2
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { elapsed } from '@aztec/foundation/timer';
|
|
4
|
+
import { CircuitSimulationStats } from '@aztec/types/stats';
|
|
4
5
|
|
|
5
6
|
import { PublicKernelCircuitSimulator } from './index.js';
|
|
6
7
|
|
|
@@ -17,14 +18,14 @@ export class WasmPublicKernelCircuitSimulator implements PublicKernelCircuitSimu
|
|
|
17
18
|
*/
|
|
18
19
|
public async publicKernelCircuitPrivateInput(input: PublicKernelInputs): Promise<PublicKernelPublicInputs> {
|
|
19
20
|
if (!input.previousKernel.publicInputs.isPrivate) throw new Error(`Expected private kernel previous inputs`);
|
|
20
|
-
const [
|
|
21
|
+
const [duration, result] = await elapsed(() => simulatePublicKernelCircuit(input));
|
|
21
22
|
this.log(`Simulated public kernel circuit with private input`, {
|
|
22
23
|
eventName: 'circuit-simulation',
|
|
23
24
|
circuitName: 'public-kernel-private-input',
|
|
24
|
-
duration
|
|
25
|
+
duration,
|
|
25
26
|
inputSize: input.toBuffer().length,
|
|
26
27
|
outputSize: result.toBuffer().length,
|
|
27
|
-
});
|
|
28
|
+
} satisfies CircuitSimulationStats);
|
|
28
29
|
return result;
|
|
29
30
|
}
|
|
30
31
|
|
|
@@ -35,14 +36,14 @@ export class WasmPublicKernelCircuitSimulator implements PublicKernelCircuitSimu
|
|
|
35
36
|
*/
|
|
36
37
|
public async publicKernelCircuitNonFirstIteration(input: PublicKernelInputs): Promise<PublicKernelPublicInputs> {
|
|
37
38
|
if (input.previousKernel.publicInputs.isPrivate) throw new Error(`Expected public kernel previous inputs`);
|
|
38
|
-
const [
|
|
39
|
+
const [duration, result] = await elapsed(() => simulatePublicKernelCircuit(input));
|
|
39
40
|
this.log(`Simulated public kernel circuit non-first iteration`, {
|
|
40
41
|
eventName: 'circuit-simulation',
|
|
41
42
|
circuitName: 'public-kernel-non-first-iteration',
|
|
42
|
-
duration
|
|
43
|
+
duration,
|
|
43
44
|
inputSize: input.toBuffer().length,
|
|
44
45
|
outputSize: result.toBuffer().length,
|
|
45
|
-
});
|
|
46
|
+
} satisfies CircuitSimulationStats);
|
|
46
47
|
return result;
|
|
47
48
|
}
|
|
48
49
|
}
|
package/src/simulator/rollup.ts
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
} from '@aztec/circuits.js';
|
|
13
13
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
14
14
|
import { elapsed } from '@aztec/foundation/timer';
|
|
15
|
+
import { CircuitSimulationStats } from '@aztec/types/stats';
|
|
15
16
|
|
|
16
17
|
import { RollupSimulator } from './index.js';
|
|
17
18
|
|
|
@@ -28,7 +29,7 @@ export class WasmRollupCircuitSimulator implements RollupSimulator {
|
|
|
28
29
|
*/
|
|
29
30
|
public async baseRollupCircuit(input: BaseRollupInputs): Promise<BaseOrMergeRollupPublicInputs> {
|
|
30
31
|
const wasm = await CircuitsWasm.get();
|
|
31
|
-
const [
|
|
32
|
+
const [duration, result] = await elapsed(() => baseRollupSim(wasm, input));
|
|
32
33
|
if (result instanceof CircuitError) {
|
|
33
34
|
throw new CircuitError(result.code, result.message);
|
|
34
35
|
}
|
|
@@ -36,10 +37,10 @@ export class WasmRollupCircuitSimulator implements RollupSimulator {
|
|
|
36
37
|
this.log(`Simulated base rollup circuit`, {
|
|
37
38
|
eventName: 'circuit-simulation',
|
|
38
39
|
circuitName: 'base-rollup',
|
|
39
|
-
duration
|
|
40
|
+
duration,
|
|
40
41
|
inputSize: input.toBuffer().length,
|
|
41
42
|
outputSize: result.toBuffer().length,
|
|
42
|
-
});
|
|
43
|
+
} satisfies CircuitSimulationStats);
|
|
43
44
|
|
|
44
45
|
return Promise.resolve(result);
|
|
45
46
|
}
|
|
@@ -50,7 +51,7 @@ export class WasmRollupCircuitSimulator implements RollupSimulator {
|
|
|
50
51
|
*/
|
|
51
52
|
public async mergeRollupCircuit(input: MergeRollupInputs): Promise<BaseOrMergeRollupPublicInputs> {
|
|
52
53
|
const wasm = await CircuitsWasm.get();
|
|
53
|
-
const [
|
|
54
|
+
const [duration, result] = await elapsed(() => mergeRollupSim(wasm, input));
|
|
54
55
|
if (result instanceof CircuitError) {
|
|
55
56
|
throw new CircuitError(result.code, result.message);
|
|
56
57
|
}
|
|
@@ -58,10 +59,10 @@ export class WasmRollupCircuitSimulator implements RollupSimulator {
|
|
|
58
59
|
this.log(`Simulated merge rollup circuit`, {
|
|
59
60
|
eventName: 'circuit-simulation',
|
|
60
61
|
circuitName: 'merge-rollup',
|
|
61
|
-
duration
|
|
62
|
+
duration,
|
|
62
63
|
inputSize: input.toBuffer().length,
|
|
63
64
|
outputSize: result.toBuffer().length,
|
|
64
|
-
});
|
|
65
|
+
} satisfies CircuitSimulationStats);
|
|
65
66
|
|
|
66
67
|
return result;
|
|
67
68
|
}
|
|
@@ -73,7 +74,7 @@ export class WasmRollupCircuitSimulator implements RollupSimulator {
|
|
|
73
74
|
*/
|
|
74
75
|
public async rootRollupCircuit(input: RootRollupInputs): Promise<RootRollupPublicInputs> {
|
|
75
76
|
const wasm = await CircuitsWasm.get();
|
|
76
|
-
const [
|
|
77
|
+
const [duration, result] = await elapsed(() => rootRollupSim(wasm, input));
|
|
77
78
|
if (result instanceof CircuitError) {
|
|
78
79
|
throw new CircuitError(result.code, result.message);
|
|
79
80
|
}
|
|
@@ -81,10 +82,10 @@ export class WasmRollupCircuitSimulator implements RollupSimulator {
|
|
|
81
82
|
this.log(`Simulated root rollup circuit`, {
|
|
82
83
|
eventName: 'circuit-simulation',
|
|
83
84
|
circuitName: 'root-rollup',
|
|
84
|
-
duration
|
|
85
|
+
duration,
|
|
85
86
|
inputSize: input.toBuffer().length,
|
|
86
87
|
outputSize: result.toBuffer().length,
|
|
87
|
-
});
|
|
88
|
+
} satisfies CircuitSimulationStats);
|
|
88
89
|
|
|
89
90
|
return result;
|
|
90
91
|
}
|