@aztec/validator-client 6.0.0-nightly.20260605 → 6.0.0-nightly.20260722
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 +2 -0
- package/dest/checkpoint_builder.d.ts +6 -4
- package/dest/checkpoint_builder.d.ts.map +1 -1
- package/dest/checkpoint_builder.js +16 -8
- package/dest/config.d.ts +9 -3
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +9 -1
- package/dest/factory.d.ts +1 -1
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +10 -3
- package/dest/key_store/web3signer_key_store.d.ts +10 -2
- package/dest/key_store/web3signer_key_store.d.ts.map +1 -1
- package/dest/key_store/web3signer_key_store.js +32 -41
- package/dest/proposal_handler.d.ts +37 -6
- package/dest/proposal_handler.d.ts.map +1 -1
- package/dest/proposal_handler.js +182 -47
- package/dest/validator.d.ts +11 -5
- package/dest/validator.d.ts.map +1 -1
- package/dest/validator.js +51 -42
- package/package.json +19 -19
- package/src/checkpoint_builder.ts +16 -7
- package/src/config.ts +16 -3
- package/src/factory.ts +9 -1
- package/src/key_store/web3signer_key_store.ts +43 -59
- package/src/proposal_handler.ts +203 -50
- package/src/validator.ts +61 -46
package/README.md
CHANGED
|
@@ -226,6 +226,8 @@ This is useful for monitoring network health without participating in consensus.
|
|
|
226
226
|
|
|
227
227
|
L1 enforces gas and blob capacity per checkpoint. The node enforces these during block building to avoid L1 rejection. Three dimensions are metered: L2 gas (mana), DA gas, and blob fields. DA gas maps to blob fields today (`daGas = blobFields * 32`) but both are tracked independently.
|
|
228
228
|
|
|
229
|
+
The full per-tx → per-block → per-checkpoint limits hierarchy, including how the per-block budgets relate to the network admission limits, is documented in [`stdlib/src/gas/README.md`](../stdlib/src/gas/README.md) under "Gas and Data Limits".
|
|
230
|
+
|
|
229
231
|
### Checkpoint limits
|
|
230
232
|
|
|
231
233
|
| Dimension | Source | Budget |
|
|
@@ -3,7 +3,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
3
3
|
import { type LoggerBindings } from '@aztec/foundation/log';
|
|
4
4
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
5
5
|
import { LightweightCheckpointBuilder } from '@aztec/prover-client/light';
|
|
6
|
-
import { PublicContractsDB, PublicProcessor } from '@aztec/simulator/server';
|
|
6
|
+
import { type AvmSimulator, PublicContractsDB, PublicProcessor } from '@aztec/simulator/server';
|
|
7
7
|
import { L2Block } from '@aztec/stdlib/block';
|
|
8
8
|
import { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
9
9
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
@@ -24,11 +24,12 @@ export declare class CheckpointBuilder implements ICheckpointBlockBuilder {
|
|
|
24
24
|
private contractDataSource;
|
|
25
25
|
private dateProvider;
|
|
26
26
|
private telemetryClient;
|
|
27
|
+
private avmSimulator;
|
|
27
28
|
private debugLogStore;
|
|
28
29
|
private log;
|
|
29
30
|
/** Persistent contracts DB shared across all blocks in this checkpoint. */
|
|
30
31
|
protected contractsDB: PublicContractsDB;
|
|
31
|
-
constructor(checkpointBuilder: LightweightCheckpointBuilder, fork: MerkleTreeWriteOperations, config: FullNodeBlockBuilderConfig, contractDataSource: ContractDataSource, dateProvider: DateProvider, telemetryClient: TelemetryClient, bindings?: LoggerBindings, debugLogStore?: DebugLogStore);
|
|
32
|
+
constructor(checkpointBuilder: LightweightCheckpointBuilder, fork: MerkleTreeWriteOperations, config: FullNodeBlockBuilderConfig, contractDataSource: ContractDataSource, dateProvider: DateProvider, telemetryClient: TelemetryClient, avmSimulator: AvmSimulator, bindings?: LoggerBindings, debugLogStore?: DebugLogStore);
|
|
32
33
|
getConstantData(): CheckpointGlobalVariables;
|
|
33
34
|
/**
|
|
34
35
|
* Builds a single block within this checkpoint.
|
|
@@ -59,10 +60,11 @@ export declare class FullNodeCheckpointsBuilder implements ICheckpointsBuilder {
|
|
|
59
60
|
private worldState;
|
|
60
61
|
private contractDataSource;
|
|
61
62
|
private dateProvider;
|
|
63
|
+
private avmSimulator;
|
|
62
64
|
private telemetryClient;
|
|
63
65
|
private debugLogStore;
|
|
64
66
|
private log;
|
|
65
|
-
constructor(config: FullNodeBlockBuilderConfig & Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration'>, worldState: WorldStateSynchronizer, contractDataSource: ContractDataSource, dateProvider: DateProvider, telemetryClient?: TelemetryClient, debugLogStore?: DebugLogStore);
|
|
67
|
+
constructor(config: FullNodeBlockBuilderConfig & Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration'>, worldState: WorldStateSynchronizer, contractDataSource: ContractDataSource, dateProvider: DateProvider, avmSimulator: AvmSimulator, telemetryClient?: TelemetryClient, debugLogStore?: DebugLogStore);
|
|
66
68
|
getConfig(): FullNodeBlockBuilderConfig;
|
|
67
69
|
updateConfig(config: Partial<FullNodeBlockBuilderConfig>): void;
|
|
68
70
|
/**
|
|
@@ -76,4 +78,4 @@ export declare class FullNodeCheckpointsBuilder implements ICheckpointsBuilder {
|
|
|
76
78
|
/** Returns a fork of the world state at the given block number. */
|
|
77
79
|
getFork(blockNumber: BlockNumber): Promise<MerkleTreeWriteOperations>;
|
|
78
80
|
}
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludF9idWlsZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hlY2twb2ludF9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVoRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFBRSxZQUFZLEVBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsS0FBSyxZQUFZLEVBRWpCLGlCQUFpQixFQUNqQixlQUFlLEVBRWhCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFckUsT0FBTyxFQUNMLEtBQUssbUJBQW1CLEVBQ3hCLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUssMEJBQTBCLEVBRS9CLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssbUJBQW1CLEVBRXhCLEtBQUsseUJBQXlCLEVBQzlCLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssc0JBQXNCLEVBQzVCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLEtBQUssYUFBYSxFQUFxQixNQUFNLG9CQUFvQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxLQUFLLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint_builder.d.ts","sourceRoot":"","sources":["../src/checkpoint_builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EAAE,YAAY,EAAW,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,
|
|
1
|
+
{"version":3,"file":"checkpoint_builder.d.ts","sourceRoot":"","sources":["../src/checkpoint_builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,16 +24,18 @@ import { ForkCheckpoint } from '@aztec/world-state';
|
|
|
24
24
|
contractDataSource;
|
|
25
25
|
dateProvider;
|
|
26
26
|
telemetryClient;
|
|
27
|
+
avmSimulator;
|
|
27
28
|
debugLogStore;
|
|
28
29
|
log;
|
|
29
30
|
/** Persistent contracts DB shared across all blocks in this checkpoint. */ contractsDB;
|
|
30
|
-
constructor(checkpointBuilder, fork, config, contractDataSource, dateProvider, telemetryClient, bindings, debugLogStore = new NullDebugLogStore()){
|
|
31
|
+
constructor(checkpointBuilder, fork, config, contractDataSource, dateProvider, telemetryClient, avmSimulator, bindings, debugLogStore = new NullDebugLogStore()){
|
|
31
32
|
this.checkpointBuilder = checkpointBuilder;
|
|
32
33
|
this.fork = fork;
|
|
33
34
|
this.config = config;
|
|
34
35
|
this.contractDataSource = contractDataSource;
|
|
35
36
|
this.dateProvider = dateProvider;
|
|
36
37
|
this.telemetryClient = telemetryClient;
|
|
38
|
+
this.avmSimulator = avmSimulator;
|
|
37
39
|
this.debugLogStore = debugLogStore;
|
|
38
40
|
this.log = createLogger('checkpoint-builder', {
|
|
39
41
|
...bindings,
|
|
@@ -157,9 +159,11 @@ import { ForkCheckpoint } from '@aztec/world-state';
|
|
|
157
159
|
if (opts.isBuildingProposal) {
|
|
158
160
|
const remainingBlocks = Math.max(1, opts.maxBlocksPerCheckpoint - existingBlocks.length);
|
|
159
161
|
const multiplier = opts.perBlockAllocationMultiplier;
|
|
162
|
+
// DA gas and blob fields use a higher multiplier so the largest contract class deploy fits a block.
|
|
163
|
+
const daMultiplier = opts.perBlockDAAllocationMultiplier ?? multiplier;
|
|
160
164
|
cappedL2Gas = Math.min(cappedL2Gas, Math.ceil(remainingMana / remainingBlocks * multiplier));
|
|
161
|
-
cappedDAGas = Math.min(cappedDAGas, Math.ceil(remainingDAGas / remainingBlocks *
|
|
162
|
-
cappedBlobFields = Math.min(cappedBlobFields, Math.ceil(maxBlobFieldsForTxs / remainingBlocks *
|
|
165
|
+
cappedDAGas = Math.min(cappedDAGas, Math.ceil(remainingDAGas / remainingBlocks * daMultiplier));
|
|
166
|
+
cappedBlobFields = Math.min(cappedBlobFields, Math.ceil(maxBlobFieldsForTxs / remainingBlocks * daMultiplier));
|
|
163
167
|
cappedMaxTransactions = Math.min(cappedMaxTransactions, Math.ceil(remainingTxs / remainingBlocks * multiplier));
|
|
164
168
|
}
|
|
165
169
|
return {
|
|
@@ -175,9 +179,11 @@ import { ForkCheckpoint } from '@aztec/world-state';
|
|
|
175
179
|
];
|
|
176
180
|
const contractsDB = this.contractsDB;
|
|
177
181
|
const guardedFork = new GuardedMerkleTreeOperations(fork);
|
|
178
|
-
const collectDebugLogs = this.debugLogStore.isEnabled;
|
|
179
182
|
const bindings = this.log.getBindings();
|
|
180
|
-
|
|
183
|
+
// Extract the WSDB fork ID so the C++ AVM can modify the same fork in-place; the simulator reads
|
|
184
|
+
// contract data from `contractsDB`, scoped to this fork for the duration of each simulation.
|
|
185
|
+
const wsdbForkId = fork.getRevision().forkId;
|
|
186
|
+
const publicTxSimulator = createPublicTxSimulatorForBlockBuilding(this.avmSimulator, globalVariables, contractsDB, wsdbForkId, this.telemetryClient, bindings, this.debugLogStore?.isEnabled ?? false);
|
|
181
187
|
const processor = new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient, createLogger('simulator:public-processor', bindings), this.config, this.debugLogStore);
|
|
182
188
|
const validator = createTxValidatorForBlockBuilding(fork, this.contractDataSource, globalVariables, txPublicSetupAllowList, this.log.getBindings());
|
|
183
189
|
return {
|
|
@@ -191,14 +197,16 @@ import { ForkCheckpoint } from '@aztec/world-state';
|
|
|
191
197
|
worldState;
|
|
192
198
|
contractDataSource;
|
|
193
199
|
dateProvider;
|
|
200
|
+
avmSimulator;
|
|
194
201
|
telemetryClient;
|
|
195
202
|
debugLogStore;
|
|
196
203
|
log;
|
|
197
|
-
constructor(config, worldState, contractDataSource, dateProvider, telemetryClient = getTelemetryClient(), debugLogStore = new NullDebugLogStore()){
|
|
204
|
+
constructor(config, worldState, contractDataSource, dateProvider, avmSimulator, telemetryClient = getTelemetryClient(), debugLogStore = new NullDebugLogStore()){
|
|
198
205
|
this.config = config;
|
|
199
206
|
this.worldState = worldState;
|
|
200
207
|
this.contractDataSource = contractDataSource;
|
|
201
208
|
this.dateProvider = dateProvider;
|
|
209
|
+
this.avmSimulator = avmSimulator;
|
|
202
210
|
this.telemetryClient = telemetryClient;
|
|
203
211
|
this.debugLogStore = debugLogStore;
|
|
204
212
|
this.log = createLogger('checkpoint-builder');
|
|
@@ -223,7 +231,7 @@ import { ForkCheckpoint } from '@aztec/world-state';
|
|
|
223
231
|
feeAssetPriceModifier
|
|
224
232
|
});
|
|
225
233
|
const lightweightBuilder = await LightweightCheckpointBuilder.startNewCheckpoint(checkpointNumber, constants, l1ToL2Messages, previousCheckpointOutHashes, fork, bindings, feeAssetPriceModifier);
|
|
226
|
-
return new CheckpointBuilder(lightweightBuilder, fork, this.config, this.contractDataSource, this.dateProvider, this.telemetryClient, bindings, this.debugLogStore);
|
|
234
|
+
return new CheckpointBuilder(lightweightBuilder, fork, this.config, this.contractDataSource, this.dateProvider, this.telemetryClient, this.avmSimulator, bindings, this.debugLogStore);
|
|
227
235
|
}
|
|
228
236
|
/**
|
|
229
237
|
* Opens a checkpoint, either starting fresh or resuming from existing blocks.
|
|
@@ -243,7 +251,7 @@ import { ForkCheckpoint } from '@aztec/world-state';
|
|
|
243
251
|
feeAssetPriceModifier
|
|
244
252
|
});
|
|
245
253
|
const lightweightBuilder = await LightweightCheckpointBuilder.resumeCheckpoint(checkpointNumber, constants, feeAssetPriceModifier, l1ToL2Messages, previousCheckpointOutHashes, fork, existingBlocks, bindings);
|
|
246
|
-
return new CheckpointBuilder(lightweightBuilder, fork, this.config, this.contractDataSource, this.dateProvider, this.telemetryClient, bindings, this.debugLogStore);
|
|
254
|
+
return new CheckpointBuilder(lightweightBuilder, fork, this.config, this.contractDataSource, this.dateProvider, this.telemetryClient, this.avmSimulator, bindings, this.debugLogStore);
|
|
247
255
|
}
|
|
248
256
|
/** Returns a fork of the world state at the given block number. */ getFork(blockNumber) {
|
|
249
257
|
return this.worldState.fork(blockNumber);
|
package/dest/config.d.ts
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
|
+
import { type SequencerConfig } from '@aztec/stdlib/config';
|
|
2
3
|
import type { ValidatorClientConfig } from '@aztec/stdlib/interfaces/server';
|
|
3
4
|
export type { ValidatorClientConfig };
|
|
4
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Default clock-disparity tolerance (ms) for proposal/attestation receive windows, mirroring the p2p config
|
|
7
|
+
* default. Used by the validator-client validators when the merged node config does not carry the value.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_MAX_GOSSIP_CLOCK_DISPARITY_MS = 500;
|
|
10
|
+
export declare const validatorClientConfigMappings: ConfigMappingsType<ValidatorClientConfig & Pick<SequencerConfig, 'blockDurationMs'>>;
|
|
5
11
|
/**
|
|
6
12
|
* Returns the prover configuration from the environment variables.
|
|
7
13
|
* Note: If an environment variable is not set, the default value is used.
|
|
8
14
|
* @returns The validator configuration.
|
|
9
15
|
*/
|
|
10
|
-
export declare function getProverEnvVars(): ValidatorClientConfig
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
export declare function getProverEnvVars(): ValidatorClientConfig & Pick<SequencerConfig, 'blockDurationMs'>;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQU94QixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBaUMsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRixPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTdFLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxDQUFDO0FBRXRDOzs7R0FHRztBQUNILGVBQU8sTUFBTSxxQ0FBcUMsTUFBTSxDQUFDO0FBRXpELGVBQU8sTUFBTSw2QkFBNkIsRUFBRSxrQkFBa0IsQ0FDNUQscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQStGakUsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCx3QkFBZ0IsZ0JBQWdCLElBQUkscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUluRyJ9
|
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,EACL,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAOxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,eAAe,EAAiC,MAAM,sBAAsB,CAAC;AAE3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,YAAY,EAAE,qBAAqB,EAAE,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,qCAAqC,MAAM,CAAC;AAEzD,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAC5D,qBAAqB,GAAG,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CA+FjE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,GAAG,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAInG"}
|
package/dest/config.js
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, optionalNumberConfigHelper, secretValueConfigHelper } from '@aztec/foundation/config';
|
|
1
|
+
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, optionalNumberConfigHelper, pickConfigMappings, secretValueConfigHelper } from '@aztec/foundation/config';
|
|
2
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
+
import { sharedSequencerConfigMappings } from '@aztec/stdlib/config';
|
|
3
4
|
import { localSignerConfigMappings, validatorHASignerConfigMappings } from '@aztec/stdlib/ha-signing';
|
|
5
|
+
/**
|
|
6
|
+
* Default clock-disparity tolerance (ms) for proposal/attestation receive windows, mirroring the p2p config
|
|
7
|
+
* default. Used by the validator-client validators when the merged node config does not carry the value.
|
|
8
|
+
*/ export const DEFAULT_MAX_GOSSIP_CLOCK_DISPARITY_MS = 500;
|
|
4
9
|
export const validatorClientConfigMappings = {
|
|
10
|
+
...pickConfigMappings(sharedSequencerConfigMappings, [
|
|
11
|
+
'blockDurationMs'
|
|
12
|
+
]),
|
|
5
13
|
validatorPrivateKeys: {
|
|
6
14
|
env: 'VALIDATOR_PRIVATE_KEYS',
|
|
7
15
|
description: 'List of private keys of the validators participating in attestation duties',
|
package/dest/factory.d.ts
CHANGED
|
@@ -38,4 +38,4 @@ export declare function createValidatorClient(config: ValidatorClientFullConfig,
|
|
|
38
38
|
reexecutionTracker: CheckpointReexecutionTracker;
|
|
39
39
|
slashingProtectionDb?: SlashingProtectionDatabase;
|
|
40
40
|
}): Promise<ValidatorClient> | undefined;
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQTBCLEtBQUssU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdFLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekcsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRW5GLE9BQU8sS0FBSyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCx3QkFBZ0IscUJBQXFCLENBQ25DLE1BQU0sRUFBRSx5QkFBeUIsRUFDakMsSUFBSSxFQUFFO0lBQ0osa0JBQWtCLEVBQUUsMEJBQTBCLENBQUM7SUFDL0MsVUFBVSxFQUFFLHNCQUFzQixDQUFDO0lBQ25DLFdBQVcsRUFBRSxhQUFhLEdBQUcsV0FBVyxDQUFDO0lBQ3pDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDO0lBQ3pDLFNBQVMsRUFBRSxTQUFTLENBQUM7SUFDckIsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUN2QixVQUFVLEVBQUUsbUJBQW1CLENBQUM7SUFDaEMsWUFBWSxFQUFFLFlBQVksQ0FBQztJQUMzQixTQUFTLEVBQUUsZUFBZSxDQUFDO0lBQzNCLGtCQUFrQixFQUFFLDRCQUE0QixDQUFDO0NBQ2xELG1CQWtDRjtBQUVELHdCQUFnQixxQkFBcUIsQ0FDbkMsTUFBTSxFQUFFLHlCQUF5QixFQUNqQyxJQUFJLEVBQUU7SUFDSixrQkFBa0IsRUFBRSwwQkFBMEIsQ0FBQztJQUMvQyxVQUFVLEVBQUUsc0JBQXNCLENBQUM7SUFDbkMsU0FBUyxFQUFFLFNBQVMsQ0FBQztJQUNyQixXQUFXLEVBQUUsYUFBYSxHQUFHLFdBQVcsQ0FBQztJQUN6QyxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQztJQUN6QyxTQUFTLEVBQUUsZUFBZSxDQUFDO0lBQzNCLFlBQVksRUFBRSxZQUFZLENBQUM7SUFDM0IsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUN2QixlQUFlLEVBQUUsZUFBZSxHQUFHLFNBQVMsQ0FBQztJQUM3QyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7SUFDaEMsa0JBQWtCLEVBQUUsNEJBQTRCLENBQUM7SUFDakQsb0JBQW9CLENBQUMsRUFBRSwwQkFBMEIsQ0FBQztDQUNuRCx3Q0F1QkYifQ==
|
package/dest/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAEnF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAG1E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,yBAAyB,EACjC,IAAI,EAAE;IACJ,kBAAkB,EAAE,0BAA0B,CAAC;IAC/C,UAAU,EAAE,sBAAsB,CAAC;IACnC,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC;IACzC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,mBAAmB,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,eAAe,CAAC;IAC3B,kBAAkB,EAAE,4BAA4B,CAAC;CAClD,mBAkCF;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,yBAAyB,EACjC,IAAI,EAAE;IACJ,kBAAkB,EAAE,0BAA0B,CAAC;IAC/C,UAAU,EAAE,sBAAsB,CAAC;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC;IACzC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,UAAU,EAAE,mBAAmB,CAAC;IAChC,kBAAkB,EAAE,4BAA4B,CAAC;IACjD,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CACnD,wCAuBF"}
|
package/dest/factory.js
CHANGED
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
import { BlockProposalValidator } from '@aztec/p2p';
|
|
2
|
+
import { ConsensusTimetable } from '@aztec/stdlib/timetable';
|
|
3
|
+
import { DEFAULT_MAX_GOSSIP_CLOCK_DISPARITY_MS } from './config.js';
|
|
2
4
|
import { ValidatorMetrics } from './metrics.js';
|
|
3
5
|
import { ProposalHandler } from './proposal_handler.js';
|
|
4
6
|
import { ValidatorClient } from './validator.js';
|
|
5
7
|
export function createProposalHandler(config, deps) {
|
|
6
8
|
const metrics = new ValidatorMetrics(deps.telemetry);
|
|
7
|
-
const
|
|
9
|
+
const consensusTimetable = new ConsensusTimetable({
|
|
10
|
+
l1Constants: deps.epochCache.getL1Constants(),
|
|
11
|
+
blockDuration: config.blockDurationMs / 1000
|
|
12
|
+
});
|
|
13
|
+
const blockProposalValidator = new BlockProposalValidator(deps.epochCache, consensusTimetable, {
|
|
8
14
|
txsPermitted: !config.disableTransactions,
|
|
9
15
|
maxTxsPerBlock: config.validateMaxTxsPerBlock ?? config.validateMaxTxsPerCheckpoint,
|
|
10
16
|
maxBlocksPerCheckpoint: config.maxBlocksPerCheckpoint,
|
|
11
17
|
signatureContext: {
|
|
12
18
|
chainId: config.l1ChainId,
|
|
13
19
|
rollupAddress: config.rollupAddress
|
|
14
|
-
}
|
|
20
|
+
},
|
|
21
|
+
clockDisparityMs: config.maxGossipClockDisparityMs ?? DEFAULT_MAX_GOSSIP_CLOCK_DISPARITY_MS
|
|
15
22
|
});
|
|
16
|
-
return new ProposalHandler(deps.checkpointsBuilder, deps.worldState, deps.blockSource, deps.l1ToL2MessageSource, deps.p2pClient.getTxProvider(), blockProposalValidator, deps.epochCache, config, deps.blobClient, deps.reexecutionTracker, metrics, deps.dateProvider, deps.telemetry, undefined);
|
|
23
|
+
return new ProposalHandler(deps.checkpointsBuilder, deps.worldState, deps.blockSource, deps.l1ToL2MessageSource, deps.p2pClient.getTxProvider(), blockProposalValidator, deps.epochCache, consensusTimetable, config, deps.blobClient, deps.reexecutionTracker, metrics, deps.dateProvider, deps.telemetry, undefined);
|
|
17
24
|
}
|
|
18
25
|
export function createValidatorClient(config, deps) {
|
|
19
26
|
if (config.disableValidator || !deps.keyStoreManager) {
|
|
@@ -13,7 +13,8 @@ import type { ValidatorKeyStore } from './interface.js';
|
|
|
13
13
|
export declare class Web3SignerKeyStore implements ValidatorKeyStore {
|
|
14
14
|
private addresses;
|
|
15
15
|
private baseUrl;
|
|
16
|
-
|
|
16
|
+
private readonly requestTimeoutMs;
|
|
17
|
+
constructor(addresses: EthAddress[], baseUrl: string, requestTimeoutMs?: number);
|
|
17
18
|
/**
|
|
18
19
|
* Get the address of a signer by index
|
|
19
20
|
*
|
|
@@ -60,7 +61,14 @@ export declare class Web3SignerKeyStore implements ValidatorKeyStore {
|
|
|
60
61
|
* @throws Error if the address is not found in the keystore or signing fails
|
|
61
62
|
*/
|
|
62
63
|
signMessageWithAddress(address: EthAddress, message: Buffer32, _context: SigningContext): Promise<Signature>;
|
|
64
|
+
/**
|
|
65
|
+
* Make a JSON-RPC sign request to Web3Signer using eth_sign
|
|
66
|
+
* @param address - The Ethereum address to sign with
|
|
67
|
+
* @param data - The data to sign
|
|
68
|
+
* @returns The signature
|
|
69
|
+
*/
|
|
63
70
|
private makeJsonRpcSignRequest;
|
|
64
71
|
private makeJsonRpcSignTypedDataRequest;
|
|
72
|
+
private sendSignRequest;
|
|
65
73
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViM3NpZ25lcl9rZXlfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rZXlfc3RvcmUvd2ViM3NpZ25lcl9rZXlfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV2RSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3hEOzs7OztHQUtHO0FBQ0gscUJBQWEsa0JBQW1CLFlBQVcsaUJBQWlCO0lBSXhELE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxPQUFPO0lBSmpCLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQVM7SUFFMUMsWUFDVSxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQ3ZCLGdCQUFnQixHQUFFLE1BQThDLEVBR2pFO0lBRUQ7Ozs7O09BS0c7SUFDSSxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxVQUFVLENBSzNDO0lBRUQ7Ozs7T0FJRztJQUNJLFlBQVksSUFBSSxVQUFVLEVBQUUsQ0FFbEM7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLGNBQWMsR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FFbkc7SUFFRDs7Ozs7OztPQU9HO0lBQ1Usd0JBQXdCLENBQ25DLE9BQU8sRUFBRSxVQUFVLEVBQ25CLFNBQVMsRUFBRSxtQkFBbUIsRUFDOUIsUUFBUSxFQUFFLGNBQWMsR0FDdkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQU1wQjtJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxjQUFjLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBRXBGO0lBRUQ7Ozs7Ozs7T0FPRztJQUNVLHNCQUFzQixDQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUNuQixPQUFPLEVBQUUsUUFBUSxFQUNqQixRQUFRLEVBQUUsY0FBYyxHQUN2QixPQUFPLENBQUMsU0FBUyxDQUFDLENBS3BCO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsc0JBQXNCO0lBVTlCLE9BQU8sQ0FBQywrQkFBK0I7WUFjekIsZUFBZTtDQThDOUIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web3signer_key_store.d.ts","sourceRoot":"","sources":["../../src/key_store/web3signer_key_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"web3signer_key_store.d.ts","sourceRoot":"","sources":["../../src/key_store/web3signer_key_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKxD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IAIxD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IAJjB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,YACU,SAAS,EAAE,UAAU,EAAE,EACvB,OAAO,EAAE,MAAM,EACvB,gBAAgB,GAAE,MAA8C,EAGjE;IAED;;;;;OAKG;IACI,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAK3C;IAED;;;;OAIG;IACI,YAAY,IAAI,UAAU,EAAE,CAElC;IAED;;;;;OAKG;IACI,aAAa,CAAC,SAAS,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAEnG;IAED;;;;;;;OAOG;IACU,wBAAwB,CACnC,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,mBAAmB,EAC9B,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,CAAC,CAMpB;IAED;;;;;;OAMG;IACI,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAEpF;IAED;;;;;;;OAOG;IACU,sBAAsB,CACjC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,CAAC,CAKpB;IAED;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,+BAA+B;YAczB,eAAe;CA8C9B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { normalizeSignature } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
2
2
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
3
|
+
/** Default hard timeout (ms) applied to each Web3Signer HTTP request. */ const DEFAULT_WEB3SIGNER_REQUEST_TIMEOUT_MS = 30_000;
|
|
3
4
|
/**
|
|
4
5
|
* Web3Signer Key Store
|
|
5
6
|
*
|
|
@@ -8,9 +9,11 @@ import { Signature } from '@aztec/foundation/eth-signature';
|
|
|
8
9
|
*/ export class Web3SignerKeyStore {
|
|
9
10
|
addresses;
|
|
10
11
|
baseUrl;
|
|
11
|
-
|
|
12
|
+
requestTimeoutMs;
|
|
13
|
+
constructor(addresses, baseUrl, requestTimeoutMs = DEFAULT_WEB3SIGNER_REQUEST_TIMEOUT_MS){
|
|
12
14
|
this.addresses = addresses;
|
|
13
15
|
this.baseUrl = baseUrl;
|
|
16
|
+
this.requestTimeoutMs = requestTimeoutMs;
|
|
14
17
|
}
|
|
15
18
|
/**
|
|
16
19
|
* Get the address of a signer by index
|
|
@@ -78,10 +81,9 @@ import { Signature } from '@aztec/foundation/eth-signature';
|
|
|
78
81
|
* @param address - The Ethereum address to sign with
|
|
79
82
|
* @param data - The data to sign
|
|
80
83
|
* @returns The signature
|
|
81
|
-
*/
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const body = {
|
|
84
|
+
*/ makeJsonRpcSignRequest(address, data) {
|
|
85
|
+
// eth_sign automatically applies Ethereum message prefixing to the raw data.
|
|
86
|
+
return this.sendSignRequest({
|
|
85
87
|
jsonrpc: '2.0',
|
|
86
88
|
method: 'eth_sign',
|
|
87
89
|
params: [
|
|
@@ -89,37 +91,10 @@ import { Signature } from '@aztec/foundation/eth-signature';
|
|
|
89
91
|
data.toString()
|
|
90
92
|
],
|
|
91
93
|
id: 1
|
|
92
|
-
};
|
|
93
|
-
const response = await fetch(url, {
|
|
94
|
-
method: 'POST',
|
|
95
|
-
headers: {
|
|
96
|
-
'Content-Type': 'application/json'
|
|
97
|
-
},
|
|
98
|
-
body: JSON.stringify(body)
|
|
99
94
|
});
|
|
100
|
-
if (!response.ok) {
|
|
101
|
-
const errorText = await response.text();
|
|
102
|
-
throw new Error(`Web3Signer request failed: ${response.status} ${response.statusText} - ${errorText}`);
|
|
103
|
-
}
|
|
104
|
-
const result = await response.json();
|
|
105
|
-
// Handle JSON-RPC response format
|
|
106
|
-
if (result.error) {
|
|
107
|
-
throw new Error(`Web3Signer JSON-RPC error: ${result.error.code} - ${result.error.message}`);
|
|
108
|
-
}
|
|
109
|
-
if (!result.result) {
|
|
110
|
-
throw new Error('Invalid response from Web3Signer: no result found');
|
|
111
|
-
}
|
|
112
|
-
let signatureHex = result.result;
|
|
113
|
-
// Ensure the signature has the 0x prefix
|
|
114
|
-
if (!signatureHex.startsWith('0x')) {
|
|
115
|
-
signatureHex = '0x' + signatureHex;
|
|
116
|
-
}
|
|
117
|
-
// Parse the signature from the hex string
|
|
118
|
-
return normalizeSignature(Signature.fromString(signatureHex));
|
|
119
95
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const body = {
|
|
96
|
+
makeJsonRpcSignTypedDataRequest(address, typedData) {
|
|
97
|
+
return this.sendSignRequest({
|
|
123
98
|
jsonrpc: '2.0',
|
|
124
99
|
method: 'eth_signTypedData',
|
|
125
100
|
params: [
|
|
@@ -127,19 +102,35 @@ import { Signature } from '@aztec/foundation/eth-signature';
|
|
|
127
102
|
JSON.stringify(typedData)
|
|
128
103
|
],
|
|
129
104
|
id: 1
|
|
130
|
-
};
|
|
131
|
-
const response = await fetch(url, {
|
|
132
|
-
method: 'POST',
|
|
133
|
-
headers: {
|
|
134
|
-
'Content-Type': 'application/json'
|
|
135
|
-
},
|
|
136
|
-
body: JSON.stringify(body)
|
|
137
105
|
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Send a JSON-RPC request to Web3Signer under a hard request timeout and parse the signature.
|
|
109
|
+
* A timed-out or aborted request is surfaced as a clear timeout error rather than hanging, so a
|
|
110
|
+
* slow or unreachable signer cannot stall an HA signing operation past its own timeout budget.
|
|
111
|
+
*/ async sendSignRequest(body) {
|
|
112
|
+
let response;
|
|
113
|
+
try {
|
|
114
|
+
response = await fetch(this.baseUrl, {
|
|
115
|
+
method: 'POST',
|
|
116
|
+
headers: {
|
|
117
|
+
'Content-Type': 'application/json'
|
|
118
|
+
},
|
|
119
|
+
body: JSON.stringify(body),
|
|
120
|
+
signal: AbortSignal.timeout(this.requestTimeoutMs)
|
|
121
|
+
});
|
|
122
|
+
} catch (err) {
|
|
123
|
+
if ((err instanceof Error || err instanceof DOMException) && (err.name === 'TimeoutError' || err.name === 'AbortError')) {
|
|
124
|
+
throw new Error(`Web3Signer request timed out after ${this.requestTimeoutMs}ms`);
|
|
125
|
+
}
|
|
126
|
+
throw err;
|
|
127
|
+
}
|
|
138
128
|
if (!response.ok) {
|
|
139
129
|
const errorText = await response.text();
|
|
140
130
|
throw new Error(`Web3Signer request failed: ${response.status} ${response.statusText} - ${errorText}`);
|
|
141
131
|
}
|
|
142
132
|
const result = await response.json();
|
|
133
|
+
// Handle JSON-RPC response format
|
|
143
134
|
if (result.error) {
|
|
144
135
|
throw new Error(`Web3Signer JSON-RPC error: ${result.error.code} - ${result.error.message}`);
|
|
145
136
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Archiver } from '@aztec/archiver';
|
|
2
2
|
import type { BlobClientInterface } from '@aztec/blob-client/client';
|
|
3
|
-
import {
|
|
3
|
+
import type { EpochCache } from '@aztec/epoch-cache';
|
|
4
4
|
import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
5
5
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import type { LogData } from '@aztec/foundation/log';
|
|
@@ -12,6 +12,7 @@ import type { CheckpointReexecutionTracker } from '@aztec/stdlib/checkpoint';
|
|
|
12
12
|
import type { ITxProvider, ValidatorClientFullConfig, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
13
13
|
import { type L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
14
14
|
import type { BlockProposal, CheckpointProposalCore } from '@aztec/stdlib/p2p';
|
|
15
|
+
import type { ConsensusTimetable } from '@aztec/stdlib/timetable';
|
|
15
16
|
import type { FailedTx, Tx } from '@aztec/stdlib/tx';
|
|
16
17
|
import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
17
18
|
import type { FullNodeCheckpointsBuilder } from './checkpoint_builder.js';
|
|
@@ -47,7 +48,17 @@ export type CheckpointProposalValidationFailureResult = {
|
|
|
47
48
|
};
|
|
48
49
|
export type CheckpointProposalValidationResult = CheckpointProposalValidationSuccessResult | CheckpointProposalValidationFailureResult;
|
|
49
50
|
export type CheckpointProposalValidationFailureCallback = (proposal: CheckpointProposalCore, result: CheckpointProposalValidationFailureResult, proposalInfo: LogData) => void | Promise<void>;
|
|
50
|
-
/**
|
|
51
|
+
/** Block-proposal validation failures that constitute a slashable invalid-block offense. */
|
|
52
|
+
export declare const SLASHABLE_BLOCK_PROPOSAL_VALIDATION_RESULT: BlockProposalValidationFailureReason[];
|
|
53
|
+
/** Checkpoint-proposal validation failures that constitute a slashable invalid-checkpoint offense. */
|
|
54
|
+
export declare const SLASHABLE_CHECKPOINT_PROPOSAL_VALIDATION_RESULT: Record<CheckpointProposalValidationFailureReason, boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Handles block and checkpoint proposals for both validator and non-validator nodes. Also tracks which slots
|
|
57
|
+
* had a slashable invalid proposal or a proposal equivocation, exposing them via the
|
|
58
|
+
* `InvalidProposalSlotSource` interface consumed by the attested-invalid-proposal slashing watcher. The
|
|
59
|
+
* tracking is populated as a side effect of validating/re-executing proposals, so any node that re-executes
|
|
60
|
+
* proposals (the default) can serve it — not only validators.
|
|
61
|
+
*/
|
|
51
62
|
export declare class ProposalHandler {
|
|
52
63
|
private checkpointsBuilder;
|
|
53
64
|
private worldState;
|
|
@@ -56,6 +67,7 @@ export declare class ProposalHandler {
|
|
|
56
67
|
private txProvider;
|
|
57
68
|
private blockProposalValidator;
|
|
58
69
|
private epochCache;
|
|
70
|
+
private timetable;
|
|
59
71
|
private config;
|
|
60
72
|
private blobClient;
|
|
61
73
|
private reexecutionTracker;
|
|
@@ -74,7 +86,11 @@ export declare class ProposalHandler {
|
|
|
74
86
|
/** P2P proposal pool access for deciding when retained proposals should block archiver processing. */
|
|
75
87
|
private p2pClient?;
|
|
76
88
|
private checkpointProposalValidationFailureCallback?;
|
|
77
|
-
|
|
89
|
+
/** Slots at which a slashable invalid block or checkpoint proposal was observed. */
|
|
90
|
+
private readonly slotsWithInvalidProposals;
|
|
91
|
+
/** Slots at which a proposal equivocation was observed; suppresses attested-to-invalid-proposal slashing. */
|
|
92
|
+
private readonly slotsWithProposalEquivocation;
|
|
93
|
+
constructor(checkpointsBuilder: FullNodeCheckpointsBuilder, worldState: WorldStateSynchronizer, blockSource: L2BlockSource & L2BlockSink, l1ToL2MessageSource: L1ToL2MessageSource, txProvider: ITxProvider, blockProposalValidator: BlockProposalValidator, epochCache: EpochCache, timetable: ConsensusTimetable, config: ValidatorClientFullConfig, blobClient: BlobClientInterface, reexecutionTracker: CheckpointReexecutionTracker, metrics?: ValidatorMetrics | undefined, dateProvider?: DateProvider, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
78
94
|
updateConfig(config: Partial<ValidatorClientFullConfig>): void;
|
|
79
95
|
setCheckpointProposalValidationFailureCallback(callback?: CheckpointProposalValidationFailureCallback): void;
|
|
80
96
|
/**
|
|
@@ -89,6 +105,14 @@ export declare class ProposalHandler {
|
|
|
89
105
|
* proposer's own view of its own work.
|
|
90
106
|
*/
|
|
91
107
|
recordOwnCheckpointProposalAsValid(slot: SlotNumber, archive: Fr, checkpointNumber: CheckpointNumber): void;
|
|
108
|
+
/** Whether a slashable invalid block or checkpoint proposal was observed at the given slot (InvalidProposalSlotSource). */
|
|
109
|
+
hasInvalidProposals(slotNumber: SlotNumber): boolean;
|
|
110
|
+
/** Whether a proposal equivocation was observed at the given slot (InvalidProposalSlotSource). */
|
|
111
|
+
hasProposalEquivocation(slotNumber: SlotNumber): boolean;
|
|
112
|
+
/** Records a slot as having a slashable invalid proposal, for offense observers (sentinel/slasher watchers). */
|
|
113
|
+
markInvalidProposalSlot(slotNumber: SlotNumber): void;
|
|
114
|
+
/** Records a slot as having a proposal equivocation, which suppresses attested-to-invalid-proposal slashing. */
|
|
115
|
+
markProposalEquivocation(slotNumber: SlotNumber): void;
|
|
92
116
|
/**
|
|
93
117
|
* Registers handlers for block and checkpoint proposals on the p2p client.
|
|
94
118
|
* Records the p2p client so validation can inspect retained proposals.
|
|
@@ -97,10 +121,11 @@ export declare class ProposalHandler {
|
|
|
97
121
|
* @param archiver - Archiver reference for setting proposed checkpoints (pipelining)
|
|
98
122
|
* @param getOwnValidatorAddresses - Returns current validator addresses for own-proposal detection
|
|
99
123
|
*/
|
|
100
|
-
register(p2pClient: P2P, shouldReexecute: boolean, archiver?: Pick<Archiver, 'addProposedCheckpoint'>, getOwnValidatorAddresses?: () => string[]): ProposalHandler;
|
|
124
|
+
register(p2pClient: P2P, shouldReexecute: boolean, archiver?: Pick<Archiver, 'addProposedCheckpoint' | 'getProposedCheckpointData'>, getOwnValidatorAddresses?: () => string[]): ProposalHandler;
|
|
101
125
|
handleBlockProposal(proposal: BlockProposal, proposalSender: PeerId, shouldReexecute: boolean): Promise<BlockProposalValidationResult>;
|
|
102
126
|
private validateNewBlockInSlot;
|
|
103
127
|
private getParentBlock;
|
|
128
|
+
private resolveExistingBlockAtNumber;
|
|
104
129
|
private computeCheckpointNumber;
|
|
105
130
|
/**
|
|
106
131
|
* Validates that a non-first block in a checkpoint has consistent global variables with its parent.
|
|
@@ -108,6 +133,12 @@ export declare class ProposalHandler {
|
|
|
108
133
|
* @returns A failure result if validation fails, undefined if validation passes
|
|
109
134
|
*/
|
|
110
135
|
private validateNonFirstBlockInCheckpoint;
|
|
136
|
+
/**
|
|
137
|
+
* Hard re-execution/validation deadline for any block or checkpoint proposal targeting `slotNumber`:
|
|
138
|
+
* the single consensus `attestation_deadline` (`target_slot_start + S - 2E`). This is the latest the
|
|
139
|
+
* checkpoint can land on L1 in the target slot; all nodes agree on it. Loosened from the previous
|
|
140
|
+
* next-wall-clock-slot-boundary bound (see the timetable spec / refactor notes).
|
|
141
|
+
*/
|
|
111
142
|
private getReexecutionDeadline;
|
|
112
143
|
private getReexecuteFailureReason;
|
|
113
144
|
reexecuteTransactions(proposal: BlockProposal, blockNumber: BlockNumber, checkpointNumber: CheckpointNumber, txs: Tx[], l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[]): Promise<ReexecuteTransactionsResult>;
|
|
@@ -128,7 +159,7 @@ export declare class ProposalHandler {
|
|
|
128
159
|
protected tryUploadBlobsForCheckpoint(proposal: CheckpointProposalCore, proposalInfo: LogData): void;
|
|
129
160
|
/** Uploads blobs for a checkpoint to the filestore. */
|
|
130
161
|
protected uploadBlobsForCheckpoint(proposal: CheckpointProposalCore, proposalInfo: LogData): Promise<void>;
|
|
131
|
-
private
|
|
162
|
+
private setProposedCheckpoint;
|
|
132
163
|
}
|
|
133
164
|
export {};
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcG9zYWxfaGFuZGxlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb3Bvc2FsX2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdyRSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCxPQUFPLEVBQ0wsV0FBVyxFQUNYLGdCQUFnQixFQUVoQixVQUFVLEVBQ1gsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHckQsT0FBTyxFQUFFLFlBQVksRUFBUyxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQWEsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRixPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBc0IsTUFBTSwwQkFBMEIsQ0FBQztBQUlqRyxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUseUJBQXlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0SCxPQUFPLEVBQ0wsS0FBSyxtQkFBbUIsRUFHekIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQXlCLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEcsT0FBTyxLQUFLLEVBQUUsa0JBQWtC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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposal_handler.d.ts","sourceRoot":"","sources":["../src/proposal_handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGrE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"proposal_handler.d.ts","sourceRoot":"","sources":["../src/proposal_handler.ts"],"names":[],"mappings":"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"}
|