@aztec/sequencer-client 0.24.0 → 0.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/block_builder/solo_block_builder.d.ts +9 -9
- package/dest/block_builder/solo_block_builder.d.ts.map +1 -1
- package/dest/block_builder/solo_block_builder.js +26 -48
- package/dest/global_variable_builder/viem-reader.js +2 -2
- package/dest/publisher/l1-publisher.d.ts +0 -2
- package/dest/publisher/l1-publisher.d.ts.map +1 -1
- package/dest/publisher/l1-publisher.js +2 -3
- package/dest/publisher/viem-tx-sender.d.ts.map +1 -1
- package/dest/publisher/viem-tx-sender.js +6 -10
- package/dest/sequencer/abstract_phase_manager.d.ts +18 -25
- package/dest/sequencer/abstract_phase_manager.d.ts.map +1 -1
- package/dest/sequencer/abstract_phase_manager.js +141 -91
- package/dest/sequencer/{fee_distribution_phase_manager.d.ts → app_logic_phase_manager.d.ts} +9 -11
- package/dest/sequencer/app_logic_phase_manager.d.ts.map +1 -0
- package/dest/sequencer/app_logic_phase_manager.js +44 -0
- package/dest/sequencer/phase_manager_factory.d.ts +19 -0
- package/dest/sequencer/phase_manager_factory.d.ts.map +1 -0
- package/dest/sequencer/phase_manager_factory.js +51 -0
- package/dest/sequencer/processed_tx.d.ts +2 -2
- package/dest/sequencer/processed_tx.d.ts.map +1 -1
- package/dest/sequencer/processed_tx.js +7 -7
- package/dest/sequencer/public_processor.d.ts +1 -1
- package/dest/sequencer/public_processor.d.ts.map +1 -1
- package/dest/sequencer/public_processor.js +13 -11
- package/dest/sequencer/sequencer.d.ts +3 -3
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +23 -16
- package/dest/sequencer/{fee_preparation_phase_manager.d.ts → setup_phase_manager.d.ts} +9 -11
- package/dest/sequencer/setup_phase_manager.d.ts.map +1 -0
- package/dest/sequencer/setup_phase_manager.js +37 -0
- package/dest/sequencer/{application_logic_phase_manager.d.ts → teardown_phase_manager.d.ts} +9 -12
- package/dest/sequencer/teardown_phase_manager.d.ts.map +1 -0
- package/dest/sequencer/teardown_phase_manager.js +36 -0
- package/dest/simulator/index.d.ts +10 -4
- package/dest/simulator/index.d.ts.map +1 -1
- package/dest/simulator/public_executor.d.ts +8 -3
- package/dest/simulator/public_executor.d.ts.map +1 -1
- package/dest/simulator/public_executor.js +64 -11
- package/dest/simulator/public_kernel.d.ts +10 -4
- package/dest/simulator/public_kernel.d.ts.map +1 -1
- package/dest/simulator/public_kernel.js +33 -14
- package/package.json +14 -13
- package/src/block_builder/solo_block_builder.ts +61 -50
- package/src/global_variable_builder/viem-reader.ts +1 -1
- package/src/publisher/l1-publisher.ts +1 -4
- package/src/publisher/viem-tx-sender.ts +6 -12
- package/src/sequencer/abstract_phase_manager.ts +207 -145
- package/src/sequencer/app_logic_phase_manager.ts +75 -0
- package/src/sequencer/phase_manager_factory.ts +122 -0
- package/src/sequencer/processed_tx.ts +12 -13
- package/src/sequencer/public_processor.ts +29 -12
- package/src/sequencer/sequencer.ts +22 -15
- package/src/sequencer/{fee_distribution_phase_manager.ts → setup_phase_manager.ts} +23 -25
- package/src/sequencer/teardown_phase_manager.ts +67 -0
- package/src/simulator/index.ts +10 -6
- package/src/simulator/public_executor.ts +108 -10
- package/src/simulator/public_kernel.ts +39 -13
- package/dest/sequencer/application_logic_phase_manager.d.ts.map +0 -1
- package/dest/sequencer/application_logic_phase_manager.js +0 -64
- package/dest/sequencer/fee_distribution_phase_manager.d.ts.map +0 -1
- package/dest/sequencer/fee_distribution_phase_manager.js +0 -42
- package/dest/sequencer/fee_preparation_phase_manager.d.ts.map +0 -1
- package/dest/sequencer/fee_preparation_phase_manager.js +0 -42
- package/src/sequencer/application_logic_phase_manager.ts +0 -107
- package/src/sequencer/fee_preparation_phase_manager.ts +0 -79
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
2
|
+
/**
|
|
3
|
+
* The phase manager responsible for performing the fee preparation phase.
|
|
4
|
+
*/
|
|
5
|
+
export class TeardownPhaseManager extends AbstractPhaseManager {
|
|
6
|
+
constructor(db, publicExecutor, publicKernel, publicProver, globalVariables, historicalHeader, publicContractsDB, publicStateDB, phase = PublicKernelPhase.TEARDOWN) {
|
|
7
|
+
super(db, publicExecutor, publicKernel, publicProver, globalVariables, historicalHeader, phase);
|
|
8
|
+
this.db = db;
|
|
9
|
+
this.publicExecutor = publicExecutor;
|
|
10
|
+
this.publicKernel = publicKernel;
|
|
11
|
+
this.publicProver = publicProver;
|
|
12
|
+
this.globalVariables = globalVariables;
|
|
13
|
+
this.historicalHeader = historicalHeader;
|
|
14
|
+
this.publicContractsDB = publicContractsDB;
|
|
15
|
+
this.publicStateDB = publicStateDB;
|
|
16
|
+
this.phase = phase;
|
|
17
|
+
}
|
|
18
|
+
async handle(tx, previousPublicKernelOutput, previousPublicKernelProof) {
|
|
19
|
+
this.log(`Processing tx ${tx.getTxHash()}`);
|
|
20
|
+
this.log(`Executing enqueued public calls for tx ${tx.getTxHash()}`);
|
|
21
|
+
const [publicKernelOutput, publicKernelProof, newUnencryptedFunctionLogs] = await this.processEnqueuedPublicCalls(tx, previousPublicKernelOutput, previousPublicKernelProof);
|
|
22
|
+
tx.unencryptedLogs.addFunctionLogs(newUnencryptedFunctionLogs);
|
|
23
|
+
// commit the state updates from this transaction
|
|
24
|
+
await this.publicStateDB.commit();
|
|
25
|
+
return { publicKernelOutput, publicKernelProof };
|
|
26
|
+
}
|
|
27
|
+
async rollback(tx, err) {
|
|
28
|
+
this.log.warn(`Error processing tx ${tx.getTxHash()}: ${err}`);
|
|
29
|
+
await this.publicStateDB.rollback();
|
|
30
|
+
return {
|
|
31
|
+
tx,
|
|
32
|
+
error: err instanceof Error ? err : new Error('Unknown error'),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhcmRvd25fcGhhc2VfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXF1ZW5jZXIvdGVhcmRvd25fcGhhc2VfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUd0Rjs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUFDNUQsWUFDWSxFQUF3QixFQUN4QixjQUE4QixFQUM5QixZQUEwQyxFQUMxQyxZQUEwQixFQUMxQixlQUFnQyxFQUNoQyxnQkFBd0IsRUFDeEIsaUJBQThDLEVBQzlDLGFBQTRCLEVBQy9CLFFBQTJCLGlCQUFpQixDQUFDLFFBQVE7UUFFNUQsS0FBSyxDQUFDLEVBQUUsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFWdEYsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUE4QjtRQUMxQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDL0IsVUFBSyxHQUFMLEtBQUssQ0FBZ0Q7SUFHOUQsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQ1YsRUFBTSxFQUNOLDBCQUEyRCxFQUMzRCx5QkFBZ0M7UUFXaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUMvRyxFQUFFLEVBQ0YsMEJBQTBCLEVBQzFCLHlCQUF5QixDQUMxQixDQUFDO1FBQ0YsRUFBRSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUUvRCxpREFBaUQ7UUFDakQsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWxDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQU0sRUFBRSxHQUFZO1FBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEMsT0FBTztZQUNMLEVBQUU7WUFDRixLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUM7U0FDL0QsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
|
|
@@ -27,16 +27,22 @@ export interface RollupSimulator {
|
|
|
27
27
|
*/
|
|
28
28
|
export interface PublicKernelCircuitSimulator {
|
|
29
29
|
/**
|
|
30
|
-
* Simulates the public kernel
|
|
30
|
+
* Simulates the public kernel setup circuit from its inputs.
|
|
31
31
|
* @param inputs - Inputs to the circuit.
|
|
32
32
|
* @returns The public inputs as outputs of the simulation.
|
|
33
33
|
*/
|
|
34
|
-
|
|
34
|
+
publicKernelCircuitSetup(inputs: PublicKernelCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
35
35
|
/**
|
|
36
|
-
* Simulates the public kernel
|
|
36
|
+
* Simulates the public kernel app logic circuit from its inputs.
|
|
37
37
|
* @param inputs - Inputs to the circuit.
|
|
38
38
|
* @returns The public inputs as outputs of the simulation.
|
|
39
39
|
*/
|
|
40
|
-
|
|
40
|
+
publicKernelCircuitAppLogic(inputs: PublicKernelCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
41
|
+
/**
|
|
42
|
+
* Simulates the public kernel teardown circuit from its inputs.
|
|
43
|
+
* @param inputs - Inputs to the circuit.
|
|
44
|
+
* @returns The public inputs as outputs of the simulation.
|
|
45
|
+
*/
|
|
46
|
+
publicKernelCircuitTeardown(inputs: PublicKernelCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
41
47
|
}
|
|
42
48
|
//# 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,+BAA+B,CAAC,MAAM,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC,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,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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { ContractDataSource,
|
|
2
|
+
import { ContractDataSource, L1ToL2MessageSource, NullifierMembershipWitness, Tx } from '@aztec/circuit-types';
|
|
3
3
|
import { AztecAddress, EthAddress, Fr, FunctionSelector, L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/circuits.js';
|
|
4
4
|
import { CommitmentsDB, MessageLoadOracleInputs, PublicContractsDB, PublicStateDB } from '@aztec/simulator';
|
|
5
5
|
import { MerkleTreeOperations } from '@aztec/world-state';
|
|
@@ -10,7 +10,10 @@ import { MerkleTreeOperations } from '@aztec/world-state';
|
|
|
10
10
|
export declare class ContractsDataSourcePublicDB implements PublicContractsDB {
|
|
11
11
|
#private;
|
|
12
12
|
private db;
|
|
13
|
-
cache
|
|
13
|
+
private cache;
|
|
14
|
+
private instanceCache;
|
|
15
|
+
private classCache;
|
|
16
|
+
private log;
|
|
14
17
|
constructor(db: ContractDataSource);
|
|
15
18
|
/**
|
|
16
19
|
* Add new contracts from a transaction
|
|
@@ -66,7 +69,9 @@ export declare class WorldStateDB implements CommitmentsDB {
|
|
|
66
69
|
private db;
|
|
67
70
|
private l1ToL2MessageSource;
|
|
68
71
|
constructor(db: MerkleTreeOperations, l1ToL2MessageSource: L1ToL2MessageSource);
|
|
69
|
-
|
|
72
|
+
getNullifierMembershipWitnessAtLatestBlock(nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
73
|
+
getL1ToL2MembershipWitness(entryKey: Fr): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
|
|
70
74
|
getCommitmentIndex(commitment: Fr): Promise<bigint | undefined>;
|
|
75
|
+
getNullifierIndex(nullifier: Fr): Promise<bigint | undefined>;
|
|
71
76
|
}
|
|
72
77
|
//# sourceMappingURL=public_executor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_executor.d.ts","sourceRoot":"","sources":["../../src/simulator/public_executor.ts"],"names":[],"mappings":";AAAA,OAAO,
|
|
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;IA2B7C;;;OAGG;IACI,kBAAkB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB1C,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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
var _ContractsDataSourcePublicDB_instances, _ContractsDataSourcePublicDB_getContract;
|
|
1
|
+
var _ContractsDataSourcePublicDB_instances, _ContractsDataSourcePublicDB_getContract, _ContractsDataSourcePublicDB_makeExtendedContractDataFor;
|
|
2
2
|
import { __classPrivateFieldGet } from "tslib";
|
|
3
|
-
import { MerkleTreeId } from '@aztec/circuit-types';
|
|
4
|
-
import { Fr, } from '@aztec/circuits.js';
|
|
5
|
-
import { computePublicDataTreeLeafSlot } from '@aztec/circuits.js/
|
|
3
|
+
import { ExtendedContractData, MerkleTreeId, NullifierMembershipWitness, UnencryptedL2Log, } from '@aztec/circuit-types';
|
|
4
|
+
import { ContractClassRegisteredEvent, ContractInstanceDeployedEvent, Fr, } from '@aztec/circuits.js';
|
|
5
|
+
import { computePublicDataTreeLeafSlot } from '@aztec/circuits.js/hash';
|
|
6
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
7
|
+
import { ClassRegistererAddress } from '@aztec/protocol-contracts/class-registerer';
|
|
8
|
+
import { InstanceDeployerAddress } from '@aztec/protocol-contracts/instance-deployer';
|
|
6
9
|
import { MessageLoadOracleInputs } from '@aztec/simulator';
|
|
7
10
|
/**
|
|
8
11
|
* Implements the PublicContractsDB using a ContractDataSource.
|
|
@@ -13,6 +16,9 @@ export class ContractsDataSourcePublicDB {
|
|
|
13
16
|
_ContractsDataSourcePublicDB_instances.add(this);
|
|
14
17
|
this.db = db;
|
|
15
18
|
this.cache = new Map();
|
|
19
|
+
this.instanceCache = new Map();
|
|
20
|
+
this.classCache = new Map();
|
|
21
|
+
this.log = createDebugLogger('aztec:sequencer:contracts-data-source');
|
|
16
22
|
}
|
|
17
23
|
/**
|
|
18
24
|
* Add new contracts from a transaction
|
|
@@ -26,6 +32,16 @@ export class ContractsDataSourcePublicDB {
|
|
|
26
32
|
}
|
|
27
33
|
this.cache.set(contractAddress.toString(), contract);
|
|
28
34
|
}
|
|
35
|
+
// Extract contract class and instance data from logs and add to cache for this block
|
|
36
|
+
const logs = tx.unencryptedLogs.unrollLogs().map(UnencryptedL2Log.fromBuffer);
|
|
37
|
+
ContractClassRegisteredEvent.fromLogs(logs, ClassRegistererAddress).forEach(e => {
|
|
38
|
+
this.log(`Adding class ${e.contractClassId.toString()} to public execution contract cache`);
|
|
39
|
+
this.classCache.set(e.contractClassId.toString(), e.toContractClassPublic());
|
|
40
|
+
});
|
|
41
|
+
ContractInstanceDeployedEvent.fromLogs(logs, InstanceDeployerAddress).forEach(e => {
|
|
42
|
+
this.log(`Adding instance ${e.address.toString()} with class ${e.contractClassId.toString()} to public execution contract cache`);
|
|
43
|
+
this.instanceCache.set(e.address.toString(), e.toContractInstance());
|
|
44
|
+
});
|
|
29
45
|
return Promise.resolve();
|
|
30
46
|
}
|
|
31
47
|
/**
|
|
@@ -40,6 +56,12 @@ export class ContractsDataSourcePublicDB {
|
|
|
40
56
|
}
|
|
41
57
|
this.cache.delete(contractAddress.toString());
|
|
42
58
|
}
|
|
59
|
+
// TODO(@spalladino): Can this inadvertently delete a valid contract added by another tx?
|
|
60
|
+
// Let's say we have two txs adding the same contract on the same block. If the 2nd one reverts,
|
|
61
|
+
// wouldn't that accidentally remove the contract added on the first one?
|
|
62
|
+
const logs = tx.unencryptedLogs.unrollLogs().map(UnencryptedL2Log.fromBuffer);
|
|
63
|
+
ContractClassRegisteredEvent.fromLogs(logs, ClassRegistererAddress).forEach(e => this.classCache.delete(e.contractClassId.toString()));
|
|
64
|
+
ContractInstanceDeployedEvent.fromLogs(logs, InstanceDeployerAddress).forEach(e => this.instanceCache.delete(e.address.toString()));
|
|
43
65
|
return Promise.resolve();
|
|
44
66
|
}
|
|
45
67
|
async getBytecode(address, selector) {
|
|
@@ -56,7 +78,21 @@ export class ContractsDataSourcePublicDB {
|
|
|
56
78
|
}
|
|
57
79
|
}
|
|
58
80
|
_ContractsDataSourcePublicDB_instances = new WeakSet(), _ContractsDataSourcePublicDB_getContract = async function _ContractsDataSourcePublicDB_getContract(address) {
|
|
59
|
-
return this.cache.get(address.toString()) ??
|
|
81
|
+
return (this.cache.get(address.toString()) ??
|
|
82
|
+
(await __classPrivateFieldGet(this, _ContractsDataSourcePublicDB_instances, "m", _ContractsDataSourcePublicDB_makeExtendedContractDataFor).call(this, address)) ??
|
|
83
|
+
(await this.db.getExtendedContractData(address)));
|
|
84
|
+
}, _ContractsDataSourcePublicDB_makeExtendedContractDataFor = async function _ContractsDataSourcePublicDB_makeExtendedContractDataFor(address) {
|
|
85
|
+
const instance = this.instanceCache.get(address.toString());
|
|
86
|
+
if (!instance) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
const contractClass = this.classCache.get(instance.contractClassId.toString()) ??
|
|
90
|
+
(await this.db.getContractClass(instance.contractClassId));
|
|
91
|
+
if (!contractClass) {
|
|
92
|
+
this.log.warn(`Contract class ${instance.contractClassId.toString()} for address ${address.toString()} not found`);
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
return ExtendedContractData.fromClassAndInstance(contractClass, instance);
|
|
60
96
|
};
|
|
61
97
|
/**
|
|
62
98
|
* Implements the PublicStateDB using a world-state database.
|
|
@@ -128,15 +164,32 @@ export class WorldStateDB {
|
|
|
128
164
|
this.db = db;
|
|
129
165
|
this.l1ToL2MessageSource = l1ToL2MessageSource;
|
|
130
166
|
}
|
|
131
|
-
async
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
167
|
+
async getNullifierMembershipWitnessAtLatestBlock(nullifier) {
|
|
168
|
+
const index = await this.db.findLeafIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBuffer());
|
|
169
|
+
if (!index) {
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
const leafPreimagePromise = this.db.getLeafPreimage(MerkleTreeId.NULLIFIER_TREE, index);
|
|
173
|
+
const siblingPathPromise = this.db.getSiblingPath(MerkleTreeId.NULLIFIER_TREE, BigInt(index));
|
|
174
|
+
const [leafPreimage, siblingPath] = await Promise.all([leafPreimagePromise, siblingPathPromise]);
|
|
175
|
+
if (!leafPreimage) {
|
|
176
|
+
return undefined;
|
|
177
|
+
}
|
|
178
|
+
return new NullifierMembershipWitness(BigInt(index), leafPreimage, siblingPath);
|
|
179
|
+
}
|
|
180
|
+
async getL1ToL2MembershipWitness(entryKey) {
|
|
181
|
+
const index = (await this.db.findLeafIndex(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, entryKey.toBuffer()));
|
|
182
|
+
if (index === undefined) {
|
|
183
|
+
throw new Error(`Message ${entryKey.toString()} not found`);
|
|
184
|
+
}
|
|
135
185
|
const siblingPath = await this.db.getSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, index);
|
|
136
|
-
return new MessageLoadOracleInputs(
|
|
186
|
+
return new MessageLoadOracleInputs(index, siblingPath);
|
|
137
187
|
}
|
|
138
188
|
async getCommitmentIndex(commitment) {
|
|
139
189
|
return await this.db.findLeafIndex(MerkleTreeId.NOTE_HASH_TREE, commitment.toBuffer());
|
|
140
190
|
}
|
|
191
|
+
async getNullifierIndex(nullifier) {
|
|
192
|
+
return await this.db.findLeafIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBuffer());
|
|
193
|
+
}
|
|
141
194
|
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpbXVsYXRvci9wdWJsaWNfZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRUwsb0JBQW9CLEVBRXBCLFlBQVksRUFDWiwwQkFBMEIsRUFFMUIsZ0JBQWdCLEdBQ2pCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUVMLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFFN0IsRUFBRSxHQU1ILE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFpQix1QkFBdUIsRUFBb0MsTUFBTSxrQkFBa0IsQ0FBQztBQUk1Rzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sMkJBQTJCO0lBT3RDLFlBQW9CLEVBQXNCOztRQUF0QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQU5sQyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWdDLENBQUM7UUFDaEQsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBdUMsQ0FBQztRQUMvRCxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFFcEQsUUFBRyxHQUFHLGlCQUFpQixDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFFNUIsQ0FBQztJQUU5Qzs7O09BR0c7SUFDSSxlQUFlLENBQUMsRUFBTTtRQUMzQixLQUFLLE1BQU0sUUFBUSxJQUFJLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QyxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQztZQUU5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
|
|
@@ -6,16 +6,22 @@ import { PublicKernelCircuitSimulator } from './index.js';
|
|
|
6
6
|
export declare class RealPublicKernelCircuitSimulator implements PublicKernelCircuitSimulator {
|
|
7
7
|
private log;
|
|
8
8
|
/**
|
|
9
|
-
* Simulates the public kernel
|
|
9
|
+
* Simulates the public kernel setup circuit from its inputs.
|
|
10
10
|
* @param input - Inputs to the circuit.
|
|
11
11
|
* @returns The public inputs as outputs of the simulation.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
publicKernelCircuitSetup(input: PublicKernelCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
14
14
|
/**
|
|
15
|
-
* Simulates the public kernel
|
|
15
|
+
* Simulates the public kernel app logic circuit from its inputs.
|
|
16
16
|
* @param input - Inputs to the circuit.
|
|
17
17
|
* @returns The public inputs as outputs of the simulation.
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
publicKernelCircuitAppLogic(input: PublicKernelCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
20
|
+
/**
|
|
21
|
+
* Simulates the public kernel teardown circuit from its inputs.
|
|
22
|
+
* @param input - Inputs to the circuit.
|
|
23
|
+
* @returns The public inputs as outputs of the simulation.
|
|
24
|
+
*/
|
|
25
|
+
publicKernelCircuitTeardown(input: PublicKernelCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
20
26
|
}
|
|
21
27
|
//# 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,EAAE,gCAAgC,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"public_kernel.d.ts","sourceRoot":"","sources":["../../src/simulator/public_kernel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gCAAgC,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AASvG,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,qBAAa,gCAAiC,YAAW,4BAA4B;IACnF,OAAO,CAAC,GAAG,CAAsD;IAEjE;;;;OAIG;IACU,wBAAwB,CACnC,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,+BAA+B,CAAC;IAe3C;;;;OAIG;IACU,2BAA2B,CACtC,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,+BAA+B,CAAC;IAe3C;;;;OAIG;IACU,2BAA2B,CACtC,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,+BAA+B,CAAC;CAc5C"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
2
|
import { elapsed } from '@aztec/foundation/timer';
|
|
3
|
-
import { executePublicKernelAppLogic, executePublicKernelSetup } from '@aztec/noir-protocol-circuits-types';
|
|
3
|
+
import { executePublicKernelAppLogic, executePublicKernelSetup, executePublicKernelTeardown, } from '@aztec/noir-protocol-circuits-types';
|
|
4
4
|
/**
|
|
5
5
|
* Implements the PublicKernelCircuitSimulator.
|
|
6
6
|
*/
|
|
@@ -9,18 +9,18 @@ export class RealPublicKernelCircuitSimulator {
|
|
|
9
9
|
this.log = createDebugLogger('aztec:public-kernel-simulator');
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
|
-
* Simulates the public kernel
|
|
12
|
+
* Simulates the public kernel setup circuit from its inputs.
|
|
13
13
|
* @param input - Inputs to the circuit.
|
|
14
14
|
* @returns The public inputs as outputs of the simulation.
|
|
15
15
|
*/
|
|
16
|
-
async
|
|
17
|
-
if (!input.previousKernel.publicInputs.
|
|
18
|
-
throw new Error(`Expected
|
|
16
|
+
async publicKernelCircuitSetup(input) {
|
|
17
|
+
if (!input.previousKernel.publicInputs.needsSetup) {
|
|
18
|
+
throw new Error(`Expected previous kernel inputs to need setup`);
|
|
19
19
|
}
|
|
20
20
|
const [duration, result] = await elapsed(() => executePublicKernelSetup(input));
|
|
21
|
-
this.log(`Simulated public kernel circuit
|
|
21
|
+
this.log(`Simulated public kernel setup circuit`, {
|
|
22
22
|
eventName: 'circuit-simulation',
|
|
23
|
-
circuitName: 'public-kernel-
|
|
23
|
+
circuitName: 'public-kernel-setup',
|
|
24
24
|
duration,
|
|
25
25
|
inputSize: input.toBuffer().length,
|
|
26
26
|
outputSize: result.toBuffer().length,
|
|
@@ -28,18 +28,37 @@ export class RealPublicKernelCircuitSimulator {
|
|
|
28
28
|
return result;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
* Simulates the public kernel
|
|
31
|
+
* Simulates the public kernel app logic circuit from its inputs.
|
|
32
32
|
* @param input - Inputs to the circuit.
|
|
33
33
|
* @returns The public inputs as outputs of the simulation.
|
|
34
34
|
*/
|
|
35
|
-
async
|
|
36
|
-
if (input.previousKernel.publicInputs.
|
|
37
|
-
throw new Error(`Expected
|
|
35
|
+
async publicKernelCircuitAppLogic(input) {
|
|
36
|
+
if (!input.previousKernel.publicInputs.needsAppLogic) {
|
|
37
|
+
throw new Error(`Expected previous kernel inputs to need app logic`);
|
|
38
38
|
}
|
|
39
39
|
const [duration, result] = await elapsed(() => executePublicKernelAppLogic(input));
|
|
40
|
-
this.log(`Simulated public kernel
|
|
40
|
+
this.log(`Simulated public kernel app logic circuit`, {
|
|
41
41
|
eventName: 'circuit-simulation',
|
|
42
|
-
circuitName: 'public-kernel-
|
|
42
|
+
circuitName: 'public-kernel-app-logic',
|
|
43
|
+
duration,
|
|
44
|
+
inputSize: input.toBuffer().length,
|
|
45
|
+
outputSize: result.toBuffer().length,
|
|
46
|
+
});
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Simulates the public kernel teardown circuit from its inputs.
|
|
51
|
+
* @param input - Inputs to the circuit.
|
|
52
|
+
* @returns The public inputs as outputs of the simulation.
|
|
53
|
+
*/
|
|
54
|
+
async publicKernelCircuitTeardown(input) {
|
|
55
|
+
if (!input.previousKernel.publicInputs.needsTeardown) {
|
|
56
|
+
throw new Error(`Expected previous kernel inputs to need teardown`);
|
|
57
|
+
}
|
|
58
|
+
const [duration, result] = await elapsed(() => executePublicKernelTeardown(input));
|
|
59
|
+
this.log(`Simulated public kernel teardown circuit`, {
|
|
60
|
+
eventName: 'circuit-simulation',
|
|
61
|
+
circuitName: 'public-kernel-teardown',
|
|
43
62
|
duration,
|
|
44
63
|
inputSize: input.toBuffer().length,
|
|
45
64
|
outputSize: result.toBuffer().length,
|
|
@@ -47,4 +66,4 @@ export class RealPublicKernelCircuitSimulator {
|
|
|
47
66
|
return result;
|
|
48
67
|
}
|
|
49
68
|
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2tlcm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW11bGF0b3IvcHVibGljX2tlcm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUNMLDJCQUEyQixFQUMzQix3QkFBd0IsRUFDeEIsMkJBQTJCLEdBQzVCLE1BQU0scUNBQXFDLENBQUM7QUFJN0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0NBQWdDO0lBQTdDO1FBQ1UsUUFBRyxHQUFHLGlCQUFpQixDQUFDLCtCQUErQixDQUFDLENBQUM7SUFtRW5FLENBQUM7SUFqRUM7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyx3QkFBd0IsQ0FDbkMsS0FBdUM7UUFFdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMsdUNBQXVDLEVBQUU7WUFDaEQsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixXQUFXLEVBQUUscUJBQXFCO1lBQ2xDLFFBQVE7WUFDUixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDbEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1NBQ0osQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLDJCQUEyQixDQUN0QyxLQUF1QztRQUV2QyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLEdBQUcsQ0FBQywyQ0FBMkMsRUFBRTtZQUNwRCxTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLFdBQVcsRUFBRSx5QkFBeUI7WUFDdEMsUUFBUTtZQUNSLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTTtZQUNsQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07U0FDSixDQUFDLENBQUM7UUFDcEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsMkJBQTJCLENBQ3RDLEtBQXVDO1FBRXZDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxFQUFFO1lBQ25ELFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsV0FBVyxFQUFFLHdCQUF3QjtZQUNyQyxRQUFRO1lBQ1IsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1lBQ2xDLFVBQVUsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTTtTQUNKLENBQUMsQ0FBQztRQUNwQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"typedocOptions": {
|
|
@@ -21,21 +21,22 @@
|
|
|
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/
|
|
33
|
-
"@aztec/
|
|
34
|
-
"@aztec/
|
|
24
|
+
"@aztec/circuit-types": "0.26.1",
|
|
25
|
+
"@aztec/circuits.js": "0.26.1",
|
|
26
|
+
"@aztec/ethereum": "0.26.1",
|
|
27
|
+
"@aztec/foundation": "0.26.1",
|
|
28
|
+
"@aztec/l1-artifacts": "0.26.1",
|
|
29
|
+
"@aztec/merkle-tree": "0.26.1",
|
|
30
|
+
"@aztec/noir-protocol-circuits-types": "0.26.1",
|
|
31
|
+
"@aztec/p2p": "0.26.1",
|
|
32
|
+
"@aztec/protocol-contracts": "0.26.1",
|
|
33
|
+
"@aztec/simulator": "0.26.1",
|
|
34
|
+
"@aztec/types": "0.26.1",
|
|
35
|
+
"@aztec/world-state": "0.26.1",
|
|
35
36
|
"lodash.chunk": "^4.2.0",
|
|
36
37
|
"lodash.pick": "^4.4.0",
|
|
37
38
|
"tslib": "^2.4.0",
|
|
38
|
-
"viem": "^
|
|
39
|
+
"viem": "^2.7.15"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
42
|
"@aztec/kv-store": "workspace:^",
|