@aztec/sequencer-client 0.65.2 → 0.67.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/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +3 -2
- package/dest/config.js +3 -3
- package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
- package/dest/global_variable_builder/global_builder.js +3 -4
- package/dest/publisher/config.d.ts +4 -4
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/config.js +3 -2
- package/dest/publisher/l1-publisher-metrics.d.ts.map +1 -1
- package/dest/publisher/l1-publisher-metrics.js +2 -8
- package/dest/publisher/l1-publisher.d.ts +7 -4
- package/dest/publisher/l1-publisher.d.ts.map +1 -1
- package/dest/publisher/l1-publisher.js +67 -50
- package/dest/publisher/utils.d.ts.map +1 -1
- package/dest/publisher/utils.js +2 -1
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/metrics.js +2 -8
- package/dest/sequencer/sequencer.d.ts +13 -4
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +124 -73
- package/dest/sequencer/utils.js +2 -2
- package/dest/tx_validator/gas_validator.js +3 -3
- package/dest/tx_validator/phases_validator.js +3 -3
- package/package.json +23 -19
- package/src/client/sequencer-client.ts +2 -2
- package/src/config.ts +2 -2
- package/src/global_variable_builder/global_builder.ts +3 -3
- package/src/publisher/config.ts +7 -4
- package/src/publisher/l1-publisher-metrics.ts +1 -7
- package/src/publisher/l1-publisher.ts +98 -64
- package/src/publisher/utils.ts +1 -0
- package/src/sequencer/metrics.ts +0 -7
- package/src/sequencer/sequencer.ts +152 -123
- package/src/sequencer/utils.ts +1 -1
- package/src/tx_validator/gas_validator.ts +2 -2
- package/src/tx_validator/phases_validator.ts +2 -2
- package/dest/block_builder/index.d.ts +0 -7
- package/dest/block_builder/index.d.ts.map +0 -1
- package/dest/block_builder/index.js +0 -3
- package/dest/block_builder/light.d.ts +0 -26
- package/dest/block_builder/light.d.ts.map +0 -1
- package/dest/block_builder/light.js +0 -58
- package/dest/block_builder/orchestrator.d.ts +0 -23
- package/dest/block_builder/orchestrator.d.ts.map +0 -1
- package/dest/block_builder/orchestrator.js +0 -33
- package/src/block_builder/index.ts +0 -7
- package/src/block_builder/light.ts +0 -92
- package/src/block_builder/orchestrator.ts +0 -43
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/block_builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAExF,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,EAAE,wBAAwB,GAAG,YAAY,CAAC;CACpD"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './orchestrator.js';
|
|
2
|
-
export * from './light.js';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2tfYnVpbGRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsWUFBWSxDQUFDIn0=
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { type BlockBuilder, L2Block, type MerkleTreeWriteOperations, type ProcessedTx } from '@aztec/circuit-types';
|
|
2
|
-
import { Fr, type GlobalVariables } from '@aztec/circuits.js';
|
|
3
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
-
/**
|
|
5
|
-
* Builds a block and its header from a set of processed tx without running any circuits.
|
|
6
|
-
*/
|
|
7
|
-
export declare class LightweightBlockBuilder implements BlockBuilder {
|
|
8
|
-
private db;
|
|
9
|
-
private telemetry;
|
|
10
|
-
private numTxs?;
|
|
11
|
-
private globalVariables?;
|
|
12
|
-
private l1ToL2Messages?;
|
|
13
|
-
private readonly txs;
|
|
14
|
-
private readonly logger;
|
|
15
|
-
constructor(db: MerkleTreeWriteOperations, telemetry: TelemetryClient);
|
|
16
|
-
startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<void>;
|
|
17
|
-
addNewTx(tx: ProcessedTx): Promise<void>;
|
|
18
|
-
setBlockCompleted(): Promise<L2Block>;
|
|
19
|
-
private buildBlock;
|
|
20
|
-
}
|
|
21
|
-
export declare class LightweightBlockBuilderFactory {
|
|
22
|
-
private telemetry?;
|
|
23
|
-
constructor(telemetry?: TelemetryClient | undefined);
|
|
24
|
-
create(db: MerkleTreeWriteOperations): BlockBuilder;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=light.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../src/block_builder/light.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,YAAY,EACjB,OAAO,EAEP,KAAK,yBAAyB,EAC9B,KAAK,WAAW,EAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,EAAE,EAAE,KAAK,eAAe,EAAuC,MAAM,oBAAoB,CAAC;AAKnG,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D;;GAEG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAS9C,OAAO,CAAC,EAAE;IAA6B,OAAO,CAAC,SAAS;IARpE,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAO;IAE9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IAEzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmE;gBAEtE,EAAE,EAAE,yBAAyB,EAAU,SAAS,EAAE,eAAe;IAE/E,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpG,QAAQ,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;YAkB7B,UAAU;CAgBzB;AAED,qBAAa,8BAA8B;IAC7B,OAAO,CAAC,SAAS,CAAC;gBAAV,SAAS,CAAC,6BAAiB;IAE/C,MAAM,CAAC,EAAE,EAAE,yBAAyB,GAAG,YAAY;CAGpD"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { createDebugLogger } from '@aztec/aztec.js';
|
|
2
|
-
import { L2Block, MerkleTreeId, makeEmptyProcessedTx, } from '@aztec/circuit-types';
|
|
3
|
-
import { Fr, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/circuits.js';
|
|
4
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
|
-
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types';
|
|
6
|
-
import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
7
|
-
import { buildBaseRollupHints, buildHeaderAndBodyFromTxs, getTreeSnapshot } from '@aztec/prover-client/helpers';
|
|
8
|
-
import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
|
|
9
|
-
import { inspect } from 'util';
|
|
10
|
-
/**
|
|
11
|
-
* Builds a block and its header from a set of processed tx without running any circuits.
|
|
12
|
-
*/
|
|
13
|
-
export class LightweightBlockBuilder {
|
|
14
|
-
constructor(db, telemetry) {
|
|
15
|
-
this.db = db;
|
|
16
|
-
this.telemetry = telemetry;
|
|
17
|
-
this.txs = [];
|
|
18
|
-
this.logger = createDebugLogger('aztec:sequencer-client:block_builder_light');
|
|
19
|
-
}
|
|
20
|
-
async startNewBlock(numTxs, globalVariables, l1ToL2Messages) {
|
|
21
|
-
this.logger.verbose('Starting new block', { numTxs, globalVariables: inspect(globalVariables), l1ToL2Messages });
|
|
22
|
-
this.numTxs = numTxs;
|
|
23
|
-
this.globalVariables = globalVariables;
|
|
24
|
-
this.l1ToL2Messages = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
|
|
25
|
-
// Update L1 to L2 tree
|
|
26
|
-
await this.db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, this.l1ToL2Messages);
|
|
27
|
-
}
|
|
28
|
-
async addNewTx(tx) {
|
|
29
|
-
this.logger.verbose('Adding new tx to block', { txHash: tx.hash.toString() });
|
|
30
|
-
this.txs.push(tx);
|
|
31
|
-
await buildBaseRollupHints(tx, this.globalVariables, this.db);
|
|
32
|
-
}
|
|
33
|
-
async setBlockCompleted() {
|
|
34
|
-
const paddingTxCount = this.numTxs - this.txs.length;
|
|
35
|
-
this.logger.verbose(`Setting block as completed and adding ${paddingTxCount} padding txs`);
|
|
36
|
-
for (let i = 0; i < paddingTxCount; i++) {
|
|
37
|
-
await this.addNewTx(makeEmptyProcessedTx(this.db.getInitialHeader(), this.globalVariables.chainId, this.globalVariables.version, getVKTreeRoot(), protocolContractTreeRoot));
|
|
38
|
-
}
|
|
39
|
-
return this.buildBlock();
|
|
40
|
-
}
|
|
41
|
-
async buildBlock() {
|
|
42
|
-
this.logger.verbose(`Finalising block`);
|
|
43
|
-
const { header, body } = await buildHeaderAndBodyFromTxs(this.txs, this.globalVariables, this.l1ToL2Messages, this.db);
|
|
44
|
-
await this.db.updateArchive(header);
|
|
45
|
-
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db);
|
|
46
|
-
const block = new L2Block(newArchive, header, body);
|
|
47
|
-
return block;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
export class LightweightBlockBuilderFactory {
|
|
51
|
-
constructor(telemetry) {
|
|
52
|
-
this.telemetry = telemetry;
|
|
53
|
-
}
|
|
54
|
-
create(db) {
|
|
55
|
-
return new LightweightBlockBuilder(db, this.telemetry ?? new NoopTelemetryClient());
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2tfYnVpbGRlci9saWdodC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBRUwsT0FBTyxFQUNQLFlBQVksRUFHWixvQkFBb0IsR0FDckIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsRUFBRSxFQUF3QixtQ0FBbUMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWhILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0I7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBU2xDLFlBQW9CLEVBQTZCLEVBQVUsU0FBMEI7UUFBakUsT0FBRSxHQUFGLEVBQUUsQ0FBMkI7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUpwRSxRQUFHLEdBQWtCLEVBQUUsQ0FBQztRQUV4QixXQUFNLEdBQUcsaUJBQWlCLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUVGLENBQUM7SUFFekYsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFjLEVBQUUsZUFBZ0MsRUFBRSxjQUFvQjtRQUN4RixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFD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
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { type BlockBuilder, type L2Block, type MerkleTreeWriteOperations, type ProcessedTx } 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 unused at the moment, but could be leveraged by a prover-node to ascertain that it can prove a block before
|
|
8
|
-
* committing to proving it by sending a quote.
|
|
9
|
-
*/
|
|
10
|
-
export declare class OrchestratorBlockBuilder implements BlockBuilder {
|
|
11
|
-
private orchestrator;
|
|
12
|
-
constructor(db: MerkleTreeWriteOperations, simulationProvider: SimulationProvider, telemetry: TelemetryClient);
|
|
13
|
-
startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<void>;
|
|
14
|
-
setBlockCompleted(): Promise<L2Block>;
|
|
15
|
-
addNewTx(tx: ProcessedTx): Promise<void>;
|
|
16
|
-
}
|
|
17
|
-
export declare class OrchestratorBlockBuilderFactory {
|
|
18
|
-
private simulationProvider;
|
|
19
|
-
private telemetry?;
|
|
20
|
-
constructor(simulationProvider: SimulationProvider, telemetry?: TelemetryClient | undefined);
|
|
21
|
-
create(db: MerkleTreeWriteOperations): BlockBuilder;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/block_builder/orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,yBAAyB,EAC9B,KAAK,WAAW,EACjB,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;;;;GAIG;AACH,qBAAa,wBAAyB,YAAW,YAAY;IAC3D,OAAO,CAAC,YAAY,CAAsB;gBAC9B,EAAE,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe;IAK7G,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAGpG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAGrC,QAAQ,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzC;AAED,qBAAa,+BAA+B;IAC9B,OAAO,CAAC,kBAAkB;IAAsB,OAAO,CAAC,SAAS,CAAC;gBAA1D,kBAAkB,EAAE,kBAAkB,EAAU,SAAS,CAAC,6BAAiB;IAE/F,MAAM,CAAC,EAAE,EAAE,yBAAyB,GAAG,YAAY;CAGpD"}
|
|
@@ -1,33 +0,0 @@
|
|
|
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 unused at the moment, but could be leveraged by a prover-node to ascertain that it can prove a block before
|
|
7
|
-
* committing to proving it by sending a quote.
|
|
8
|
-
*/
|
|
9
|
-
export class OrchestratorBlockBuilder {
|
|
10
|
-
constructor(db, simulationProvider, telemetry) {
|
|
11
|
-
const testProver = new TestCircuitProver(telemetry, simulationProvider);
|
|
12
|
-
this.orchestrator = new ProvingOrchestrator(db, testProver, telemetry);
|
|
13
|
-
}
|
|
14
|
-
startNewBlock(numTxs, globalVariables, l1ToL2Messages) {
|
|
15
|
-
return this.orchestrator.startNewBlock(numTxs, globalVariables, l1ToL2Messages);
|
|
16
|
-
}
|
|
17
|
-
setBlockCompleted() {
|
|
18
|
-
return this.orchestrator.setBlockCompleted();
|
|
19
|
-
}
|
|
20
|
-
addNewTx(tx) {
|
|
21
|
-
return this.orchestrator.addNewTx(tx);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
export class OrchestratorBlockBuilderFactory {
|
|
25
|
-
constructor(simulationProvider, telemetry) {
|
|
26
|
-
this.simulationProvider = simulationProvider;
|
|
27
|
-
this.telemetry = telemetry;
|
|
28
|
-
}
|
|
29
|
-
create(db) {
|
|
30
|
-
return new OrchestratorBlockBuilder(db, this.simulationProvider, this.telemetry ?? new NoopTelemetryClient());
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JjaGVzdHJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jsb2NrX2J1aWxkZXIvb3JjaGVzdHJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBUXJELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRW5FOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLFlBQVksRUFBNkIsRUFBRSxrQkFBc0MsRUFBRSxTQUEwQjtRQUMzRyxNQUFNLFVBQVUsR0FBRyxJQUFJLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYyxFQUFFLGVBQWdDLEVBQUUsY0FBb0I7UUFDbEYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsUUFBUSxDQUFDLEVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sK0JBQStCO0lBQzFDLFlBQW9CLGtCQUFzQyxFQUFVLFNBQTJCO1FBQTNFLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUFHLENBQUM7SUFFbkcsTUFBTSxDQUFDLEVBQTZCO1FBQ2xDLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFDaEgsQ0FBQztDQUNGIn0=
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { createDebugLogger } from '@aztec/aztec.js';
|
|
2
|
-
import {
|
|
3
|
-
type BlockBuilder,
|
|
4
|
-
L2Block,
|
|
5
|
-
MerkleTreeId,
|
|
6
|
-
type MerkleTreeWriteOperations,
|
|
7
|
-
type ProcessedTx,
|
|
8
|
-
makeEmptyProcessedTx,
|
|
9
|
-
} from '@aztec/circuit-types';
|
|
10
|
-
import { Fr, type GlobalVariables, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/circuits.js';
|
|
11
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
12
|
-
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types';
|
|
13
|
-
import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
14
|
-
import { buildBaseRollupHints, buildHeaderAndBodyFromTxs, getTreeSnapshot } from '@aztec/prover-client/helpers';
|
|
15
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
16
|
-
import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
|
|
17
|
-
|
|
18
|
-
import { inspect } from 'util';
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Builds a block and its header from a set of processed tx without running any circuits.
|
|
22
|
-
*/
|
|
23
|
-
export class LightweightBlockBuilder implements BlockBuilder {
|
|
24
|
-
private numTxs?: number;
|
|
25
|
-
private globalVariables?: GlobalVariables;
|
|
26
|
-
private l1ToL2Messages?: Fr[];
|
|
27
|
-
|
|
28
|
-
private readonly txs: ProcessedTx[] = [];
|
|
29
|
-
|
|
30
|
-
private readonly logger = createDebugLogger('aztec:sequencer-client:block_builder_light');
|
|
31
|
-
|
|
32
|
-
constructor(private db: MerkleTreeWriteOperations, private telemetry: TelemetryClient) {}
|
|
33
|
-
|
|
34
|
-
async startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<void> {
|
|
35
|
-
this.logger.verbose('Starting new block', { numTxs, globalVariables: inspect(globalVariables), l1ToL2Messages });
|
|
36
|
-
this.numTxs = numTxs;
|
|
37
|
-
this.globalVariables = globalVariables;
|
|
38
|
-
this.l1ToL2Messages = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
|
|
39
|
-
|
|
40
|
-
// Update L1 to L2 tree
|
|
41
|
-
await this.db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, this.l1ToL2Messages!);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
async addNewTx(tx: ProcessedTx): Promise<void> {
|
|
45
|
-
this.logger.verbose('Adding new tx to block', { txHash: tx.hash.toString() });
|
|
46
|
-
this.txs.push(tx);
|
|
47
|
-
await buildBaseRollupHints(tx, this.globalVariables!, this.db);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
async setBlockCompleted(): Promise<L2Block> {
|
|
51
|
-
const paddingTxCount = this.numTxs! - this.txs.length;
|
|
52
|
-
this.logger.verbose(`Setting block as completed and adding ${paddingTxCount} padding txs`);
|
|
53
|
-
for (let i = 0; i < paddingTxCount; i++) {
|
|
54
|
-
await this.addNewTx(
|
|
55
|
-
makeEmptyProcessedTx(
|
|
56
|
-
this.db.getInitialHeader(),
|
|
57
|
-
this.globalVariables!.chainId,
|
|
58
|
-
this.globalVariables!.version,
|
|
59
|
-
getVKTreeRoot(),
|
|
60
|
-
protocolContractTreeRoot,
|
|
61
|
-
),
|
|
62
|
-
);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return this.buildBlock();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
private async buildBlock(): Promise<L2Block> {
|
|
69
|
-
this.logger.verbose(`Finalising block`);
|
|
70
|
-
|
|
71
|
-
const { header, body } = await buildHeaderAndBodyFromTxs(
|
|
72
|
-
this.txs,
|
|
73
|
-
this.globalVariables!,
|
|
74
|
-
this.l1ToL2Messages!,
|
|
75
|
-
this.db,
|
|
76
|
-
);
|
|
77
|
-
|
|
78
|
-
await this.db.updateArchive(header);
|
|
79
|
-
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db);
|
|
80
|
-
|
|
81
|
-
const block = new L2Block(newArchive, header, body);
|
|
82
|
-
return block;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export class LightweightBlockBuilderFactory {
|
|
87
|
-
constructor(private telemetry?: TelemetryClient) {}
|
|
88
|
-
|
|
89
|
-
create(db: MerkleTreeWriteOperations): BlockBuilder {
|
|
90
|
-
return new LightweightBlockBuilder(db, this.telemetry ?? new NoopTelemetryClient());
|
|
91
|
-
}
|
|
92
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { TestCircuitProver } from '@aztec/bb-prover';
|
|
2
|
-
import {
|
|
3
|
-
type BlockBuilder,
|
|
4
|
-
type L2Block,
|
|
5
|
-
type MerkleTreeWriteOperations,
|
|
6
|
-
type ProcessedTx,
|
|
7
|
-
} from '@aztec/circuit-types';
|
|
8
|
-
import { type Fr, type GlobalVariables } from '@aztec/circuits.js';
|
|
9
|
-
import { ProvingOrchestrator } from '@aztec/prover-client/orchestrator';
|
|
10
|
-
import { type SimulationProvider } from '@aztec/simulator';
|
|
11
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
12
|
-
import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Implements a block simulator using a test circuit prover under the hood, which just simulates circuits and outputs empty proofs.
|
|
16
|
-
* This class is unused at the moment, but could be leveraged by a prover-node to ascertain that it can prove a block before
|
|
17
|
-
* committing to proving it by sending a quote.
|
|
18
|
-
*/
|
|
19
|
-
export class OrchestratorBlockBuilder implements BlockBuilder {
|
|
20
|
-
private orchestrator: ProvingOrchestrator;
|
|
21
|
-
constructor(db: MerkleTreeWriteOperations, simulationProvider: SimulationProvider, telemetry: TelemetryClient) {
|
|
22
|
-
const testProver = new TestCircuitProver(telemetry, simulationProvider);
|
|
23
|
-
this.orchestrator = new ProvingOrchestrator(db, testProver, telemetry);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<void> {
|
|
27
|
-
return this.orchestrator.startNewBlock(numTxs, globalVariables, l1ToL2Messages);
|
|
28
|
-
}
|
|
29
|
-
setBlockCompleted(): Promise<L2Block> {
|
|
30
|
-
return this.orchestrator.setBlockCompleted();
|
|
31
|
-
}
|
|
32
|
-
addNewTx(tx: ProcessedTx): Promise<void> {
|
|
33
|
-
return this.orchestrator.addNewTx(tx);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export class OrchestratorBlockBuilderFactory {
|
|
38
|
-
constructor(private simulationProvider: SimulationProvider, private telemetry?: TelemetryClient) {}
|
|
39
|
-
|
|
40
|
-
create(db: MerkleTreeWriteOperations): BlockBuilder {
|
|
41
|
-
return new OrchestratorBlockBuilder(db, this.simulationProvider, this.telemetry ?? new NoopTelemetryClient());
|
|
42
|
-
}
|
|
43
|
-
}
|