@aztec/sequencer-client 0.26.5 → 0.26.6
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 +8 -5
- package/dest/index.d.ts +7 -7
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +8 -8
- package/dest/sequencer/abstract_phase_manager.d.ts +12 -15
- package/dest/sequencer/abstract_phase_manager.d.ts.map +1 -1
- package/dest/sequencer/abstract_phase_manager.js +32 -24
- package/dest/sequencer/app_logic_phase_manager.d.ts +1 -6
- package/dest/sequencer/app_logic_phase_manager.d.ts.map +1 -1
- package/dest/sequencer/app_logic_phase_manager.js +11 -8
- package/dest/sequencer/hints_builder.d.ts +13 -0
- package/dest/sequencer/hints_builder.d.ts.map +1 -0
- package/dest/sequencer/hints_builder.js +21 -0
- package/dest/sequencer/index.d.ts +1 -1
- package/dest/sequencer/index.d.ts.map +1 -1
- package/dest/sequencer/index.js +2 -2
- package/dest/sequencer/phase_manager_factory.d.ts.map +1 -1
- package/dest/sequencer/phase_manager_factory.js +5 -1
- package/dest/sequencer/processed_tx.d.ts +37 -2
- package/dest/sequencer/processed_tx.d.ts.map +1 -1
- package/dest/sequencer/processed_tx.js +67 -9
- package/dest/sequencer/public_processor.d.ts.map +1 -1
- package/dest/sequencer/public_processor.js +15 -9
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +1 -2
- package/dest/sequencer/setup_phase_manager.d.ts +1 -6
- package/dest/sequencer/setup_phase_manager.d.ts.map +1 -1
- package/dest/sequencer/setup_phase_manager.js +3 -5
- package/dest/sequencer/tail_phase_manager.d.ts +28 -0
- package/dest/sequencer/tail_phase_manager.d.ts.map +1 -0
- package/dest/sequencer/tail_phase_manager.js +32 -0
- package/dest/sequencer/teardown_phase_manager.d.ts +1 -6
- package/dest/sequencer/teardown_phase_manager.d.ts.map +1 -1
- package/dest/sequencer/teardown_phase_manager.js +3 -4
- package/dest/simulator/index.d.ts +7 -1
- package/dest/simulator/index.d.ts.map +1 -1
- package/dest/simulator/index.js +1 -1
- package/dest/simulator/public_kernel.d.ts +7 -1
- package/dest/simulator/public_kernel.d.ts.map +1 -1
- package/dest/simulator/public_kernel.js +22 -4
- package/package.json +13 -13
- package/src/block_builder/solo_block_builder.ts +6 -32
- package/src/index.ts +7 -7
- package/src/sequencer/abstract_phase_manager.ts +58 -48
- package/src/sequencer/app_logic_phase_manager.ts +12 -22
- package/src/sequencer/hints_builder.ts +56 -0
- package/src/sequencer/index.ts +1 -1
- package/src/sequencer/phase_manager_factory.ts +12 -0
- package/src/sequencer/processed_tx.ts +147 -17
- package/src/sequencer/public_processor.ts +25 -13
- package/src/sequencer/sequencer.ts +0 -1
- package/src/sequencer/setup_phase_manager.ts +5 -19
- package/src/sequencer/tail_phase_manager.ts +49 -0
- package/src/sequencer/teardown_phase_manager.ts +5 -18
- package/src/simulator/index.ts +7 -0
- package/src/simulator/public_kernel.ts +35 -5
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Tx } from '@aztec/circuit-types';
|
|
2
|
+
import { GlobalVariables, Header, Proof, PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
|
+
import { PublicExecutor, PublicStateDB } from '@aztec/simulator';
|
|
4
|
+
import { MerkleTreeOperations } from '@aztec/world-state';
|
|
5
|
+
import { PublicProver } from '../prover/index.js';
|
|
6
|
+
import { PublicKernelCircuitSimulator } from '../simulator/index.js';
|
|
7
|
+
import { ContractsDataSourcePublicDB } from '../simulator/public_executor.js';
|
|
8
|
+
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
9
|
+
import { FailedTx } from './processed_tx.js';
|
|
10
|
+
export declare class TailPhaseManager extends AbstractPhaseManager {
|
|
11
|
+
protected db: MerkleTreeOperations;
|
|
12
|
+
protected publicExecutor: PublicExecutor;
|
|
13
|
+
protected publicKernel: PublicKernelCircuitSimulator;
|
|
14
|
+
protected publicProver: PublicProver;
|
|
15
|
+
protected globalVariables: GlobalVariables;
|
|
16
|
+
protected historicalHeader: Header;
|
|
17
|
+
protected publicContractsDB: ContractsDataSourcePublicDB;
|
|
18
|
+
protected publicStateDB: PublicStateDB;
|
|
19
|
+
readonly phase: PublicKernelPhase;
|
|
20
|
+
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, publicProver: PublicProver, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, phase?: PublicKernelPhase);
|
|
21
|
+
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs, previousPublicKernelProof: Proof): Promise<{
|
|
22
|
+
publicKernelOutput: PublicKernelCircuitPublicInputs;
|
|
23
|
+
publicKernelProof: Proof;
|
|
24
|
+
revertReason: undefined;
|
|
25
|
+
}>;
|
|
26
|
+
rollback(tx: Tx, err: unknown): Promise<FailedTx>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=tail_phase_manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tail_phase_manager.d.ts","sourceRoot":"","sources":["../../src/sequencer/tail_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,qBAAa,gBAAiB,SAAQ,oBAAoB;IAEtD,SAAS,CAAC,EAAE,EAAE,oBAAoB;IAClC,SAAS,CAAC,cAAc,EAAE,cAAc;IACxC,SAAS,CAAC,YAAY,EAAE,4BAA4B;IACpD,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,gBAAgB,EAAE,MAAM;IAClC,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;aACtB,KAAK,EAAE,iBAAiB;gBAR9B,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EACtB,KAAK,GAAE,iBAA0C;IAK7D,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,KAAK;;;;;IAc5G,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;CAQxD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
2
|
+
export class TailPhaseManager extends AbstractPhaseManager {
|
|
3
|
+
constructor(db, publicExecutor, publicKernel, publicProver, globalVariables, historicalHeader, publicContractsDB, publicStateDB, phase = PublicKernelPhase.TAIL) {
|
|
4
|
+
super(db, publicExecutor, publicKernel, publicProver, globalVariables, historicalHeader, phase);
|
|
5
|
+
this.db = db;
|
|
6
|
+
this.publicExecutor = publicExecutor;
|
|
7
|
+
this.publicKernel = publicKernel;
|
|
8
|
+
this.publicProver = publicProver;
|
|
9
|
+
this.globalVariables = globalVariables;
|
|
10
|
+
this.historicalHeader = historicalHeader;
|
|
11
|
+
this.publicContractsDB = publicContractsDB;
|
|
12
|
+
this.publicStateDB = publicStateDB;
|
|
13
|
+
this.phase = phase;
|
|
14
|
+
}
|
|
15
|
+
async handle(tx, previousPublicKernelOutput, previousPublicKernelProof) {
|
|
16
|
+
this.log(`Processing tx ${tx.getTxHash()}`);
|
|
17
|
+
this.log(`Executing tail circuit for tx ${tx.getTxHash()}`);
|
|
18
|
+
const [publicKernelOutput, publicKernelProof] = await this.runKernelCircuit(previousPublicKernelOutput, previousPublicKernelProof);
|
|
19
|
+
// commit the state updates from this transaction
|
|
20
|
+
await this.publicStateDB.commit();
|
|
21
|
+
return { publicKernelOutput, publicKernelProof, revertReason: undefined };
|
|
22
|
+
}
|
|
23
|
+
async rollback(tx, err) {
|
|
24
|
+
this.log.warn(`Error processing tx ${tx.getTxHash()}: ${err}`);
|
|
25
|
+
await this.publicStateDB.rollback();
|
|
26
|
+
return {
|
|
27
|
+
tx,
|
|
28
|
+
error: err instanceof Error ? err : new Error('Unknown error'),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbF9waGFzZV9tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcXVlbmNlci90YWlsX3BoYXNlX21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHdEYsTUFBTSxPQUFPLGdCQUFpQixTQUFRLG9CQUFvQjtJQUN4RCxZQUNZLEVBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLFlBQTBDLEVBQzFDLFlBQTBCLEVBQzFCLGVBQWdDLEVBQ2hDLGdCQUF3QixFQUN4QixpQkFBOEMsRUFDOUMsYUFBNEIsRUFDdEIsUUFBMkIsaUJBQWlCLENBQUMsSUFBSTtRQUVqRSxLQUFLLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQVZ0RixPQUFFLEdBQUYsRUFBRSxDQUFzQjtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQThCO1FBQzFDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE2QjtRQUM5QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN0QixVQUFLLEdBQUwsS0FBSyxDQUE0QztJQUduRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFNLEVBQUUsMEJBQTJELEVBQUUseUJBQWdDO1FBQ2hILElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1RCxNQUFNLENBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FDekUsMEJBQTBCLEVBQzFCLHlCQUF5QixDQUMxQixDQUFDO1FBRUYsaURBQWlEO1FBQ2pELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVsQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzVFLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQU0sRUFBRSxHQUFZO1FBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEMsT0FBTztZQUNMLEVBQUU7WUFDRixLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUM7U0FDL0QsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
|
|
@@ -22,14 +22,9 @@ export declare class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
22
22
|
phase: PublicKernelPhase;
|
|
23
23
|
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, publicProver: PublicProver, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, phase?: PublicKernelPhase);
|
|
24
24
|
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs, previousPublicKernelProof: Proof): Promise<{
|
|
25
|
-
/**
|
|
26
|
-
* the output of the public kernel circuit for this phase
|
|
27
|
-
*/
|
|
28
25
|
publicKernelOutput: PublicKernelCircuitPublicInputs;
|
|
29
|
-
/**
|
|
30
|
-
* the proof of the public kernel circuit for this phase
|
|
31
|
-
*/
|
|
32
26
|
publicKernelProof: Proof;
|
|
27
|
+
revertReason: import("@aztec/circuit-types").SimulationError | undefined;
|
|
33
28
|
}>;
|
|
34
29
|
rollback(tx: Tx, err: unknown): Promise<FailedTx>;
|
|
35
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teardown_phase_manager.d.ts","sourceRoot":"","sources":["../../src/sequencer/teardown_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,oBAAoB;IAE1D,SAAS,CAAC,EAAE,EAAE,oBAAoB;IAClC,SAAS,CAAC,cAAc,EAAE,cAAc;IACxC,SAAS,CAAC,YAAY,EAAE,4BAA4B;IACpD,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,gBAAgB,EAAE,MAAM;IAClC,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;IAC/B,KAAK,EAAE,iBAAiB;gBARrB,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EAC/B,KAAK,GAAE,iBAA8C;
|
|
1
|
+
{"version":3,"file":"teardown_phase_manager.d.ts","sourceRoot":"","sources":["../../src/sequencer/teardown_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,oBAAoB;IAE1D,SAAS,CAAC,EAAE,EAAE,oBAAoB;IAClC,SAAS,CAAC,cAAc,EAAE,cAAc;IACxC,SAAS,CAAC,YAAY,EAAE,4BAA4B;IACpD,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,gBAAgB,EAAE,MAAM;IAClC,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;IAC/B,KAAK,EAAE,iBAAiB;gBARrB,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EAC/B,KAAK,GAAE,iBAA8C;IAK/C,MAAM,CACnB,EAAE,EAAE,EAAE,EACN,0BAA0B,EAAE,+BAA+B,EAC3D,yBAAyB,EAAE,KAAK;;;;;IAa5B,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;CAQxD"}
|
|
@@ -17,12 +17,11 @@ export class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
17
17
|
}
|
|
18
18
|
async handle(tx, previousPublicKernelOutput, previousPublicKernelProof) {
|
|
19
19
|
this.log(`Processing tx ${tx.getTxHash()}`);
|
|
20
|
-
|
|
21
|
-
const [publicKernelOutput, publicKernelProof, newUnencryptedFunctionLogs] = await this.processEnqueuedPublicCalls(tx, previousPublicKernelOutput, previousPublicKernelProof);
|
|
20
|
+
const [publicKernelOutput, publicKernelProof, newUnencryptedFunctionLogs, revertReason] = await this.processEnqueuedPublicCalls(tx, previousPublicKernelOutput, previousPublicKernelProof);
|
|
22
21
|
tx.unencryptedLogs.addFunctionLogs(newUnencryptedFunctionLogs);
|
|
23
22
|
// commit the state updates from this transaction
|
|
24
23
|
await this.publicStateDB.commit();
|
|
25
|
-
return { publicKernelOutput, publicKernelProof };
|
|
24
|
+
return { publicKernelOutput, publicKernelProof, revertReason };
|
|
26
25
|
}
|
|
27
26
|
async rollback(tx, err) {
|
|
28
27
|
this.log.warn(`Error processing tx ${tx.getTxHash()}: ${err}`);
|
|
@@ -33,4 +32,4 @@ export class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
33
32
|
};
|
|
34
33
|
}
|
|
35
34
|
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhcmRvd25fcGhhc2VfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXF1ZW5jZXIvdGVhcmRvd25fcGhhc2VfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUd0Rjs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUFDNUQsWUFDWSxFQUF3QixFQUN4QixjQUE4QixFQUM5QixZQUEwQyxFQUMxQyxZQUEwQixFQUMxQixlQUFnQyxFQUNoQyxnQkFBd0IsRUFDeEIsaUJBQThDLEVBQzlDLGFBQTRCLEVBQy9CLFFBQTJCLGlCQUFpQixDQUFDLFFBQVE7UUFFNUQsS0FBSyxDQUFDLEVBQUUsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFWdEYsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUE4QjtRQUMxQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDL0IsVUFBSyxHQUFMLEtBQUssQ0FBZ0Q7SUFHOUQsQ0FBQztJQUVRLEtBQUssQ0FBQyxNQUFNLENBQ25CLEVBQU0sRUFDTiwwQkFBMkQsRUFDM0QseUJBQWdDO1FBRWhDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLDBCQUEwQixFQUFFLFlBQVksQ0FBQyxHQUNyRixNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLEVBQUUsMEJBQTBCLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUNuRyxFQUFFLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRS9ELGlEQUFpRDtRQUNqRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQU0sRUFBRSxHQUFZO1FBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEMsT0FBTztZQUNMLEVBQUU7WUFDRixLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUM7U0FDL0QsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseOrMergeRollupPublicInputs, BaseRollupInputs, MergeRollupInputs, PublicKernelCircuitPrivateInputs, PublicKernelCircuitPublicInputs, RootRollupInputs, RootRollupPublicInputs } from '@aztec/circuits.js';
|
|
1
|
+
import { BaseOrMergeRollupPublicInputs, BaseRollupInputs, MergeRollupInputs, PublicKernelCircuitPrivateInputs, PublicKernelCircuitPublicInputs, PublicKernelTailCircuitPrivateInputs, RootRollupInputs, RootRollupPublicInputs } from '@aztec/circuits.js';
|
|
2
2
|
/**
|
|
3
3
|
* Circuit simulator for the rollup circuits.
|
|
4
4
|
*/
|
|
@@ -44,6 +44,12 @@ export interface PublicKernelCircuitSimulator {
|
|
|
44
44
|
* @returns The public inputs as outputs of the simulation.
|
|
45
45
|
*/
|
|
46
46
|
publicKernelCircuitTeardown(inputs: PublicKernelCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
47
|
+
/**
|
|
48
|
+
* Simulates the public kernel tail circuit from its inputs.
|
|
49
|
+
* @param inputs - Inputs to the circuit.
|
|
50
|
+
* @returns The public inputs as outputs of the simulation.
|
|
51
|
+
*/
|
|
52
|
+
publicKernelCircuitTail(inputs: PublicKernelTailCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
47
53
|
}
|
|
48
54
|
export * from './acvm_wasm.js';
|
|
49
55
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,iBAAiB,EACjB,gCAAgC,EAChC,+BAA+B,EAC/B,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACnF;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACrF;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC7E;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,wBAAwB,CAAC,MAAM,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC7G;;;;OAIG;IACH,2BAA2B,CAAC,MAAM,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAChH;;;;OAIG;IACH,2BAA2B,CAAC,MAAM,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;CACjH;AACD,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,iBAAiB,EACjB,gCAAgC,EAChC,+BAA+B,EAC/B,oCAAoC,EACpC,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACnF;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACrF;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC7E;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,wBAAwB,CAAC,MAAM,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC7G;;;;OAIG;IACH,2BAA2B,CAAC,MAAM,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAChH;;;;OAIG;IACH,2BAA2B,CAAC,MAAM,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAChH;;;;OAIG;IACH,uBAAuB,CAAC,MAAM,EAAE,oCAAoC,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;CACjH;AACD,cAAc,gBAAgB,CAAC"}
|
package/dest/simulator/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './acvm_wasm.js';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2ltdWxhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdFQSxjQUFjLGdCQUFnQixDQUFDIn0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PublicKernelCircuitPrivateInputs, PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
1
|
+
import { PublicKernelCircuitPrivateInputs, PublicKernelCircuitPublicInputs, PublicKernelTailCircuitPrivateInputs } from '@aztec/circuits.js';
|
|
2
2
|
import { PublicKernelCircuitSimulator } from './index.js';
|
|
3
3
|
import { SimulationProvider } from './simulation_provider.js';
|
|
4
4
|
/**
|
|
@@ -27,5 +27,11 @@ export declare class RealPublicKernelCircuitSimulator implements PublicKernelCir
|
|
|
27
27
|
* @returns The public inputs as outputs of the simulation.
|
|
28
28
|
*/
|
|
29
29
|
publicKernelCircuitTeardown(input: PublicKernelCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
30
|
+
/**
|
|
31
|
+
* Simulates the public kernel tail circuit from its inputs.
|
|
32
|
+
* @param input - Inputs to the circuit.
|
|
33
|
+
* @returns The public inputs as outputs of the simulation.
|
|
34
|
+
*/
|
|
35
|
+
publicKernelCircuitTail(input: PublicKernelTailCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
30
36
|
}
|
|
31
37
|
//# sourceMappingURL=public_kernel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_kernel.d.ts","sourceRoot":"","sources":["../../src/simulator/public_kernel.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"public_kernel.d.ts","sourceRoot":"","sources":["../../src/simulator/public_kernel.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,oCAAoC,EACrC,MAAM,oBAAoB,CAAC;AAkB5B,OAAO,EAAE,4BAA4B,EAAiB,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;GAEG;AACH,qBAAa,gCAAiC,YAAW,4BAA4B;IAMvE,OAAO,CAAC,SAAS;IAL7B,OAAO,CAAC,GAAG,CAAsD;IAGjE,OAAO,CAAC,aAAa,CAAsC;gBAEvC,SAAS,EAAE,kBAAkB;IAEjD;;;;OAIG;IACU,wBAAwB,CACnC,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,+BAA+B,CAAC;IAmB3C;;;;OAIG;IACU,2BAA2B,CACtC,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,+BAA+B,CAAC;IAmB3C;;;;OAIG;IACU,2BAA2B,CACtC,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,+BAA+B,CAAC;IAmB3C;;;;OAIG;IACU,uBAAuB,CAClC,KAAK,EAAE,oCAAoC,GAC1C,OAAO,CAAC,+BAA+B,CAAC;CAe5C"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
2
|
import { elapsed } from '@aztec/foundation/timer';
|
|
3
|
-
import { PublicKernelAppLogicArtifact, PublicKernelSetupArtifact, PublicKernelTeardownArtifact, convertPublicInnerRollupInputsToWitnessMap, convertPublicInnerRollupOutputFromWitnessMap, convertPublicSetupRollupInputsToWitnessMap, convertPublicSetupRollupOutputFromWitnessMap,
|
|
3
|
+
import { PublicKernelAppLogicArtifact, PublicKernelSetupArtifact, PublicKernelTailArtifact, PublicKernelTeardownArtifact, convertPublicInnerRollupInputsToWitnessMap, convertPublicInnerRollupOutputFromWitnessMap, convertPublicSetupRollupInputsToWitnessMap, convertPublicSetupRollupOutputFromWitnessMap, convertPublicTailInputsToWitnessMap, convertPublicTailOutputFromWitnessMap, convertPublicTeardownRollupInputsToWitnessMap, convertPublicTeardownRollupOutputFromWitnessMap, } from '@aztec/noir-protocol-circuits-types';
|
|
4
4
|
import { WASMSimulator } from './index.js';
|
|
5
5
|
/**
|
|
6
6
|
* Implements the PublicKernelCircuitSimulator.
|
|
@@ -63,9 +63,9 @@ export class RealPublicKernelCircuitSimulator {
|
|
|
63
63
|
if (!input.previousKernel.publicInputs.needsTeardown) {
|
|
64
64
|
throw new Error(`Expected previous kernel inputs to need teardown`);
|
|
65
65
|
}
|
|
66
|
-
const inputWitness =
|
|
66
|
+
const inputWitness = convertPublicTeardownRollupInputsToWitnessMap(input);
|
|
67
67
|
const [duration, witness] = await elapsed(() => this.wasmSimulator.simulateCircuit(inputWitness, PublicKernelTeardownArtifact));
|
|
68
|
-
const result =
|
|
68
|
+
const result = convertPublicTeardownRollupOutputFromWitnessMap(witness);
|
|
69
69
|
this.log(`Simulated public kernel teardown circuit`, {
|
|
70
70
|
eventName: 'circuit-simulation',
|
|
71
71
|
circuitName: 'public-kernel-teardown',
|
|
@@ -75,5 +75,23 @@ export class RealPublicKernelCircuitSimulator {
|
|
|
75
75
|
});
|
|
76
76
|
return result;
|
|
77
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Simulates the public kernel tail circuit from its inputs.
|
|
80
|
+
* @param input - Inputs to the circuit.
|
|
81
|
+
* @returns The public inputs as outputs of the simulation.
|
|
82
|
+
*/
|
|
83
|
+
async publicKernelCircuitTail(input) {
|
|
84
|
+
const inputWitness = convertPublicTailInputsToWitnessMap(input);
|
|
85
|
+
const [duration, witness] = await elapsed(() => this.wasmSimulator.simulateCircuit(inputWitness, PublicKernelTailArtifact));
|
|
86
|
+
const result = convertPublicTailOutputFromWitnessMap(witness);
|
|
87
|
+
this.log(`Simulated public kernel tail circuit`, {
|
|
88
|
+
eventName: 'circuit-simulation',
|
|
89
|
+
circuitName: 'public-kernel-tail',
|
|
90
|
+
duration,
|
|
91
|
+
inputSize: input.toBuffer().length,
|
|
92
|
+
outputSize: result.toBuffer().length,
|
|
93
|
+
});
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
78
96
|
}
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2tlcm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW11bGF0b3IvcHVibGljX2tlcm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qix5QkFBeUIsRUFDekIsd0JBQXdCLEVBQ3hCLDRCQUE0QixFQUM1QiwwQ0FBMEMsRUFDMUMsNENBQTRDLEVBQzVDLDBDQUEwQyxFQUMxQyw0Q0FBNEMsRUFDNUMsbUNBQW1DLEVBQ25DLHFDQUFxQyxFQUNyQyw2Q0FBNkMsRUFDN0MsK0NBQStDLEdBQ2hELE1BQU0scUNBQXFDLENBQUM7QUFFN0MsT0FBTyxFQUFnQyxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHekU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0NBQWdDO0lBTTNDLFlBQW9CLFNBQTZCO1FBQTdCLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBTHpDLFFBQUcsR0FBRyxpQkFBaUIsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBRWpFLHNEQUFzRDtRQUM5QyxrQkFBYSxHQUFrQixJQUFJLGFBQWEsRUFBRSxDQUFDO0lBRVAsQ0FBQztJQUVyRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLHdCQUF3QixDQUNuQyxLQUF1QztRQUV2QyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRywwQ0FBMEMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"typedocOptions": {
|
|
@@ -21,18 +21,18 @@
|
|
|
21
21
|
"test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@aztec/circuit-types": "0.26.
|
|
25
|
-
"@aztec/circuits.js": "0.26.
|
|
26
|
-
"@aztec/ethereum": "0.26.
|
|
27
|
-
"@aztec/foundation": "0.26.
|
|
28
|
-
"@aztec/l1-artifacts": "0.26.
|
|
29
|
-
"@aztec/merkle-tree": "0.26.
|
|
30
|
-
"@aztec/noir-protocol-circuits-types": "0.26.
|
|
31
|
-
"@aztec/p2p": "0.26.
|
|
32
|
-
"@aztec/protocol-contracts": "0.26.
|
|
33
|
-
"@aztec/simulator": "0.26.
|
|
34
|
-
"@aztec/types": "0.26.
|
|
35
|
-
"@aztec/world-state": "0.26.
|
|
24
|
+
"@aztec/circuit-types": "0.26.6",
|
|
25
|
+
"@aztec/circuits.js": "0.26.6",
|
|
26
|
+
"@aztec/ethereum": "0.26.6",
|
|
27
|
+
"@aztec/foundation": "0.26.6",
|
|
28
|
+
"@aztec/l1-artifacts": "0.26.6",
|
|
29
|
+
"@aztec/merkle-tree": "0.26.6",
|
|
30
|
+
"@aztec/noir-protocol-circuits-types": "0.26.6",
|
|
31
|
+
"@aztec/p2p": "0.26.6",
|
|
32
|
+
"@aztec/protocol-contracts": "0.26.6",
|
|
33
|
+
"@aztec/simulator": "0.26.6",
|
|
34
|
+
"@aztec/types": "0.26.6",
|
|
35
|
+
"@aztec/world-state": "0.26.6",
|
|
36
36
|
"@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
|
|
37
37
|
"@noir-lang/types": "portal:../../noir/packages/types",
|
|
38
38
|
"lodash.chunk": "^4.2.0",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Body,
|
|
1
|
+
import { Body, L2Block, MerkleTreeId, TxEffect } from '@aztec/circuit-types';
|
|
2
2
|
import { CircuitSimulationStats } from '@aztec/circuit-types/stats';
|
|
3
3
|
import {
|
|
4
4
|
ARCHIVE_HEIGHT,
|
|
@@ -7,13 +7,10 @@ import {
|
|
|
7
7
|
BaseRollupInputs,
|
|
8
8
|
CONTRACT_SUBTREE_HEIGHT,
|
|
9
9
|
CONTRACT_SUBTREE_SIBLING_PATH_LENGTH,
|
|
10
|
-
CombinedAccumulatedData,
|
|
11
10
|
ConstantRollupData,
|
|
12
11
|
GlobalVariables,
|
|
13
12
|
L1_TO_L2_MSG_SUBTREE_HEIGHT,
|
|
14
13
|
L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
|
|
15
|
-
MAX_NEW_CONTRACTS_PER_TX,
|
|
16
|
-
MAX_NEW_NOTE_HASHES_PER_TX,
|
|
17
14
|
MAX_NEW_NULLIFIERS_PER_TX,
|
|
18
15
|
MAX_PUBLIC_DATA_READS_PER_TX,
|
|
19
16
|
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
@@ -40,8 +37,6 @@ import {
|
|
|
40
37
|
RollupTypes,
|
|
41
38
|
RootRollupInputs,
|
|
42
39
|
RootRollupPublicInputs,
|
|
43
|
-
SideEffect,
|
|
44
|
-
SideEffectLinkedToNoteHash,
|
|
45
40
|
StateDiffHints,
|
|
46
41
|
StateReference,
|
|
47
42
|
VK_TREE_HEIGHT,
|
|
@@ -57,10 +52,11 @@ import { elapsed } from '@aztec/foundation/timer';
|
|
|
57
52
|
import { MerkleTreeOperations } from '@aztec/world-state';
|
|
58
53
|
|
|
59
54
|
import chunk from 'lodash.chunk';
|
|
55
|
+
import { inspect } from 'util';
|
|
60
56
|
|
|
61
57
|
import { VerificationKeys } from '../mocks/verification_keys.js';
|
|
62
58
|
import { RollupProver } from '../prover/index.js';
|
|
63
|
-
import { ProcessedTx } from '../sequencer/processed_tx.js';
|
|
59
|
+
import { ProcessedTx, toTxEffect } from '../sequencer/processed_tx.js';
|
|
64
60
|
import { RollupSimulator } from '../simulator/index.js';
|
|
65
61
|
import { BlockBuilder } from './index.js';
|
|
66
62
|
import { TreeNames } from './types.js';
|
|
@@ -107,30 +103,7 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
107
103
|
const [circuitsOutput, proof] = await this.runCircuits(globalVariables, txs, newL1ToL2Messages);
|
|
108
104
|
|
|
109
105
|
// Collect all new nullifiers, commitments, and contracts from all txs in this block
|
|
110
|
-
const txEffects: TxEffect[] = txs.map(
|
|
111
|
-
tx =>
|
|
112
|
-
new TxEffect(
|
|
113
|
-
tx.data.combinedData.newNoteHashes.map((c: SideEffect) => c.value) as Tuple<
|
|
114
|
-
Fr,
|
|
115
|
-
typeof MAX_NEW_NOTE_HASHES_PER_TX
|
|
116
|
-
>,
|
|
117
|
-
tx.data.combinedData.newNullifiers.map((n: SideEffectLinkedToNoteHash) => n.value) as Tuple<
|
|
118
|
-
Fr,
|
|
119
|
-
typeof MAX_NEW_NULLIFIERS_PER_TX
|
|
120
|
-
>,
|
|
121
|
-
tx.data.combinedData.newL2ToL1Msgs,
|
|
122
|
-
tx.data.combinedData.publicDataUpdateRequests.map(t => new PublicDataWrite(t.leafSlot, t.newValue)) as Tuple<
|
|
123
|
-
PublicDataWrite,
|
|
124
|
-
typeof MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
125
|
-
>,
|
|
126
|
-
tx.data.combinedData.newContracts.map(cd => cd.hash()) as Tuple<Fr, typeof MAX_NEW_CONTRACTS_PER_TX>,
|
|
127
|
-
tx.data.combinedData.newContracts.map(
|
|
128
|
-
cd => new ContractData(cd.contractAddress, cd.portalContractAddress),
|
|
129
|
-
) as Tuple<ContractData, typeof MAX_NEW_CONTRACTS_PER_TX>,
|
|
130
|
-
tx.encryptedLogs || new TxL2Logs([]),
|
|
131
|
-
tx.unencryptedLogs || new TxL2Logs([]),
|
|
132
|
-
),
|
|
133
|
-
);
|
|
106
|
+
const txEffects: TxEffect[] = txs.map(tx => toTxEffect(tx));
|
|
134
107
|
|
|
135
108
|
const blockBody = new Body(padArrayEnd(newL1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP), txEffects);
|
|
136
109
|
|
|
@@ -141,6 +114,7 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
141
114
|
});
|
|
142
115
|
|
|
143
116
|
if (!l2Block.body.getTxsEffectsHash().equals(circuitsOutput.header.contentCommitment.txsEffectsHash)) {
|
|
117
|
+
this.debug(inspect(blockBody));
|
|
144
118
|
throw new Error(
|
|
145
119
|
`Txs effects hash mismatch, ${l2Block.body
|
|
146
120
|
.getTxsEffectsHash()
|
|
@@ -479,7 +453,7 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
479
453
|
protected getKernelDataFor(tx: ProcessedTx): RollupKernelData {
|
|
480
454
|
const inputs = new RollupKernelCircuitPublicInputs(
|
|
481
455
|
tx.data.aggregationObject,
|
|
482
|
-
|
|
456
|
+
tx.data.combinedData,
|
|
483
457
|
tx.data.constants,
|
|
484
458
|
);
|
|
485
459
|
return new RollupKernelData(
|
package/src/index.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
export * from './sequencer/index.js';
|
|
2
|
-
export * from './config.js';
|
|
3
|
-
export * from './publisher/index.js';
|
|
4
1
|
export * from './client/index.js';
|
|
2
|
+
export * from './config.js';
|
|
5
3
|
export * from './mocks/verification_keys.js';
|
|
4
|
+
export * from './publisher/index.js';
|
|
5
|
+
export * from './sequencer/index.js';
|
|
6
6
|
|
|
7
7
|
// Used by the node to simulate public parts of transactions. Should these be moved to a shared library?
|
|
8
|
-
export * from './sequencer/public_processor.js';
|
|
9
8
|
export * from './global_variable_builder/index.js';
|
|
9
|
+
export * from './sequencer/public_processor.js';
|
|
10
10
|
|
|
11
11
|
// Used by publisher test in e2e
|
|
12
|
-
export { RealRollupCircuitSimulator } from './simulator/rollup.js';
|
|
13
|
-
export { EmptyRollupProver } from './prover/empty.js';
|
|
14
12
|
export { SoloBlockBuilder } from './block_builder/solo_block_builder.js';
|
|
13
|
+
export { EmptyRollupProver } from './prover/empty.js';
|
|
14
|
+
export { makeEmptyProcessedTx, makeProcessedTx, partitionReverts } from './sequencer/processed_tx.js';
|
|
15
15
|
export { WASMSimulator } from './simulator/acvm_wasm.js';
|
|
16
|
+
export { RealRollupCircuitSimulator } from './simulator/rollup.js';
|
|
16
17
|
export { SimulationProvider } from './simulator/simulation_provider.js';
|
|
17
|
-
export { makeProcessedTx, makeEmptyProcessedTx } from './sequencer/processed_tx.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FunctionL2Logs, MerkleTreeId, Tx } from '@aztec/circuit-types';
|
|
1
|
+
import { FunctionL2Logs, MerkleTreeId, SimulationError, Tx } from '@aztec/circuit-types';
|
|
2
2
|
import {
|
|
3
3
|
AztecAddress,
|
|
4
4
|
CallRequest,
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
MAX_NEW_NULLIFIERS_PER_CALL,
|
|
14
14
|
MAX_NON_REVERTIBLE_PUBLIC_DATA_READS_PER_TX,
|
|
15
15
|
MAX_NON_REVERTIBLE_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
16
|
+
MAX_NULLIFIER_READ_REQUESTS_PER_CALL,
|
|
16
17
|
MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,
|
|
17
18
|
MAX_PUBLIC_DATA_READS_PER_CALL,
|
|
18
19
|
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,
|
|
@@ -21,8 +22,6 @@ import {
|
|
|
21
22
|
MembershipWitness,
|
|
22
23
|
PrivateKernelTailCircuitPublicInputs,
|
|
23
24
|
Proof,
|
|
24
|
-
PublicAccumulatedNonRevertibleData,
|
|
25
|
-
PublicAccumulatedRevertibleData,
|
|
26
25
|
PublicCallData,
|
|
27
26
|
PublicCallRequest,
|
|
28
27
|
PublicCallStackItem,
|
|
@@ -32,7 +31,9 @@ import {
|
|
|
32
31
|
PublicKernelCircuitPrivateInputs,
|
|
33
32
|
PublicKernelCircuitPublicInputs,
|
|
34
33
|
PublicKernelData,
|
|
34
|
+
PublicKernelTailCircuitPrivateInputs,
|
|
35
35
|
RETURN_VALUES_LENGTH,
|
|
36
|
+
ReadRequest,
|
|
36
37
|
SideEffect,
|
|
37
38
|
SideEffectLinkedToNoteHash,
|
|
38
39
|
VK_TREE_HEIGHT,
|
|
@@ -56,21 +57,25 @@ import { env } from 'process';
|
|
|
56
57
|
import { getVerificationKeys } from '../mocks/verification_keys.js';
|
|
57
58
|
import { PublicProver } from '../prover/index.js';
|
|
58
59
|
import { PublicKernelCircuitSimulator } from '../simulator/index.js';
|
|
60
|
+
import { HintsBuilder } from './hints_builder.js';
|
|
59
61
|
import { FailedTx } from './processed_tx.js';
|
|
60
62
|
|
|
61
63
|
export enum PublicKernelPhase {
|
|
62
64
|
SETUP = 'setup',
|
|
63
65
|
APP_LOGIC = 'app-logic',
|
|
64
66
|
TEARDOWN = 'teardown',
|
|
67
|
+
TAIL = 'tail',
|
|
65
68
|
}
|
|
66
69
|
|
|
67
70
|
export const PhaseIsRevertible: Record<PublicKernelPhase, boolean> = {
|
|
68
71
|
[PublicKernelPhase.SETUP]: false,
|
|
69
72
|
[PublicKernelPhase.APP_LOGIC]: true,
|
|
70
73
|
[PublicKernelPhase.TEARDOWN]: false,
|
|
74
|
+
[PublicKernelPhase.TAIL]: false,
|
|
71
75
|
};
|
|
72
76
|
|
|
73
77
|
export abstract class AbstractPhaseManager {
|
|
78
|
+
protected hintsBuilder: HintsBuilder;
|
|
74
79
|
protected log: DebugLogger;
|
|
75
80
|
constructor(
|
|
76
81
|
protected db: MerkleTreeOperations,
|
|
@@ -81,6 +86,7 @@ export abstract class AbstractPhaseManager {
|
|
|
81
86
|
protected historicalHeader: Header,
|
|
82
87
|
public phase: PublicKernelPhase,
|
|
83
88
|
) {
|
|
89
|
+
this.hintsBuilder = new HintsBuilder(db);
|
|
84
90
|
this.log = createDebugLogger(`aztec:sequencer:${phase}`);
|
|
85
91
|
}
|
|
86
92
|
/**
|
|
@@ -102,6 +108,10 @@ export abstract class AbstractPhaseManager {
|
|
|
102
108
|
* the proof of the public kernel circuit for this phase
|
|
103
109
|
*/
|
|
104
110
|
publicKernelProof: Proof;
|
|
111
|
+
/**
|
|
112
|
+
* revert reason, if any
|
|
113
|
+
*/
|
|
114
|
+
revertReason: SimulationError | undefined;
|
|
105
115
|
}>;
|
|
106
116
|
abstract rollback(tx: Tx, err: unknown): Promise<FailedTx>;
|
|
107
117
|
|
|
@@ -127,6 +137,7 @@ export abstract class AbstractPhaseManager {
|
|
|
127
137
|
[PublicKernelPhase.SETUP]: [],
|
|
128
138
|
[PublicKernelPhase.APP_LOGIC]: [],
|
|
129
139
|
[PublicKernelPhase.TEARDOWN]: [],
|
|
140
|
+
[PublicKernelPhase.TAIL]: [],
|
|
130
141
|
};
|
|
131
142
|
}
|
|
132
143
|
|
|
@@ -140,12 +151,14 @@ export abstract class AbstractPhaseManager {
|
|
|
140
151
|
[PublicKernelPhase.SETUP]: [],
|
|
141
152
|
[PublicKernelPhase.APP_LOGIC]: publicCallsStack,
|
|
142
153
|
[PublicKernelPhase.TEARDOWN]: [],
|
|
154
|
+
[PublicKernelPhase.TAIL]: [],
|
|
143
155
|
};
|
|
144
156
|
} else {
|
|
145
157
|
return {
|
|
146
158
|
[PublicKernelPhase.SETUP]: publicCallsStack.slice(0, firstRevertibleCallIndex - 1),
|
|
147
159
|
[PublicKernelPhase.APP_LOGIC]: publicCallsStack.slice(firstRevertibleCallIndex),
|
|
148
160
|
[PublicKernelPhase.TEARDOWN]: [publicCallsStack[firstRevertibleCallIndex - 1]],
|
|
161
|
+
[PublicKernelPhase.TAIL]: [],
|
|
149
162
|
};
|
|
150
163
|
}
|
|
151
164
|
}
|
|
@@ -158,55 +171,18 @@ export abstract class AbstractPhaseManager {
|
|
|
158
171
|
return calls;
|
|
159
172
|
}
|
|
160
173
|
|
|
161
|
-
public static getKernelOutputAndProof(
|
|
162
|
-
tx: Tx,
|
|
163
|
-
publicKernelPublicInput?: PublicKernelCircuitPublicInputs,
|
|
164
|
-
previousPublicKernelProof?: Proof,
|
|
165
|
-
): {
|
|
166
|
-
/**
|
|
167
|
-
* the output of the public kernel circuit for this phase
|
|
168
|
-
*/
|
|
169
|
-
publicKernelPublicInput: PublicKernelCircuitPublicInputs;
|
|
170
|
-
/**
|
|
171
|
-
* the proof of the public kernel circuit for this phase
|
|
172
|
-
*/
|
|
173
|
-
publicKernelProof: Proof;
|
|
174
|
-
} {
|
|
175
|
-
if (publicKernelPublicInput && previousPublicKernelProof) {
|
|
176
|
-
return {
|
|
177
|
-
publicKernelPublicInput: publicKernelPublicInput,
|
|
178
|
-
publicKernelProof: previousPublicKernelProof,
|
|
179
|
-
};
|
|
180
|
-
} else {
|
|
181
|
-
const publicKernelPublicInput = new PublicKernelCircuitPublicInputs(
|
|
182
|
-
tx.data.aggregationObject,
|
|
183
|
-
PublicAccumulatedNonRevertibleData.fromPrivateAccumulatedNonRevertibleData(tx.data.endNonRevertibleData),
|
|
184
|
-
PublicAccumulatedRevertibleData.fromPrivateAccumulatedRevertibleData(tx.data.end),
|
|
185
|
-
tx.data.constants,
|
|
186
|
-
tx.data.needsSetup,
|
|
187
|
-
tx.data.needsAppLogic,
|
|
188
|
-
tx.data.needsTeardown,
|
|
189
|
-
);
|
|
190
|
-
const publicKernelProof = previousPublicKernelProof || tx.proof;
|
|
191
|
-
return {
|
|
192
|
-
publicKernelPublicInput,
|
|
193
|
-
publicKernelProof,
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
174
|
protected async processEnqueuedPublicCalls(
|
|
199
175
|
tx: Tx,
|
|
200
176
|
previousPublicKernelOutput: PublicKernelCircuitPublicInputs,
|
|
201
177
|
previousPublicKernelProof: Proof,
|
|
202
|
-
): Promise<[PublicKernelCircuitPublicInputs, Proof, FunctionL2Logs[]]> {
|
|
178
|
+
): Promise<[PublicKernelCircuitPublicInputs, Proof, FunctionL2Logs[], SimulationError | undefined]> {
|
|
203
179
|
let kernelOutput = previousPublicKernelOutput;
|
|
204
180
|
let kernelProof = previousPublicKernelProof;
|
|
205
181
|
|
|
206
182
|
const enqueuedCalls = this.extractEnqueuedPublicCalls(tx);
|
|
207
183
|
|
|
208
184
|
if (!enqueuedCalls || !enqueuedCalls.length) {
|
|
209
|
-
return [kernelOutput, kernelProof, []];
|
|
185
|
+
return [kernelOutput, kernelProof, [], undefined];
|
|
210
186
|
}
|
|
211
187
|
|
|
212
188
|
const newUnencryptedFunctionLogs: FunctionL2Logs[] = [];
|
|
@@ -241,7 +217,18 @@ export abstract class AbstractPhaseManager {
|
|
|
241
217
|
executionStack.push(...result.nestedExecutions);
|
|
242
218
|
const callData = await this.getPublicCallData(result, isExecutionRequest);
|
|
243
219
|
|
|
244
|
-
[kernelOutput, kernelProof] = await this.runKernelCircuit(
|
|
220
|
+
[kernelOutput, kernelProof] = await this.runKernelCircuit(kernelOutput, kernelProof, callData);
|
|
221
|
+
|
|
222
|
+
if (kernelOutput.reverted && this.phase === PublicKernelPhase.APP_LOGIC) {
|
|
223
|
+
this.log.debug(
|
|
224
|
+
`Reverting on ${result.execution.contractAddress.toString()}:${functionSelector} with reason: ${
|
|
225
|
+
result.revertReason
|
|
226
|
+
}`,
|
|
227
|
+
);
|
|
228
|
+
// halt immediately if the public kernel circuit has reverted.
|
|
229
|
+
// return no logs, as they should not go on-chain.
|
|
230
|
+
return [kernelOutput, kernelProof, [], result.revertReason];
|
|
231
|
+
}
|
|
245
232
|
|
|
246
233
|
if (!enqueuedExecutionResult) {
|
|
247
234
|
enqueuedExecutionResult = result;
|
|
@@ -255,25 +242,42 @@ export abstract class AbstractPhaseManager {
|
|
|
255
242
|
// TODO(#3675): This should be done in a public kernel circuit
|
|
256
243
|
removeRedundantPublicDataWrites(kernelOutput);
|
|
257
244
|
|
|
258
|
-
return [kernelOutput, kernelProof, newUnencryptedFunctionLogs];
|
|
245
|
+
return [kernelOutput, kernelProof, newUnencryptedFunctionLogs, undefined];
|
|
259
246
|
}
|
|
260
247
|
|
|
261
248
|
protected async runKernelCircuit(
|
|
262
|
-
callData: PublicCallData,
|
|
263
249
|
previousOutput: PublicKernelCircuitPublicInputs,
|
|
264
250
|
previousProof: Proof,
|
|
251
|
+
callData?: PublicCallData,
|
|
265
252
|
): Promise<[PublicKernelCircuitPublicInputs, Proof]> {
|
|
266
|
-
const output = await this.getKernelCircuitOutput(
|
|
253
|
+
const output = await this.getKernelCircuitOutput(previousOutput, previousProof, callData);
|
|
267
254
|
const proof = await this.publicProver.getPublicKernelCircuitProof(output);
|
|
268
255
|
return [output, proof];
|
|
269
256
|
}
|
|
270
257
|
|
|
271
|
-
protected getKernelCircuitOutput(
|
|
272
|
-
callData: PublicCallData,
|
|
258
|
+
protected async getKernelCircuitOutput(
|
|
273
259
|
previousOutput: PublicKernelCircuitPublicInputs,
|
|
274
260
|
previousProof: Proof,
|
|
261
|
+
callData?: PublicCallData,
|
|
275
262
|
): Promise<PublicKernelCircuitPublicInputs> {
|
|
276
263
|
const previousKernel = this.getPreviousKernelData(previousOutput, previousProof);
|
|
264
|
+
|
|
265
|
+
if (this.phase === PublicKernelPhase.TAIL) {
|
|
266
|
+
const { endNonRevertibleData, end } = previousOutput;
|
|
267
|
+
const nullifierReadRequestResetHints = await this.hintsBuilder.getNullifierReadRequestResetHints(
|
|
268
|
+
endNonRevertibleData.nullifierReadRequests,
|
|
269
|
+
end.nullifierReadRequests,
|
|
270
|
+
endNonRevertibleData.newNullifiers,
|
|
271
|
+
end.newNullifiers,
|
|
272
|
+
);
|
|
273
|
+
const inputs = new PublicKernelTailCircuitPrivateInputs(previousKernel, nullifierReadRequestResetHints);
|
|
274
|
+
return this.publicKernel.publicKernelCircuitTail(inputs);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
if (!callData) {
|
|
278
|
+
throw new Error(`Cannot run public kernel circuit without call data for phase '${this.phase}'.`);
|
|
279
|
+
}
|
|
280
|
+
|
|
277
281
|
const inputs = new PublicKernelCircuitPrivateInputs(previousKernel, callData);
|
|
278
282
|
switch (this.phase) {
|
|
279
283
|
case PublicKernelPhase.SETUP:
|
|
@@ -320,6 +324,11 @@ export abstract class AbstractPhaseManager {
|
|
|
320
324
|
newNullifiers: padArrayEnd(result.newNullifiers, SideEffectLinkedToNoteHash.empty(), MAX_NEW_NULLIFIERS_PER_CALL),
|
|
321
325
|
newL2ToL1Msgs: padArrayEnd(result.newL2ToL1Messages, L2ToL1Message.empty(), MAX_NEW_L2_TO_L1_MSGS_PER_CALL),
|
|
322
326
|
returnValues: padArrayEnd(result.returnValues, Fr.ZERO, RETURN_VALUES_LENGTH),
|
|
327
|
+
nullifierReadRequests: padArrayEnd(
|
|
328
|
+
result.nullifierReadRequests,
|
|
329
|
+
ReadRequest.empty(),
|
|
330
|
+
MAX_NULLIFIER_READ_REQUESTS_PER_CALL,
|
|
331
|
+
),
|
|
323
332
|
contractStorageReads: padArrayEnd(
|
|
324
333
|
result.contractStorageReads,
|
|
325
334
|
ContractStorageRead.empty(),
|
|
@@ -334,6 +343,7 @@ export abstract class AbstractPhaseManager {
|
|
|
334
343
|
unencryptedLogsHash,
|
|
335
344
|
unencryptedLogPreimagesLength,
|
|
336
345
|
historicalHeader: this.historicalHeader,
|
|
346
|
+
reverted: result.reverted,
|
|
337
347
|
});
|
|
338
348
|
}
|
|
339
349
|
|