@aztec/aztec-node 0.0.1-commit.7035c9bd6 → 0.0.1-commit.71324e566
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/aztec-node/server.d.ts +18 -16
- package/dest/aztec-node/server.d.ts.map +1 -1
- package/dest/aztec-node/server.js +132 -46
- package/dest/sentinel/sentinel.js +2 -2
- package/package.json +26 -26
- package/src/aztec-node/server.ts +149 -60
- package/src/sentinel/sentinel.ts +2 -2
|
@@ -17,16 +17,16 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
|
17
17
|
import { type BlockData, BlockHash, type BlockParameter, type DataInBlock, L2Block, type L2BlockSource } from '@aztec/stdlib/block';
|
|
18
18
|
import type { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
19
19
|
import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress, NodeInfo, ProtocolContractAddresses } from '@aztec/stdlib/contract';
|
|
20
|
-
import { GasFees } from '@aztec/stdlib/gas';
|
|
21
|
-
import { type AztecNode, type AztecNodeAdmin, type AztecNodeAdminConfig, type GetContractClassLogsResponse, type GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
20
|
+
import { GasFees, type ManaUsageEstimate } from '@aztec/stdlib/gas';
|
|
21
|
+
import { type AztecNode, type AztecNodeAdmin, type AztecNodeAdminConfig, type AztecNodeDebug, type GetContractClassLogsResponse, type GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
22
22
|
import { type AllowedElement, type ClientProtocolCircuitVerifier, type L2LogsSource, type Service, type WorldStateSyncStatus, type WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
23
23
|
import type { DebugLogStore, LogFilter, SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
24
24
|
import { type L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
25
|
-
import type { Offense
|
|
26
|
-
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
25
|
+
import type { Offense } from '@aztec/stdlib/slashing';
|
|
27
26
|
import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
28
|
-
import { type BlockHeader, type GlobalVariableBuilder as GlobalVariableBuilderInterface, type IndexedTxEffect, PublicSimulationOutput, Tx, type TxHash, TxReceipt, type TxValidationResult } from '@aztec/stdlib/tx';
|
|
27
|
+
import { type BlockHeader, type FeeProvider, type GlobalVariableBuilder as GlobalVariableBuilderInterface, type IndexedTxEffect, PublicSimulationOutput, Tx, type TxHash, TxReceipt, type TxValidationResult } from '@aztec/stdlib/tx';
|
|
29
28
|
import type { SingleValidatorStats, ValidatorsStats } from '@aztec/stdlib/validators';
|
|
29
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
30
30
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
31
31
|
import { ValidatorClient } from '@aztec/validator-client';
|
|
32
32
|
import type { SlashingProtectionDatabase } from '@aztec/validator-ha-signer/types';
|
|
@@ -35,7 +35,7 @@ import { type AztecNodeConfig } from './config.js';
|
|
|
35
35
|
/**
|
|
36
36
|
* The aztec node.
|
|
37
37
|
*/
|
|
38
|
-
export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
38
|
+
export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, AztecNodeDebug, Traceable {
|
|
39
39
|
#private;
|
|
40
40
|
protected config: AztecNodeConfig;
|
|
41
41
|
protected readonly p2pClient: P2P;
|
|
@@ -52,9 +52,11 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
52
52
|
protected readonly l1ChainId: number;
|
|
53
53
|
protected readonly version: number;
|
|
54
54
|
protected readonly globalVariableBuilder: GlobalVariableBuilderInterface;
|
|
55
|
+
protected readonly feeProvider: FeeProvider;
|
|
55
56
|
protected readonly epochCache: EpochCacheInterface;
|
|
56
57
|
protected readonly packageVersion: string;
|
|
57
|
-
private
|
|
58
|
+
private peerProofVerifier;
|
|
59
|
+
private rpcProofVerifier;
|
|
58
60
|
private telemetry;
|
|
59
61
|
private log;
|
|
60
62
|
private blobClient?;
|
|
@@ -65,7 +67,9 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
65
67
|
private initialHeaderHashPromise;
|
|
66
68
|
private isUploadingSnapshot;
|
|
67
69
|
readonly tracer: Tracer;
|
|
68
|
-
constructor(config: AztecNodeConfig, p2pClient: P2P, blockSource: L2BlockSource & Partial<Service>, logsSource: L2LogsSource, contractDataSource: ContractDataSource, l1ToL2MessageSource: L1ToL2MessageSource, worldStateSynchronizer: WorldStateSynchronizer, sequencer: SequencerClient | undefined, proverNode: ProverNode | undefined, slasherClient: SlasherClientInterface | undefined, validatorsSentinel: Sentinel | undefined, epochPruneWatcher: EpochPruneWatcher | undefined, l1ChainId: number, version: number, globalVariableBuilder: GlobalVariableBuilderInterface, epochCache: EpochCacheInterface, packageVersion: string,
|
|
70
|
+
constructor(config: AztecNodeConfig, p2pClient: P2P, blockSource: L2BlockSource & Partial<Service>, logsSource: L2LogsSource, contractDataSource: ContractDataSource, l1ToL2MessageSource: L1ToL2MessageSource, worldStateSynchronizer: WorldStateSynchronizer, sequencer: SequencerClient | undefined, proverNode: ProverNode | undefined, slasherClient: SlasherClientInterface | undefined, validatorsSentinel: Sentinel | undefined, epochPruneWatcher: EpochPruneWatcher | undefined, l1ChainId: number, version: number, globalVariableBuilder: GlobalVariableBuilderInterface, feeProvider: FeeProvider, epochCache: EpochCacheInterface, packageVersion: string, peerProofVerifier: ClientProtocolCircuitVerifier, rpcProofVerifier: ClientProtocolCircuitVerifier, telemetry?: TelemetryClient, log?: Logger, blobClient?: BlobClientInterface | undefined, validatorClient?: ValidatorClient | undefined, keyStoreManager?: KeystoreManager | undefined, debugLogStore?: DebugLogStore);
|
|
71
|
+
/** @internal Exposed for testing — returns the RPC proof verifier. */
|
|
72
|
+
getProofVerifier(): ClientProtocolCircuitVerifier;
|
|
69
73
|
getWorldStateSyncStatus(): Promise<WorldStateSyncStatus>;
|
|
70
74
|
getL2Tips(): Promise<import("@aztec/stdlib/block").L2Tips>;
|
|
71
75
|
/**
|
|
@@ -82,7 +86,7 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
82
86
|
proverNodeDeps?: Partial<ProverNodeDeps>;
|
|
83
87
|
slashingProtectionDb?: SlashingProtectionDatabase;
|
|
84
88
|
}, options?: {
|
|
85
|
-
|
|
89
|
+
genesis?: GenesisData;
|
|
86
90
|
dontStartSequencer?: boolean;
|
|
87
91
|
dontStartProverNode?: boolean;
|
|
88
92
|
}): Promise<AztecNodeService>;
|
|
@@ -138,11 +142,9 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
138
142
|
getCheckpoints(from: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
|
|
139
143
|
getCheckpointedBlocks(from: BlockNumber, limit: number): Promise<import("@aztec/stdlib/block").CheckpointedL2Block[]>;
|
|
140
144
|
getCheckpointsDataForEpoch(epochNumber: EpochNumber): Promise<import("@aztec/stdlib/checkpoint").CheckpointData[]>;
|
|
141
|
-
/**
|
|
142
|
-
* Method to fetch the current min L2 fees.
|
|
143
|
-
* @returns The current min L2 fees.
|
|
144
|
-
*/
|
|
145
145
|
getCurrentMinFees(): Promise<GasFees>;
|
|
146
|
+
/** Returns predicted min fees for the current slot and next N slots. */
|
|
147
|
+
getPredictedMinFees(manaUsage?: ManaUsageEstimate): Promise<GasFees[]>;
|
|
146
148
|
getMaxPriorityFees(): Promise<GasFees>;
|
|
147
149
|
/**
|
|
148
150
|
* Method to fetch the latest block number synchronized by the node.
|
|
@@ -265,12 +267,12 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
265
267
|
getValidatorsStats(): Promise<ValidatorsStats>;
|
|
266
268
|
getValidatorStats(validatorAddress: EthAddress, fromSlot?: SlotNumber, toSlot?: SlotNumber): Promise<SingleValidatorStats | undefined>;
|
|
267
269
|
startSnapshotUpload(location: string): Promise<void>;
|
|
268
|
-
rollbackTo(targetBlock: BlockNumber, force?: boolean): Promise<void>;
|
|
270
|
+
rollbackTo(targetBlock: BlockNumber, force?: boolean, resumeSync?: boolean): Promise<void>;
|
|
269
271
|
pauseSync(): Promise<void>;
|
|
270
272
|
resumeSync(): Promise<void>;
|
|
271
|
-
getSlashPayloads(): Promise<SlashPayloadRound[]>;
|
|
272
273
|
getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]>;
|
|
273
274
|
reloadKeystore(): Promise<void>;
|
|
275
|
+
mineBlock(): Promise<void>;
|
|
274
276
|
/**
|
|
275
277
|
* Returns an instance of MerkleTreeOperations having first ensured the world state is fully synched
|
|
276
278
|
* @param block - The block parameter (block number, block hash, or 'latest') at which to get the data.
|
|
@@ -280,4 +282,4 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
280
282
|
/** Resolves a block parameter to a block number. */
|
|
281
283
|
protected resolveBlockNumber(block: BlockParameter): Promise<BlockNumber>;
|
|
282
284
|
}
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQWtDLE1BQU0sMkJBQTJCLENBQUM7QUFFckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLHdCQUF3QixFQUFFLEtBQUsscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RyxPQUFPLEVBQWMsS0FBSyxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTFFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBUyxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQWlCLGVBQWUsRUFBaUMsTUFBTSxzQkFBc0IsQ0FBQztBQUdyRyxPQUFPLEVBQ0wsS0FBSyxHQUFHLEVBQ1IsS0FBSyxhQUFhLEVBSW5CLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxLQUFLLGNBQWMsRUFBb0IsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RixPQUFPLEVBQXlCLGVBQWUsRUFBRSxLQUFLLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUcsT0FBTyxFQUVM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
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQWtDLE1BQU0sMkJBQTJCLENBQUM7QUFFckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLHdCQUF3QixFQUFFLEtBQUsscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RyxPQUFPLEVBQWMsS0FBSyxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTFFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHbEUsT0FBTyxFQUFFLFlBQVksRUFBUyxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQWlCLGVBQWUsRUFBaUMsTUFBTSxzQkFBc0IsQ0FBQztBQUdyRyxPQUFPLEVBQ0wsS0FBSyxHQUFHLEVBQ1IsS0FBSyxhQUFhLEVBSW5CLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxLQUFLLGNBQWMsRUFBb0IsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RixPQUFPLEVBR0wsZUFBZSxFQUNmLEtBQUssa0JBQWtCLEVBQ3hCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUVM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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -372,7 +372,8 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
|
|
|
372
372
|
}
|
|
373
373
|
var _dec, _initProto;
|
|
374
374
|
import { createArchiver } from '@aztec/archiver';
|
|
375
|
-
import { BBCircuitVerifier,
|
|
375
|
+
import { BBCircuitVerifier, BatchChonkVerifier, QueuedIVCVerifier } from '@aztec/bb-prover';
|
|
376
|
+
import { TestCircuitVerifier } from '@aztec/bb-prover/test';
|
|
376
377
|
import { createBlobClientWithFileStores } from '@aztec/blob-client/client';
|
|
377
378
|
import { Blob } from '@aztec/blob-lib';
|
|
378
379
|
import { EpochCache } from '@aztec/epoch-cache';
|
|
@@ -385,6 +386,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
385
386
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
386
387
|
import { BadRequestError } from '@aztec/foundation/json-rpc';
|
|
387
388
|
import { createLogger } from '@aztec/foundation/log';
|
|
389
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
388
390
|
import { count } from '@aztec/foundation/string';
|
|
389
391
|
import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
390
392
|
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
@@ -395,7 +397,7 @@ import { createP2PClient, createTxValidatorForAcceptingTxsOverRPC, getDefaultAll
|
|
|
395
397
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
396
398
|
import { createProverNode } from '@aztec/prover-node';
|
|
397
399
|
import { createKeyStoreForProver } from '@aztec/prover-node/config';
|
|
398
|
-
import { GlobalVariableBuilder, SequencerClient } from '@aztec/sequencer-client';
|
|
400
|
+
import { FeeProviderImpl, GlobalVariableBuilder, SequencerClient } from '@aztec/sequencer-client';
|
|
399
401
|
import { PublicProcessorFactory } from '@aztec/simulator/server';
|
|
400
402
|
import { AttestationsBlockWatcher, EpochPruneWatcher, createSlasher } from '@aztec/slasher';
|
|
401
403
|
import { CollectionLimitsConfig, PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
@@ -411,7 +413,7 @@ import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@az
|
|
|
411
413
|
import { PublicSimulationOutput, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
412
414
|
import { getPackageVersion } from '@aztec/stdlib/update-checker';
|
|
413
415
|
import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
414
|
-
import { FullNodeCheckpointsBuilder as CheckpointsBuilder, FullNodeCheckpointsBuilder, NodeKeystoreAdapter, ValidatorClient,
|
|
416
|
+
import { FullNodeCheckpointsBuilder as CheckpointsBuilder, FullNodeCheckpointsBuilder, NodeKeystoreAdapter, ValidatorClient, createProposalHandler, createValidatorClient } from '@aztec/validator-client';
|
|
415
417
|
import { createWorldStateSynchronizer } from '@aztec/world-state';
|
|
416
418
|
import { createPublicClient } from 'viem';
|
|
417
419
|
import { createSentinel } from '../sentinel/factory.js';
|
|
@@ -438,9 +440,11 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
438
440
|
l1ChainId;
|
|
439
441
|
version;
|
|
440
442
|
globalVariableBuilder;
|
|
443
|
+
feeProvider;
|
|
441
444
|
epochCache;
|
|
442
445
|
packageVersion;
|
|
443
|
-
|
|
446
|
+
peerProofVerifier;
|
|
447
|
+
rpcProofVerifier;
|
|
444
448
|
telemetry;
|
|
445
449
|
log;
|
|
446
450
|
blobClient;
|
|
@@ -461,7 +465,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
461
465
|
// Prevent two snapshot operations to happen simultaneously
|
|
462
466
|
isUploadingSnapshot;
|
|
463
467
|
tracer;
|
|
464
|
-
constructor(config, p2pClient, blockSource, logsSource, contractDataSource, l1ToL2MessageSource, worldStateSynchronizer, sequencer, proverNode, slasherClient, validatorsSentinel, epochPruneWatcher, l1ChainId, version, globalVariableBuilder, epochCache, packageVersion,
|
|
468
|
+
constructor(config, p2pClient, blockSource, logsSource, contractDataSource, l1ToL2MessageSource, worldStateSynchronizer, sequencer, proverNode, slasherClient, validatorsSentinel, epochPruneWatcher, l1ChainId, version, globalVariableBuilder, feeProvider, epochCache, packageVersion, peerProofVerifier, rpcProofVerifier, telemetry = getTelemetryClient(), log = createLogger('node'), blobClient, validatorClient, keyStoreManager, debugLogStore = new NullDebugLogStore()){
|
|
465
469
|
this.config = config;
|
|
466
470
|
this.p2pClient = p2pClient;
|
|
467
471
|
this.blockSource = blockSource;
|
|
@@ -477,9 +481,11 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
477
481
|
this.l1ChainId = l1ChainId;
|
|
478
482
|
this.version = version;
|
|
479
483
|
this.globalVariableBuilder = globalVariableBuilder;
|
|
484
|
+
this.feeProvider = feeProvider;
|
|
480
485
|
this.epochCache = epochCache;
|
|
481
486
|
this.packageVersion = packageVersion;
|
|
482
|
-
this.
|
|
487
|
+
this.peerProofVerifier = peerProofVerifier;
|
|
488
|
+
this.rpcProofVerifier = rpcProofVerifier;
|
|
483
489
|
this.telemetry = telemetry;
|
|
484
490
|
this.log = log;
|
|
485
491
|
this.blobClient = blobClient;
|
|
@@ -499,6 +505,9 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
499
505
|
throw new Error('debugLogStore should never be enabled when realProofs are set');
|
|
500
506
|
}
|
|
501
507
|
}
|
|
508
|
+
/** @internal Exposed for testing — returns the RPC proof verifier. */ getProofVerifier() {
|
|
509
|
+
return this.rpcProofVerifier;
|
|
510
|
+
}
|
|
502
511
|
async getWorldStateSyncStatus() {
|
|
503
512
|
const status = await this.worldStateSynchronizer.status();
|
|
504
513
|
return status.syncSummary;
|
|
@@ -596,8 +605,18 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
596
605
|
blockUntilSync: !config.skipArchiverInitialSync
|
|
597
606
|
});
|
|
598
607
|
// now create the merkle trees and the world state synchronizer
|
|
599
|
-
const worldStateSynchronizer = await createWorldStateSynchronizer(config, archiver, options.
|
|
600
|
-
const
|
|
608
|
+
const worldStateSynchronizer = await createWorldStateSynchronizer(config, archiver, options.genesis, telemetry);
|
|
609
|
+
const useRealVerifiers = config.realProofs || config.debugForceTxProofVerification;
|
|
610
|
+
let peerProofVerifier;
|
|
611
|
+
let rpcProofVerifier;
|
|
612
|
+
if (useRealVerifiers) {
|
|
613
|
+
peerProofVerifier = await BatchChonkVerifier.new(config, config.bbChonkVerifyMaxBatch, 'peer');
|
|
614
|
+
const rpcVerifier = await BBCircuitVerifier.new(config);
|
|
615
|
+
rpcProofVerifier = new QueuedIVCVerifier(rpcVerifier, config.numConcurrentIVCVerifiers);
|
|
616
|
+
} else {
|
|
617
|
+
peerProofVerifier = new TestCircuitVerifier(config.proverTestVerificationDelayMs);
|
|
618
|
+
rpcProofVerifier = new TestCircuitVerifier(config.proverTestVerificationDelayMs);
|
|
619
|
+
}
|
|
601
620
|
let debugLogStore;
|
|
602
621
|
if (!config.realProofs) {
|
|
603
622
|
log.warn(`Aztec node is accepting fake proofs`);
|
|
@@ -606,13 +625,12 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
606
625
|
} else {
|
|
607
626
|
debugLogStore = new NullDebugLogStore();
|
|
608
627
|
}
|
|
609
|
-
const proofVerifier = new QueuedIVCVerifier(config, circuitVerifier);
|
|
610
628
|
const proverOnly = config.enableProverNode && config.disableValidator;
|
|
611
629
|
if (proverOnly) {
|
|
612
630
|
log.info('Starting in prover-only mode: skipping validator, sequencer, sentinel, and slasher subsystems');
|
|
613
631
|
}
|
|
614
632
|
// create the tx pool and the p2p client, which will need the l2 block source
|
|
615
|
-
const p2pClient = await createP2PClient(config, archiver,
|
|
633
|
+
const p2pClient = await createP2PClient(config, archiver, peerProofVerifier, worldStateSynchronizer, epochCache, packageVersion, dateProvider, telemetry, deps.p2pClientDeps);
|
|
616
634
|
// We'll accumulate sentinel watchers here
|
|
617
635
|
const watchers = [];
|
|
618
636
|
// Create FullNodeCheckpointsBuilder for block proposal handling and tx validation.
|
|
@@ -645,27 +663,32 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
645
663
|
// like attestations or auths will fail.
|
|
646
664
|
if (validatorClient) {
|
|
647
665
|
watchers.push(validatorClient);
|
|
666
|
+
const vc = validatorClient;
|
|
667
|
+
const getValidatorAddresses = ()=>vc.getValidatorAddresses().map((a)=>a.toString());
|
|
668
|
+
validatorClient.getProposalHandler().register(p2pClient, true, archiver, getValidatorAddresses);
|
|
648
669
|
if (!options.dontStartSequencer) {
|
|
649
670
|
await validatorClient.registerHandlers();
|
|
650
671
|
}
|
|
651
672
|
}
|
|
652
673
|
}
|
|
653
|
-
// If there's no validator client, create a
|
|
674
|
+
// If there's no validator client, create a ProposalHandler to handle block and checkpoint proposals
|
|
654
675
|
// for monitoring or reexecution. Reexecution (default) allows us to follow the pending chain,
|
|
655
676
|
// while non-reexecution is used for validating the proposals and collecting their txs.
|
|
677
|
+
// Checkpoint proposals rebuild blobs if the blob client can upload blobs.
|
|
656
678
|
if (!validatorClient) {
|
|
657
679
|
const reexecute = !!config.alwaysReexecuteBlockProposals;
|
|
658
|
-
log.info(`Setting up
|
|
659
|
-
|
|
680
|
+
log.info(`Setting up proposal handler` + (reexecute ? ' with reexecution of proposals' : ''));
|
|
681
|
+
createProposalHandler(config, {
|
|
660
682
|
checkpointsBuilder: validatorCheckpointsBuilder,
|
|
661
683
|
worldState: worldStateSynchronizer,
|
|
662
684
|
epochCache,
|
|
663
685
|
blockSource: archiver,
|
|
664
686
|
l1ToL2MessageSource: archiver,
|
|
665
687
|
p2pClient,
|
|
688
|
+
blobClient,
|
|
666
689
|
dateProvider,
|
|
667
690
|
telemetry
|
|
668
|
-
}).register(p2pClient, reexecute);
|
|
691
|
+
}).register(p2pClient, reexecute, archiver);
|
|
669
692
|
}
|
|
670
693
|
// Start world state and wait for it to sync to the archiver.
|
|
671
694
|
await worldStateSynchronizer.start();
|
|
@@ -691,12 +714,20 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
691
714
|
}
|
|
692
715
|
// Start p2p-related services once the archiver has completed sync
|
|
693
716
|
void archiver.waitForInitialSync().then(async ()=>{
|
|
694
|
-
await p2pClient.start();
|
|
695
717
|
await validatorsSentinel?.start();
|
|
696
718
|
await epochPruneWatcher?.start();
|
|
697
719
|
await attestationsBlockWatcher?.start();
|
|
698
720
|
log.info(`All p2p services started`);
|
|
699
721
|
}).catch((err)=>log.error('Failed to start p2p services after archiver sync', err));
|
|
722
|
+
const globalVariableBuilderConfig = {
|
|
723
|
+
l1Contracts: config.l1Contracts,
|
|
724
|
+
ethereumSlotDuration: config.ethereumSlotDuration,
|
|
725
|
+
rollupVersion: BigInt(config.rollupVersion),
|
|
726
|
+
l1GenesisTime,
|
|
727
|
+
slotDuration: Number(slotDuration)
|
|
728
|
+
};
|
|
729
|
+
const globalVariableBuilder = new GlobalVariableBuilder(dateProvider, publicClient, globalVariableBuilderConfig);
|
|
730
|
+
const feeProvider = new FeeProviderImpl(dateProvider, publicClient, globalVariableBuilderConfig);
|
|
700
731
|
// Validator enabled, create/start relevant service
|
|
701
732
|
let sequencer;
|
|
702
733
|
let slasherClient;
|
|
@@ -723,6 +754,22 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
723
754
|
dateProvider,
|
|
724
755
|
kzg: Blob.getViemKzgInstance()
|
|
725
756
|
});
|
|
757
|
+
// Create a funder L1TxUtils from the keystore funding account (if configured)
|
|
758
|
+
const fundingSigner = keyStoreManager?.createFundingSigner();
|
|
759
|
+
let funderL1TxUtils;
|
|
760
|
+
if (fundingSigner) {
|
|
761
|
+
const [funder] = await createL1TxUtilsFromSigners(publicClient, [
|
|
762
|
+
fundingSigner
|
|
763
|
+
], {
|
|
764
|
+
...config,
|
|
765
|
+
scope: 'sequencer'
|
|
766
|
+
}, {
|
|
767
|
+
telemetry,
|
|
768
|
+
logger: log.createChild('l1-tx-utils:funder'),
|
|
769
|
+
dateProvider
|
|
770
|
+
});
|
|
771
|
+
funderL1TxUtils = funder;
|
|
772
|
+
}
|
|
726
773
|
// Create and start the sequencer client
|
|
727
774
|
const checkpointsBuilder = new CheckpointsBuilder({
|
|
728
775
|
...config,
|
|
@@ -734,6 +781,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
734
781
|
...deps,
|
|
735
782
|
epochCache,
|
|
736
783
|
l1TxUtils,
|
|
784
|
+
funderL1TxUtils,
|
|
737
785
|
validatorClient,
|
|
738
786
|
p2pClient,
|
|
739
787
|
worldStateSynchronizer,
|
|
@@ -744,7 +792,8 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
744
792
|
telemetry,
|
|
745
793
|
dateProvider,
|
|
746
794
|
blobClient,
|
|
747
|
-
nodeKeyStore: keyStoreManager
|
|
795
|
+
nodeKeyStore: keyStoreManager,
|
|
796
|
+
globalVariableBuilder
|
|
748
797
|
});
|
|
749
798
|
}
|
|
750
799
|
if (!options.dontStartSequencer && sequencer) {
|
|
@@ -774,13 +823,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
774
823
|
log.info(`Prover node subsystem created but not started`);
|
|
775
824
|
}
|
|
776
825
|
}
|
|
777
|
-
const
|
|
778
|
-
...config,
|
|
779
|
-
rollupVersion: BigInt(config.rollupVersion),
|
|
780
|
-
l1GenesisTime,
|
|
781
|
-
slotDuration: Number(slotDuration)
|
|
782
|
-
});
|
|
783
|
-
const node = new AztecNodeService(config, p2pClient, archiver, archiver, archiver, archiver, worldStateSynchronizer, sequencer, proverNode, slasherClient, validatorsSentinel, epochPruneWatcher, ethereumChain.chainInfo.id, config.rollupVersion, globalVariableBuilder, epochCache, packageVersion, proofVerifier, telemetry, log, blobClient, validatorClient, keyStoreManager, debugLogStore);
|
|
826
|
+
const node = new AztecNodeService(config, p2pClient, archiver, archiver, archiver, archiver, worldStateSynchronizer, sequencer, proverNode, slasherClient, validatorsSentinel, epochPruneWatcher, ethereumChain.chainInfo.id, config.rollupVersion, globalVariableBuilder, feeProvider, epochCache, packageVersion, peerProofVerifier, rpcProofVerifier, telemetry, log, blobClient, validatorClient, keyStoreManager, debugLogStore);
|
|
784
827
|
return node;
|
|
785
828
|
}
|
|
786
829
|
/**
|
|
@@ -895,11 +938,11 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
895
938
|
getCheckpointsDataForEpoch(epochNumber) {
|
|
896
939
|
return this.blockSource.getCheckpointsDataForEpoch(epochNumber);
|
|
897
940
|
}
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
return await this.
|
|
941
|
+
async getCurrentMinFees() {
|
|
942
|
+
return await this.feeProvider.getCurrentMinFees();
|
|
943
|
+
}
|
|
944
|
+
/** Returns predicted min fees for the current slot and next N slots. */ async getPredictedMinFees(manaUsage) {
|
|
945
|
+
return await this.feeProvider.getPredictedMinFees(manaUsage);
|
|
903
946
|
}
|
|
904
947
|
async getMaxPriorityFees() {
|
|
905
948
|
for await (const tx of this.p2pClient.iteratePendingTxs()){
|
|
@@ -1052,7 +1095,10 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
1052
1095
|
await tryStop(this.validatorsSentinel);
|
|
1053
1096
|
await tryStop(this.epochPruneWatcher);
|
|
1054
1097
|
await tryStop(this.slasherClient);
|
|
1055
|
-
await
|
|
1098
|
+
await Promise.all([
|
|
1099
|
+
tryStop(this.peerProofVerifier),
|
|
1100
|
+
tryStop(this.rpcProofVerifier)
|
|
1101
|
+
]);
|
|
1056
1102
|
await tryStop(this.sequencer);
|
|
1057
1103
|
await tryStop(this.proverNode);
|
|
1058
1104
|
await tryStop(this.p2pClient);
|
|
@@ -1135,13 +1181,13 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
1135
1181
|
if (blockNumber === undefined) {
|
|
1136
1182
|
throw new Error(`Block number not found for leaf index ${index} in tree ${MerkleTreeId[treeId]}`);
|
|
1137
1183
|
}
|
|
1138
|
-
const
|
|
1139
|
-
if (
|
|
1184
|
+
const l2BlockHash = blockNumberToHash.get(blockNumber);
|
|
1185
|
+
if (l2BlockHash === undefined) {
|
|
1140
1186
|
throw new Error(`Block hash not found for block number ${blockNumber}`);
|
|
1141
1187
|
}
|
|
1142
1188
|
return {
|
|
1143
1189
|
l2BlockNumber: blockNumber,
|
|
1144
|
-
l2BlockHash
|
|
1190
|
+
l2BlockHash,
|
|
1145
1191
|
data: index
|
|
1146
1192
|
};
|
|
1147
1193
|
});
|
|
@@ -1151,6 +1197,10 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
1151
1197
|
// which is the archive tree root BEFORE the anchor block was added (i.e. the state after block N-1).
|
|
1152
1198
|
// So we need the world state at block N-1, not block N, to produce a sibling path matching that root.
|
|
1153
1199
|
const referenceBlockNumber = await this.resolveBlockNumber(referenceBlock);
|
|
1200
|
+
if (referenceBlockNumber === BlockNumber.ZERO) {
|
|
1201
|
+
// Block 0 (the initial block) has an empty archive, so no membership witness can exist.
|
|
1202
|
+
return undefined;
|
|
1203
|
+
}
|
|
1154
1204
|
const committedDb = await this.getWorldState(BlockNumber(referenceBlockNumber - 1));
|
|
1155
1205
|
const [pathAndIndex] = await committedDb.findSiblingPaths(MerkleTreeId.ARCHIVE, [
|
|
1156
1206
|
blockHash
|
|
@@ -1338,7 +1388,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
1338
1388
|
}
|
|
1339
1389
|
async isValidTx(tx, { isSimulation, skipFeeEnforcement } = {}) {
|
|
1340
1390
|
const db = this.worldStateSynchronizer.getCommitted();
|
|
1341
|
-
const verifier = isSimulation ? undefined : this.
|
|
1391
|
+
const verifier = isSimulation ? undefined : this.rpcProofVerifier;
|
|
1342
1392
|
// We accept transactions if they are not expired by the next slot (checked based on the ExpirationTimestamp field)
|
|
1343
1393
|
const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
|
|
1344
1394
|
const blockNumber = BlockNumber(await this.blockSource.getBlockNumber() + 1);
|
|
@@ -1380,7 +1430,18 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
1380
1430
|
archiver.updateConfig(config);
|
|
1381
1431
|
}
|
|
1382
1432
|
if (newConfig.realProofs !== this.config.realProofs) {
|
|
1383
|
-
|
|
1433
|
+
await Promise.all([
|
|
1434
|
+
tryStop(this.peerProofVerifier),
|
|
1435
|
+
tryStop(this.rpcProofVerifier)
|
|
1436
|
+
]);
|
|
1437
|
+
if (newConfig.realProofs) {
|
|
1438
|
+
this.peerProofVerifier = await BatchChonkVerifier.new(newConfig, newConfig.bbChonkVerifyMaxBatch, 'peer');
|
|
1439
|
+
const rpcVerifier = await BBCircuitVerifier.new(newConfig);
|
|
1440
|
+
this.rpcProofVerifier = new QueuedIVCVerifier(rpcVerifier, newConfig.numConcurrentIVCVerifiers);
|
|
1441
|
+
} else {
|
|
1442
|
+
this.peerProofVerifier = new TestCircuitVerifier();
|
|
1443
|
+
this.rpcProofVerifier = new TestCircuitVerifier();
|
|
1444
|
+
}
|
|
1384
1445
|
}
|
|
1385
1446
|
this.config = newConfig;
|
|
1386
1447
|
}
|
|
@@ -1440,7 +1501,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
1440
1501
|
});
|
|
1441
1502
|
return Promise.resolve();
|
|
1442
1503
|
}
|
|
1443
|
-
async rollbackTo(targetBlock, force) {
|
|
1504
|
+
async rollbackTo(targetBlock, force, resumeSync = true) {
|
|
1444
1505
|
const archiver = this.blockSource;
|
|
1445
1506
|
if (!('rollbackTo' in archiver)) {
|
|
1446
1507
|
throw new Error('Archiver implementation does not support rollbacks.');
|
|
@@ -1468,9 +1529,13 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
1468
1529
|
this.log.error(`Error during rollback`, err);
|
|
1469
1530
|
throw err;
|
|
1470
1531
|
} finally{
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1532
|
+
if (resumeSync) {
|
|
1533
|
+
this.log.info(`Resuming world state and archiver sync.`);
|
|
1534
|
+
this.worldStateSynchronizer.resumeSync();
|
|
1535
|
+
archiver.resume();
|
|
1536
|
+
} else {
|
|
1537
|
+
this.log.info(`Sync left paused after rollback (resumeSync=false).`);
|
|
1538
|
+
}
|
|
1474
1539
|
}
|
|
1475
1540
|
}
|
|
1476
1541
|
async pauseSync() {
|
|
@@ -1484,18 +1549,12 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
1484
1549
|
this.blockSource.resume();
|
|
1485
1550
|
return Promise.resolve();
|
|
1486
1551
|
}
|
|
1487
|
-
getSlashPayloads() {
|
|
1488
|
-
if (!this.slasherClient) {
|
|
1489
|
-
throw new Error(`Slasher client not enabled`);
|
|
1490
|
-
}
|
|
1491
|
-
return this.slasherClient.getSlashPayloads();
|
|
1492
|
-
}
|
|
1493
1552
|
getSlashOffenses(round) {
|
|
1494
1553
|
if (!this.slasherClient) {
|
|
1495
1554
|
throw new Error(`Slasher client not enabled`);
|
|
1496
1555
|
}
|
|
1497
1556
|
if (round === 'all') {
|
|
1498
|
-
return this.slasherClient.
|
|
1557
|
+
return this.slasherClient.getOffenses();
|
|
1499
1558
|
} else {
|
|
1500
1559
|
return this.slasherClient.gatherOffensesForRound(round === 'current' ? undefined : BigInt(round));
|
|
1501
1560
|
}
|
|
@@ -1567,6 +1626,33 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
1567
1626
|
this.keyStoreManager = newManager;
|
|
1568
1627
|
this.log.info('Keystore reloaded: coinbase, feeRecipient, and attester keys updated');
|
|
1569
1628
|
}
|
|
1629
|
+
async mineBlock() {
|
|
1630
|
+
if (!this.sequencer) {
|
|
1631
|
+
throw new BadRequestError('Cannot mine block: no sequencer is running');
|
|
1632
|
+
}
|
|
1633
|
+
const currentBlockNumber = await this.getBlockNumber();
|
|
1634
|
+
// Use slot duration + 50% buffer as the timeout so this works on running networks too
|
|
1635
|
+
const { slotDuration } = await this.blockSource.getL1Constants();
|
|
1636
|
+
const timeoutSeconds = Math.ceil(slotDuration * 1.5);
|
|
1637
|
+
// Temporarily set minTxsPerBlock to 0 so the sequencer produces a block even with no txs
|
|
1638
|
+
const originalMinTxsPerBlock = this.sequencer.getSequencer().getConfig().minTxsPerBlock;
|
|
1639
|
+
this.sequencer.updateConfig({
|
|
1640
|
+
minTxsPerBlock: 0
|
|
1641
|
+
});
|
|
1642
|
+
try {
|
|
1643
|
+
// Trigger the sequencer to produce a block immediately
|
|
1644
|
+
void this.sequencer.trigger();
|
|
1645
|
+
// Wait for the new L2 block to appear
|
|
1646
|
+
await retryUntil(async ()=>{
|
|
1647
|
+
const newBlockNumber = await this.getBlockNumber();
|
|
1648
|
+
return newBlockNumber > currentBlockNumber ? true : undefined;
|
|
1649
|
+
}, 'mineBlock', timeoutSeconds, 0.1);
|
|
1650
|
+
} finally{
|
|
1651
|
+
this.sequencer.updateConfig({
|
|
1652
|
+
minTxsPerBlock: originalMinTxsPerBlock
|
|
1653
|
+
});
|
|
1654
|
+
}
|
|
1655
|
+
}
|
|
1570
1656
|
#getInitialHeaderHash() {
|
|
1571
1657
|
if (!this.initialHeaderHashPromise) {
|
|
1572
1658
|
this.initialHeaderHashPromise = this.worldStateSynchronizer.getCommitted().getInitialHeader().hash();
|
|
@@ -1614,7 +1700,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
1614
1700
|
// Double-check world-state synced to the same block hash as was requested
|
|
1615
1701
|
if (BlockHash.isBlockHash(block)) {
|
|
1616
1702
|
const blockHash = await snapshot.getLeafValue(MerkleTreeId.ARCHIVE, BigInt(blockNumber));
|
|
1617
|
-
if (!blockHash || !
|
|
1703
|
+
if (!blockHash || !block.equals(blockHash)) {
|
|
1618
1704
|
throw new Error(`Block hash ${block.toString()} not found in world state at block number ${blockNumber}. If the node API has been queried with anchor block hash possibly a reorg has occurred.`);
|
|
1619
1705
|
}
|
|
1620
1706
|
}
|
|
@@ -157,13 +157,13 @@ export class Sentinel extends EventEmitter {
|
|
|
157
157
|
return false;
|
|
158
158
|
}
|
|
159
159
|
// Check that we have at least requiredConsecutiveEpochs and that all of them are above the inactivity threshold
|
|
160
|
-
return pastEpochs.slice(0, requiredConsecutiveEpochs).every((p)=>p.missed / p.total >= this.config.slashInactivityTargetPercentage);
|
|
160
|
+
return pastEpochs.slice(0, requiredConsecutiveEpochs).every((p)=>p.total === 0 ? false : p.missed / p.total >= this.config.slashInactivityTargetPercentage);
|
|
161
161
|
}
|
|
162
162
|
async handleProvenPerformance(epoch, performance) {
|
|
163
163
|
if (this.config.slashInactivityPenalty === 0n) {
|
|
164
164
|
return;
|
|
165
165
|
}
|
|
166
|
-
const inactiveValidators = getEntries(performance).filter(([_, { missed, total }])=>missed / total >= this.config.slashInactivityTargetPercentage).map(([address])=>address);
|
|
166
|
+
const inactiveValidators = getEntries(performance).filter(([_, { missed, total }])=>total > 0 && missed / total >= this.config.slashInactivityTargetPercentage).map(([address])=>address);
|
|
167
167
|
this.logger.debug(`Found ${inactiveValidators.length} inactive validators in epoch ${epoch}`, {
|
|
168
168
|
inactiveValidators,
|
|
169
169
|
epoch,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/aztec-node",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.71324e566",
|
|
4
4
|
"main": "dest/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -65,31 +65,31 @@
|
|
|
65
65
|
]
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
69
|
-
"@aztec/bb-prover": "0.0.1-commit.
|
|
70
|
-
"@aztec/blob-client": "0.0.1-commit.
|
|
71
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
72
|
-
"@aztec/constants": "0.0.1-commit.
|
|
73
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
74
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
75
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
76
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
77
|
-
"@aztec/l1-artifacts": "0.0.1-commit.
|
|
78
|
-
"@aztec/node-keystore": "0.0.1-commit.
|
|
79
|
-
"@aztec/node-lib": "0.0.1-commit.
|
|
80
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
81
|
-
"@aztec/p2p": "0.0.1-commit.
|
|
82
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
83
|
-
"@aztec/prover-client": "0.0.1-commit.
|
|
84
|
-
"@aztec/prover-node": "0.0.1-commit.
|
|
85
|
-
"@aztec/sequencer-client": "0.0.1-commit.
|
|
86
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
87
|
-
"@aztec/slasher": "0.0.1-commit.
|
|
88
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
89
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
90
|
-
"@aztec/validator-client": "0.0.1-commit.
|
|
91
|
-
"@aztec/validator-ha-signer": "0.0.1-commit.
|
|
92
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
68
|
+
"@aztec/archiver": "0.0.1-commit.71324e566",
|
|
69
|
+
"@aztec/bb-prover": "0.0.1-commit.71324e566",
|
|
70
|
+
"@aztec/blob-client": "0.0.1-commit.71324e566",
|
|
71
|
+
"@aztec/blob-lib": "0.0.1-commit.71324e566",
|
|
72
|
+
"@aztec/constants": "0.0.1-commit.71324e566",
|
|
73
|
+
"@aztec/epoch-cache": "0.0.1-commit.71324e566",
|
|
74
|
+
"@aztec/ethereum": "0.0.1-commit.71324e566",
|
|
75
|
+
"@aztec/foundation": "0.0.1-commit.71324e566",
|
|
76
|
+
"@aztec/kv-store": "0.0.1-commit.71324e566",
|
|
77
|
+
"@aztec/l1-artifacts": "0.0.1-commit.71324e566",
|
|
78
|
+
"@aztec/node-keystore": "0.0.1-commit.71324e566",
|
|
79
|
+
"@aztec/node-lib": "0.0.1-commit.71324e566",
|
|
80
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.71324e566",
|
|
81
|
+
"@aztec/p2p": "0.0.1-commit.71324e566",
|
|
82
|
+
"@aztec/protocol-contracts": "0.0.1-commit.71324e566",
|
|
83
|
+
"@aztec/prover-client": "0.0.1-commit.71324e566",
|
|
84
|
+
"@aztec/prover-node": "0.0.1-commit.71324e566",
|
|
85
|
+
"@aztec/sequencer-client": "0.0.1-commit.71324e566",
|
|
86
|
+
"@aztec/simulator": "0.0.1-commit.71324e566",
|
|
87
|
+
"@aztec/slasher": "0.0.1-commit.71324e566",
|
|
88
|
+
"@aztec/stdlib": "0.0.1-commit.71324e566",
|
|
89
|
+
"@aztec/telemetry-client": "0.0.1-commit.71324e566",
|
|
90
|
+
"@aztec/validator-client": "0.0.1-commit.71324e566",
|
|
91
|
+
"@aztec/validator-ha-signer": "0.0.1-commit.71324e566",
|
|
92
|
+
"@aztec/world-state": "0.0.1-commit.71324e566",
|
|
93
93
|
"koa": "^2.16.1",
|
|
94
94
|
"koa-router": "^13.1.1",
|
|
95
95
|
"tslib": "^2.4.0",
|
package/src/aztec-node/server.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Archiver, createArchiver } from '@aztec/archiver';
|
|
2
|
-
import { BBCircuitVerifier,
|
|
2
|
+
import { BBCircuitVerifier, BatchChonkVerifier, QueuedIVCVerifier } from '@aztec/bb-prover';
|
|
3
|
+
import { TestCircuitVerifier } from '@aztec/bb-prover/test';
|
|
3
4
|
import { type BlobClientInterface, createBlobClientWithFileStores } from '@aztec/blob-client/client';
|
|
4
5
|
import { Blob } from '@aztec/blob-lib';
|
|
5
6
|
import { ARCHIVE_HEIGHT, type L1_TO_L2_MSG_TREE_HEIGHT, type NOTE_HASH_TREE_HEIGHT } from '@aztec/constants';
|
|
@@ -8,12 +9,14 @@ import { createEthereumChain } from '@aztec/ethereum/chain';
|
|
|
8
9
|
import { getPublicClient, makeL1HttpTransport } from '@aztec/ethereum/client';
|
|
9
10
|
import { RegistryContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
10
11
|
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
12
|
+
import type { L1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
11
13
|
import { BlockNumber, CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
12
14
|
import { chunkBy, compactArray, pick, unique } from '@aztec/foundation/collection';
|
|
13
15
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
14
16
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
15
17
|
import { BadRequestError } from '@aztec/foundation/json-rpc';
|
|
16
18
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
19
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
17
20
|
import { count } from '@aztec/foundation/string';
|
|
18
21
|
import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
19
22
|
import { MembershipWitness, SiblingPath } from '@aztec/foundation/trees';
|
|
@@ -30,7 +33,12 @@ import {
|
|
|
30
33
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
31
34
|
import { type ProverNode, type ProverNodeDeps, createProverNode } from '@aztec/prover-node';
|
|
32
35
|
import { createKeyStoreForProver } from '@aztec/prover-node/config';
|
|
33
|
-
import {
|
|
36
|
+
import {
|
|
37
|
+
FeeProviderImpl,
|
|
38
|
+
GlobalVariableBuilder,
|
|
39
|
+
SequencerClient,
|
|
40
|
+
type SequencerPublisher,
|
|
41
|
+
} from '@aztec/sequencer-client';
|
|
34
42
|
import { PublicProcessorFactory } from '@aztec/simulator/server';
|
|
35
43
|
import {
|
|
36
44
|
AttestationsBlockWatcher,
|
|
@@ -57,13 +65,14 @@ import type {
|
|
|
57
65
|
NodeInfo,
|
|
58
66
|
ProtocolContractAddresses,
|
|
59
67
|
} from '@aztec/stdlib/contract';
|
|
60
|
-
import { GasFees } from '@aztec/stdlib/gas';
|
|
68
|
+
import { GasFees, type ManaUsageEstimate } from '@aztec/stdlib/gas';
|
|
61
69
|
import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
|
|
62
70
|
import {
|
|
63
71
|
type AztecNode,
|
|
64
72
|
type AztecNodeAdmin,
|
|
65
73
|
type AztecNodeAdminConfig,
|
|
66
74
|
AztecNodeAdminConfigSchema,
|
|
75
|
+
type AztecNodeDebug,
|
|
67
76
|
type GetContractClassLogsResponse,
|
|
68
77
|
type GetPublicLogsResponse,
|
|
69
78
|
} from '@aztec/stdlib/interfaces/client';
|
|
@@ -79,11 +88,12 @@ import {
|
|
|
79
88
|
import type { DebugLogStore, LogFilter, SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
80
89
|
import { InMemoryDebugLogStore, NullDebugLogStore } from '@aztec/stdlib/logs';
|
|
81
90
|
import { InboxLeaf, type L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
82
|
-
import type { Offense
|
|
83
|
-
import type { NullifierLeafPreimage,
|
|
91
|
+
import type { Offense } from '@aztec/stdlib/slashing';
|
|
92
|
+
import type { NullifierLeafPreimage, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
|
|
84
93
|
import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
85
94
|
import {
|
|
86
95
|
type BlockHeader,
|
|
96
|
+
type FeeProvider,
|
|
87
97
|
type GlobalVariableBuilder as GlobalVariableBuilderInterface,
|
|
88
98
|
type IndexedTxEffect,
|
|
89
99
|
PublicSimulationOutput,
|
|
@@ -95,6 +105,7 @@ import {
|
|
|
95
105
|
} from '@aztec/stdlib/tx';
|
|
96
106
|
import { getPackageVersion } from '@aztec/stdlib/update-checker';
|
|
97
107
|
import type { SingleValidatorStats, ValidatorsStats } from '@aztec/stdlib/validators';
|
|
108
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
98
109
|
import {
|
|
99
110
|
Attributes,
|
|
100
111
|
type TelemetryClient,
|
|
@@ -108,7 +119,7 @@ import {
|
|
|
108
119
|
FullNodeCheckpointsBuilder,
|
|
109
120
|
NodeKeystoreAdapter,
|
|
110
121
|
ValidatorClient,
|
|
111
|
-
|
|
122
|
+
createProposalHandler,
|
|
112
123
|
createValidatorClient,
|
|
113
124
|
} from '@aztec/validator-client';
|
|
114
125
|
import type { SlashingProtectionDatabase } from '@aztec/validator-ha-signer/types';
|
|
@@ -124,7 +135,7 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
124
135
|
/**
|
|
125
136
|
* The aztec node.
|
|
126
137
|
*/
|
|
127
|
-
export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
138
|
+
export class AztecNodeService implements AztecNode, AztecNodeAdmin, AztecNodeDebug, Traceable {
|
|
128
139
|
private metrics: NodeMetrics;
|
|
129
140
|
private initialHeaderHashPromise: Promise<BlockHash> | undefined = undefined;
|
|
130
141
|
|
|
@@ -149,9 +160,11 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
149
160
|
protected readonly l1ChainId: number,
|
|
150
161
|
protected readonly version: number,
|
|
151
162
|
protected readonly globalVariableBuilder: GlobalVariableBuilderInterface,
|
|
163
|
+
protected readonly feeProvider: FeeProvider,
|
|
152
164
|
protected readonly epochCache: EpochCacheInterface,
|
|
153
165
|
protected readonly packageVersion: string,
|
|
154
|
-
private
|
|
166
|
+
private peerProofVerifier: ClientProtocolCircuitVerifier,
|
|
167
|
+
private rpcProofVerifier: ClientProtocolCircuitVerifier,
|
|
155
168
|
private telemetry: TelemetryClient = getTelemetryClient(),
|
|
156
169
|
private log = createLogger('node'),
|
|
157
170
|
private blobClient?: BlobClientInterface,
|
|
@@ -173,6 +186,11 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
173
186
|
}
|
|
174
187
|
}
|
|
175
188
|
|
|
189
|
+
/** @internal Exposed for testing — returns the RPC proof verifier. */
|
|
190
|
+
public getProofVerifier(): ClientProtocolCircuitVerifier {
|
|
191
|
+
return this.rpcProofVerifier;
|
|
192
|
+
}
|
|
193
|
+
|
|
176
194
|
public async getWorldStateSyncStatus(): Promise<WorldStateSyncStatus> {
|
|
177
195
|
const status = await this.worldStateSynchronizer.status();
|
|
178
196
|
return status.syncSummary;
|
|
@@ -199,7 +217,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
199
217
|
slashingProtectionDb?: SlashingProtectionDatabase;
|
|
200
218
|
} = {},
|
|
201
219
|
options: {
|
|
202
|
-
|
|
220
|
+
genesis?: GenesisData;
|
|
203
221
|
dontStartSequencer?: boolean;
|
|
204
222
|
dontStartProverNode?: boolean;
|
|
205
223
|
} = {},
|
|
@@ -302,16 +320,18 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
302
320
|
);
|
|
303
321
|
|
|
304
322
|
// now create the merkle trees and the world state synchronizer
|
|
305
|
-
const worldStateSynchronizer = await createWorldStateSynchronizer(
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
323
|
+
const worldStateSynchronizer = await createWorldStateSynchronizer(config, archiver, options.genesis, telemetry);
|
|
324
|
+
const useRealVerifiers = config.realProofs || config.debugForceTxProofVerification;
|
|
325
|
+
let peerProofVerifier: ClientProtocolCircuitVerifier;
|
|
326
|
+
let rpcProofVerifier: ClientProtocolCircuitVerifier;
|
|
327
|
+
if (useRealVerifiers) {
|
|
328
|
+
peerProofVerifier = await BatchChonkVerifier.new(config, config.bbChonkVerifyMaxBatch, 'peer');
|
|
329
|
+
const rpcVerifier = await BBCircuitVerifier.new(config);
|
|
330
|
+
rpcProofVerifier = new QueuedIVCVerifier(rpcVerifier, config.numConcurrentIVCVerifiers);
|
|
331
|
+
} else {
|
|
332
|
+
peerProofVerifier = new TestCircuitVerifier(config.proverTestVerificationDelayMs);
|
|
333
|
+
rpcProofVerifier = new TestCircuitVerifier(config.proverTestVerificationDelayMs);
|
|
334
|
+
}
|
|
315
335
|
|
|
316
336
|
let debugLogStore: DebugLogStore;
|
|
317
337
|
if (!config.realProofs) {
|
|
@@ -325,8 +345,6 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
325
345
|
debugLogStore = new NullDebugLogStore();
|
|
326
346
|
}
|
|
327
347
|
|
|
328
|
-
const proofVerifier = new QueuedIVCVerifier(config, circuitVerifier);
|
|
329
|
-
|
|
330
348
|
const proverOnly = config.enableProverNode && config.disableValidator;
|
|
331
349
|
if (proverOnly) {
|
|
332
350
|
log.info('Starting in prover-only mode: skipping validator, sequencer, sentinel, and slasher subsystems');
|
|
@@ -336,7 +354,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
336
354
|
const p2pClient = await createP2PClient(
|
|
337
355
|
config,
|
|
338
356
|
archiver,
|
|
339
|
-
|
|
357
|
+
peerProofVerifier,
|
|
340
358
|
worldStateSynchronizer,
|
|
341
359
|
epochCache,
|
|
342
360
|
packageVersion,
|
|
@@ -387,28 +405,35 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
387
405
|
// like attestations or auths will fail.
|
|
388
406
|
if (validatorClient) {
|
|
389
407
|
watchers.push(validatorClient);
|
|
408
|
+
|
|
409
|
+
const vc = validatorClient;
|
|
410
|
+
const getValidatorAddresses = () => vc.getValidatorAddresses().map(a => a.toString());
|
|
411
|
+
validatorClient.getProposalHandler().register(p2pClient, true, archiver, getValidatorAddresses);
|
|
412
|
+
|
|
390
413
|
if (!options.dontStartSequencer) {
|
|
391
414
|
await validatorClient.registerHandlers();
|
|
392
415
|
}
|
|
393
416
|
}
|
|
394
417
|
}
|
|
395
418
|
|
|
396
|
-
// If there's no validator client, create a
|
|
419
|
+
// If there's no validator client, create a ProposalHandler to handle block and checkpoint proposals
|
|
397
420
|
// for monitoring or reexecution. Reexecution (default) allows us to follow the pending chain,
|
|
398
421
|
// while non-reexecution is used for validating the proposals and collecting their txs.
|
|
422
|
+
// Checkpoint proposals rebuild blobs if the blob client can upload blobs.
|
|
399
423
|
if (!validatorClient) {
|
|
400
424
|
const reexecute = !!config.alwaysReexecuteBlockProposals;
|
|
401
|
-
log.info(`Setting up
|
|
402
|
-
|
|
425
|
+
log.info(`Setting up proposal handler` + (reexecute ? ' with reexecution of proposals' : ''));
|
|
426
|
+
createProposalHandler(config, {
|
|
403
427
|
checkpointsBuilder: validatorCheckpointsBuilder,
|
|
404
428
|
worldState: worldStateSynchronizer,
|
|
405
429
|
epochCache,
|
|
406
430
|
blockSource: archiver,
|
|
407
431
|
l1ToL2MessageSource: archiver,
|
|
408
432
|
p2pClient,
|
|
433
|
+
blobClient,
|
|
409
434
|
dateProvider,
|
|
410
435
|
telemetry,
|
|
411
|
-
}).register(p2pClient, reexecute);
|
|
436
|
+
}).register(p2pClient, reexecute, archiver);
|
|
412
437
|
}
|
|
413
438
|
|
|
414
439
|
// Start world state and wait for it to sync to the archiver.
|
|
@@ -450,7 +475,6 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
450
475
|
void archiver
|
|
451
476
|
.waitForInitialSync()
|
|
452
477
|
.then(async () => {
|
|
453
|
-
await p2pClient.start();
|
|
454
478
|
await validatorsSentinel?.start();
|
|
455
479
|
await epochPruneWatcher?.start();
|
|
456
480
|
await attestationsBlockWatcher?.start();
|
|
@@ -458,6 +482,17 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
458
482
|
})
|
|
459
483
|
.catch(err => log.error('Failed to start p2p services after archiver sync', err));
|
|
460
484
|
|
|
485
|
+
const globalVariableBuilderConfig = {
|
|
486
|
+
l1Contracts: config.l1Contracts,
|
|
487
|
+
ethereumSlotDuration: config.ethereumSlotDuration,
|
|
488
|
+
rollupVersion: BigInt(config.rollupVersion),
|
|
489
|
+
l1GenesisTime,
|
|
490
|
+
slotDuration: Number(slotDuration),
|
|
491
|
+
};
|
|
492
|
+
|
|
493
|
+
const globalVariableBuilder = new GlobalVariableBuilder(dateProvider, publicClient, globalVariableBuilderConfig);
|
|
494
|
+
const feeProvider = new FeeProviderImpl(dateProvider, publicClient, globalVariableBuilderConfig);
|
|
495
|
+
|
|
461
496
|
// Validator enabled, create/start relevant service
|
|
462
497
|
let sequencer: SequencerClient | undefined;
|
|
463
498
|
let slasherClient: SlasherClientInterface | undefined;
|
|
@@ -495,6 +530,19 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
495
530
|
{ telemetry, logger: log.createChild('l1-tx-utils'), dateProvider, kzg: Blob.getViemKzgInstance() },
|
|
496
531
|
);
|
|
497
532
|
|
|
533
|
+
// Create a funder L1TxUtils from the keystore funding account (if configured)
|
|
534
|
+
const fundingSigner = keyStoreManager?.createFundingSigner();
|
|
535
|
+
let funderL1TxUtils: L1TxUtils | undefined;
|
|
536
|
+
if (fundingSigner) {
|
|
537
|
+
const [funder] = await createL1TxUtilsFromSigners(
|
|
538
|
+
publicClient,
|
|
539
|
+
[fundingSigner],
|
|
540
|
+
{ ...config, scope: 'sequencer' },
|
|
541
|
+
{ telemetry, logger: log.createChild('l1-tx-utils:funder'), dateProvider },
|
|
542
|
+
);
|
|
543
|
+
funderL1TxUtils = funder;
|
|
544
|
+
}
|
|
545
|
+
|
|
498
546
|
// Create and start the sequencer client
|
|
499
547
|
const checkpointsBuilder = new CheckpointsBuilder(
|
|
500
548
|
{ ...config, l1GenesisTime, slotDuration: Number(slotDuration), rollupManaLimit },
|
|
@@ -509,6 +557,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
509
557
|
...deps,
|
|
510
558
|
epochCache,
|
|
511
559
|
l1TxUtils,
|
|
560
|
+
funderL1TxUtils,
|
|
512
561
|
validatorClient,
|
|
513
562
|
p2pClient,
|
|
514
563
|
worldStateSynchronizer,
|
|
@@ -520,6 +569,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
520
569
|
dateProvider,
|
|
521
570
|
blobClient,
|
|
522
571
|
nodeKeyStore: keyStoreManager!,
|
|
572
|
+
globalVariableBuilder,
|
|
523
573
|
});
|
|
524
574
|
}
|
|
525
575
|
|
|
@@ -553,13 +603,6 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
553
603
|
}
|
|
554
604
|
}
|
|
555
605
|
|
|
556
|
-
const globalVariableBuilder = new GlobalVariableBuilder({
|
|
557
|
-
...config,
|
|
558
|
-
rollupVersion: BigInt(config.rollupVersion),
|
|
559
|
-
l1GenesisTime,
|
|
560
|
-
slotDuration: Number(slotDuration),
|
|
561
|
-
});
|
|
562
|
-
|
|
563
606
|
const node = new AztecNodeService(
|
|
564
607
|
config,
|
|
565
608
|
p2pClient,
|
|
@@ -576,9 +619,11 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
576
619
|
ethereumChain.chainInfo.id,
|
|
577
620
|
config.rollupVersion,
|
|
578
621
|
globalVariableBuilder,
|
|
622
|
+
feeProvider,
|
|
579
623
|
epochCache,
|
|
580
624
|
packageVersion,
|
|
581
|
-
|
|
625
|
+
peerProofVerifier,
|
|
626
|
+
rpcProofVerifier,
|
|
582
627
|
telemetry,
|
|
583
628
|
log,
|
|
584
629
|
blobClient,
|
|
@@ -727,12 +772,13 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
727
772
|
return this.blockSource.getCheckpointsDataForEpoch(epochNumber);
|
|
728
773
|
}
|
|
729
774
|
|
|
730
|
-
/**
|
|
731
|
-
* Method to fetch the current min L2 fees.
|
|
732
|
-
* @returns The current min L2 fees.
|
|
733
|
-
*/
|
|
734
775
|
public async getCurrentMinFees(): Promise<GasFees> {
|
|
735
|
-
return await this.
|
|
776
|
+
return await this.feeProvider.getCurrentMinFees();
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
/** Returns predicted min fees for the current slot and next N slots. */
|
|
780
|
+
public async getPredictedMinFees(manaUsage?: ManaUsageEstimate): Promise<GasFees[]> {
|
|
781
|
+
return await this.feeProvider.getPredictedMinFees(manaUsage);
|
|
736
782
|
}
|
|
737
783
|
|
|
738
784
|
public async getMaxPriorityFees(): Promise<GasFees> {
|
|
@@ -925,7 +971,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
925
971
|
await tryStop(this.validatorsSentinel);
|
|
926
972
|
await tryStop(this.epochPruneWatcher);
|
|
927
973
|
await tryStop(this.slasherClient);
|
|
928
|
-
await tryStop(this.
|
|
974
|
+
await Promise.all([tryStop(this.peerProofVerifier), tryStop(this.rpcProofVerifier)]);
|
|
929
975
|
await tryStop(this.sequencer);
|
|
930
976
|
await tryStop(this.proverNode);
|
|
931
977
|
await tryStop(this.p2pClient);
|
|
@@ -1015,7 +1061,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1015
1061
|
);
|
|
1016
1062
|
|
|
1017
1063
|
// Build a map from block number to block hash
|
|
1018
|
-
const blockNumberToHash = new Map<BlockNumber,
|
|
1064
|
+
const blockNumberToHash = new Map<BlockNumber, BlockHash>();
|
|
1019
1065
|
for (let i = 0; i < uniqueBlockNumbers.length; i++) {
|
|
1020
1066
|
const blockHash = blockHashes[i];
|
|
1021
1067
|
if (blockHash === undefined) {
|
|
@@ -1033,13 +1079,13 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1033
1079
|
if (blockNumber === undefined) {
|
|
1034
1080
|
throw new Error(`Block number not found for leaf index ${index} in tree ${MerkleTreeId[treeId]}`);
|
|
1035
1081
|
}
|
|
1036
|
-
const
|
|
1037
|
-
if (
|
|
1082
|
+
const l2BlockHash = blockNumberToHash.get(blockNumber);
|
|
1083
|
+
if (l2BlockHash === undefined) {
|
|
1038
1084
|
throw new Error(`Block hash not found for block number ${blockNumber}`);
|
|
1039
1085
|
}
|
|
1040
1086
|
return {
|
|
1041
1087
|
l2BlockNumber: blockNumber,
|
|
1042
|
-
l2BlockHash
|
|
1088
|
+
l2BlockHash,
|
|
1043
1089
|
data: index,
|
|
1044
1090
|
};
|
|
1045
1091
|
});
|
|
@@ -1053,6 +1099,10 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1053
1099
|
// which is the archive tree root BEFORE the anchor block was added (i.e. the state after block N-1).
|
|
1054
1100
|
// So we need the world state at block N-1, not block N, to produce a sibling path matching that root.
|
|
1055
1101
|
const referenceBlockNumber = await this.resolveBlockNumber(referenceBlock);
|
|
1102
|
+
if (referenceBlockNumber === BlockNumber.ZERO) {
|
|
1103
|
+
// Block 0 (the initial block) has an empty archive, so no membership witness can exist.
|
|
1104
|
+
return undefined;
|
|
1105
|
+
}
|
|
1056
1106
|
const committedDb = await this.getWorldState(BlockNumber(referenceBlockNumber - 1));
|
|
1057
1107
|
const [pathAndIndex] = await committedDb.findSiblingPaths<MerkleTreeId.ARCHIVE>(MerkleTreeId.ARCHIVE, [blockHash]);
|
|
1058
1108
|
return pathAndIndex === undefined
|
|
@@ -1315,7 +1365,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1315
1365
|
{ isSimulation, skipFeeEnforcement }: { isSimulation?: boolean; skipFeeEnforcement?: boolean } = {},
|
|
1316
1366
|
): Promise<TxValidationResult> {
|
|
1317
1367
|
const db = this.worldStateSynchronizer.getCommitted();
|
|
1318
|
-
const verifier = isSimulation ? undefined : this.
|
|
1368
|
+
const verifier = isSimulation ? undefined : this.rpcProofVerifier;
|
|
1319
1369
|
|
|
1320
1370
|
// We accept transactions if they are not expired by the next slot (checked based on the ExpirationTimestamp field)
|
|
1321
1371
|
const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
|
|
@@ -1364,7 +1414,15 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1364
1414
|
archiver.updateConfig(config);
|
|
1365
1415
|
}
|
|
1366
1416
|
if (newConfig.realProofs !== this.config.realProofs) {
|
|
1367
|
-
|
|
1417
|
+
await Promise.all([tryStop(this.peerProofVerifier), tryStop(this.rpcProofVerifier)]);
|
|
1418
|
+
if (newConfig.realProofs) {
|
|
1419
|
+
this.peerProofVerifier = await BatchChonkVerifier.new(newConfig, newConfig.bbChonkVerifyMaxBatch, 'peer');
|
|
1420
|
+
const rpcVerifier = await BBCircuitVerifier.new(newConfig);
|
|
1421
|
+
this.rpcProofVerifier = new QueuedIVCVerifier(rpcVerifier, newConfig.numConcurrentIVCVerifiers);
|
|
1422
|
+
} else {
|
|
1423
|
+
this.peerProofVerifier = new TestCircuitVerifier();
|
|
1424
|
+
this.rpcProofVerifier = new TestCircuitVerifier();
|
|
1425
|
+
}
|
|
1368
1426
|
}
|
|
1369
1427
|
|
|
1370
1428
|
this.config = newConfig;
|
|
@@ -1439,7 +1497,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1439
1497
|
return Promise.resolve();
|
|
1440
1498
|
}
|
|
1441
1499
|
|
|
1442
|
-
public async rollbackTo(targetBlock: BlockNumber, force?: boolean): Promise<void> {
|
|
1500
|
+
public async rollbackTo(targetBlock: BlockNumber, force?: boolean, resumeSync = true): Promise<void> {
|
|
1443
1501
|
const archiver = this.blockSource as Archiver;
|
|
1444
1502
|
if (!('rollbackTo' in archiver)) {
|
|
1445
1503
|
throw new Error('Archiver implementation does not support rollbacks.');
|
|
@@ -1469,9 +1527,13 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1469
1527
|
this.log.error(`Error during rollback`, err);
|
|
1470
1528
|
throw err;
|
|
1471
1529
|
} finally {
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1530
|
+
if (resumeSync) {
|
|
1531
|
+
this.log.info(`Resuming world state and archiver sync.`);
|
|
1532
|
+
this.worldStateSynchronizer.resumeSync();
|
|
1533
|
+
archiver.resume();
|
|
1534
|
+
} else {
|
|
1535
|
+
this.log.info(`Sync left paused after rollback (resumeSync=false).`);
|
|
1536
|
+
}
|
|
1475
1537
|
}
|
|
1476
1538
|
}
|
|
1477
1539
|
|
|
@@ -1488,19 +1550,12 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1488
1550
|
return Promise.resolve();
|
|
1489
1551
|
}
|
|
1490
1552
|
|
|
1491
|
-
public getSlashPayloads(): Promise<SlashPayloadRound[]> {
|
|
1492
|
-
if (!this.slasherClient) {
|
|
1493
|
-
throw new Error(`Slasher client not enabled`);
|
|
1494
|
-
}
|
|
1495
|
-
return this.slasherClient.getSlashPayloads();
|
|
1496
|
-
}
|
|
1497
|
-
|
|
1498
1553
|
public getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]> {
|
|
1499
1554
|
if (!this.slasherClient) {
|
|
1500
1555
|
throw new Error(`Slasher client not enabled`);
|
|
1501
1556
|
}
|
|
1502
1557
|
if (round === 'all') {
|
|
1503
|
-
return this.slasherClient.
|
|
1558
|
+
return this.slasherClient.getOffenses();
|
|
1504
1559
|
} else {
|
|
1505
1560
|
return this.slasherClient.gatherOffensesForRound(round === 'current' ? undefined : BigInt(round));
|
|
1506
1561
|
}
|
|
@@ -1594,6 +1649,40 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1594
1649
|
this.log.info('Keystore reloaded: coinbase, feeRecipient, and attester keys updated');
|
|
1595
1650
|
}
|
|
1596
1651
|
|
|
1652
|
+
public async mineBlock(): Promise<void> {
|
|
1653
|
+
if (!this.sequencer) {
|
|
1654
|
+
throw new BadRequestError('Cannot mine block: no sequencer is running');
|
|
1655
|
+
}
|
|
1656
|
+
|
|
1657
|
+
const currentBlockNumber = await this.getBlockNumber();
|
|
1658
|
+
|
|
1659
|
+
// Use slot duration + 50% buffer as the timeout so this works on running networks too
|
|
1660
|
+
const { slotDuration } = await this.blockSource.getL1Constants();
|
|
1661
|
+
const timeoutSeconds = Math.ceil(slotDuration * 1.5);
|
|
1662
|
+
|
|
1663
|
+
// Temporarily set minTxsPerBlock to 0 so the sequencer produces a block even with no txs
|
|
1664
|
+
const originalMinTxsPerBlock = this.sequencer.getSequencer().getConfig().minTxsPerBlock;
|
|
1665
|
+
this.sequencer.updateConfig({ minTxsPerBlock: 0 });
|
|
1666
|
+
|
|
1667
|
+
try {
|
|
1668
|
+
// Trigger the sequencer to produce a block immediately
|
|
1669
|
+
void this.sequencer.trigger();
|
|
1670
|
+
|
|
1671
|
+
// Wait for the new L2 block to appear
|
|
1672
|
+
await retryUntil(
|
|
1673
|
+
async () => {
|
|
1674
|
+
const newBlockNumber = await this.getBlockNumber();
|
|
1675
|
+
return newBlockNumber > currentBlockNumber ? true : undefined;
|
|
1676
|
+
},
|
|
1677
|
+
'mineBlock',
|
|
1678
|
+
timeoutSeconds,
|
|
1679
|
+
0.1,
|
|
1680
|
+
);
|
|
1681
|
+
} finally {
|
|
1682
|
+
this.sequencer.updateConfig({ minTxsPerBlock: originalMinTxsPerBlock });
|
|
1683
|
+
}
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1597
1686
|
#getInitialHeaderHash(): Promise<BlockHash> {
|
|
1598
1687
|
if (!this.initialHeaderHashPromise) {
|
|
1599
1688
|
this.initialHeaderHashPromise = this.worldStateSynchronizer.getCommitted().getInitialHeader().hash();
|
|
@@ -1652,7 +1741,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1652
1741
|
// Double-check world-state synced to the same block hash as was requested
|
|
1653
1742
|
if (BlockHash.isBlockHash(block)) {
|
|
1654
1743
|
const blockHash = await snapshot.getLeafValue(MerkleTreeId.ARCHIVE, BigInt(blockNumber));
|
|
1655
|
-
if (!blockHash || !
|
|
1744
|
+
if (!blockHash || !block.equals(blockHash)) {
|
|
1656
1745
|
throw new Error(
|
|
1657
1746
|
`Block hash ${block.toString()} not found in world state at block number ${blockNumber}. If the node API has been queried with anchor block hash possibly a reorg has occurred.`,
|
|
1658
1747
|
);
|
package/src/sentinel/sentinel.ts
CHANGED
|
@@ -219,7 +219,7 @@ export class Sentinel extends (EventEmitter as new () => WatcherEmitter) impleme
|
|
|
219
219
|
// Check that we have at least requiredConsecutiveEpochs and that all of them are above the inactivity threshold
|
|
220
220
|
return pastEpochs
|
|
221
221
|
.slice(0, requiredConsecutiveEpochs)
|
|
222
|
-
.every(p => p.missed / p.total >= this.config.slashInactivityTargetPercentage);
|
|
222
|
+
.every(p => (p.total === 0 ? false : p.missed / p.total >= this.config.slashInactivityTargetPercentage));
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
protected async handleProvenPerformance(epoch: EpochNumber, performance: ValidatorsEpochPerformance) {
|
|
@@ -228,7 +228,7 @@ export class Sentinel extends (EventEmitter as new () => WatcherEmitter) impleme
|
|
|
228
228
|
}
|
|
229
229
|
|
|
230
230
|
const inactiveValidators = getEntries(performance)
|
|
231
|
-
.filter(([_, { missed, total }]) => missed / total >= this.config.slashInactivityTargetPercentage)
|
|
231
|
+
.filter(([_, { missed, total }]) => total > 0 && missed / total >= this.config.slashInactivityTargetPercentage)
|
|
232
232
|
.map(([address]) => address);
|
|
233
233
|
|
|
234
234
|
this.logger.debug(`Found ${inactiveValidators.length} inactive validators in epoch ${epoch}`, {
|