@aztec/sequencer-client 0.47.1 → 0.49.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/block_builder/index.d.ts +26 -0
- package/dest/block_builder/index.d.ts.map +1 -0
- package/dest/block_builder/index.js +40 -0
- package/dest/client/sequencer-client.d.ts +1 -2
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +5 -4
- package/dest/config.d.ts +6 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +91 -31
- package/dest/global_variable_builder/global_builder.d.ts +14 -8
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +10 -16
- package/dest/global_variable_builder/index.d.ts +2 -3
- package/dest/global_variable_builder/index.d.ts.map +1 -1
- package/dest/global_variable_builder/index.js +1 -1
- package/dest/global_variable_builder/viem-reader.d.ts +5 -4
- package/dest/global_variable_builder/viem-reader.d.ts.map +1 -1
- package/dest/global_variable_builder/viem-reader.js +11 -8
- package/dest/publisher/config.d.ts +7 -15
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/config.js +38 -11
- package/dest/publisher/index.d.ts +3 -2
- package/dest/publisher/index.d.ts.map +1 -1
- package/dest/publisher/index.js +4 -4
- package/dest/publisher/l1-publisher-metrics.d.ts +17 -0
- package/dest/publisher/l1-publisher-metrics.d.ts.map +1 -0
- package/dest/publisher/l1-publisher-metrics.js +75 -0
- package/dest/publisher/l1-publisher.d.ts +33 -5
- package/dest/publisher/l1-publisher.d.ts.map +1 -1
- package/dest/publisher/l1-publisher.js +44 -36
- package/dest/publisher/viem-tx-sender.d.ts +9 -2
- package/dest/publisher/viem-tx-sender.d.ts.map +1 -1
- package/dest/publisher/viem-tx-sender.js +85 -16
- package/dest/receiver.d.ts +2 -8
- package/dest/receiver.d.ts.map +1 -1
- package/dest/sequencer/metrics.d.ts +17 -0
- package/dest/sequencer/metrics.d.ts.map +1 -0
- package/dest/sequencer/metrics.js +56 -0
- package/dest/sequencer/sequencer.d.ts +9 -7
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +66 -37
- package/dest/tx_validator/gas_validator.d.ts +1 -1
- package/dest/tx_validator/gas_validator.js +11 -11
- package/dest/tx_validator/tx_validator_factory.js +2 -2
- package/package.json +17 -15
- package/src/block_builder/index.ts +51 -0
- package/src/client/sequencer-client.ts +3 -4
- package/src/config.ts +106 -54
- package/src/global_variable_builder/global_builder.ts +35 -25
- package/src/global_variable_builder/index.ts +3 -3
- package/src/global_variable_builder/viem-reader.ts +14 -11
- package/src/publisher/config.ts +43 -31
- package/src/publisher/index.ts +5 -3
- package/src/publisher/l1-publisher-metrics.ts +108 -0
- package/src/publisher/l1-publisher.ts +78 -43
- package/src/publisher/viem-tx-sender.ts +89 -14
- package/src/receiver.ts +3 -8
- package/src/sequencer/metrics.ts +86 -0
- package/src/sequencer/sequencer.ts +89 -52
- package/src/tx_validator/gas_validator.ts +9 -9
- package/src/tx_validator/tx_validator_factory.ts +2 -2
- package/dest/global_variable_builder/config.d.ts +0 -19
- package/dest/global_variable_builder/config.d.ts.map +0 -1
- package/dest/global_variable_builder/config.js +0 -2
- package/src/global_variable_builder/config.ts +0 -20
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type BlockSimulator, type MerkleTreeOperations, type ProcessedTx, type ProvingTicket, type SimulationBlockResult } from '@aztec/circuit-types';
|
|
2
|
+
import { type Fr, type GlobalVariables } from '@aztec/circuits.js';
|
|
3
|
+
import { type SimulationProvider } from '@aztec/simulator';
|
|
4
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
5
|
+
/**
|
|
6
|
+
* Implements a block simulator using a test circuit prover under the hood, which just simulates circuits and outputs empty proofs.
|
|
7
|
+
* This class is temporary and should die once we switch from tx effects to tx objects submissions, since sequencers won't have
|
|
8
|
+
* the need to create L2 block headers to submit to L1. When we do that, we should also remove the references to the
|
|
9
|
+
* prover-client and bb-prover packages from this package.
|
|
10
|
+
*/
|
|
11
|
+
export declare class BlockBuilder implements BlockSimulator {
|
|
12
|
+
private orchestrator;
|
|
13
|
+
constructor(db: MerkleTreeOperations, simulationProvider: SimulationProvider, telemetry: TelemetryClient);
|
|
14
|
+
startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<ProvingTicket>;
|
|
15
|
+
cancelBlock(): void;
|
|
16
|
+
finaliseBlock(): Promise<SimulationBlockResult>;
|
|
17
|
+
setBlockCompleted(): Promise<void>;
|
|
18
|
+
addNewTx(tx: ProcessedTx): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export declare class BlockBuilderFactory {
|
|
21
|
+
private simulationProvider;
|
|
22
|
+
private telemetry?;
|
|
23
|
+
constructor(simulationProvider: SimulationProvider, telemetry?: TelemetryClient | undefined);
|
|
24
|
+
create(db: MerkleTreeOperations): BlockSimulator;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/block_builder/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D;;;;;GAKG;AACH,qBAAa,YAAa,YAAW,cAAc;IACjD,OAAO,CAAC,YAAY,CAAsB;gBAC9B,EAAE,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe;IAKxG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAG7G,WAAW,IAAI,IAAI;IAGnB,aAAa,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAG/C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAGlC,QAAQ,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzC;AAED,qBAAa,mBAAmB;IAClB,OAAO,CAAC,kBAAkB;IAAsB,OAAO,CAAC,SAAS,CAAC;gBAA1D,kBAAkB,EAAE,kBAAkB,EAAU,SAAS,CAAC,6BAAiB;IAE/F,MAAM,CAAC,EAAE,EAAE,oBAAoB,GAAG,cAAc;CAGjD"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { TestCircuitProver } from '@aztec/bb-prover';
|
|
2
|
+
import { ProvingOrchestrator } from '@aztec/prover-client/orchestrator';
|
|
3
|
+
import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
|
|
4
|
+
/**
|
|
5
|
+
* Implements a block simulator using a test circuit prover under the hood, which just simulates circuits and outputs empty proofs.
|
|
6
|
+
* This class is temporary and should die once we switch from tx effects to tx objects submissions, since sequencers won't have
|
|
7
|
+
* the need to create L2 block headers to submit to L1. When we do that, we should also remove the references to the
|
|
8
|
+
* prover-client and bb-prover packages from this package.
|
|
9
|
+
*/
|
|
10
|
+
export class BlockBuilder {
|
|
11
|
+
constructor(db, simulationProvider, telemetry) {
|
|
12
|
+
const testProver = new TestCircuitProver(telemetry, simulationProvider);
|
|
13
|
+
this.orchestrator = new ProvingOrchestrator(db, testProver, telemetry);
|
|
14
|
+
}
|
|
15
|
+
startNewBlock(numTxs, globalVariables, l1ToL2Messages) {
|
|
16
|
+
return this.orchestrator.startNewBlock(numTxs, globalVariables, l1ToL2Messages);
|
|
17
|
+
}
|
|
18
|
+
cancelBlock() {
|
|
19
|
+
this.orchestrator.cancelBlock();
|
|
20
|
+
}
|
|
21
|
+
finaliseBlock() {
|
|
22
|
+
return this.orchestrator.finaliseBlock();
|
|
23
|
+
}
|
|
24
|
+
setBlockCompleted() {
|
|
25
|
+
return this.orchestrator.setBlockCompleted();
|
|
26
|
+
}
|
|
27
|
+
addNewTx(tx) {
|
|
28
|
+
return this.orchestrator.addNewTx(tx);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export class BlockBuilderFactory {
|
|
32
|
+
constructor(simulationProvider, telemetry) {
|
|
33
|
+
this.simulationProvider = simulationProvider;
|
|
34
|
+
this.telemetry = telemetry;
|
|
35
|
+
}
|
|
36
|
+
create(db) {
|
|
37
|
+
return new BlockBuilder(db, this.simulationProvider, this.telemetry ?? new NoopTelemetryClient());
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2tfYnVpbGRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVuRTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBRXZCLFlBQVksRUFBd0IsRUFBRSxrQkFBc0MsRUFBRSxTQUEwQjtRQUN0RyxNQUFNLFVBQVUsR0FBRyxJQUFJLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYyxFQUFFLGVBQWdDLEVBQUUsY0FBb0I7UUFDbEYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUNELFFBQVEsQ0FBQyxFQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUFvQixrQkFBc0MsRUFBVSxTQUEyQjtRQUEzRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7SUFBRyxDQUFDO0lBRW5HLE1BQU0sQ0FBQyxFQUF3QjtRQUM3QixPQUFPLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUNwRyxDQUFDO0NBQ0YifQ==
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type L1ToL2MessageSource, type L2BlockSource } from '@aztec/circuit-types';
|
|
2
|
-
import { type BlockProver } from '@aztec/circuit-types/interfaces';
|
|
3
2
|
import { type P2P } from '@aztec/p2p';
|
|
4
3
|
import { type SimulationProvider } from '@aztec/simulator';
|
|
5
4
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
@@ -25,7 +24,7 @@ export declare class SequencerClient {
|
|
|
25
24
|
* @param simulationProvider - An instance of a simulation provider
|
|
26
25
|
* @returns A new running instance.
|
|
27
26
|
*/
|
|
28
|
-
static new(config: SequencerClientConfig, p2pClient: P2P, worldStateSynchronizer: WorldStateSynchronizer, contractDataSource: ContractDataSource, l2BlockSource: L2BlockSource, l1ToL2MessageSource: L1ToL2MessageSource,
|
|
27
|
+
static new(config: SequencerClientConfig, p2pClient: P2P, worldStateSynchronizer: WorldStateSynchronizer, contractDataSource: ContractDataSource, l2BlockSource: L2BlockSource, l1ToL2MessageSource: L1ToL2MessageSource, simulationProvider: SimulationProvider, telemetryClient: TelemetryClient): Promise<SequencerClient>;
|
|
29
28
|
/**
|
|
30
29
|
* Updates sequencer config.
|
|
31
30
|
* @param config - New parameters.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGjE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxE;;GAEG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAExC;;;;;;;;;;;OAWG;WACiB,GAAG,CACrB,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,GAAG,EACd,sBAAsB,EAAE,sBAAsB,EAC9C,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,mBAAmB,EACxC,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe;IA+BlC;;;OAGG;IACI,qBAAqB,CAAC,MAAM,EAAE,eAAe;IAIpD;;OAEG;IACU,IAAI;IAIjB;;OAEG;IACI,OAAO;IAId,IAAI,QAAQ,yCAEX;IAED,IAAI,YAAY,2CAEf;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PublicProcessorFactory } from '@aztec/simulator';
|
|
2
|
+
import { BlockBuilderFactory } from '../block_builder/index.js';
|
|
2
3
|
import { getGlobalVariableBuilder } from '../global_variable_builder/index.js';
|
|
3
4
|
import { getL1Publisher } from '../publisher/index.js';
|
|
4
5
|
import { Sequencer } from '../sequencer/index.js';
|
|
@@ -22,12 +23,12 @@ export class SequencerClient {
|
|
|
22
23
|
* @param simulationProvider - An instance of a simulation provider
|
|
23
24
|
* @returns A new running instance.
|
|
24
25
|
*/
|
|
25
|
-
static async new(config, p2pClient, worldStateSynchronizer, contractDataSource, l2BlockSource, l1ToL2MessageSource,
|
|
26
|
-
const publisher = getL1Publisher(config);
|
|
26
|
+
static async new(config, p2pClient, worldStateSynchronizer, contractDataSource, l2BlockSource, l1ToL2MessageSource, simulationProvider, telemetryClient) {
|
|
27
|
+
const publisher = getL1Publisher(config, telemetryClient);
|
|
27
28
|
const globalsBuilder = getGlobalVariableBuilder(config);
|
|
28
29
|
const merkleTreeDb = worldStateSynchronizer.getLatest();
|
|
29
30
|
const publicProcessorFactory = new PublicProcessorFactory(merkleTreeDb, contractDataSource, simulationProvider, telemetryClient);
|
|
30
|
-
const sequencer = new Sequencer(publisher, globalsBuilder, p2pClient, worldStateSynchronizer,
|
|
31
|
+
const sequencer = new Sequencer(publisher, globalsBuilder, p2pClient, worldStateSynchronizer, new BlockBuilderFactory(simulationProvider, telemetryClient), l2BlockSource, l1ToL2MessageSource, publicProcessorFactory, new TxValidatorFactory(merkleTreeDb, contractDataSource, !!config.enforceFees), telemetryClient, config);
|
|
31
32
|
await sequencer.start();
|
|
32
33
|
return new SequencerClient(sequencer);
|
|
33
34
|
}
|
|
@@ -57,4 +58,4 @@ export class SequencerClient {
|
|
|
57
58
|
return this.sequencer.feeRecipient;
|
|
58
59
|
}
|
|
59
60
|
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvc2VxdWVuY2VyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsc0JBQXNCLEVBQTJCLE1BQU0sa0JBQWtCLENBQUM7QUFLbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQXdCLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFN0U7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQUcsQ0FBQztJQUU1Qzs7Ozs7Ozs7Ozs7T0FXRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNyQixNQUE2QixFQUM3QixTQUFjLEVBQ2Qsc0JBQThDLEVBQzlDLGtCQUFzQyxFQUN0QyxhQUE0QixFQUM1QixtQkFBd0MsRUFDeEMsa0JBQXNDLEVBQ3RDLGVBQWdDO1FBRWhDLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDMUQsTUFBTSxjQUFjLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEQsTUFBTSxZQUFZLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFeEQsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLHNCQUFzQixDQUN2RCxZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixlQUFlLENBQ2hCLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FDN0IsU0FBUyxFQUNULGNBQWMsRUFDZCxTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLElBQUksbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLEVBQzVELGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLElBQUksa0JBQWtCLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQzlFLGVBQWUsRUFDZixNQUFNLENBQ1AsQ0FBQztRQUVGLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHFCQUFxQixDQUFDLE1BQXVCO1FBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJO1FBQ2YsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ3JDLENBQUM7Q0FDRiJ9
|
package/dest/config.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type AllowedElement } from '@aztec/circuit-types';
|
|
2
|
-
import { type
|
|
2
|
+
import { type L1ReaderConfig } from '@aztec/ethereum';
|
|
3
|
+
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
3
4
|
import { type PublisherConfig, type TxSenderConfig } from './publisher/config.js';
|
|
4
5
|
import { type SequencerConfig } from './sequencer/config.js';
|
|
5
6
|
/** Chain configuration. */
|
|
@@ -12,7 +13,10 @@ type ChainConfig = {
|
|
|
12
13
|
/**
|
|
13
14
|
* Configuration settings for the SequencerClient.
|
|
14
15
|
*/
|
|
15
|
-
export type SequencerClientConfig = PublisherConfig & TxSenderConfig & SequencerConfig &
|
|
16
|
+
export type SequencerClientConfig = PublisherConfig & TxSenderConfig & SequencerConfig & L1ReaderConfig & ChainConfig;
|
|
17
|
+
export declare const sequencerConfigMappings: ConfigMappingsType<SequencerConfig>;
|
|
18
|
+
export declare const chainConfigMappings: ConfigMappingsType<ChainConfig>;
|
|
19
|
+
export declare const sequencerClientConfigMappings: ConfigMappingsType<SequencerClientConfig>;
|
|
16
20
|
/**
|
|
17
21
|
* Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
|
|
18
22
|
*/
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAGpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,2BAA2B;AAC3B,KAAK,WAAW,GAAG;IACjB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,GAAG,WAAW,CAAC;AAEtH,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CAsEvE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,WAAW,CAO/D,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAAC,qBAAqB,CAMnF,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CAExD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAqCvE"}
|
package/dest/config.js
CHANGED
|
@@ -1,41 +1,101 @@
|
|
|
1
1
|
import { AztecAddress, Fr, FunctionSelector, getContractClassFromArtifact } from '@aztec/circuits.js';
|
|
2
|
-
import {
|
|
2
|
+
import { l1ReaderConfigMappings } from '@aztec/ethereum';
|
|
3
|
+
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, } from '@aztec/foundation/config';
|
|
3
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
5
|
import { FPCContract } from '@aztec/noir-contracts.js/FPC';
|
|
5
6
|
import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
|
|
6
7
|
import { AuthRegistryAddress } from '@aztec/protocol-contracts/auth-registry';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
8
|
+
import { FeeJuiceAddress } from '@aztec/protocol-contracts/fee-juice';
|
|
9
|
+
import { getPublisherConfigMappings, getTxSenderConfigMappings, } from './publisher/config.js';
|
|
10
|
+
export const sequencerConfigMappings = {
|
|
11
|
+
transactionPollingIntervalMS: {
|
|
12
|
+
env: 'SEQ_TX_POLLING_INTERVAL_MS',
|
|
13
|
+
description: 'The number of ms to wait between polling for pending txs.',
|
|
14
|
+
...numberConfigHelper(1000),
|
|
15
|
+
},
|
|
16
|
+
maxTxsPerBlock: {
|
|
17
|
+
env: 'SEQ_MAX_TX_PER_BLOCK',
|
|
18
|
+
description: 'The maximum number of txs to include in a block.',
|
|
19
|
+
...numberConfigHelper(32),
|
|
20
|
+
},
|
|
21
|
+
minTxsPerBlock: {
|
|
22
|
+
env: 'SEQ_MIN_TX_PER_BLOCK',
|
|
23
|
+
description: 'The minimum number of txs to include in a block.',
|
|
24
|
+
...numberConfigHelper(1),
|
|
25
|
+
},
|
|
26
|
+
minSecondsBetweenBlocks: {
|
|
27
|
+
env: 'SEQ_MIN_SECONDS_BETWEEN_BLOCKS',
|
|
28
|
+
description: 'The minimum number of seconds in-between consecutive blocks.',
|
|
29
|
+
...numberConfigHelper(0),
|
|
30
|
+
},
|
|
31
|
+
maxSecondsBetweenBlocks: {
|
|
32
|
+
env: 'SEQ_MAX_SECONDS_BETWEEN_BLOCKS',
|
|
33
|
+
description: 'The maximum number of seconds in-between consecutive blocks. Sequencer will produce a block with less than minTxsPerBlock once this threshold is reached.',
|
|
34
|
+
...numberConfigHelper(0),
|
|
35
|
+
},
|
|
36
|
+
coinbase: {
|
|
37
|
+
env: 'COINBASE',
|
|
38
|
+
parseEnv: (val) => EthAddress.fromString(val),
|
|
39
|
+
description: 'Recipient of block reward.',
|
|
40
|
+
},
|
|
41
|
+
feeRecipient: {
|
|
42
|
+
env: 'FEE_RECIPIENT',
|
|
43
|
+
parseEnv: (val) => AztecAddress.fromString(val),
|
|
44
|
+
description: 'Address to receive fees.',
|
|
45
|
+
},
|
|
46
|
+
acvmWorkingDirectory: {
|
|
47
|
+
env: 'ACVM_WORKING_DIRECTORY',
|
|
48
|
+
description: 'The working directory to use for simulation/proving',
|
|
49
|
+
},
|
|
50
|
+
acvmBinaryPath: {
|
|
51
|
+
env: 'ACVM_BINARY_PATH',
|
|
52
|
+
description: 'The path to the ACVM binary',
|
|
53
|
+
},
|
|
54
|
+
allowedInSetup: {
|
|
55
|
+
env: 'SEQ_ALLOWED_SETUP_FN',
|
|
56
|
+
parseEnv: (val) => parseSequencerAllowList(val),
|
|
57
|
+
defaultValue: getDefaultAllowedSetupFunctions(),
|
|
58
|
+
description: 'The list of functions calls allowed to run in setup',
|
|
59
|
+
printDefault: () => 'AuthRegistry, FeeJuice.increase_public_balance, Token.increase_public_balance, FPC.prepare_fee',
|
|
60
|
+
},
|
|
61
|
+
allowedInTeardown: {
|
|
62
|
+
env: 'SEQ_ALLOWED_TEARDOWN_FN',
|
|
63
|
+
parseEnv: (val) => parseSequencerAllowList(val),
|
|
64
|
+
defaultValue: getDefaultAllowedTeardownFunctions(),
|
|
65
|
+
description: 'The list of functions calls allowed to run teardown',
|
|
66
|
+
printDefault: () => 'FPC.pay_refund, FPC.pay_refund_with_shielded_rebate',
|
|
67
|
+
},
|
|
68
|
+
maxBlockSizeInBytes: {
|
|
69
|
+
env: 'SEQ_MAX_BLOCK_SIZE_IN_BYTES',
|
|
70
|
+
description: 'Max block size',
|
|
71
|
+
...numberConfigHelper(1024 * 1024),
|
|
72
|
+
},
|
|
73
|
+
enforceFees: {
|
|
74
|
+
env: 'ENFORCE_FEES',
|
|
75
|
+
description: 'Whether to require every tx to have a fee payer',
|
|
76
|
+
...booleanConfigHelper(),
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
export const chainConfigMappings = {
|
|
80
|
+
l1ChainId: l1ReaderConfigMappings.l1ChainId,
|
|
81
|
+
version: {
|
|
82
|
+
env: 'VERSION',
|
|
83
|
+
description: 'The version of the rollup.',
|
|
84
|
+
...numberConfigHelper(1),
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
export const sequencerClientConfigMappings = {
|
|
88
|
+
...sequencerConfigMappings,
|
|
89
|
+
...getTxSenderConfigMappings('SEQ'),
|
|
90
|
+
...getPublisherConfigMappings('SEQ'),
|
|
91
|
+
...l1ReaderConfigMappings,
|
|
92
|
+
...chainConfigMappings,
|
|
93
|
+
};
|
|
9
94
|
/**
|
|
10
95
|
* Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
|
|
11
96
|
*/
|
|
12
97
|
export function getConfigEnvVars() {
|
|
13
|
-
|
|
14
|
-
return {
|
|
15
|
-
enforceFees: ['1', 'true'].includes(ENFORCE_FEES),
|
|
16
|
-
version: VERSION ? +VERSION : 1, // 1 is our default version
|
|
17
|
-
l1PublishRetryIntervalMS: SEQ_PUBLISH_RETRY_INTERVAL_MS ? +SEQ_PUBLISH_RETRY_INTERVAL_MS : 1000,
|
|
18
|
-
transactionPollingIntervalMS: SEQ_TX_POLLING_INTERVAL_MS ? +SEQ_TX_POLLING_INTERVAL_MS : 1000,
|
|
19
|
-
maxBlockSizeInBytes: SEQ_MAX_BLOCK_SIZE_IN_BYTES ? +SEQ_MAX_BLOCK_SIZE_IN_BYTES : undefined,
|
|
20
|
-
l1Contracts: getL1ContractAddressesFromEnv(),
|
|
21
|
-
maxTxsPerBlock: SEQ_MAX_TX_PER_BLOCK ? +SEQ_MAX_TX_PER_BLOCK : 32,
|
|
22
|
-
minTxsPerBlock: SEQ_MIN_TX_PER_BLOCK ? +SEQ_MIN_TX_PER_BLOCK : 1,
|
|
23
|
-
maxSecondsBetweenBlocks: SEQ_MAX_SECONDS_BETWEEN_BLOCKS ? +SEQ_MAX_SECONDS_BETWEEN_BLOCKS : 0,
|
|
24
|
-
minSecondsBetweenBlocks: SEQ_MIN_SECONDS_BETWEEN_BLOCKS ? +SEQ_MIN_SECONDS_BETWEEN_BLOCKS : 0,
|
|
25
|
-
sequencerSkipSubmitProofs: ['1', 'true'].includes(SEQ_SKIP_SUBMIT_PROOFS ?? ''),
|
|
26
|
-
// TODO: undefined should not be allowed for the following 2 values in PROD
|
|
27
|
-
coinbase: COINBASE ? EthAddress.fromString(COINBASE) : undefined,
|
|
28
|
-
feeRecipient: FEE_RECIPIENT ? AztecAddress.fromString(FEE_RECIPIENT) : undefined,
|
|
29
|
-
acvmWorkingDirectory: ACVM_WORKING_DIRECTORY ? ACVM_WORKING_DIRECTORY : undefined,
|
|
30
|
-
acvmBinaryPath: ACVM_BINARY_PATH ? ACVM_BINARY_PATH : undefined,
|
|
31
|
-
allowedInSetup: SEQ_ALLOWED_SETUP_FN
|
|
32
|
-
? parseSequencerAllowList(SEQ_ALLOWED_SETUP_FN)
|
|
33
|
-
: getDefaultAllowedSetupFunctions(),
|
|
34
|
-
allowedInTeardown: SEQ_ALLOWED_TEARDOWN_FN
|
|
35
|
-
? parseSequencerAllowList(SEQ_ALLOWED_TEARDOWN_FN)
|
|
36
|
-
: getDefaultAllowedTeardownFunctions(),
|
|
37
|
-
...getTxSenderConfigFromEnv('SEQ'),
|
|
38
|
-
};
|
|
98
|
+
return getConfigFromMappings(sequencerClientConfigMappings);
|
|
39
99
|
}
|
|
40
100
|
/**
|
|
41
101
|
* Parses a string to a list of allowed elements.
|
|
@@ -93,7 +153,7 @@ function getDefaultAllowedSetupFunctions() {
|
|
|
93
153
|
},
|
|
94
154
|
// needed for claiming on the same tx as a spend
|
|
95
155
|
{
|
|
96
|
-
address:
|
|
156
|
+
address: FeeJuiceAddress,
|
|
97
157
|
selector: FunctionSelector.fromSignature('_increase_public_balance((Field),Field)'),
|
|
98
158
|
},
|
|
99
159
|
// needed for private transfers via FPC
|
|
@@ -119,4 +179,4 @@ function getDefaultAllowedTeardownFunctions() {
|
|
|
119
179
|
},
|
|
120
180
|
];
|
|
121
181
|
}
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RHLE9BQU8sRUFBdUIsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RSxPQUFPLEVBRUwsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixrQkFBa0IsR0FDbkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RSxPQUFPLEVBR0wsMEJBQTBCLEVBQzFCLHlCQUF5QixHQUMxQixNQUFNLHVCQUF1QixDQUFDO0FBZ0IvQixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBd0M7SUFDMUUsNEJBQTRCLEVBQUU7UUFDNUIsR0FBRyxFQUFFLDRCQUE0QjtRQUNqQyxXQUFXLEVBQUUsMkRBQTJEO1FBQ3hFLEdBQUcsa0JBQWtCLENBQUMsSUFBSyxDQUFDO0tBQzdCO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsR0FBRyxFQUFFLHNCQUFzQjtRQUMzQixXQUFXLEVBQUUsa0RBQWtEO1FBQy9ELEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDO0tBQzFCO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsR0FBRyxFQUFFLHNCQUFzQjtRQUMzQixXQUFXLEVBQUUsa0RBQWtEO1FBQy9ELEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxD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
|
|
@@ -4,11 +4,6 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
4
4
|
* Reads values from L1 state that is used for the global values.
|
|
5
5
|
*/
|
|
6
6
|
export interface L1GlobalReader {
|
|
7
|
-
/**
|
|
8
|
-
* Fetches the last timestamp that a block was processed by the contract.
|
|
9
|
-
* @returns The last timestamp that a block was processed by the contract.
|
|
10
|
-
*/
|
|
11
|
-
getLastTimestamp(): Promise<bigint>;
|
|
12
7
|
/**
|
|
13
8
|
* Fetches the version of the rollup contract.
|
|
14
9
|
* @returns The version of the rollup contract.
|
|
@@ -25,10 +20,21 @@ export interface L1GlobalReader {
|
|
|
25
20
|
*/
|
|
26
21
|
getL1CurrentTime(): Promise<bigint>;
|
|
27
22
|
/**
|
|
28
|
-
* Gets the
|
|
29
|
-
* @returns The
|
|
23
|
+
* Gets the current slot.
|
|
24
|
+
* @returns The current slot.
|
|
25
|
+
*/
|
|
26
|
+
getCurrentSlot(): Promise<bigint>;
|
|
27
|
+
/**
|
|
28
|
+
* Get the slot for a specific timestamp.
|
|
29
|
+
* @param timestamp - The timestamp to get the slot for.
|
|
30
|
+
*/
|
|
31
|
+
getSlotAt(timestamp: readonly [bigint]): Promise<bigint>;
|
|
32
|
+
/**
|
|
33
|
+
* Gets the timestamp for a slot
|
|
34
|
+
* @param slot - The slot to get the timestamp for.
|
|
35
|
+
* @returns The timestamp for the slot.
|
|
30
36
|
*/
|
|
31
|
-
|
|
37
|
+
getTimestampForSlot(slot: readonly [bigint]): Promise<bigint>;
|
|
32
38
|
}
|
|
33
39
|
/**
|
|
34
40
|
* Builds global variables from L1 state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,UAAU,EAEf,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9B;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAElC;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzD;;;;OAIG;IACH,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,oBAAoB,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACnH;AAED;;;GAGG;AACH,qBAAa,+BAAgC,YAAW,qBAAqB;IAE/D,OAAO,CAAC,QAAQ,CAAC,MAAM;IADnC,OAAO,CAAC,GAAG,CAA4E;gBAC1D,MAAM,EAAE,cAAc;IAEnD;;;;;;OAMG;IACU,oBAAoB,CAC/B,WAAW,EAAE,EAAE,EACf,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,eAAe,CAAC;CA2B5B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GasFees, GlobalVariables } from '@aztec/circuits.js';
|
|
1
|
+
import { ETHEREUM_SLOT_DURATION, GasFees, GlobalVariables, } from '@aztec/circuits.js';
|
|
2
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
/**
|
|
@@ -18,24 +18,18 @@ export class SimpleTestGlobalVariableBuilder {
|
|
|
18
18
|
* @returns The global variables for the given block number.
|
|
19
19
|
*/
|
|
20
20
|
async buildGlobalVariables(blockNumber, coinbase, feeRecipient) {
|
|
21
|
-
|
|
21
|
+
// Not just the current slot, the slot of the next block.
|
|
22
|
+
const ts = (await this.reader.getL1CurrentTime()) + BigInt(ETHEREUM_SLOT_DURATION);
|
|
23
|
+
const slot = await this.reader.getSlotAt([ts]);
|
|
24
|
+
const timestamp = await this.reader.getTimestampForSlot([slot]);
|
|
25
|
+
const slotFr = new Fr(slot);
|
|
26
|
+
const timestampFr = new Fr(timestamp);
|
|
22
27
|
const version = new Fr(await this.reader.getVersion());
|
|
23
28
|
const chainId = new Fr(await this.reader.getChainId());
|
|
24
|
-
// TODO(rahul) - fix #1614. By using the cheatcode warp to modify L2 time,
|
|
25
|
-
// txs in the next rollup would have same time as the txs in the current rollup (i.e. the rollup that was warped).
|
|
26
|
-
// So, for now you check if L2 time was warped and if so, serve warpedTime + 1 to txs in the new rollup.
|
|
27
|
-
// Check if L2 time was warped in the last rollup by checking if current L1 time is same as the warpedTime (stored on the rollup contract).
|
|
28
|
-
// more details at https://github.com/AztecProtocol/aztec-packages/issues/1614
|
|
29
|
-
const currTimestamp = await this.reader.getL1CurrentTime();
|
|
30
|
-
const rollupWarpTime = await this.reader.getLastWarpedBlockTs();
|
|
31
|
-
const isLastBlockWarped = rollupWarpTime === currTimestamp;
|
|
32
|
-
if (isLastBlockWarped) {
|
|
33
|
-
lastTimestamp = new Fr(lastTimestamp.value + 1n);
|
|
34
|
-
}
|
|
35
29
|
const gasFees = GasFees.default();
|
|
36
|
-
const globalVariables = new GlobalVariables(chainId, version, blockNumber,
|
|
30
|
+
const globalVariables = new GlobalVariables(chainId, version, blockNumber, slotFr, timestampFr, coinbase, feeRecipient, gasFees);
|
|
37
31
|
this.log.debug(`Built global variables for block ${blockNumber}`, globalVariables.toJSON());
|
|
38
|
-
return
|
|
32
|
+
return globalVariables;
|
|
39
33
|
}
|
|
40
34
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX2J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIvZ2xvYmFsX2J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHNCQUFzQixFQUV0QixPQUFPLEVBQ1AsZUFBZSxHQUNoQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQXlEMUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLCtCQUErQjtJQUUxQyxZQUE2QixNQUFzQjtRQUF0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUQzQyxRQUFHLEdBQUcsaUJBQWlCLENBQUMscURBQXFELENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRXZEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxvQkFBb0IsQ0FDL0IsV0FBZSxFQUNmLFFBQW9CLEVBQ3BCLFlBQTBCO1FBRTFCLHlEQUF5RDtRQUN6RCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFbkYsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0QyxNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN2RCxNQUFNLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUV2RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQ3pDLE9BQU8sRUFDUCxPQUFPLEVBQ1AsV0FBVyxFQUNYLE1BQU0sRUFDTixXQUFXLEVBQ1gsUUFBUSxFQUNSLFlBQVksRUFDWixPQUFPLENBQ1IsQ0FBQztRQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxXQUFXLEVBQUUsRUFBRSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM1RixPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0NBQ0YifQ==
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type L1ReaderConfig } from '@aztec/ethereum';
|
|
2
2
|
import { type GlobalVariableBuilder } from './global_builder.js';
|
|
3
3
|
export { SimpleTestGlobalVariableBuilder as SimpleGlobalVariableBuilder } from './global_builder.js';
|
|
4
|
-
export { GlobalReaderConfig } from './config.js';
|
|
5
4
|
export { GlobalVariableBuilder } from './global_builder.js';
|
|
6
5
|
/**
|
|
7
6
|
* Returns a new instance of the global variable builder.
|
|
8
7
|
* @param config - Configuration to initialize the builder.
|
|
9
8
|
* @returns A new instance of the global variable builder.
|
|
10
9
|
*/
|
|
11
|
-
export declare function getGlobalVariableBuilder(config:
|
|
10
|
+
export declare function getGlobalVariableBuilder(config: L1ReaderConfig): GlobalVariableBuilder;
|
|
12
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,KAAK,qBAAqB,EAAmC,MAAM,qBAAqB,CAAC;AAGlG,OAAO,EAAE,+BAA+B,IAAI,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,cAAc,GAAG,qBAAqB,CAEtF"}
|
|
@@ -9,4 +9,4 @@ export { SimpleTestGlobalVariableBuilder as SimpleGlobalVariableBuilder } from '
|
|
|
9
9
|
export function getGlobalVariableBuilder(config) {
|
|
10
10
|
return new SimpleTestGlobalVariableBuilder(new ViemReader(config));
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUE4QiwrQkFBK0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsK0JBQStCLElBQUksMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLE1BQXNCO0lBQzdELE9BQU8sSUFBSSwrQkFBK0IsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUMifQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type L1ReaderConfig } from '@aztec/ethereum';
|
|
2
2
|
import { type L1GlobalReader } from './global_builder.js';
|
|
3
3
|
/**
|
|
4
4
|
* Reads values from L1 state using viem.
|
|
@@ -6,11 +6,12 @@ import { type L1GlobalReader } from './global_builder.js';
|
|
|
6
6
|
export declare class ViemReader implements L1GlobalReader {
|
|
7
7
|
private rollupContract;
|
|
8
8
|
private publicClient;
|
|
9
|
-
constructor(config:
|
|
10
|
-
getLastTimestamp(): Promise<bigint>;
|
|
9
|
+
constructor(config: L1ReaderConfig);
|
|
11
10
|
getVersion(): Promise<bigint>;
|
|
12
11
|
getChainId(): Promise<bigint>;
|
|
13
12
|
getL1CurrentTime(): Promise<bigint>;
|
|
14
|
-
|
|
13
|
+
getCurrentSlot(): Promise<bigint>;
|
|
14
|
+
getSlotAt(timestamp: readonly [bigint]): Promise<bigint>;
|
|
15
|
+
getTimestampForSlot(slot: readonly [bigint]): Promise<bigint>;
|
|
15
16
|
}
|
|
16
17
|
//# sourceMappingURL=viem-reader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viem-reader.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/viem-reader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"viem-reader.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/viem-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,iBAAiB,CAAC;AAc3E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC/C,OAAO,CAAC,cAAc,CAAqF;IAC3G,OAAO,CAAC,YAAY,CAA4C;gBAEpD,MAAM,EAAE,cAAc;IAiBrB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxD,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAG3E"}
|
|
@@ -6,8 +6,8 @@ import { createPublicClient, getAddress, getContract, http, } from 'viem';
|
|
|
6
6
|
*/
|
|
7
7
|
export class ViemReader {
|
|
8
8
|
constructor(config) {
|
|
9
|
-
const {
|
|
10
|
-
const chain = createEthereumChain(
|
|
9
|
+
const { l1RpcUrl, l1ChainId: chainId, l1Contracts } = config;
|
|
10
|
+
const chain = createEthereumChain(l1RpcUrl, chainId);
|
|
11
11
|
this.publicClient = createPublicClient({
|
|
12
12
|
chain: chain.chainInfo,
|
|
13
13
|
transport: http(chain.rpcUrl),
|
|
@@ -18,9 +18,6 @@ export class ViemReader {
|
|
|
18
18
|
client: this.publicClient,
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
|
-
async getLastTimestamp() {
|
|
22
|
-
return BigInt(await this.rollupContract.read.lastBlockTs());
|
|
23
|
-
}
|
|
24
21
|
async getVersion() {
|
|
25
22
|
return BigInt(await this.rollupContract.read.VERSION());
|
|
26
23
|
}
|
|
@@ -30,8 +27,14 @@ export class ViemReader {
|
|
|
30
27
|
async getL1CurrentTime() {
|
|
31
28
|
return await Promise.resolve((await this.publicClient.getBlock()).timestamp);
|
|
32
29
|
}
|
|
33
|
-
async
|
|
34
|
-
return BigInt(await this.rollupContract.read.
|
|
30
|
+
async getCurrentSlot() {
|
|
31
|
+
return BigInt(await this.rollupContract.read.getCurrentSlot());
|
|
32
|
+
}
|
|
33
|
+
async getSlotAt(timestamp) {
|
|
34
|
+
return BigInt(await this.rollupContract.read.getSlotAt(timestamp));
|
|
35
|
+
}
|
|
36
|
+
async getTimestampForSlot(slot) {
|
|
37
|
+
return BigInt(await this.rollupContract.read.getTimestampForSlot(slot));
|
|
35
38
|
}
|
|
36
39
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmllbS1yZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIvdmllbS1yZWFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBSUwsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixXQUFXLEVBQ1gsSUFBSSxHQUNMLE1BQU0sTUFBTSxDQUFDO0FBS2Q7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUlyQixZQUFZLE1BQXNCO1FBQ2hDLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFN0QsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxZQUFZLEdBQUcsa0JBQWtCLENBQUM7WUFDckMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQ3RCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUM5QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQztZQUNoQyxPQUFPLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekQsR0FBRyxFQUFFLFNBQVM7WUFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVU7UUFDckIsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0I7UUFDM0IsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWM7UUFDekIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQTRCO1FBQ2pELE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVNLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUF1QjtRQUN0RCxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGIn0=
|
|
@@ -1,29 +1,18 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type L1ReaderConfig } from '@aztec/ethereum';
|
|
2
|
+
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
3
|
/**
|
|
3
4
|
* The configuration of the rollup transaction publisher.
|
|
4
5
|
*/
|
|
5
|
-
export
|
|
6
|
+
export type TxSenderConfig = L1ReaderConfig & {
|
|
6
7
|
/**
|
|
7
8
|
* The private key to be used by the publisher.
|
|
8
9
|
*/
|
|
9
10
|
publisherPrivateKey: `0x${string}`;
|
|
10
|
-
/**
|
|
11
|
-
* The RPC Url of the ethereum host.
|
|
12
|
-
*/
|
|
13
|
-
rpcUrl: string;
|
|
14
|
-
/**
|
|
15
|
-
* The chain ID of the ethereum host.
|
|
16
|
-
*/
|
|
17
|
-
l1ChainId: number;
|
|
18
11
|
/**
|
|
19
12
|
* The number of confirmations required.
|
|
20
13
|
*/
|
|
21
14
|
requiredConfirmations: number;
|
|
22
|
-
|
|
23
|
-
* The deployed l1 contract addresses
|
|
24
|
-
*/
|
|
25
|
-
l1Contracts: L1ContractAddresses;
|
|
26
|
-
}
|
|
15
|
+
};
|
|
27
16
|
/**
|
|
28
17
|
* Configuration of the L1Publisher.
|
|
29
18
|
*/
|
|
@@ -33,5 +22,8 @@ export interface PublisherConfig {
|
|
|
33
22
|
*/
|
|
34
23
|
l1PublishRetryIntervalMS: number;
|
|
35
24
|
}
|
|
25
|
+
export declare const getTxSenderConfigMappings: (scope: 'PROVER' | 'SEQ') => ConfigMappingsType<Omit<TxSenderConfig, 'l1Contracts'>>;
|
|
36
26
|
export declare function getTxSenderConfigFromEnv(scope: 'PROVER' | 'SEQ'): Omit<TxSenderConfig, 'l1Contracts'>;
|
|
27
|
+
export declare const getPublisherConfigMappings: (scope: 'PROVER' | 'SEQ') => ConfigMappingsType<PublisherConfig>;
|
|
28
|
+
export declare function getPublisherConfigFromEnv(scope: 'PROVER' | 'SEQ'): PublisherConfig;
|
|
37
29
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAY,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,KAAK,kBAAkB,EAAyB,MAAM,0BAA0B,CAAC;AAE1F;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C;;OAEG;IACH,mBAAmB,EAAE,KAAK,MAAM,EAAE,CAAC;IAEnC;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,eAAO,MAAM,yBAAyB,EAAE,CACtC,KAAK,EAAE,QAAQ,GAAG,KAAK,KACpB,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAuBzD,CAAC;AAEH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAErG;AAED,eAAO,MAAM,0BAA0B,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,KAAK,kBAAkB,CAAC,eAAe,CAOtG,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,eAAe,CAElF"}
|