@aztec/validator-client 6.0.0-nightly.20260810 → 6.0.0-nightly.20260821
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/README.md +5 -5
- package/dest/checkpoint_builder.d.ts +6 -3
- package/dest/checkpoint_builder.d.ts.map +1 -1
- package/dest/checkpoint_builder.js +14 -10
- package/dest/duties/validation_service.d.ts +3 -3
- package/dest/duties/validation_service.d.ts.map +1 -1
- package/dest/duties/validation_service.js +2 -3
- package/dest/factory.d.ts +2 -2
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +1 -13
- package/dest/metrics.d.ts +1 -1
- package/dest/metrics.d.ts.map +1 -1
- package/dest/metrics.js +0 -1
- package/dest/proposal_handler.d.ts +32 -10
- package/dest/proposal_handler.d.ts.map +1 -1
- package/dest/proposal_handler.js +181 -46
- package/dest/streaming_inbox_checks.d.ts +103 -0
- package/dest/streaming_inbox_checks.d.ts.map +1 -0
- package/dest/streaming_inbox_checks.js +112 -0
- package/dest/validator.d.ts +6 -6
- package/dest/validator.d.ts.map +1 -1
- package/dest/validator.js +5 -18
- package/package.json +19 -19
- package/src/checkpoint_builder.ts +25 -11
- package/src/duties/validation_service.ts +3 -3
- package/src/factory.ts +1 -13
- package/src/metrics.ts +0 -1
- package/src/proposal_handler.ts +229 -40
- package/src/streaming_inbox_checks.ts +198 -0
- package/src/validator.ts +10 -22
package/dest/validator.d.ts
CHANGED
|
@@ -13,8 +13,8 @@ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
|
13
13
|
import type { CommitteeAttestationsAndSigners, L2BlockSink, L2BlockSource } from '@aztec/stdlib/block';
|
|
14
14
|
import type { CheckpointReexecutionTracker } from '@aztec/stdlib/checkpoint';
|
|
15
15
|
import type { ITxProvider, Validator, ValidatorClientFullConfig, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
16
|
-
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
17
|
-
import { type BlockProposal, type BlockProposalOptions, CheckpointAttestation, CheckpointProposal, type CheckpointProposalCore, type CheckpointProposalOptions } from '@aztec/stdlib/p2p';
|
|
16
|
+
import type { InboxBucketRef, L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
17
|
+
import { type BlockProposal, type BlockProposalOptions, CheckpointAttestation, CheckpointProposal, type CheckpointProposalCore, type CheckpointProposalOptions, type ValidatedBlockProposal, type ValidatedCheckpointProposalCore } from '@aztec/stdlib/p2p';
|
|
18
18
|
import type { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
19
19
|
import type { BlockHeader, Tx } from '@aztec/stdlib/tx';
|
|
20
20
|
import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
@@ -84,14 +84,14 @@ export declare class ValidatorClient extends ValidatorClient_base implements Val
|
|
|
84
84
|
* Note: Validators do NOT attest to individual blocks - attestations are only for checkpoint proposals.
|
|
85
85
|
* @returns true if the proposal is valid, false otherwise
|
|
86
86
|
*/
|
|
87
|
-
validateBlockProposal(proposal:
|
|
87
|
+
validateBlockProposal(proposal: ValidatedBlockProposal, proposalSender: PeerId): Promise<boolean>;
|
|
88
88
|
/**
|
|
89
89
|
* Validate and attest to a checkpoint proposal from a peer.
|
|
90
90
|
* The proposal is received as CheckpointProposalCore (without lastBlock) since
|
|
91
91
|
* the lastBlock is extracted and processed separately via the block handler.
|
|
92
92
|
* @returns Checkpoint attestations if valid, undefined otherwise
|
|
93
93
|
*/
|
|
94
|
-
attestToCheckpointProposal(proposal:
|
|
94
|
+
attestToCheckpointProposal(proposal: ValidatedCheckpointProposalCore, _proposalSender: PeerId): Promise<CheckpointAttestation[] | undefined>;
|
|
95
95
|
/**
|
|
96
96
|
* Checks if we should attest to a slot based on equivocation prevention rules.
|
|
97
97
|
* @returns true if we should attest, false if we should skip
|
|
@@ -125,7 +125,7 @@ export declare class ValidatorClient extends ValidatorClient_base implements Val
|
|
|
125
125
|
* Emits a slash event when an attester signs attestations for different proposals at the same slot.
|
|
126
126
|
*/
|
|
127
127
|
private handleDuplicateAttestation;
|
|
128
|
-
createBlockProposal(blockHeader: BlockHeader, checkpointNumber: CheckpointNumber, indexWithinCheckpoint: IndexWithinCheckpoint,
|
|
128
|
+
createBlockProposal(blockHeader: BlockHeader, checkpointNumber: CheckpointNumber, indexWithinCheckpoint: IndexWithinCheckpoint, archive: Fr, txs: Tx[], proposerAddress: EthAddress | undefined, options?: BlockProposalOptions, bucketRef?: InboxBucketRef): Promise<BlockProposal>;
|
|
129
129
|
createCheckpointProposal(checkpointHeader: CheckpointHeader, archive: Fr, checkpointNumber: CheckpointNumber, feeAssetPriceModifier: bigint, lastBlockProposal: BlockProposal | undefined, proposerAddress: EthAddress | undefined, options?: CheckpointProposalOptions): Promise<CheckpointProposal>;
|
|
130
130
|
broadcastBlockProposal(proposal: BlockProposal): Promise<void>;
|
|
131
131
|
signAttestationsAndSigners(attestationsAndSigners: CommitteeAttestationsAndSigners, proposer: EthAddress, slot: SlotNumber, checkpointNumber: CheckpointNumber): Promise<Signature>;
|
|
@@ -134,4 +134,4 @@ export declare class ValidatorClient extends ValidatorClient_base implements Val
|
|
|
134
134
|
private handleAuthRequest;
|
|
135
135
|
}
|
|
136
136
|
export {};
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFlLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25ILE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUQsT0FBTyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBR2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBMEUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0SCxPQUFPLEVBSUwsS0FBSyxPQUFPLEVBQ1osS0FBSyxjQUFjLEVBRXBCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsK0JBQStCLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZHLE9BQU8sS0FBSyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0UsT0FBTyxLQUFLLEVBQ1YsV0FBVyxFQUNYLFNBQVMsRUFDVCx5QkFBeUIs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
|
package/dest/validator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAe,qBAAqB,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGhF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAA0E,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEtH,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,cAAc,EAEpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,+BAA+B,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACvG,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAE7E,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"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"}
|
package/dest/validator.js
CHANGED
|
@@ -5,7 +5,7 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
5
5
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
6
6
|
import { sleep } from '@aztec/foundation/sleep';
|
|
7
7
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
8
|
-
import { AuthRequest, AuthResponse,
|
|
8
|
+
import { AuthRequest, AuthResponse, ReqRespSubProtocol } from '@aztec/p2p';
|
|
9
9
|
import { OffenseType, WANT_TO_CLEAR_SLASH_EVENT, WANT_TO_SLASH_EVENT, getOffenseTypeName } from '@aztec/slasher';
|
|
10
10
|
import { getEpochAtSlot } from '@aztec/stdlib/epoch-helpers';
|
|
11
11
|
import { ConsensusTimetable } from '@aztec/stdlib/timetable';
|
|
@@ -14,7 +14,6 @@ import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
|
14
14
|
import { createHASigner, createLocalSignerWithProtection, createSignerFromSharedDb } from '@aztec/validator-ha-signer/factory';
|
|
15
15
|
import { DutyType } from '@aztec/validator-ha-signer/types';
|
|
16
16
|
import { EventEmitter } from 'events';
|
|
17
|
-
import { DEFAULT_MAX_GOSSIP_CLOCK_DISPARITY_MS } from './config.js';
|
|
18
17
|
import { ValidationService } from './duties/validation_service.js';
|
|
19
18
|
import { HAKeyStore } from './key_store/ha_key_store.js';
|
|
20
19
|
import { NodeKeystoreAdapter } from './key_store/node_keystore_adapter.js';
|
|
@@ -119,18 +118,7 @@ const MAX_TRACKED_BAD_ATTESTATIONS = 10_000;
|
|
|
119
118
|
l1Constants: epochCache.getL1Constants(),
|
|
120
119
|
blockDuration: config.blockDurationMs / 1000
|
|
121
120
|
});
|
|
122
|
-
const
|
|
123
|
-
txsPermitted: !config.disableTransactions,
|
|
124
|
-
maxTxsPerBlock: config.validateMaxTxsPerBlock,
|
|
125
|
-
maxBlocksPerCheckpoint: config.maxBlocksPerCheckpoint,
|
|
126
|
-
skipSlotValidation: config.skipProposalSlotValidation,
|
|
127
|
-
signatureContext: {
|
|
128
|
-
chainId: config.l1ChainId,
|
|
129
|
-
rollupAddress: config.rollupAddress
|
|
130
|
-
},
|
|
131
|
-
clockDisparityMs: config.maxGossipClockDisparityMs ?? DEFAULT_MAX_GOSSIP_CLOCK_DISPARITY_MS
|
|
132
|
-
});
|
|
133
|
-
const proposalHandler = new ProposalHandler(checkpointsBuilder, worldState, blockSource, l1ToL2MessageSource, txProvider, blockProposalValidator, epochCache, consensusTimetable, config, blobClient, reexecutionTracker, metrics, dateProvider, telemetry, undefined);
|
|
121
|
+
const proposalHandler = new ProposalHandler(checkpointsBuilder, worldState, blockSource, l1ToL2MessageSource, txProvider, epochCache, consensusTimetable, config, blobClient, reexecutionTracker, metrics, dateProvider, telemetry, undefined);
|
|
134
122
|
const nodeKeystoreAdapter = NodeKeystoreAdapter.fromKeyStoreManager(keyStoreManager);
|
|
135
123
|
let slashingProtectionSigner;
|
|
136
124
|
if (slashingProtectionDb) {
|
|
@@ -300,7 +288,6 @@ const MAX_TRACKED_BAD_ATTESTATIONS = 10_000;
|
|
|
300
288
|
'invalid_proposal',
|
|
301
289
|
'state_mismatch',
|
|
302
290
|
'failed_txs',
|
|
303
|
-
'in_hash_mismatch',
|
|
304
291
|
'parent_block_wrong_slot',
|
|
305
292
|
'duplicate_txs',
|
|
306
293
|
'invalid_embedded_txs'
|
|
@@ -653,7 +640,7 @@ const MAX_TRACKED_BAD_ATTESTATIONS = 10_000;
|
|
|
653
640
|
}
|
|
654
641
|
]);
|
|
655
642
|
}
|
|
656
|
-
async createBlockProposal(blockHeader, checkpointNumber, indexWithinCheckpoint,
|
|
643
|
+
async createBlockProposal(blockHeader, checkpointNumber, indexWithinCheckpoint, archive, txs, proposerAddress, options = {}, bucketRef) {
|
|
657
644
|
// Validate that we're not creating a proposal for an older or equal position
|
|
658
645
|
if (this.lastProposedBlock) {
|
|
659
646
|
const lastSlot = this.lastProposedBlock.slotNumber;
|
|
@@ -664,10 +651,10 @@ const MAX_TRACKED_BAD_ATTESTATIONS = 10_000;
|
|
|
664
651
|
}
|
|
665
652
|
}
|
|
666
653
|
this.log.info(`Assembling block proposal for block ${blockHeader.globalVariables.blockNumber} slot ${blockHeader.globalVariables.slotNumber}`);
|
|
667
|
-
const newProposal = await this.validationService.createBlockProposal(blockHeader, checkpointNumber, indexWithinCheckpoint,
|
|
654
|
+
const newProposal = await this.validationService.createBlockProposal(blockHeader, checkpointNumber, indexWithinCheckpoint, archive, txs, proposerAddress, {
|
|
668
655
|
...options,
|
|
669
656
|
broadcastInvalidBlockProposal: options.broadcastInvalidBlockProposal || this.config.broadcastInvalidBlockProposal
|
|
670
|
-
});
|
|
657
|
+
}, bucketRef);
|
|
671
658
|
this.lastProposedBlock = newProposal;
|
|
672
659
|
return newProposal;
|
|
673
660
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/validator-client",
|
|
3
|
-
"version": "6.0.0-nightly.
|
|
3
|
+
"version": "6.0.0-nightly.20260821",
|
|
4
4
|
"main": "dest/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -64,30 +64,30 @@
|
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@aztec/blob-client": "6.0.0-nightly.
|
|
68
|
-
"@aztec/blob-lib": "6.0.0-nightly.
|
|
69
|
-
"@aztec/constants": "6.0.0-nightly.
|
|
70
|
-
"@aztec/epoch-cache": "6.0.0-nightly.
|
|
71
|
-
"@aztec/ethereum": "6.0.0-nightly.
|
|
72
|
-
"@aztec/foundation": "6.0.0-nightly.
|
|
73
|
-
"@aztec/node-keystore": "6.0.0-nightly.
|
|
74
|
-
"@aztec/p2p": "6.0.0-nightly.
|
|
75
|
-
"@aztec/protocol-contracts": "6.0.0-nightly.
|
|
76
|
-
"@aztec/prover-client": "6.0.0-nightly.
|
|
77
|
-
"@aztec/simulator": "6.0.0-nightly.
|
|
78
|
-
"@aztec/slasher": "6.0.0-nightly.
|
|
79
|
-
"@aztec/stdlib": "6.0.0-nightly.
|
|
80
|
-
"@aztec/telemetry-client": "6.0.0-nightly.
|
|
81
|
-
"@aztec/validator-ha-signer": "6.0.0-nightly.
|
|
67
|
+
"@aztec/blob-client": "6.0.0-nightly.20260821",
|
|
68
|
+
"@aztec/blob-lib": "6.0.0-nightly.20260821",
|
|
69
|
+
"@aztec/constants": "6.0.0-nightly.20260821",
|
|
70
|
+
"@aztec/epoch-cache": "6.0.0-nightly.20260821",
|
|
71
|
+
"@aztec/ethereum": "6.0.0-nightly.20260821",
|
|
72
|
+
"@aztec/foundation": "6.0.0-nightly.20260821",
|
|
73
|
+
"@aztec/node-keystore": "6.0.0-nightly.20260821",
|
|
74
|
+
"@aztec/p2p": "6.0.0-nightly.20260821",
|
|
75
|
+
"@aztec/protocol-contracts": "6.0.0-nightly.20260821",
|
|
76
|
+
"@aztec/prover-client": "6.0.0-nightly.20260821",
|
|
77
|
+
"@aztec/simulator": "6.0.0-nightly.20260821",
|
|
78
|
+
"@aztec/slasher": "6.0.0-nightly.20260821",
|
|
79
|
+
"@aztec/stdlib": "6.0.0-nightly.20260821",
|
|
80
|
+
"@aztec/telemetry-client": "6.0.0-nightly.20260821",
|
|
81
|
+
"@aztec/validator-ha-signer": "6.0.0-nightly.20260821",
|
|
82
82
|
"koa": "^2.16.1",
|
|
83
83
|
"koa-router": "^13.1.1",
|
|
84
84
|
"tslib": "^2.4.0",
|
|
85
85
|
"viem": "npm:@aztec/viem@2.38.2"
|
|
86
86
|
},
|
|
87
87
|
"devDependencies": {
|
|
88
|
-
"@aztec/archiver": "6.0.0-nightly.
|
|
89
|
-
"@aztec/noir-protocol-circuits-types": "6.0.0-nightly.
|
|
90
|
-
"@aztec/world-state": "6.0.0-nightly.
|
|
88
|
+
"@aztec/archiver": "6.0.0-nightly.20260821",
|
|
89
|
+
"@aztec/noir-protocol-circuits-types": "6.0.0-nightly.20260821",
|
|
90
|
+
"@aztec/world-state": "6.0.0-nightly.20260821",
|
|
91
91
|
"@electric-sql/pglite": "^0.3.14",
|
|
92
92
|
"@jest/globals": "^30.0.0",
|
|
93
93
|
"@types/jest": "^30.0.0",
|
|
@@ -131,10 +131,15 @@ export class CheckpointBuilder implements ICheckpointBlockBuilder {
|
|
|
131
131
|
// Commit the fork checkpoint
|
|
132
132
|
await forkCheckpoint.commit();
|
|
133
133
|
|
|
134
|
-
// Add block to checkpoint
|
|
135
|
-
const { block } = await this.checkpointBuilder.addBlock(
|
|
136
|
-
|
|
137
|
-
|
|
134
|
+
// Add block to checkpoint, inserting this block's streaming L1-to-L2 message bundle (if any) into the fork.
|
|
135
|
+
const { block } = await this.checkpointBuilder.addBlock(
|
|
136
|
+
globalVariables,
|
|
137
|
+
processedTxs,
|
|
138
|
+
opts.l1ToL2Messages ?? [],
|
|
139
|
+
{
|
|
140
|
+
expectedEndState: opts.expectedEndState,
|
|
141
|
+
},
|
|
142
|
+
);
|
|
138
143
|
|
|
139
144
|
this.contractsDB.commitCheckpoint();
|
|
140
145
|
|
|
@@ -203,8 +208,7 @@ export class CheckpointBuilder implements ICheckpointBlockBuilder {
|
|
|
203
208
|
// Remaining blob fields (block blob fields include both tx data and block-end overhead)
|
|
204
209
|
const usedBlobFields = sum(existingBlocks.map(b => b.toBlobFields().length));
|
|
205
210
|
const totalBlobCapacity = BLOBS_PER_CHECKPOINT * FIELDS_PER_BLOB - NUM_CHECKPOINT_END_MARKER_FIELDS;
|
|
206
|
-
const
|
|
207
|
-
const blockEndOverhead = getNumBlockEndBlobFields(isFirstBlock);
|
|
211
|
+
const blockEndOverhead = getNumBlockEndBlobFields();
|
|
208
212
|
const maxBlobFieldsForTxs = totalBlobCapacity - usedBlobFields - blockEndOverhead;
|
|
209
213
|
|
|
210
214
|
// Remaining txs
|
|
@@ -317,8 +321,8 @@ export class FullNodeCheckpointsBuilder implements ICheckpointsBuilder {
|
|
|
317
321
|
checkpointNumber: CheckpointNumber,
|
|
318
322
|
constants: CheckpointGlobalVariables,
|
|
319
323
|
feeAssetPriceModifier: bigint,
|
|
320
|
-
l1ToL2Messages: Fr[],
|
|
321
324
|
previousCheckpointOutHashes: Fr[],
|
|
325
|
+
previousInboxRollingHash: Fr,
|
|
322
326
|
fork: MerkleTreeWriteOperations,
|
|
323
327
|
bindings?: LoggerBindings,
|
|
324
328
|
): Promise<CheckpointBuilder> {
|
|
@@ -327,18 +331,17 @@ export class FullNodeCheckpointsBuilder implements ICheckpointsBuilder {
|
|
|
327
331
|
|
|
328
332
|
this.log.verbose(`Building new checkpoint ${checkpointNumber}`, {
|
|
329
333
|
checkpointNumber,
|
|
330
|
-
msgCount: l1ToL2Messages.length,
|
|
331
334
|
initialStateReference: stateReference.toInspect(),
|
|
332
335
|
initialArchiveRoot: bufferToHex(archiveTree.root),
|
|
333
336
|
constants,
|
|
334
337
|
feeAssetPriceModifier,
|
|
335
338
|
});
|
|
336
339
|
|
|
337
|
-
const lightweightBuilder =
|
|
340
|
+
const lightweightBuilder = LightweightCheckpointBuilder.startNewCheckpoint(
|
|
338
341
|
checkpointNumber,
|
|
339
342
|
constants,
|
|
340
|
-
l1ToL2Messages,
|
|
341
343
|
previousCheckpointOutHashes,
|
|
344
|
+
previousInboxRollingHash,
|
|
342
345
|
fork,
|
|
343
346
|
bindings,
|
|
344
347
|
feeAssetPriceModifier,
|
|
@@ -359,6 +362,9 @@ export class FullNodeCheckpointsBuilder implements ICheckpointsBuilder {
|
|
|
359
362
|
|
|
360
363
|
/**
|
|
361
364
|
* Opens a checkpoint, either starting fresh or resuming from existing blocks.
|
|
365
|
+
* @param l1ToL2Messages - Messages the existing blocks already consumed, which seed the resumed checkpoint's
|
|
366
|
+
* rolling hash. Must be empty when starting fresh: a fresh checkpoint takes its messages per block, via
|
|
367
|
+
* `buildBlock`.
|
|
362
368
|
*/
|
|
363
369
|
async openCheckpoint(
|
|
364
370
|
checkpointNumber: CheckpointNumber,
|
|
@@ -366,6 +372,7 @@ export class FullNodeCheckpointsBuilder implements ICheckpointsBuilder {
|
|
|
366
372
|
feeAssetPriceModifier: bigint,
|
|
367
373
|
l1ToL2Messages: Fr[],
|
|
368
374
|
previousCheckpointOutHashes: Fr[],
|
|
375
|
+
previousInboxRollingHash: Fr,
|
|
369
376
|
fork: MerkleTreeWriteOperations,
|
|
370
377
|
existingBlocks: L2Block[] = [],
|
|
371
378
|
bindings?: LoggerBindings,
|
|
@@ -374,12 +381,18 @@ export class FullNodeCheckpointsBuilder implements ICheckpointsBuilder {
|
|
|
374
381
|
const archiveTree = await fork.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
375
382
|
|
|
376
383
|
if (existingBlocks.length === 0) {
|
|
384
|
+
if (l1ToL2Messages.length > 0) {
|
|
385
|
+
throw new Error(
|
|
386
|
+
`Cannot open checkpoint ${checkpointNumber} with ${l1ToL2Messages.length} messages and no existing blocks: ` +
|
|
387
|
+
`a fresh checkpoint consumes its messages per block`,
|
|
388
|
+
);
|
|
389
|
+
}
|
|
377
390
|
return this.startCheckpoint(
|
|
378
391
|
checkpointNumber,
|
|
379
392
|
constants,
|
|
380
393
|
feeAssetPriceModifier,
|
|
381
|
-
l1ToL2Messages,
|
|
382
394
|
previousCheckpointOutHashes,
|
|
395
|
+
previousInboxRollingHash,
|
|
383
396
|
fork,
|
|
384
397
|
bindings,
|
|
385
398
|
);
|
|
@@ -401,6 +414,7 @@ export class FullNodeCheckpointsBuilder implements ICheckpointsBuilder {
|
|
|
401
414
|
feeAssetPriceModifier,
|
|
402
415
|
l1ToL2Messages,
|
|
403
416
|
previousCheckpointOutHashes,
|
|
417
|
+
previousInboxRollingHash,
|
|
404
418
|
fork,
|
|
405
419
|
existingBlocks,
|
|
406
420
|
bindings,
|
|
@@ -4,6 +4,7 @@ import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
4
4
|
import type { Signature } from '@aztec/foundation/eth-signature';
|
|
5
5
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
6
|
import { CommitteeAttestationsAndSigners } from '@aztec/stdlib/block';
|
|
7
|
+
import type { InboxBucketRef } from '@aztec/stdlib/messaging';
|
|
7
8
|
import {
|
|
8
9
|
BlockProposal,
|
|
9
10
|
type BlockProposalOptions,
|
|
@@ -34,7 +35,6 @@ export class ValidationService {
|
|
|
34
35
|
*
|
|
35
36
|
* @param blockHeader - The block header
|
|
36
37
|
* @param blockIndexWithinCheckpoint - The block index within checkpoint for HA signing context
|
|
37
|
-
* @param inHash - Hash of L1 to L2 messages for this checkpoint
|
|
38
38
|
* @param archive - The archive of the current block
|
|
39
39
|
* @param txs - Ordered list of transactions (Tx[])
|
|
40
40
|
* @param proposerAttesterAddress - The address of the proposer/attester, or undefined
|
|
@@ -48,11 +48,11 @@ export class ValidationService {
|
|
|
48
48
|
blockHeader: BlockHeader,
|
|
49
49
|
checkpointNumber: CheckpointNumber,
|
|
50
50
|
blockIndexWithinCheckpoint: IndexWithinCheckpoint,
|
|
51
|
-
inHash: Fr,
|
|
52
51
|
archive: Fr,
|
|
53
52
|
txs: Tx[],
|
|
54
53
|
proposerAttesterAddress: EthAddress | undefined,
|
|
55
54
|
options: BlockProposalOptions,
|
|
55
|
+
bucketRef?: InboxBucketRef,
|
|
56
56
|
): Promise<BlockProposal> {
|
|
57
57
|
// For testing: change the new archive to trigger state_mismatch validation failure
|
|
58
58
|
if (options.broadcastInvalidBlockProposal) {
|
|
@@ -75,13 +75,13 @@ export class ValidationService {
|
|
|
75
75
|
blockHeader,
|
|
76
76
|
checkpointNumber,
|
|
77
77
|
blockIndexWithinCheckpoint,
|
|
78
|
-
inHash,
|
|
79
78
|
archive,
|
|
80
79
|
txs.map(tx => tx.getTxHash()),
|
|
81
80
|
options.publishFullTxs ? txs : undefined,
|
|
82
81
|
this.signatureContext,
|
|
83
82
|
payloadSigner,
|
|
84
83
|
txsSigner,
|
|
84
|
+
bucketRef,
|
|
85
85
|
);
|
|
86
86
|
}
|
|
87
87
|
|
package/src/factory.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { BlobClientInterface } from '@aztec/blob-client/client';
|
|
|
2
2
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
3
3
|
import type { DateProvider } from '@aztec/foundation/timer';
|
|
4
4
|
import type { KeystoreManager } from '@aztec/node-keystore';
|
|
5
|
-
import {
|
|
5
|
+
import type { P2PClient } from '@aztec/p2p';
|
|
6
6
|
import type { L2BlockSink, L2BlockSource } from '@aztec/stdlib/block';
|
|
7
7
|
import type { CheckpointReexecutionTracker } from '@aztec/stdlib/checkpoint';
|
|
8
8
|
import type { ValidatorClientFullConfig, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
@@ -12,7 +12,6 @@ import type { TelemetryClient } from '@aztec/telemetry-client';
|
|
|
12
12
|
import type { SlashingProtectionDatabase } from '@aztec/validator-ha-signer/types';
|
|
13
13
|
|
|
14
14
|
import type { FullNodeCheckpointsBuilder } from './checkpoint_builder.js';
|
|
15
|
-
import { DEFAULT_MAX_GOSSIP_CLOCK_DISPARITY_MS } from './config.js';
|
|
16
15
|
import { ValidatorMetrics } from './metrics.js';
|
|
17
16
|
import { ProposalHandler } from './proposal_handler.js';
|
|
18
17
|
import { ValidatorClient } from './validator.js';
|
|
@@ -37,23 +36,12 @@ export function createProposalHandler(
|
|
|
37
36
|
l1Constants: deps.epochCache.getL1Constants(),
|
|
38
37
|
blockDuration: config.blockDurationMs / 1000,
|
|
39
38
|
});
|
|
40
|
-
const blockProposalValidator = new BlockProposalValidator(deps.epochCache, consensusTimetable, {
|
|
41
|
-
txsPermitted: !config.disableTransactions,
|
|
42
|
-
maxTxsPerBlock: config.validateMaxTxsPerBlock ?? config.validateMaxTxsPerCheckpoint,
|
|
43
|
-
maxBlocksPerCheckpoint: config.maxBlocksPerCheckpoint,
|
|
44
|
-
signatureContext: {
|
|
45
|
-
chainId: config.l1ChainId,
|
|
46
|
-
rollupAddress: config.rollupAddress,
|
|
47
|
-
},
|
|
48
|
-
clockDisparityMs: config.maxGossipClockDisparityMs ?? DEFAULT_MAX_GOSSIP_CLOCK_DISPARITY_MS,
|
|
49
|
-
});
|
|
50
39
|
return new ProposalHandler(
|
|
51
40
|
deps.checkpointsBuilder,
|
|
52
41
|
deps.worldState,
|
|
53
42
|
deps.blockSource,
|
|
54
43
|
deps.l1ToL2MessageSource,
|
|
55
44
|
deps.p2pClient.getTxProvider(),
|
|
56
|
-
blockProposalValidator,
|
|
57
45
|
deps.epochCache,
|
|
58
46
|
consensusTimetable,
|
|
59
47
|
config,
|