@aztec/sequencer-client 2.0.0-rc.8 → 2.0.2-rc.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/client/sequencer-client.d.ts +2 -1
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +6 -5
- package/dest/publisher/sequencer-publisher.js +12 -9
- package/dest/sequencer/block_builder.d.ts +2 -5
- package/dest/sequencer/block_builder.d.ts.map +1 -1
- package/dest/sequencer/block_builder.js +11 -3
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +11 -6
- package/package.json +26 -26
- package/src/client/sequencer-client.ts +3 -3
- package/src/publisher/sequencer-publisher.ts +11 -11
- package/src/sequencer/block_builder.ts +13 -16
- package/src/sequencer/sequencer.ts +12 -6
|
@@ -21,9 +21,10 @@ import { Sequencer, type SequencerConfig } from '../sequencer/index.js';
|
|
|
21
21
|
export declare class SequencerClient {
|
|
22
22
|
protected publisherManager: PublisherManager<L1TxUtilsWithBlobs>;
|
|
23
23
|
protected sequencer: Sequencer;
|
|
24
|
+
protected blockBuilder: IFullNodeBlockBuilder;
|
|
24
25
|
protected validatorClient?: ValidatorClient | undefined;
|
|
25
26
|
private l1Metrics?;
|
|
26
|
-
constructor(publisherManager: PublisherManager<L1TxUtilsWithBlobs>, sequencer: Sequencer, validatorClient?: ValidatorClient | undefined, l1Metrics?: L1Metrics | undefined);
|
|
27
|
+
constructor(publisherManager: PublisherManager<L1TxUtilsWithBlobs>, sequencer: Sequencer, blockBuilder: IFullNodeBlockBuilder, validatorClient?: ValidatorClient | undefined, l1Metrics?: L1Metrics | undefined);
|
|
27
28
|
/**
|
|
28
29
|
* Initializes a new instance.
|
|
29
30
|
* @param config - Configuration for the sequencer, publisher, and L1 tx sender.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAEL,gBAAgB,EAIjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExE;;GAEG;AACH,qBAAa,eAAe;IAExB,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC;IAChE,SAAS,CAAC,SAAS,EAAE,SAAS;IAC9B,SAAS,CAAC,eAAe,CAAC,EAAE,eAAe;IAC3C,OAAO,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAEL,gBAAgB,EAIjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExE;;GAEG;AACH,qBAAa,eAAe;IAExB,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC;IAChE,SAAS,CAAC,SAAS,EAAE,SAAS;IAC9B,SAAS,CAAC,YAAY,EAAE,qBAAqB;IAC7C,SAAS,CAAC,eAAe,CAAC,EAAE,eAAe;IAC3C,OAAO,CAAC,SAAS,CAAC;gBAJR,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EACtD,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,qBAAqB,EACnC,eAAe,CAAC,EAAE,eAAe,YAAA,EACnC,SAAS,CAAC,EAAE,SAAS,YAAA;IAG/B;;;;;;;;;;;OAWG;WACiB,GAAG,CACrB,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE;QACJ,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;QAC7C,SAAS,EAAE,GAAG,CAAC;QACf,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,aAAa,EAAE,sBAAsB,GAAG,SAAS,CAAC;QAClD,YAAY,EAAE,qBAAqB,CAAC;QACpC,aAAa,EAAE,aAAa,CAAC;QAC7B,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,SAAS,EAAE,eAAe,CAAC;QAC3B,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;QAC7C,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,YAAY,EAAE,YAAY,CAAC;QAC3B,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,SAAS,EAAE,kBAAkB,EAAE,CAAC;QAChC,YAAY,EAAE,eAAe,CAAC;KAC/B;IAkHH;;;OAGG;IACI,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAMhF,4BAA4B;IACf,KAAK;IAMlB;;OAEG;IACU,IAAI;IAMV,YAAY,IAAI,SAAS;IAIhC,IAAI,kBAAkB,IAAI,UAAU,EAAE,GAAG,SAAS,CAEjD;IAED,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;CACF"}
|
|
@@ -13,11 +13,13 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
13
13
|
*/ export class SequencerClient {
|
|
14
14
|
publisherManager;
|
|
15
15
|
sequencer;
|
|
16
|
+
blockBuilder;
|
|
16
17
|
validatorClient;
|
|
17
18
|
l1Metrics;
|
|
18
|
-
constructor(publisherManager, sequencer, validatorClient, l1Metrics){
|
|
19
|
+
constructor(publisherManager, sequencer, blockBuilder, validatorClient, l1Metrics){
|
|
19
20
|
this.publisherManager = publisherManager;
|
|
20
21
|
this.sequencer = sequencer;
|
|
22
|
+
this.blockBuilder = blockBuilder;
|
|
21
23
|
this.validatorClient = validatorClient;
|
|
22
24
|
this.l1Metrics = l1Metrics;
|
|
23
25
|
}
|
|
@@ -50,9 +52,7 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
50
52
|
l1RpcUrls: rpcUrls,
|
|
51
53
|
l1ChainId: chainId,
|
|
52
54
|
viemPollingIntervalMS: config.viemPollingIntervalMS,
|
|
53
|
-
|
|
54
|
-
ethereumSlotDuration: config.ethereumSlotDuration,
|
|
55
|
-
aztecEpochDuration: config.aztecEpochDuration
|
|
55
|
+
ethereumSlotDuration: config.ethereumSlotDuration
|
|
56
56
|
}, {
|
|
57
57
|
dateProvider: deps.dateProvider
|
|
58
58
|
});
|
|
@@ -94,13 +94,14 @@ import { Sequencer } from '../sequencer/index.js';
|
|
|
94
94
|
maxL2BlockGas: sequencerManaLimit
|
|
95
95
|
}, telemetryClient);
|
|
96
96
|
await sequencer.init();
|
|
97
|
-
return new SequencerClient(publisherManager, sequencer, validatorClient, l1Metrics);
|
|
97
|
+
return new SequencerClient(publisherManager, sequencer, blockBuilder, validatorClient, l1Metrics);
|
|
98
98
|
}
|
|
99
99
|
/**
|
|
100
100
|
* Updates sequencer and validator client config.
|
|
101
101
|
* @param config - New parameters.
|
|
102
102
|
*/ updateConfig(config) {
|
|
103
103
|
this.sequencer.updateConfig(config);
|
|
104
|
+
this.blockBuilder.updateConfig(config);
|
|
104
105
|
this.validatorClient?.updateConfig(config);
|
|
105
106
|
}
|
|
106
107
|
/** Starts the sequencer. */ async start() {
|
|
@@ -278,13 +278,13 @@ export class SequencerPublisher {
|
|
|
278
278
|
return undefined;
|
|
279
279
|
}
|
|
280
280
|
const { reason, block } = validationResult;
|
|
281
|
-
const blockNumber = block.
|
|
281
|
+
const blockNumber = block.blockNumber;
|
|
282
282
|
const logData = {
|
|
283
|
-
...block
|
|
283
|
+
...block,
|
|
284
284
|
reason
|
|
285
285
|
};
|
|
286
286
|
const currentBlockNumber = await this.rollupContract.getBlockNumber();
|
|
287
|
-
if (currentBlockNumber < validationResult.block.
|
|
287
|
+
if (currentBlockNumber < validationResult.block.blockNumber) {
|
|
288
288
|
this.log.verbose(`Skipping block ${blockNumber} invalidation since it has already been removed from the pending chain`, {
|
|
289
289
|
currentBlockNumber,
|
|
290
290
|
...logData
|
|
@@ -292,7 +292,10 @@ export class SequencerPublisher {
|
|
|
292
292
|
return undefined;
|
|
293
293
|
}
|
|
294
294
|
const request = this.buildInvalidateBlockRequest(validationResult);
|
|
295
|
-
this.log.debug(`Simulating invalidate block ${blockNumber}`,
|
|
295
|
+
this.log.debug(`Simulating invalidate block ${blockNumber}`, {
|
|
296
|
+
...logData,
|
|
297
|
+
request
|
|
298
|
+
});
|
|
296
299
|
try {
|
|
297
300
|
const { gasUsed } = await this.l1TxUtils.simulate(request, undefined, undefined, ErrorsAbi);
|
|
298
301
|
this.log.verbose(`Simulation for invalidate block ${blockNumber} succeeded`, {
|
|
@@ -341,16 +344,16 @@ export class SequencerPublisher {
|
|
|
341
344
|
if (validationResult.valid) {
|
|
342
345
|
throw new Error('Cannot invalidate a valid block');
|
|
343
346
|
}
|
|
344
|
-
const { block, committee, reason } = validationResult;
|
|
347
|
+
const { block, committee, reason, attestations } = validationResult;
|
|
345
348
|
const logData = {
|
|
346
|
-
...block
|
|
349
|
+
...block,
|
|
347
350
|
reason
|
|
348
351
|
};
|
|
349
|
-
this.log.debug(`Simulating invalidate block ${block.
|
|
352
|
+
this.log.debug(`Simulating invalidate block ${block.blockNumber}`, logData);
|
|
350
353
|
if (reason === 'invalid-attestation') {
|
|
351
|
-
return this.rollupContract.buildInvalidateBadAttestationRequest(block.
|
|
354
|
+
return this.rollupContract.buildInvalidateBadAttestationRequest(block.blockNumber, attestations.map((a)=>a.toViem()), committee, validationResult.invalidIndex);
|
|
352
355
|
} else if (reason === 'insufficient-attestations') {
|
|
353
|
-
return this.rollupContract.buildInvalidateInsufficientAttestationsRequest(block.
|
|
356
|
+
return this.rollupContract.buildInvalidateInsufficientAttestationsRequest(block.blockNumber, attestations.map((a)=>a.toViem()), committee);
|
|
354
357
|
} else {
|
|
355
358
|
const _ = reason;
|
|
356
359
|
throw new Error(`Unknown reason for invalidation`);
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import type { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
3
3
|
import { PublicProcessor } from '@aztec/simulator/server';
|
|
4
|
-
import type { ChainConfig, SequencerConfig } from '@aztec/stdlib/config';
|
|
5
4
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
6
5
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
7
|
-
import type { BuildBlockResult, IFullNodeBlockBuilder, MerkleTreeWriteOperations, PublicProcessorLimits, PublicProcessorValidator, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
6
|
+
import type { BuildBlockResult, FullNodeBlockBuilderConfig, IFullNodeBlockBuilder, MerkleTreeWriteOperations, PublicProcessorLimits, PublicProcessorValidator, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
8
7
|
import { GlobalVariables, Tx } from '@aztec/stdlib/tx';
|
|
9
8
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
10
9
|
export declare function buildBlock(pendingTxs: Iterable<Tx> | AsyncIterable<Tx>, l1ToL2Messages: Fr[], newGlobalVariables: GlobalVariables, opts: PublicProcessorLimits | undefined, worldStateFork: MerkleTreeWriteOperations, processor: PublicProcessor, validator: PublicProcessorValidator, l1Constants: Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration'>, dateProvider: DateProvider, telemetryClient?: TelemetryClient): Promise<BuildBlockResult>;
|
|
11
|
-
type FullNodeBlockBuilderConfig = Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration'> & Pick<ChainConfig, 'l1ChainId' | 'rollupVersion'> & Pick<SequencerConfig, 'txPublicSetupAllowList' | 'fakeProcessingDelayPerTxMs'>;
|
|
12
10
|
export declare class FullNodeBlockBuilder implements IFullNodeBlockBuilder {
|
|
13
11
|
private config;
|
|
14
12
|
private worldState;
|
|
@@ -17,7 +15,7 @@ export declare class FullNodeBlockBuilder implements IFullNodeBlockBuilder {
|
|
|
17
15
|
private telemetryClient;
|
|
18
16
|
constructor(config: FullNodeBlockBuilderConfig, worldState: WorldStateSynchronizer, contractDataSource: ContractDataSource, dateProvider: DateProvider, telemetryClient?: TelemetryClient);
|
|
19
17
|
getConfig(): FullNodeBlockBuilderConfig;
|
|
20
|
-
updateConfig(config: FullNodeBlockBuilderConfig): void;
|
|
18
|
+
updateConfig(config: Partial<FullNodeBlockBuilderConfig>): void;
|
|
21
19
|
makeBlockBuilderDeps(globalVariables: GlobalVariables, fork: MerkleTreeWriteOperations): Promise<{
|
|
22
20
|
processor: PublicProcessor;
|
|
23
21
|
validator: PublicProcessorValidator;
|
|
@@ -26,5 +24,4 @@ export declare class FullNodeBlockBuilder implements IFullNodeBlockBuilder {
|
|
|
26
24
|
buildBlock(pendingTxs: Iterable<Tx> | AsyncIterable<Tx>, l1ToL2Messages: Fr[], globalVariables: GlobalVariables, opts: PublicProcessorLimits, suppliedFork?: MerkleTreeWriteOperations): Promise<BuildBlockResult>;
|
|
27
25
|
getFork(blockNumber: number): Promise<MerkleTreeWriteOperations>;
|
|
28
26
|
}
|
|
29
|
-
export {};
|
|
30
27
|
//# sourceMappingURL=block_builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_builder.d.ts","sourceRoot":"","sources":["../../src/sequencer/block_builder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAInD,OAAO,EAAE,YAAY,EAAS,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EAGL,eAAe,EAEhB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"block_builder.d.ts","sourceRoot":"","sources":["../../src/sequencer/block_builder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAInD,OAAO,EAAE,YAAY,EAAS,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EAGL,eAAe,EAEhB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,6BAA6B,CAAC;AAE1F,OAAO,KAAK,EACV,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAMnF,wBAAsB,UAAU,CAC9B,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EAC5C,cAAc,EAAE,EAAE,EAAE,EACpB,kBAAkB,EAAE,eAAe,EACnC,IAAI,EAAE,qBAAqB,YAAK,EAChC,cAAc,EAAE,yBAAyB,EACzC,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,wBAAwB,EACnC,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,CAAC,EACtE,YAAY,EAAE,YAAY,EAC1B,eAAe,GAAE,eAAsC,GACtD,OAAO,CAAC,gBAAgB,CAAC,CA4C3B;AAWD,qBAAa,oBAAqB,YAAW,qBAAqB;IAE9D,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;gBAJf,MAAM,EAAE,0BAA0B,EAClC,UAAU,EAAE,sBAAsB,EAClC,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,eAAe,GAAE,eAAsC;IAG1D,SAAS,IAAI,0BAA0B;IAIvC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,0BAA0B,CAAC;IAIlD,oBAAoB,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,yBAAyB;;;;YAuCrF,mBAAmB;IAU3B,UAAU,CACd,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EAC5C,cAAc,EAAE,EAAE,EAAE,EACpB,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,qBAAqB,EAC3B,YAAY,CAAC,EAAE,yBAAyB,GACvC,OAAO,CAAC,gBAAgB,CAAC;IAwC5B,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAGjE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MerkleTreeId, elapsed } from '@aztec/aztec.js';
|
|
2
|
-
import { pick } from '@aztec/foundation/collection';
|
|
2
|
+
import { merge, pick } from '@aztec/foundation/collection';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
5
5
|
import { bufferToHex } from '@aztec/foundation/string';
|
|
@@ -50,6 +50,14 @@ export async function buildBlock(pendingTxs, l1ToL2Messages, newGlobalVariables,
|
|
|
50
50
|
log.trace('Built block', res.block.header);
|
|
51
51
|
return res;
|
|
52
52
|
}
|
|
53
|
+
const FullNodeBlockBuilderConfigKeys = [
|
|
54
|
+
'l1GenesisTime',
|
|
55
|
+
'slotDuration',
|
|
56
|
+
'l1ChainId',
|
|
57
|
+
'rollupVersion',
|
|
58
|
+
'txPublicSetupAllowList',
|
|
59
|
+
'fakeProcessingDelayPerTxMs'
|
|
60
|
+
];
|
|
53
61
|
export class FullNodeBlockBuilder {
|
|
54
62
|
config;
|
|
55
63
|
worldState;
|
|
@@ -64,10 +72,10 @@ export class FullNodeBlockBuilder {
|
|
|
64
72
|
this.telemetryClient = telemetryClient;
|
|
65
73
|
}
|
|
66
74
|
getConfig() {
|
|
67
|
-
return pick(this.config,
|
|
75
|
+
return pick(this.config, ...FullNodeBlockBuilderConfigKeys);
|
|
68
76
|
}
|
|
69
77
|
updateConfig(config) {
|
|
70
|
-
this.config = config;
|
|
78
|
+
this.config = merge(this.config, pick(config, ...FullNodeBlockBuilderConfigKeys));
|
|
71
79
|
}
|
|
72
80
|
async makeBlockBuilderDeps(globalVariables, fork) {
|
|
73
81
|
const txPublicSetupAllowList = this.config.txPublicSetupAllowList ?? await getDefaultAllowedSetupFunctions();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"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"}
|
|
@@ -416,7 +416,12 @@ export { SequencerState };
|
|
|
416
416
|
secondsIntoSlot = this.getSecondsIntoSlot(slotNumber);
|
|
417
417
|
this.timetable.assertTimeLeft(proposedState, secondsIntoSlot);
|
|
418
418
|
}
|
|
419
|
-
|
|
419
|
+
const boringStates = [
|
|
420
|
+
SequencerState.IDLE,
|
|
421
|
+
SequencerState.SYNCHRONIZING
|
|
422
|
+
];
|
|
423
|
+
const logLevel = boringStates.includes(proposedState) && boringStates.includes(this.state) ? 'trace' : 'debug';
|
|
424
|
+
this.log[logLevel](`Transitioning from ${this.state} to ${proposedState}`, {
|
|
420
425
|
slotNumber,
|
|
421
426
|
secondsIntoSlot
|
|
422
427
|
});
|
|
@@ -654,14 +659,14 @@ export { SequencerState };
|
|
|
654
659
|
if (pendingChainValidationStatus.valid) {
|
|
655
660
|
return;
|
|
656
661
|
}
|
|
657
|
-
const
|
|
658
|
-
const
|
|
659
|
-
const
|
|
662
|
+
const invalidBlockNumber = pendingChainValidationStatus.block.blockNumber;
|
|
663
|
+
const invalidBlockTimestamp = pendingChainValidationStatus.block.timestamp;
|
|
664
|
+
const timeSinceChainInvalid = this.dateProvider.nowInSeconds() - Number(invalidBlockTimestamp);
|
|
660
665
|
const { secondsBeforeInvalidatingBlockAsCommitteeMember, secondsBeforeInvalidatingBlockAsNonCommitteeMember } = this.config;
|
|
661
666
|
const logData = {
|
|
662
|
-
invalidL1Timestamp,
|
|
667
|
+
invalidL1Timestamp: invalidBlockTimestamp,
|
|
663
668
|
l1Timestamp,
|
|
664
|
-
invalidBlock: pendingChainValidationStatus.block
|
|
669
|
+
invalidBlock: pendingChainValidationStatus.block,
|
|
665
670
|
secondsBeforeInvalidatingBlockAsCommitteeMember,
|
|
666
671
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember,
|
|
667
672
|
ourValidatorAddresses,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2-rc.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -26,37 +26,37 @@
|
|
|
26
26
|
"test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@aztec/aztec.js": "2.0.
|
|
30
|
-
"@aztec/bb-prover": "2.0.
|
|
31
|
-
"@aztec/blob-lib": "2.0.
|
|
32
|
-
"@aztec/blob-sink": "2.0.
|
|
33
|
-
"@aztec/constants": "2.0.
|
|
34
|
-
"@aztec/epoch-cache": "2.0.
|
|
35
|
-
"@aztec/ethereum": "2.0.
|
|
36
|
-
"@aztec/foundation": "2.0.
|
|
37
|
-
"@aztec/l1-artifacts": "2.0.
|
|
38
|
-
"@aztec/merkle-tree": "2.0.
|
|
39
|
-
"@aztec/noir-acvm_js": "2.0.
|
|
40
|
-
"@aztec/noir-contracts.js": "2.0.
|
|
41
|
-
"@aztec/noir-protocol-circuits-types": "2.0.
|
|
42
|
-
"@aztec/noir-types": "2.0.
|
|
43
|
-
"@aztec/p2p": "2.0.
|
|
44
|
-
"@aztec/protocol-contracts": "2.0.
|
|
45
|
-
"@aztec/prover-client": "2.0.
|
|
46
|
-
"@aztec/simulator": "2.0.
|
|
47
|
-
"@aztec/slasher": "2.0.
|
|
48
|
-
"@aztec/stdlib": "2.0.
|
|
49
|
-
"@aztec/telemetry-client": "2.0.
|
|
50
|
-
"@aztec/validator-client": "2.0.
|
|
51
|
-
"@aztec/world-state": "2.0.
|
|
29
|
+
"@aztec/aztec.js": "2.0.2-rc.1",
|
|
30
|
+
"@aztec/bb-prover": "2.0.2-rc.1",
|
|
31
|
+
"@aztec/blob-lib": "2.0.2-rc.1",
|
|
32
|
+
"@aztec/blob-sink": "2.0.2-rc.1",
|
|
33
|
+
"@aztec/constants": "2.0.2-rc.1",
|
|
34
|
+
"@aztec/epoch-cache": "2.0.2-rc.1",
|
|
35
|
+
"@aztec/ethereum": "2.0.2-rc.1",
|
|
36
|
+
"@aztec/foundation": "2.0.2-rc.1",
|
|
37
|
+
"@aztec/l1-artifacts": "2.0.2-rc.1",
|
|
38
|
+
"@aztec/merkle-tree": "2.0.2-rc.1",
|
|
39
|
+
"@aztec/noir-acvm_js": "2.0.2-rc.1",
|
|
40
|
+
"@aztec/noir-contracts.js": "2.0.2-rc.1",
|
|
41
|
+
"@aztec/noir-protocol-circuits-types": "2.0.2-rc.1",
|
|
42
|
+
"@aztec/noir-types": "2.0.2-rc.1",
|
|
43
|
+
"@aztec/p2p": "2.0.2-rc.1",
|
|
44
|
+
"@aztec/protocol-contracts": "2.0.2-rc.1",
|
|
45
|
+
"@aztec/prover-client": "2.0.2-rc.1",
|
|
46
|
+
"@aztec/simulator": "2.0.2-rc.1",
|
|
47
|
+
"@aztec/slasher": "2.0.2-rc.1",
|
|
48
|
+
"@aztec/stdlib": "2.0.2-rc.1",
|
|
49
|
+
"@aztec/telemetry-client": "2.0.2-rc.1",
|
|
50
|
+
"@aztec/validator-client": "2.0.2-rc.1",
|
|
51
|
+
"@aztec/world-state": "2.0.2-rc.1",
|
|
52
52
|
"lodash.chunk": "^4.2.0",
|
|
53
53
|
"lodash.pick": "^4.4.0",
|
|
54
54
|
"tslib": "^2.4.0",
|
|
55
55
|
"viem": "2.23.7"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@aztec/archiver": "2.0.
|
|
59
|
-
"@aztec/kv-store": "2.0.
|
|
58
|
+
"@aztec/archiver": "2.0.2-rc.1",
|
|
59
|
+
"@aztec/kv-store": "2.0.2-rc.1",
|
|
60
60
|
"@jest/globals": "^30.0.0",
|
|
61
61
|
"@types/jest": "^30.0.0",
|
|
62
62
|
"@types/lodash.chunk": "^4.2.7",
|
|
@@ -37,6 +37,7 @@ export class SequencerClient {
|
|
|
37
37
|
constructor(
|
|
38
38
|
protected publisherManager: PublisherManager<L1TxUtilsWithBlobs>,
|
|
39
39
|
protected sequencer: Sequencer,
|
|
40
|
+
protected blockBuilder: IFullNodeBlockBuilder,
|
|
40
41
|
protected validatorClient?: ValidatorClient,
|
|
41
42
|
private l1Metrics?: L1Metrics,
|
|
42
43
|
) {}
|
|
@@ -110,9 +111,7 @@ export class SequencerClient {
|
|
|
110
111
|
l1RpcUrls: rpcUrls,
|
|
111
112
|
l1ChainId: chainId,
|
|
112
113
|
viemPollingIntervalMS: config.viemPollingIntervalMS,
|
|
113
|
-
aztecSlotDuration: config.aztecSlotDuration,
|
|
114
114
|
ethereumSlotDuration: config.ethereumSlotDuration,
|
|
115
|
-
aztecEpochDuration: config.aztecEpochDuration,
|
|
116
115
|
},
|
|
117
116
|
{ dateProvider: deps.dateProvider },
|
|
118
117
|
));
|
|
@@ -183,7 +182,7 @@ export class SequencerClient {
|
|
|
183
182
|
|
|
184
183
|
await sequencer.init();
|
|
185
184
|
|
|
186
|
-
return new SequencerClient(publisherManager, sequencer, validatorClient, l1Metrics);
|
|
185
|
+
return new SequencerClient(publisherManager, sequencer, blockBuilder, validatorClient, l1Metrics);
|
|
187
186
|
}
|
|
188
187
|
|
|
189
188
|
/**
|
|
@@ -192,6 +191,7 @@ export class SequencerClient {
|
|
|
192
191
|
*/
|
|
193
192
|
public updateConfig(config: SequencerConfig & Partial<ValidatorClientFullConfig>) {
|
|
194
193
|
this.sequencer.updateConfig(config);
|
|
194
|
+
this.blockBuilder.updateConfig(config);
|
|
195
195
|
this.validatorClient?.updateConfig(config);
|
|
196
196
|
}
|
|
197
197
|
|
|
@@ -385,11 +385,11 @@ export class SequencerPublisher {
|
|
|
385
385
|
}
|
|
386
386
|
|
|
387
387
|
const { reason, block } = validationResult;
|
|
388
|
-
const blockNumber = block.
|
|
389
|
-
const logData = { ...block
|
|
388
|
+
const blockNumber = block.blockNumber;
|
|
389
|
+
const logData = { ...block, reason };
|
|
390
390
|
|
|
391
391
|
const currentBlockNumber = await this.rollupContract.getBlockNumber();
|
|
392
|
-
if (currentBlockNumber < validationResult.block.
|
|
392
|
+
if (currentBlockNumber < validationResult.block.blockNumber) {
|
|
393
393
|
this.log.verbose(
|
|
394
394
|
`Skipping block ${blockNumber} invalidation since it has already been removed from the pending chain`,
|
|
395
395
|
{ currentBlockNumber, ...logData },
|
|
@@ -398,7 +398,7 @@ export class SequencerPublisher {
|
|
|
398
398
|
}
|
|
399
399
|
|
|
400
400
|
const request = this.buildInvalidateBlockRequest(validationResult);
|
|
401
|
-
this.log.debug(`Simulating invalidate block ${blockNumber}`, logData);
|
|
401
|
+
this.log.debug(`Simulating invalidate block ${blockNumber}`, { ...logData, request });
|
|
402
402
|
|
|
403
403
|
try {
|
|
404
404
|
const { gasUsed } = await this.l1TxUtils.simulate(request, undefined, undefined, ErrorsAbi);
|
|
@@ -442,21 +442,21 @@ export class SequencerPublisher {
|
|
|
442
442
|
throw new Error('Cannot invalidate a valid block');
|
|
443
443
|
}
|
|
444
444
|
|
|
445
|
-
const { block, committee, reason } = validationResult;
|
|
446
|
-
const logData = { ...block
|
|
447
|
-
this.log.debug(`Simulating invalidate block ${block.
|
|
445
|
+
const { block, committee, reason, attestations } = validationResult;
|
|
446
|
+
const logData = { ...block, reason };
|
|
447
|
+
this.log.debug(`Simulating invalidate block ${block.blockNumber}`, logData);
|
|
448
448
|
|
|
449
449
|
if (reason === 'invalid-attestation') {
|
|
450
450
|
return this.rollupContract.buildInvalidateBadAttestationRequest(
|
|
451
|
-
block.
|
|
452
|
-
|
|
451
|
+
block.blockNumber,
|
|
452
|
+
attestations.map(a => a.toViem()),
|
|
453
453
|
committee,
|
|
454
454
|
validationResult.invalidIndex,
|
|
455
455
|
);
|
|
456
456
|
} else if (reason === 'insufficient-attestations') {
|
|
457
457
|
return this.rollupContract.buildInvalidateInsufficientAttestationsRequest(
|
|
458
|
-
block.
|
|
459
|
-
|
|
458
|
+
block.blockNumber,
|
|
459
|
+
attestations.map(a => a.toViem()),
|
|
460
460
|
committee,
|
|
461
461
|
);
|
|
462
462
|
} else {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MerkleTreeId, elapsed } from '@aztec/aztec.js';
|
|
2
|
-
import { pick } from '@aztec/foundation/collection';
|
|
2
|
+
import { merge, pick } from '@aztec/foundation/collection';
|
|
3
3
|
import type { Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
5
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
@@ -13,12 +13,12 @@ import {
|
|
|
13
13
|
PublicProcessor,
|
|
14
14
|
TelemetryPublicTxSimulator,
|
|
15
15
|
} from '@aztec/simulator/server';
|
|
16
|
-
import type { ChainConfig, SequencerConfig } from '@aztec/stdlib/config';
|
|
17
16
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
18
17
|
import { type L1RollupConstants, getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
|
|
19
18
|
import { Gas } from '@aztec/stdlib/gas';
|
|
20
19
|
import type {
|
|
21
20
|
BuildBlockResult,
|
|
21
|
+
FullNodeBlockBuilderConfig,
|
|
22
22
|
IFullNodeBlockBuilder,
|
|
23
23
|
MerkleTreeWriteOperations,
|
|
24
24
|
PublicProcessorLimits,
|
|
@@ -89,9 +89,14 @@ export async function buildBlock(
|
|
|
89
89
|
return res;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
const FullNodeBlockBuilderConfigKeys = [
|
|
93
|
+
'l1GenesisTime',
|
|
94
|
+
'slotDuration',
|
|
95
|
+
'l1ChainId',
|
|
96
|
+
'rollupVersion',
|
|
97
|
+
'txPublicSetupAllowList',
|
|
98
|
+
'fakeProcessingDelayPerTxMs',
|
|
99
|
+
] as const;
|
|
95
100
|
|
|
96
101
|
export class FullNodeBlockBuilder implements IFullNodeBlockBuilder {
|
|
97
102
|
constructor(
|
|
@@ -103,19 +108,11 @@ export class FullNodeBlockBuilder implements IFullNodeBlockBuilder {
|
|
|
103
108
|
) {}
|
|
104
109
|
|
|
105
110
|
public getConfig(): FullNodeBlockBuilderConfig {
|
|
106
|
-
return pick(
|
|
107
|
-
this.config,
|
|
108
|
-
'l1GenesisTime',
|
|
109
|
-
'slotDuration',
|
|
110
|
-
'l1ChainId',
|
|
111
|
-
'rollupVersion',
|
|
112
|
-
'txPublicSetupAllowList',
|
|
113
|
-
'fakeProcessingDelayPerTxMs',
|
|
114
|
-
);
|
|
111
|
+
return pick(this.config, ...FullNodeBlockBuilderConfigKeys);
|
|
115
112
|
}
|
|
116
113
|
|
|
117
|
-
public updateConfig(config: FullNodeBlockBuilderConfig) {
|
|
118
|
-
this.config = config;
|
|
114
|
+
public updateConfig(config: Partial<FullNodeBlockBuilderConfig>) {
|
|
115
|
+
this.config = merge(this.config, pick(config, ...FullNodeBlockBuilderConfigKeys));
|
|
119
116
|
}
|
|
120
117
|
|
|
121
118
|
public async makeBlockBuilderDeps(globalVariables: GlobalVariables, fork: MerkleTreeWriteOperations) {
|
|
@@ -545,7 +545,13 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
545
545
|
this.timetable.assertTimeLeft(proposedState, secondsIntoSlot);
|
|
546
546
|
}
|
|
547
547
|
|
|
548
|
-
|
|
548
|
+
const boringStates = [SequencerState.IDLE, SequencerState.SYNCHRONIZING];
|
|
549
|
+
const logLevel =
|
|
550
|
+
boringStates.includes(proposedState) && boringStates.includes(this.state)
|
|
551
|
+
? ('trace' as const)
|
|
552
|
+
: ('debug' as const);
|
|
553
|
+
this.log[logLevel](`Transitioning from ${this.state} to ${proposedState}`, { slotNumber, secondsIntoSlot });
|
|
554
|
+
|
|
549
555
|
this.emit('state-changed', {
|
|
550
556
|
oldState: this.state,
|
|
551
557
|
newState: proposedState,
|
|
@@ -884,17 +890,17 @@ export class Sequencer extends (EventEmitter as new () => TypedEventEmitter<Sequ
|
|
|
884
890
|
return;
|
|
885
891
|
}
|
|
886
892
|
|
|
887
|
-
const
|
|
888
|
-
const
|
|
889
|
-
const
|
|
893
|
+
const invalidBlockNumber = pendingChainValidationStatus.block.blockNumber;
|
|
894
|
+
const invalidBlockTimestamp = pendingChainValidationStatus.block.timestamp;
|
|
895
|
+
const timeSinceChainInvalid = this.dateProvider.nowInSeconds() - Number(invalidBlockTimestamp);
|
|
890
896
|
|
|
891
897
|
const { secondsBeforeInvalidatingBlockAsCommitteeMember, secondsBeforeInvalidatingBlockAsNonCommitteeMember } =
|
|
892
898
|
this.config;
|
|
893
899
|
|
|
894
900
|
const logData = {
|
|
895
|
-
invalidL1Timestamp,
|
|
901
|
+
invalidL1Timestamp: invalidBlockTimestamp,
|
|
896
902
|
l1Timestamp,
|
|
897
|
-
invalidBlock: pendingChainValidationStatus.block
|
|
903
|
+
invalidBlock: pendingChainValidationStatus.block,
|
|
898
904
|
secondsBeforeInvalidatingBlockAsCommitteeMember,
|
|
899
905
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember,
|
|
900
906
|
ourValidatorAddresses,
|