@aztec/sequencer-client 0.26.5 → 0.27.0
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 +12 -28
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +2 -5
- package/dest/index.d.ts +7 -7
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +8 -8
- package/dest/publisher/l1-publisher.d.ts +1 -21
- package/dest/publisher/l1-publisher.d.ts.map +1 -1
- package/dest/publisher/l1-publisher.js +1 -55
- package/dest/publisher/viem-tx-sender.d.ts +1 -10
- package/dest/publisher/viem-tx-sender.d.ts.map +1 -1
- package/dest/publisher/viem-tx-sender.js +2 -41
- 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 +38 -3
- package/dest/sequencer/processed_tx.d.ts.map +1 -1
- package/dest/sequencer/processed_tx.js +66 -10
- package/dest/sequencer/public_processor.d.ts.map +1 -1
- package/dest/sequencer/public_processor.js +15 -9
- package/dest/sequencer/sequencer.d.ts +0 -6
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +1 -27
- 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_executor.d.ts.map +1 -1
- package/dest/simulator/public_executor.js +1 -15
- 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 +17 -77
- package/src/config.ts +0 -4
- package/src/index.ts +7 -7
- package/src/publisher/l1-publisher.ts +1 -85
- package/src/publisher/viem-tx-sender.ts +2 -52
- 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 +133 -19
- package/src/sequencer/public_processor.ts +25 -13
- package/src/sequencer/sequencer.ts +0 -36
- 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_executor.ts +0 -20
- package/src/simulator/public_kernel.ts +35 -5
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_executor.d.ts","sourceRoot":"","sources":["../../src/simulator/public_executor.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,kBAAkB,EAElB,mBAAmB,EAEnB,0BAA0B,EAC1B,EAAE,EAEH,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,YAAY,EAGZ,UAAU,EACV,EAAE,EACF,gBAAgB,EAChB,wBAAwB,EAIzB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE5G,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,iBAAiB;;IAOvD,OAAO,CAAC,EAAE;IANtB,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,aAAa,CAAkD;IACvE,OAAO,CAAC,UAAU,CAA0C;IAE5D,OAAO,CAAC,GAAG,CAA8D;gBAErD,EAAE,EAAE,kBAAkB;IAE1C;;;OAGG;IACI,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"public_executor.d.ts","sourceRoot":"","sources":["../../src/simulator/public_executor.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,kBAAkB,EAElB,mBAAmB,EAEnB,0BAA0B,EAC1B,EAAE,EAEH,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,YAAY,EAGZ,UAAU,EACV,EAAE,EACF,gBAAgB,EAChB,wBAAwB,EAIzB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE5G,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,iBAAiB;;IAOvD,OAAO,CAAC,EAAE;IANtB,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,aAAa,CAAkD;IACvE,OAAO,CAAC,UAAU,CAA0C;IAE5D,OAAO,CAAC,GAAG,CAA8D;gBAErD,EAAE,EAAE,kBAAkB;IAE1C;;;OAGG;IACI,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7C;;;OAGG;IACI,kBAAkB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAc1C,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK3F,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAK9F,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;CA+BvF;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IAI1C,OAAO,CAAC,EAAE;IAHtB,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,oBAAoB,CAA8B;gBAEtC,EAAE,EAAE,oBAAoB;IAE5C;;;;;OAKG;IACU,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAwBvE;;;;;OAKG;IACI,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlF;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvB;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAI1B;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,aAAa;IACpC,OAAO,CAAC,EAAE;IAAwB,OAAO,CAAC,mBAAmB;gBAArD,EAAE,EAAE,oBAAoB,EAAU,mBAAmB,EAAE,mBAAmB;IAEjF,0CAA0C,CACrD,SAAS,EAAE,EAAE,GACZ,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;IAqBrC,0BAA0B,CACrC,QAAQ,EAAE,EAAE,GACX,OAAO,CAAC,uBAAuB,CAAC,OAAO,wBAAwB,CAAC,CAAC;IAYvD,kBAAkB,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/D,iBAAiB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAG3E"}
|
|
@@ -25,13 +25,6 @@ export class ContractsDataSourcePublicDB {
|
|
|
25
25
|
* @param tx - The transaction to add contracts from.
|
|
26
26
|
*/
|
|
27
27
|
addNewContracts(tx) {
|
|
28
|
-
for (const contract of tx.newContracts) {
|
|
29
|
-
const contractAddress = contract.contractData.contractAddress;
|
|
30
|
-
if (contractAddress.isZero()) {
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
this.cache.set(contractAddress.toString(), contract);
|
|
34
|
-
}
|
|
35
28
|
// Extract contract class and instance data from logs and add to cache for this block
|
|
36
29
|
const logs = tx.unencryptedLogs.unrollLogs().map(UnencryptedL2Log.fromBuffer);
|
|
37
30
|
ContractClassRegisteredEvent.fromLogs(logs, ClassRegistererAddress).forEach(e => {
|
|
@@ -49,13 +42,6 @@ export class ContractsDataSourcePublicDB {
|
|
|
49
42
|
* @param tx - The tx's contracts to be removed
|
|
50
43
|
*/
|
|
51
44
|
removeNewContracts(tx) {
|
|
52
|
-
for (const contract of tx.newContracts) {
|
|
53
|
-
const contractAddress = contract.contractData.contractAddress;
|
|
54
|
-
if (contractAddress.isZero()) {
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
this.cache.delete(contractAddress.toString());
|
|
58
|
-
}
|
|
59
45
|
// TODO(@spalladino): Can this inadvertently delete a valid contract added by another tx?
|
|
60
46
|
// Let's say we have two txs adding the same contract on the same block. If the 2nd one reverts,
|
|
61
47
|
// wouldn't that accidentally remove the contract added on the first one?
|
|
@@ -192,4 +178,4 @@ export class WorldStateDB {
|
|
|
192
178
|
return await this.db.findLeafIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBuffer());
|
|
193
179
|
}
|
|
194
180
|
}
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9wdWJsaWNfZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRUwsb0JBQW9CLEVBRXBCLFlBQVksRUFDWiwwQkFBMEIsRUFFMUIsZ0JBQWdCLEdBQ2pCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUVMLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFFN0IsRUFBRSxHQU1ILE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFpQix1QkFBdUIsRUFBb0MsTUFBTSxrQkFBa0IsQ0FBQztBQUk1Rzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sMkJBQTJCO0lBT3RDLFlBQW9CLEVBQXNCOztRQUF0QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQU5sQyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWdDLENBQUM7UUFDaEQsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBdUMsQ0FBQztRQUMvRCxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFFcEQsUUFBRyxHQUFHLGlCQUFpQixDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFFNUIsQ0FBQztJQUU5Qzs7O09BR0c7SUFDSSxlQUFlLENBQUMsRUFBTTtRQUMzQixxRkFBcUY7UUFDckYsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7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
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2tlcm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW11bGF0b3IvcHVibGljX2tlcm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qix5QkFBeUIsRUFDekIsd0JBQXdCLEVBQ3hCLDRCQUE0QixFQUM1QiwwQ0FBMEMsRUFDMUMsNENBQTRDLEVBQzVDLDBDQUEwQyxFQUMxQyw0Q0FBNEMsRUFDNUMsbUNBQW1DLEVBQ25DLHFDQUFxQyxFQUNyQyw2Q0FBNkMsRUFDN0MsK0NBQStDLEdBQ2hELE1BQU0scUNBQXFDLENBQUM7QUFFN0MsT0FBTyxFQUFnQyxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHekU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0NBQWdDO0lBTTNDLFlBQW9CLFNBQTZCO1FBQTdCLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBTHpDLFFBQUcsR0FBRyxpQkFBaUIsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBRWpFLHNEQUFzRDtRQUM5QyxrQkFBYSxHQUFrQixJQUFJLGFBQWEsRUFBRSxDQUFDO0lBRVAsQ0FBQztJQUVyRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLHdCQUF3QixDQUNuQyxLQUF1QztRQUV2QyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRywwQ0FBMEMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUseUJBQXlCLENBQUMsQ0FDNUUsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLDRDQUE0QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxHQUFHLENBQUMsdUNBQXVDLEVBQUU7WUFDaEQsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixXQUFXLEVBQUUscUJBQXFCO1lBQ2xDLFFBQVE7WUFDUixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDbEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1NBQ0osQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLDJCQUEyQixDQUN0QyxLQUF1QztRQUV2QyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRywwQ0FBMEMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsNEJBQTRCLENBQUMsQ0FDL0UsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLDRDQUE0QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxHQUFHLENBQUMsMkNBQTJDLEVBQUU7WUFDcEQsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixXQUFXLEVBQUUseUJBQXlCO1lBQ3RDLFFBQVE7WUFDUixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDbEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1NBQ0osQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLDJCQUEyQixDQUN0QyxLQUF1QztRQUV2QyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyw2Q0FBNkMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRSxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsNEJBQTRCLENBQUMsQ0FDL0UsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLCtDQUErQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxHQUFHLENBQUMsMENBQTBDLEVBQUU7WUFDbkQsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixXQUFXLEVBQUUsd0JBQXdCO1lBQ3JDLFFBQVE7WUFDUixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDbEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1NBQ0osQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLHVCQUF1QixDQUNsQyxLQUEyQztRQUUzQyxNQUFNLFlBQVksR0FBRyxtQ0FBbUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRSxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLENBQUMsQ0FDM0UsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLHFDQUFxQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxHQUFHLENBQUMsc0NBQXNDLEVBQUU7WUFDL0MsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixXQUFXLEVBQUUsb0JBQW9CO1lBQ2pDLFFBQVE7WUFDUixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDbEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1NBQ0osQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
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.
|
|
25
|
-
"@aztec/circuits.js": "0.
|
|
26
|
-
"@aztec/ethereum": "0.
|
|
27
|
-
"@aztec/foundation": "0.
|
|
28
|
-
"@aztec/l1-artifacts": "0.
|
|
29
|
-
"@aztec/merkle-tree": "0.
|
|
30
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
31
|
-
"@aztec/p2p": "0.
|
|
32
|
-
"@aztec/protocol-contracts": "0.
|
|
33
|
-
"@aztec/simulator": "0.
|
|
34
|
-
"@aztec/types": "0.
|
|
35
|
-
"@aztec/world-state": "0.
|
|
24
|
+
"@aztec/circuit-types": "0.27.0",
|
|
25
|
+
"@aztec/circuits.js": "0.27.0",
|
|
26
|
+
"@aztec/ethereum": "0.27.0",
|
|
27
|
+
"@aztec/foundation": "0.27.0",
|
|
28
|
+
"@aztec/l1-artifacts": "0.27.0",
|
|
29
|
+
"@aztec/merkle-tree": "0.27.0",
|
|
30
|
+
"@aztec/noir-protocol-circuits-types": "0.27.0",
|
|
31
|
+
"@aztec/p2p": "0.27.0",
|
|
32
|
+
"@aztec/protocol-contracts": "0.27.0",
|
|
33
|
+
"@aztec/simulator": "0.27.0",
|
|
34
|
+
"@aztec/types": "0.27.0",
|
|
35
|
+
"@aztec/world-state": "0.27.0",
|
|
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,19 +1,14 @@
|
|
|
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,
|
|
5
5
|
AppendOnlyTreeSnapshot,
|
|
6
6
|
BaseOrMergeRollupPublicInputs,
|
|
7
7
|
BaseRollupInputs,
|
|
8
|
-
CONTRACT_SUBTREE_HEIGHT,
|
|
9
|
-
CONTRACT_SUBTREE_SIBLING_PATH_LENGTH,
|
|
10
|
-
CombinedAccumulatedData,
|
|
11
8
|
ConstantRollupData,
|
|
12
9
|
GlobalVariables,
|
|
13
10
|
L1_TO_L2_MSG_SUBTREE_HEIGHT,
|
|
14
11
|
L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
|
|
15
|
-
MAX_NEW_CONTRACTS_PER_TX,
|
|
16
|
-
MAX_NEW_NOTE_HASHES_PER_TX,
|
|
17
12
|
MAX_NEW_NULLIFIERS_PER_TX,
|
|
18
13
|
MAX_PUBLIC_DATA_READS_PER_TX,
|
|
19
14
|
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
@@ -40,8 +35,6 @@ import {
|
|
|
40
35
|
RollupTypes,
|
|
41
36
|
RootRollupInputs,
|
|
42
37
|
RootRollupPublicInputs,
|
|
43
|
-
SideEffect,
|
|
44
|
-
SideEffectLinkedToNoteHash,
|
|
45
38
|
StateDiffHints,
|
|
46
39
|
StateReference,
|
|
47
40
|
VK_TREE_HEIGHT,
|
|
@@ -57,10 +50,11 @@ import { elapsed } from '@aztec/foundation/timer';
|
|
|
57
50
|
import { MerkleTreeOperations } from '@aztec/world-state';
|
|
58
51
|
|
|
59
52
|
import chunk from 'lodash.chunk';
|
|
53
|
+
import { inspect } from 'util';
|
|
60
54
|
|
|
61
55
|
import { VerificationKeys } from '../mocks/verification_keys.js';
|
|
62
56
|
import { RollupProver } from '../prover/index.js';
|
|
63
|
-
import { ProcessedTx } from '../sequencer/processed_tx.js';
|
|
57
|
+
import { ProcessedTx, toTxEffect } from '../sequencer/processed_tx.js';
|
|
64
58
|
import { RollupSimulator } from '../simulator/index.js';
|
|
65
59
|
import { BlockBuilder } from './index.js';
|
|
66
60
|
import { TreeNames } from './types.js';
|
|
@@ -107,30 +101,7 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
107
101
|
const [circuitsOutput, proof] = await this.runCircuits(globalVariables, txs, newL1ToL2Messages);
|
|
108
102
|
|
|
109
103
|
// 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
|
-
);
|
|
104
|
+
const txEffects: TxEffect[] = txs.map(tx => toTxEffect(tx));
|
|
134
105
|
|
|
135
106
|
const blockBody = new Body(padArrayEnd(newL1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP), txEffects);
|
|
136
107
|
|
|
@@ -141,6 +112,7 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
141
112
|
});
|
|
142
113
|
|
|
143
114
|
if (!l2Block.body.getTxsEffectsHash().equals(circuitsOutput.header.contentCommitment.txsEffectsHash)) {
|
|
115
|
+
this.debug(inspect(blockBody));
|
|
144
116
|
throw new Error(
|
|
145
117
|
`Txs effects hash mismatch, ${l2Block.body
|
|
146
118
|
.getTxsEffectsHash()
|
|
@@ -163,9 +135,6 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
163
135
|
if (txHeader.state.partial.nullifierTree.isZero()) {
|
|
164
136
|
throw new Error(`Empty nullifier tree in tx: ${toFriendlyJSON(tx)}`);
|
|
165
137
|
}
|
|
166
|
-
if (txHeader.state.partial.contractTree.isZero()) {
|
|
167
|
-
throw new Error(`Empty contract tree in tx: ${toFriendlyJSON(tx)}`);
|
|
168
|
-
}
|
|
169
138
|
if (txHeader.state.partial.publicDataTree.isZero()) {
|
|
170
139
|
throw new Error(`Empty public data tree in tx: ${toFriendlyJSON(tx)}`);
|
|
171
140
|
}
|
|
@@ -197,14 +166,11 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
197
166
|
for (const tx of txs) {
|
|
198
167
|
const input = await this.buildBaseRollupInput(tx, globalVariables);
|
|
199
168
|
baseRollupInputs.push(input);
|
|
200
|
-
const promises = [
|
|
201
|
-
MerkleTreeId
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
].map(async (id: MerkleTreeId) => {
|
|
206
|
-
return { key: id, value: await this.getTreeSnapshot(id) };
|
|
207
|
-
});
|
|
169
|
+
const promises = [MerkleTreeId.NOTE_HASH_TREE, MerkleTreeId.NULLIFIER_TREE, MerkleTreeId.PUBLIC_DATA_TREE].map(
|
|
170
|
+
async (id: MerkleTreeId) => {
|
|
171
|
+
return { key: id, value: await this.getTreeSnapshot(id) };
|
|
172
|
+
},
|
|
173
|
+
);
|
|
208
174
|
const snapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot> = new Map(
|
|
209
175
|
(await Promise.all(promises)).map(obj => [obj.key, obj.value]),
|
|
210
176
|
);
|
|
@@ -342,11 +308,6 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
342
308
|
partialState.nullifierTree,
|
|
343
309
|
'NullifierTree',
|
|
344
310
|
);
|
|
345
|
-
this.validateSimulatedTree(
|
|
346
|
-
treeSnapshots.get(MerkleTreeId.CONTRACT_TREE)!,
|
|
347
|
-
partialState.contractTree,
|
|
348
|
-
'ContractTree',
|
|
349
|
-
);
|
|
350
311
|
this.validateSimulatedTree(
|
|
351
312
|
treeSnapshots.get(MerkleTreeId.PUBLIC_DATA_TREE)!,
|
|
352
313
|
partialState.publicDataTree,
|
|
@@ -355,14 +316,11 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
355
316
|
}
|
|
356
317
|
|
|
357
318
|
protected async validateState(state: StateReference) {
|
|
358
|
-
const promises = [
|
|
359
|
-
MerkleTreeId
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
].map(async (id: MerkleTreeId) => {
|
|
364
|
-
return { key: id, value: await this.getTreeSnapshot(id) };
|
|
365
|
-
});
|
|
319
|
+
const promises = [MerkleTreeId.NOTE_HASH_TREE, MerkleTreeId.NULLIFIER_TREE, MerkleTreeId.PUBLIC_DATA_TREE].map(
|
|
320
|
+
async (id: MerkleTreeId) => {
|
|
321
|
+
return { key: id, value: await this.getTreeSnapshot(id) };
|
|
322
|
+
},
|
|
323
|
+
);
|
|
366
324
|
const snapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot> = new Map(
|
|
367
325
|
(await Promise.all(promises)).map(obj => [obj.key, obj.value]),
|
|
368
326
|
);
|
|
@@ -479,7 +437,7 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
479
437
|
protected getKernelDataFor(tx: ProcessedTx): RollupKernelData {
|
|
480
438
|
const inputs = new RollupKernelCircuitPublicInputs(
|
|
481
439
|
tx.data.aggregationObject,
|
|
482
|
-
|
|
440
|
+
tx.data.combinedData,
|
|
483
441
|
tx.data.constants,
|
|
484
442
|
);
|
|
485
443
|
return new RollupKernelData(
|
|
@@ -662,7 +620,6 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
662
620
|
const start = new PartialStateReference(
|
|
663
621
|
await this.getTreeSnapshot(MerkleTreeId.NOTE_HASH_TREE),
|
|
664
622
|
await this.getTreeSnapshot(MerkleTreeId.NULLIFIER_TREE),
|
|
665
|
-
await this.getTreeSnapshot(MerkleTreeId.CONTRACT_TREE),
|
|
666
623
|
await this.getTreeSnapshot(MerkleTreeId.PUBLIC_DATA_TREE),
|
|
667
624
|
);
|
|
668
625
|
|
|
@@ -676,25 +633,9 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
676
633
|
i < noteHashSubtreeSiblingPathArray.length ? noteHashSubtreeSiblingPathArray[i] : Fr.ZERO,
|
|
677
634
|
);
|
|
678
635
|
|
|
679
|
-
|
|
680
|
-
MerkleTreeId.CONTRACT_TREE,
|
|
681
|
-
CONTRACT_SUBTREE_HEIGHT,
|
|
682
|
-
);
|
|
683
|
-
|
|
684
|
-
const contractSubtreeSiblingPath = makeTuple(CONTRACT_SUBTREE_SIBLING_PATH_LENGTH, i =>
|
|
685
|
-
i < contractSubtreeSiblingPathArray.length ? contractSubtreeSiblingPathArray[i] : Fr.ZERO,
|
|
686
|
-
);
|
|
687
|
-
|
|
688
|
-
// Update the contract and note hash trees with the new items being inserted to get the new roots
|
|
636
|
+
// Update the note hash trees with the new items being inserted to get the new roots
|
|
689
637
|
// that will be used by the next iteration of the base rollup circuit, skipping the empty ones
|
|
690
|
-
const newContracts = tx.data.combinedData.newContracts.map(cd => cd.hash());
|
|
691
638
|
const newNoteHashes = tx.data.combinedData.newNoteHashes.map(x => x.value.toBuffer());
|
|
692
|
-
|
|
693
|
-
await this.db.appendLeaves(
|
|
694
|
-
MerkleTreeId.CONTRACT_TREE,
|
|
695
|
-
newContracts.map(x => x.toBuffer()),
|
|
696
|
-
);
|
|
697
|
-
|
|
698
639
|
await this.db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, newNoteHashes);
|
|
699
640
|
|
|
700
641
|
// The read witnesses for a given TX should be generated before the writes of the same TX are applied.
|
|
@@ -746,7 +687,6 @@ export class SoloBlockBuilder implements BlockBuilder {
|
|
|
746
687
|
sortedNullifierIndexes: makeTuple(MAX_NEW_NULLIFIERS_PER_TX, i => sortedNewLeavesIndexes[i]),
|
|
747
688
|
noteHashSubtreeSiblingPath,
|
|
748
689
|
nullifierSubtreeSiblingPath,
|
|
749
|
-
contractSubtreeSiblingPath,
|
|
750
690
|
publicDataSiblingPath,
|
|
751
691
|
});
|
|
752
692
|
|
package/src/config.ts
CHANGED
|
@@ -44,7 +44,6 @@ export function getConfigEnvVars(): SequencerClientConfig {
|
|
|
44
44
|
ROLLUP_CONTRACT_ADDRESS,
|
|
45
45
|
REGISTRY_CONTRACT_ADDRESS,
|
|
46
46
|
INBOX_CONTRACT_ADDRESS,
|
|
47
|
-
CONTRACT_DEPLOYMENT_EMITTER_ADDRESS,
|
|
48
47
|
OUTBOX_CONTRACT_ADDRESS,
|
|
49
48
|
COINBASE,
|
|
50
49
|
FEE_RECIPIENT,
|
|
@@ -64,9 +63,6 @@ export function getConfigEnvVars(): SequencerClientConfig {
|
|
|
64
63
|
registryAddress: REGISTRY_CONTRACT_ADDRESS ? EthAddress.fromString(REGISTRY_CONTRACT_ADDRESS) : EthAddress.ZERO,
|
|
65
64
|
inboxAddress: INBOX_CONTRACT_ADDRESS ? EthAddress.fromString(INBOX_CONTRACT_ADDRESS) : EthAddress.ZERO,
|
|
66
65
|
outboxAddress: OUTBOX_CONTRACT_ADDRESS ? EthAddress.fromString(OUTBOX_CONTRACT_ADDRESS) : EthAddress.ZERO,
|
|
67
|
-
contractDeploymentEmitterAddress: CONTRACT_DEPLOYMENT_EMITTER_ADDRESS
|
|
68
|
-
? EthAddress.fromString(CONTRACT_DEPLOYMENT_EMITTER_ADDRESS)
|
|
69
|
-
: EthAddress.ZERO,
|
|
70
66
|
};
|
|
71
67
|
|
|
72
68
|
return {
|
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 {
|
|
1
|
+
import { L2Block } from '@aztec/circuit-types';
|
|
2
2
|
import { L1PublishStats } from '@aztec/circuit-types/stats';
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { InterruptibleSleep } from '@aztec/foundation/sleep';
|
|
@@ -54,22 +54,6 @@ export interface L1PublisherTxSender {
|
|
|
54
54
|
*/
|
|
55
55
|
sendProcessTx(encodedData: L1ProcessArgs): Promise<string | undefined>;
|
|
56
56
|
|
|
57
|
-
/**
|
|
58
|
-
* Sends a tx to the contract deployment emitter contract with contract deployment data such as bytecode. Returns once the tx has been mined.
|
|
59
|
-
* @param l2BlockNum - Number of the L2 block that owns this encrypted logs.
|
|
60
|
-
* @param l2BlockHash - The hash of the block corresponding to this data.
|
|
61
|
-
* @param partialAddresses - The partial addresses of the deployed contract
|
|
62
|
-
* @param publicKeys - The public keys of the deployed contract
|
|
63
|
-
* @param newExtendedContractData - Data to publish.
|
|
64
|
-
* @returns The hash of the mined tx.
|
|
65
|
-
* @remarks Partial addresses, public keys and contract data has to be in the same order. Read more {@link https://docs.aztec.network/concepts/foundation/accounts/keys#addresses-partial-addresses-and-public-keys | here}.
|
|
66
|
-
*/
|
|
67
|
-
sendEmitContractDeploymentTx(
|
|
68
|
-
l2BlockNum: number,
|
|
69
|
-
l2BlockHash: Buffer,
|
|
70
|
-
newExtendedContractData: ExtendedContractData[],
|
|
71
|
-
): Promise<(string | undefined)[]>;
|
|
72
|
-
|
|
73
57
|
/**
|
|
74
58
|
* Returns a tx receipt if the tx has been mined.
|
|
75
59
|
* @param txHash - Hash of the tx to look for.
|
|
@@ -111,16 +95,6 @@ export type L1ProcessArgs = {
|
|
|
111
95
|
proof: Buffer;
|
|
112
96
|
};
|
|
113
97
|
|
|
114
|
-
/**
|
|
115
|
-
* Helper function to filter out undefined items from an array.
|
|
116
|
-
* Also asserts the resulting array is of type <T>.
|
|
117
|
-
* @param item - An item from an array to check if undefined or not.
|
|
118
|
-
* @returns True if the item is not undefined.
|
|
119
|
-
*/
|
|
120
|
-
function isNotUndefined<T>(item: T | undefined): item is T {
|
|
121
|
-
return item !== undefined;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
98
|
/**
|
|
125
99
|
* Publishes L2 blocks to L1. This implementation does *not* retry a transaction in
|
|
126
100
|
* the event of network congestion, but should work for local development.
|
|
@@ -234,49 +208,6 @@ export class L1Publisher implements L2BlockReceiver {
|
|
|
234
208
|
return false;
|
|
235
209
|
}
|
|
236
210
|
|
|
237
|
-
/**
|
|
238
|
-
* Publishes new contract data to L1.
|
|
239
|
-
* @param l2BlockNum - The L2 block number that the new contracts were deployed on.
|
|
240
|
-
* @param l2BlockHash - The hash of the block corresponding to this data.
|
|
241
|
-
* @param contractData - The new contract data to publish.
|
|
242
|
-
* @returns True once the tx has been confirmed and is successful, false on revert or interrupt, blocks otherwise.
|
|
243
|
-
*/
|
|
244
|
-
public async processNewContractData(l2BlockNum: number, l2BlockHash: Buffer, contractData: ExtendedContractData[]) {
|
|
245
|
-
let _contractData: ExtendedContractData[] = [];
|
|
246
|
-
while (!this.interrupted) {
|
|
247
|
-
const arr = _contractData.length ? _contractData : contractData;
|
|
248
|
-
const txHashes = await this.sendEmitNewContractDataTx(l2BlockNum, l2BlockHash, arr);
|
|
249
|
-
if (!txHashes) {
|
|
250
|
-
break;
|
|
251
|
-
}
|
|
252
|
-
// filter successful txs
|
|
253
|
-
_contractData = arr.filter((_, i) => !!txHashes[i]);
|
|
254
|
-
|
|
255
|
-
const receipts = await Promise.all(
|
|
256
|
-
txHashes.filter(isNotUndefined).map(txHash => this.getTransactionReceipt(txHash)),
|
|
257
|
-
);
|
|
258
|
-
if (!receipts?.length) {
|
|
259
|
-
break;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
// ALL Txs were mined successfully
|
|
263
|
-
if (receipts.length === contractData.length && receipts.every(r => r?.status)) {
|
|
264
|
-
return true;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
this.log(
|
|
268
|
-
`Transaction status failed: ${receipts
|
|
269
|
-
.filter(r => !r?.status)
|
|
270
|
-
.map(r => r?.transactionHash)
|
|
271
|
-
.join(',')}`,
|
|
272
|
-
);
|
|
273
|
-
await this.sleepOrInterrupted();
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
this.log('L2 block data syncing interrupted while processing contract data.');
|
|
277
|
-
return false;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
211
|
/**
|
|
281
212
|
* Calling `interrupt` will cause any in progress call to `publishRollup` to return `false` asap.
|
|
282
213
|
* Be warned, the call may return false even if the tx subsequently gets successfully mined.
|
|
@@ -330,21 +261,6 @@ export class L1Publisher implements L2BlockReceiver {
|
|
|
330
261
|
}
|
|
331
262
|
}
|
|
332
263
|
|
|
333
|
-
private async sendEmitNewContractDataTx(
|
|
334
|
-
l2BlockNum: number,
|
|
335
|
-
l2BlockHash: Buffer,
|
|
336
|
-
newExtendedContractData: ExtendedContractData[],
|
|
337
|
-
) {
|
|
338
|
-
while (!this.interrupted) {
|
|
339
|
-
try {
|
|
340
|
-
return await this.txSender.sendEmitContractDeploymentTx(l2BlockNum, l2BlockHash, newExtendedContractData);
|
|
341
|
-
} catch (err) {
|
|
342
|
-
this.log.error(`Error sending contract data to L1`, err);
|
|
343
|
-
await this.sleepOrInterrupted();
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
|
|
348
264
|
private async getTransactionReceipt(txHash: string): Promise<MinimalTransactionReceipt | undefined> {
|
|
349
265
|
while (!this.interrupted) {
|
|
350
266
|
try {
|