@aztec/aztec-node 0.0.1-commit.88e6f9396 → 0.0.1-commit.8c0b8ff
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/config.d.ts +2 -2
- package/dest/aztec-node/config.d.ts.map +1 -1
- package/dest/aztec-node/config.js +1 -1
- package/dest/aztec-node/server.d.ts +4 -3
- package/dest/aztec-node/server.d.ts.map +1 -1
- package/dest/aztec-node/server.js +57 -23
- package/dest/sentinel/factory.d.ts +2 -2
- package/dest/sentinel/factory.d.ts.map +1 -1
- package/dest/sentinel/sentinel.js +4 -4
- package/package.json +27 -26
- package/src/aztec-node/config.ts +1 -1
- package/src/aztec-node/server.ts +66 -24
- package/src/sentinel/factory.ts +1 -1
- package/src/sentinel/sentinel.ts +4 -4
|
@@ -2,6 +2,7 @@ import { type ArchiverConfig } from '@aztec/archiver/config';
|
|
|
2
2
|
import { type GenesisStateConfig } from '@aztec/ethereum/config';
|
|
3
3
|
import { type L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
4
4
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
5
|
+
import { type DataStoreConfig } from '@aztec/kv-store/config';
|
|
5
6
|
import { type KeyStore } from '@aztec/node-keystore';
|
|
6
7
|
import { type SharedNodeConfig } from '@aztec/node-lib/config';
|
|
7
8
|
import { type P2PConfig } from '@aztec/p2p/config';
|
|
@@ -10,7 +11,6 @@ import { type ProverNodeConfig } from '@aztec/prover-node/config';
|
|
|
10
11
|
import { type SequencerClientConfig, type SequencerTxSenderConfig, sequencerClientConfigMappings } from '@aztec/sequencer-client/config';
|
|
11
12
|
import { type NodeRPCConfig } from '@aztec/stdlib/config';
|
|
12
13
|
import type { SlasherConfig } from '@aztec/stdlib/interfaces/server';
|
|
13
|
-
import { type DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
14
14
|
import { type ValidatorClientConfig } from '@aztec/validator-client/config';
|
|
15
15
|
import { type WorldStateConfig } from '@aztec/world-state/config';
|
|
16
16
|
import { type SentinelConfig } from '../sentinel/config.js';
|
|
@@ -37,4 +37,4 @@ export declare const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig
|
|
|
37
37
|
*/
|
|
38
38
|
export declare function getConfigEnvVars(): AztecNodeConfig;
|
|
39
39
|
export declare function createKeyStoreForValidator(config: SequencerTxSenderConfig & SequencerClientConfig & SharedNodeConfig): KeyStore | undefined;
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUEwQixNQUFNLHdCQUF3QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUE4QixNQUFNLHdCQUF3QixDQUFDO0FBQzdGLE9BQU8sRUFBRSxLQUFLLG1CQUFtQixFQUE4QixNQUFNLHVDQUF1QyxDQUFDO0FBQzdHLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUE4QyxNQUFNLDBCQUEwQixDQUFDO0FBRS9HLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRixPQUFPLEVBQ0wsS0FBSyxRQUFRLEVBSWQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBNEIsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQXFCLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUFFLEtBQUssc0JBQXNCLEVBQThCLE1BQU0sNkJBQTZCLENBQUM7QUFDdEcsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBR3RCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssdUJBQXVCLEVBQzVCLDZCQUE2QixFQUM5QixNQUFNLGdDQUFnQyxDQUFDO0FBR3hDLE9BQU8sRUFBRSxLQUFLLGFBQWEsRUFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxxQkFBcUIsRUFBaUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRyxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBNEIsTUFBTSwyQkFBMkIsQ0FBQztBQUk1RixPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQTBCLE1BQU0sdUJBQXVCLENBQUM7QUFFcEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sTUFBTSxlQUFlLEdBQUcsY0FBYyxHQUMxQyxxQkFBcUIsR0FDckIscUJBQXFCLEdBQ3JCLHNCQUFzQixHQUN0QixnQkFBZ0IsR0FDaEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLGNBQWMsR0FBRyxvQkFBb0IsR0FBRyxZQUFZLENBQUMsR0FDbEYsU0FBUyxHQUNULGVBQWUsR0FDZixjQUFjLEdBQ2QsZ0JBQWdCLEdBQ2hCLGtCQUFrQixHQUNsQixhQUFhLEdBQ2IsYUFBYSxHQUNiLGdCQUFnQixHQUFHO0lBQ2pCLDZCQUE2QjtJQUM3QixXQUFXLEVBQUUsbUJBQW1CLENBQUM7SUFDakMsc0RBQXNEO0lBQ3RELGdCQUFnQixFQUFFLE9BQU8sQ0FBQztJQUMxQixpR0FBaUc7SUFDakcsdUJBQXVCLEVBQUUsT0FBTyxDQUFDO0lBQ2pDLDZFQUE2RTtJQUM3RSw2QkFBNkIsRUFBRSxPQUFPLENBQUM7SUFDdkMsd0RBQXdEO0lBQ3hELGdCQUFnQixFQUFFLE9BQU8sQ0FBQztDQUMzQixDQUFDO0FBRUosZUFBTyxNQUFNLHVCQUF1QixFQUFFLGtCQUFrQixDQUFDLGVBQWUsQ0F3Q3ZFLENBQUM7QUFFRjs7O0dBR0c7QUFDSCx3QkFBZ0IsZ0JBQWdCLElBQUksZUFBZSxDQUVsRDtBQXNFRCx3QkFBZ0IsMEJBQTBCLENBQ3hDLE1BQU0sRUFBRSx1QkFBdUIsR0FBRyxxQkFBcUIsR0FBRyxnQkFBZ0IsR0FDekUsUUFBUSxHQUFHLFNBQVMsQ0FNdEIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/aztec-node/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,KAAK,kBAAkB,EAA8B,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,KAAK,mBAAmB,EAA8B,MAAM,uCAAuC,CAAC;AAC7G,OAAO,EAAE,KAAK,kBAAkB,EAA8C,MAAM,0BAA0B,CAAC;AAE/G,OAAO,EACL,KAAK,QAAQ,EAId,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,KAAK,sBAAsB,EAA8B,MAAM,6BAA6B,CAAC;AACtG,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,6BAA6B,EAC9B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/aztec-node/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,KAAK,kBAAkB,EAA8B,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,KAAK,mBAAmB,EAA8B,MAAM,uCAAuC,CAAC;AAC7G,OAAO,EAAE,KAAK,kBAAkB,EAA8C,MAAM,0BAA0B,CAAC;AAE/G,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EACL,KAAK,QAAQ,EAId,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,KAAK,sBAAsB,EAA8B,MAAM,6BAA6B,CAAC;AACtG,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,6BAA6B,EAC9B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,KAAK,qBAAqB,EAAiC,MAAM,gCAAgC,CAAC;AAC3G,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,2BAA2B,CAAC;AAI5F,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,uBAAuB,CAAC;AAEpF,OAAO,EAAE,6BAA6B,EAAE,KAAK,qBAAqB,EAAE,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,cAAc,GAC1C,qBAAqB,GACrB,qBAAqB,GACrB,sBAAsB,GACtB,gBAAgB,GAChB,IAAI,CAAC,sBAAsB,EAAE,cAAc,GAAG,oBAAoB,GAAG,YAAY,CAAC,GAClF,SAAS,GACT,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,aAAa,GACb,aAAa,GACb,gBAAgB,GAAG;IACjB,6BAA6B;IAC7B,WAAW,EAAE,mBAAmB,CAAC;IACjC,sDAAsD;IACtD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iGAAiG;IACjG,uBAAuB,EAAE,OAAO,CAAC;IACjC,6EAA6E;IAC7E,6BAA6B,EAAE,OAAO,CAAC;IACvC,wDAAwD;IACxD,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEJ,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CAwCvE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,eAAe,CAElD;AAsED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,uBAAuB,GAAG,qBAAqB,GAAG,gBAAgB,GACzE,QAAQ,GAAG,SAAS,CAMtB"}
|
|
@@ -3,6 +3,7 @@ import { genesisStateConfigMappings } from '@aztec/ethereum/config';
|
|
|
3
3
|
import { l1ContractAddressesMapping } from '@aztec/ethereum/l1-contract-addresses';
|
|
4
4
|
import { booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
|
|
5
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
+
import { dataConfigMappings } from '@aztec/kv-store/config';
|
|
6
7
|
import { ethPrivateKeySchema, keyStoreConfigMappings } from '@aztec/node-keystore';
|
|
7
8
|
import { sharedNodeConfigMappings } from '@aztec/node-lib/config';
|
|
8
9
|
import { p2pConfigMappings } from '@aztec/p2p/config';
|
|
@@ -12,7 +13,6 @@ import { sequencerClientConfigMappings } from '@aztec/sequencer-client/config';
|
|
|
12
13
|
import { slasherConfigMappings } from '@aztec/slasher';
|
|
13
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
14
15
|
import { nodeRpcConfigMappings } from '@aztec/stdlib/config';
|
|
15
|
-
import { dataConfigMappings } from '@aztec/stdlib/kv-store';
|
|
16
16
|
import { validatorClientConfigMappings } from '@aztec/validator-client/config';
|
|
17
17
|
import { worldStateConfigMappings } from '@aztec/world-state/config';
|
|
18
18
|
import { privateKeyToAddress } from 'viem/accounts';
|
|
@@ -18,7 +18,7 @@ import { type BlockData, BlockHash, type BlockParameter, type DataInBlock, L2Blo
|
|
|
18
18
|
import type { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
19
19
|
import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress, NodeInfo, ProtocolContractAddresses } from '@aztec/stdlib/contract';
|
|
20
20
|
import { GasFees } from '@aztec/stdlib/gas';
|
|
21
|
-
import { type AztecNode, type AztecNodeAdmin, type AztecNodeAdminConfig, type GetContractClassLogsResponse, type GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
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';
|
|
@@ -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;
|
|
@@ -271,6 +271,7 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
271
271
|
getSlashPayloads(): Promise<SlashPayloadRound[]>;
|
|
272
272
|
getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]>;
|
|
273
273
|
reloadKeystore(): Promise<void>;
|
|
274
|
+
mineBlock(): Promise<void>;
|
|
274
275
|
/**
|
|
275
276
|
* Returns an instance of MerkleTreeOperations having first ensured the world state is fully synched
|
|
276
277
|
* @param block - The block parameter (block number, block hash, or 'latest') at which to get the data.
|
|
@@ -280,4 +281,4 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
280
281
|
/** Resolves a block parameter to a block number. */
|
|
281
282
|
protected resolveBlockNumber(block: BlockParameter): Promise<BlockNumber>;
|
|
282
283
|
}
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQWtDLE1BQU0sMkJBQTJCLENBQUM7QUFFckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLHdCQUF3QixFQUFFLEtBQUsscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RyxPQUFPLEVBQWMsS0FBSyxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTFFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBUyxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQWlCLGVBQWUsRUFBaUMsTUFBTSxzQkFBc0IsQ0FBQztBQUdyRyxPQUFPLEVBQ0wsS0FBSyxHQUFHLEVBQ1IsS0FBSyxhQUFhLEVBSW5CLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxLQUFLLGNBQWMsRUFBb0IsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RixPQUFPLEVBQXlCLGVBQWUsRUFBRSxLQUFLLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUcsT0FBTyxFQUVM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
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQWtDLE1BQU0sMkJBQTJCLENBQUM7QUFFckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLHdCQUF3QixFQUFFLEtBQUsscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RyxPQUFPLEVBQWMsS0FBSyxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTFFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHbEUsT0FBTyxFQUFFLFlBQVksRUFBUyxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQWlCLGVBQWUsRUFBaUMsTUFBTSxzQkFBc0IsQ0FBQztBQUdyRyxPQUFPLEVBQ0wsS0FBSyxHQUFHLEVBQ1IsS0FBSyxhQUFhLEVBSW5CLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxLQUFLLGNBQWMsRUFBb0IsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RixPQUFPLEVBQXlCLGVBQWUsRUFBRSxLQUFLLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUcsT0FBTyxFQUVM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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,mBAAmB,EAAkC,MAAM,2BAA2B,CAAC;AAErG,OAAO,EAAE,cAAc,EAAE,KAAK,wBAAwB,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC7G,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAEzG,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -385,6 +385,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
385
385
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
386
386
|
import { BadRequestError } from '@aztec/foundation/json-rpc';
|
|
387
387
|
import { createLogger } from '@aztec/foundation/log';
|
|
388
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
388
389
|
import { count } from '@aztec/foundation/string';
|
|
389
390
|
import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
390
391
|
import { MembershipWitness } from '@aztec/foundation/trees';
|
|
@@ -411,7 +412,7 @@ import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@az
|
|
|
411
412
|
import { PublicSimulationOutput, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
412
413
|
import { getPackageVersion } from '@aztec/stdlib/update-checker';
|
|
413
414
|
import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
414
|
-
import { FullNodeCheckpointsBuilder as CheckpointsBuilder, FullNodeCheckpointsBuilder, NodeKeystoreAdapter, ValidatorClient,
|
|
415
|
+
import { FullNodeCheckpointsBuilder as CheckpointsBuilder, FullNodeCheckpointsBuilder, NodeKeystoreAdapter, ValidatorClient, createProposalHandler, createValidatorClient } from '@aztec/validator-client';
|
|
415
416
|
import { createWorldStateSynchronizer } from '@aztec/world-state';
|
|
416
417
|
import { createPublicClient } from 'viem';
|
|
417
418
|
import { createSentinel } from '../sentinel/factory.js';
|
|
@@ -650,19 +651,21 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
650
651
|
}
|
|
651
652
|
}
|
|
652
653
|
}
|
|
653
|
-
// If there's no validator client, create a
|
|
654
|
+
// If there's no validator client, create a ProposalHandler to handle block and checkpoint proposals
|
|
654
655
|
// for monitoring or reexecution. Reexecution (default) allows us to follow the pending chain,
|
|
655
656
|
// while non-reexecution is used for validating the proposals and collecting their txs.
|
|
657
|
+
// Checkpoint proposals are handled if the blob client can upload blobs.
|
|
656
658
|
if (!validatorClient) {
|
|
657
659
|
const reexecute = !!config.alwaysReexecuteBlockProposals;
|
|
658
|
-
log.info(`Setting up
|
|
659
|
-
|
|
660
|
+
log.info(`Setting up proposal handler` + (reexecute ? ' with reexecution of proposals' : ''));
|
|
661
|
+
createProposalHandler(config, {
|
|
660
662
|
checkpointsBuilder: validatorCheckpointsBuilder,
|
|
661
663
|
worldState: worldStateSynchronizer,
|
|
662
664
|
epochCache,
|
|
663
665
|
blockSource: archiver,
|
|
664
666
|
l1ToL2MessageSource: archiver,
|
|
665
667
|
p2pClient,
|
|
668
|
+
blobClient,
|
|
666
669
|
dateProvider,
|
|
667
670
|
telemetry
|
|
668
671
|
}).register(p2pClient, reexecute);
|
|
@@ -697,6 +700,13 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
697
700
|
await attestationsBlockWatcher?.start();
|
|
698
701
|
log.info(`All p2p services started`);
|
|
699
702
|
}).catch((err)=>log.error('Failed to start p2p services after archiver sync', err));
|
|
703
|
+
const globalVariableBuilder = new GlobalVariableBuilder(dateProvider, publicClient, {
|
|
704
|
+
l1Contracts: config.l1Contracts,
|
|
705
|
+
ethereumSlotDuration: config.ethereumSlotDuration,
|
|
706
|
+
rollupVersion: BigInt(config.rollupVersion),
|
|
707
|
+
l1GenesisTime,
|
|
708
|
+
slotDuration: Number(slotDuration)
|
|
709
|
+
});
|
|
700
710
|
// Validator enabled, create/start relevant service
|
|
701
711
|
let sequencer;
|
|
702
712
|
let slasherClient;
|
|
@@ -744,7 +754,8 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
744
754
|
telemetry,
|
|
745
755
|
dateProvider,
|
|
746
756
|
blobClient,
|
|
747
|
-
nodeKeyStore: keyStoreManager
|
|
757
|
+
nodeKeyStore: keyStoreManager,
|
|
758
|
+
globalVariableBuilder
|
|
748
759
|
});
|
|
749
760
|
}
|
|
750
761
|
if (!options.dontStartSequencer && sequencer) {
|
|
@@ -774,12 +785,6 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
774
785
|
log.info(`Prover node subsystem created but not started`);
|
|
775
786
|
}
|
|
776
787
|
}
|
|
777
|
-
const globalVariableBuilder = new GlobalVariableBuilder({
|
|
778
|
-
...config,
|
|
779
|
-
rollupVersion: BigInt(config.rollupVersion),
|
|
780
|
-
l1GenesisTime,
|
|
781
|
-
slotDuration: Number(slotDuration)
|
|
782
|
-
});
|
|
783
788
|
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);
|
|
784
789
|
return node;
|
|
785
790
|
}
|
|
@@ -950,36 +955,28 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
950
955
|
return this.contractDataSource.getContract(address);
|
|
951
956
|
}
|
|
952
957
|
async getPrivateLogsByTags(tags, page, referenceBlock) {
|
|
953
|
-
let upToBlockNumber;
|
|
954
958
|
if (referenceBlock) {
|
|
955
959
|
const initialBlockHash = await this.#getInitialHeaderHash();
|
|
956
|
-
if (referenceBlock.equals(initialBlockHash)) {
|
|
957
|
-
upToBlockNumber = BlockNumber(0);
|
|
958
|
-
} else {
|
|
960
|
+
if (!referenceBlock.equals(initialBlockHash)) {
|
|
959
961
|
const header = await this.blockSource.getBlockHeaderByHash(referenceBlock);
|
|
960
962
|
if (!header) {
|
|
961
963
|
throw new Error(`Block ${referenceBlock.toString()} not found in the node. This might indicate a reorg has occurred.`);
|
|
962
964
|
}
|
|
963
|
-
upToBlockNumber = header.globalVariables.blockNumber;
|
|
964
965
|
}
|
|
965
966
|
}
|
|
966
|
-
return this.logsSource.getPrivateLogsByTags(tags, page
|
|
967
|
+
return this.logsSource.getPrivateLogsByTags(tags, page);
|
|
967
968
|
}
|
|
968
969
|
async getPublicLogsByTagsFromContract(contractAddress, tags, page, referenceBlock) {
|
|
969
|
-
let upToBlockNumber;
|
|
970
970
|
if (referenceBlock) {
|
|
971
971
|
const initialBlockHash = await this.#getInitialHeaderHash();
|
|
972
|
-
if (referenceBlock.equals(initialBlockHash)) {
|
|
973
|
-
upToBlockNumber = BlockNumber(0);
|
|
974
|
-
} else {
|
|
972
|
+
if (!referenceBlock.equals(initialBlockHash)) {
|
|
975
973
|
const header = await this.blockSource.getBlockHeaderByHash(referenceBlock);
|
|
976
974
|
if (!header) {
|
|
977
975
|
throw new Error(`Block ${referenceBlock.toString()} not found in the node. This might indicate a reorg has occurred.`);
|
|
978
976
|
}
|
|
979
|
-
upToBlockNumber = header.globalVariables.blockNumber;
|
|
980
977
|
}
|
|
981
978
|
}
|
|
982
|
-
return this.logsSource.getPublicLogsByTagsFromContract(contractAddress, tags, page
|
|
979
|
+
return this.logsSource.getPublicLogsByTagsFromContract(contractAddress, tags, page);
|
|
983
980
|
}
|
|
984
981
|
/**
|
|
985
982
|
* Gets public logs based on the provided filter.
|
|
@@ -1147,6 +1144,16 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
1147
1144
|
});
|
|
1148
1145
|
}
|
|
1149
1146
|
async getBlockHashMembershipWitness(referenceBlock, blockHash) {
|
|
1147
|
+
// Block 0 (the initial block) has an empty archive, so no membership witness can exist.
|
|
1148
|
+
if (referenceBlock === BlockNumber.ZERO) {
|
|
1149
|
+
return undefined;
|
|
1150
|
+
}
|
|
1151
|
+
if (BlockHash.isBlockHash(referenceBlock)) {
|
|
1152
|
+
const initialBlockHash = await this.#getInitialHeaderHash();
|
|
1153
|
+
if (referenceBlock.equals(initialBlockHash)) {
|
|
1154
|
+
return undefined;
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1150
1157
|
// The Noir circuit checks the archive membership proof against `anchor_block_header.last_archive.root`,
|
|
1151
1158
|
// which is the archive tree root BEFORE the anchor block was added (i.e. the state after block N-1).
|
|
1152
1159
|
// So we need the world state at block N-1, not block N, to produce a sibling path matching that root.
|
|
@@ -1567,6 +1574,33 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
|
|
|
1567
1574
|
this.keyStoreManager = newManager;
|
|
1568
1575
|
this.log.info('Keystore reloaded: coinbase, feeRecipient, and attester keys updated');
|
|
1569
1576
|
}
|
|
1577
|
+
async mineBlock() {
|
|
1578
|
+
if (!this.sequencer) {
|
|
1579
|
+
throw new BadRequestError('Cannot mine block: no sequencer is running');
|
|
1580
|
+
}
|
|
1581
|
+
const currentBlockNumber = await this.getBlockNumber();
|
|
1582
|
+
// Use slot duration + 50% buffer as the timeout so this works on running networks too
|
|
1583
|
+
const { slotDuration } = await this.blockSource.getL1Constants();
|
|
1584
|
+
const timeoutSeconds = Math.ceil(slotDuration * 1.5);
|
|
1585
|
+
// Temporarily set minTxsPerBlock to 0 so the sequencer produces a block even with no txs
|
|
1586
|
+
const originalMinTxsPerBlock = this.sequencer.getSequencer().getConfig().minTxsPerBlock;
|
|
1587
|
+
this.sequencer.updateConfig({
|
|
1588
|
+
minTxsPerBlock: 0
|
|
1589
|
+
});
|
|
1590
|
+
try {
|
|
1591
|
+
// Trigger the sequencer to produce a block immediately
|
|
1592
|
+
void this.sequencer.trigger();
|
|
1593
|
+
// Wait for the new L2 block to appear
|
|
1594
|
+
await retryUntil(async ()=>{
|
|
1595
|
+
const newBlockNumber = await this.getBlockNumber();
|
|
1596
|
+
return newBlockNumber > currentBlockNumber ? true : undefined;
|
|
1597
|
+
}, 'mineBlock', timeoutSeconds, 0.1);
|
|
1598
|
+
} finally{
|
|
1599
|
+
this.sequencer.updateConfig({
|
|
1600
|
+
minTxsPerBlock: originalMinTxsPerBlock
|
|
1601
|
+
});
|
|
1602
|
+
}
|
|
1603
|
+
}
|
|
1570
1604
|
#getInitialHeaderHash() {
|
|
1571
1605
|
if (!this.initialHeaderHashPromise) {
|
|
1572
1606
|
this.initialHeaderHashPromise = this.worldStateSynchronizer.getCommitted().getInitialHeader().hash();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
2
|
+
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
2
3
|
import type { P2PClient } from '@aztec/p2p';
|
|
3
4
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
4
5
|
import type { SlasherConfig } from '@aztec/stdlib/interfaces/server';
|
|
5
|
-
import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
6
6
|
import type { SentinelConfig } from './config.js';
|
|
7
7
|
import { Sentinel } from './sentinel.js';
|
|
8
8
|
export declare function createSentinel(epochCache: EpochCache, archiver: L2BlockSource, p2p: P2PClient, config: SentinelConfig & DataStoreConfig & SlasherConfig, logger?: import("@aztec/foundation/log").Logger): Promise<Sentinel | undefined>;
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlbnRpbmVsL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pDLHdCQUFzQixjQUFjLENBQ2xDLFVBQVUsRUFBRSxVQUFVLEVBQ3RCLFFBQVEsRUFBRSxhQUFhLEVBQ3ZCLEdBQUcsRUFBRSxTQUFTLEVBQ2QsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLEdBQUcsYUFBYSxFQUN4RCxNQUFNLHlDQUFnQyxHQUNyQyxPQUFPLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQVkvQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/sentinel/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/sentinel/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,wBAAsB,cAAc,CAClC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,aAAa,EACxD,MAAM,yCAAgC,GACrC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAY/B"}
|
|
@@ -48,7 +48,7 @@ export class Sentinel extends EventEmitter {
|
|
|
48
48
|
this.runningPromise.start();
|
|
49
49
|
}
|
|
50
50
|
/** Loads initial slot and initializes blockstream. We will not process anything at or before the initial slot. */ async init() {
|
|
51
|
-
this.initialSlot = this.epochCache.
|
|
51
|
+
this.initialSlot = this.epochCache.getEpochAndSlotNow().slot;
|
|
52
52
|
const startingBlock = BlockNumber(await this.archiver.getBlockNumber());
|
|
53
53
|
this.logger.info(`Starting validator sentinel with initial slot ${this.initialSlot} and block ${startingBlock}`);
|
|
54
54
|
this.blockStream = new L2BlockStream(this.archiver, this.l2TipsStore, this, this.logger, {
|
|
@@ -190,7 +190,7 @@ export class Sentinel extends EventEmitter {
|
|
|
190
190
|
* Note that we do not process historical data, since we rely on p2p data for processing,
|
|
191
191
|
* and we don't have that data if we were offline during the period.
|
|
192
192
|
*/ async work() {
|
|
193
|
-
const currentSlot = this.epochCache.
|
|
193
|
+
const { slot: currentSlot } = this.epochCache.getEpochAndSlotNow();
|
|
194
194
|
try {
|
|
195
195
|
// Manually sync the block stream to ensure we have the latest data.
|
|
196
196
|
// Note we never `start` the blockstream, so it loops at the same pace as we do.
|
|
@@ -351,7 +351,7 @@ export class Sentinel extends EventEmitter {
|
|
|
351
351
|
v.toString(),
|
|
352
352
|
await this.store.getHistory(v)
|
|
353
353
|
]))) : await this.store.getHistories();
|
|
354
|
-
const slotNow = this.epochCache.
|
|
354
|
+
const slotNow = this.epochCache.getEpochAndSlotNow().slot;
|
|
355
355
|
fromSlot ??= SlotNumber(Math.max((this.lastProcessedSlot ?? slotNow) - this.store.getHistoryLength(), 0));
|
|
356
356
|
toSlot ??= this.lastProcessedSlot ?? slotNow;
|
|
357
357
|
const stats = mapValues(histories, (history, address)=>this.computeStatsForValidator(address, history ?? [], fromSlot, toSlot));
|
|
@@ -367,7 +367,7 @@ export class Sentinel extends EventEmitter {
|
|
|
367
367
|
if (!history || history.length === 0) {
|
|
368
368
|
return undefined;
|
|
369
369
|
}
|
|
370
|
-
const slotNow = this.epochCache.
|
|
370
|
+
const slotNow = this.epochCache.getEpochAndSlotNow().slot;
|
|
371
371
|
const effectiveFromSlot = fromSlot ?? SlotNumber(Math.max((this.lastProcessedSlot ?? slotNow) - this.store.getHistoryLength(), 0));
|
|
372
372
|
const effectiveToSlot = toSlot ?? this.lastProcessedSlot ?? slotNow;
|
|
373
373
|
const historyLength = BigInt(this.store.getHistoryLength());
|
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.8c0b8ff",
|
|
4
4
|
"main": "dest/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -65,31 +65,32 @@
|
|
|
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/
|
|
79
|
-
"@aztec/node-
|
|
80
|
-
"@aztec/
|
|
81
|
-
"@aztec/
|
|
82
|
-
"@aztec/
|
|
83
|
-
"@aztec/
|
|
84
|
-
"@aztec/prover-
|
|
85
|
-
"@aztec/
|
|
86
|
-
"@aztec/
|
|
87
|
-
"@aztec/
|
|
88
|
-
"@aztec/
|
|
89
|
-
"@aztec/
|
|
90
|
-
"@aztec/
|
|
91
|
-
"@aztec/validator-
|
|
92
|
-
"@aztec/
|
|
68
|
+
"@aztec/archiver": "0.0.1-commit.8c0b8ff",
|
|
69
|
+
"@aztec/bb-prover": "0.0.1-commit.8c0b8ff",
|
|
70
|
+
"@aztec/blob-client": "0.0.1-commit.8c0b8ff",
|
|
71
|
+
"@aztec/blob-lib": "0.0.1-commit.8c0b8ff",
|
|
72
|
+
"@aztec/constants": "0.0.1-commit.8c0b8ff",
|
|
73
|
+
"@aztec/epoch-cache": "0.0.1-commit.8c0b8ff",
|
|
74
|
+
"@aztec/ethereum": "0.0.1-commit.8c0b8ff",
|
|
75
|
+
"@aztec/foundation": "0.0.1-commit.8c0b8ff",
|
|
76
|
+
"@aztec/kv-store": "0.0.1-commit.8c0b8ff",
|
|
77
|
+
"@aztec/l1-artifacts": "0.0.1-commit.8c0b8ff",
|
|
78
|
+
"@aztec/merkle-tree": "0.0.1-commit.8c0b8ff",
|
|
79
|
+
"@aztec/node-keystore": "0.0.1-commit.8c0b8ff",
|
|
80
|
+
"@aztec/node-lib": "0.0.1-commit.8c0b8ff",
|
|
81
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.8c0b8ff",
|
|
82
|
+
"@aztec/p2p": "0.0.1-commit.8c0b8ff",
|
|
83
|
+
"@aztec/protocol-contracts": "0.0.1-commit.8c0b8ff",
|
|
84
|
+
"@aztec/prover-client": "0.0.1-commit.8c0b8ff",
|
|
85
|
+
"@aztec/prover-node": "0.0.1-commit.8c0b8ff",
|
|
86
|
+
"@aztec/sequencer-client": "0.0.1-commit.8c0b8ff",
|
|
87
|
+
"@aztec/simulator": "0.0.1-commit.8c0b8ff",
|
|
88
|
+
"@aztec/slasher": "0.0.1-commit.8c0b8ff",
|
|
89
|
+
"@aztec/stdlib": "0.0.1-commit.8c0b8ff",
|
|
90
|
+
"@aztec/telemetry-client": "0.0.1-commit.8c0b8ff",
|
|
91
|
+
"@aztec/validator-client": "0.0.1-commit.8c0b8ff",
|
|
92
|
+
"@aztec/validator-ha-signer": "0.0.1-commit.8c0b8ff",
|
|
93
|
+
"@aztec/world-state": "0.0.1-commit.8c0b8ff",
|
|
93
94
|
"koa": "^2.16.1",
|
|
94
95
|
"koa-router": "^13.1.1",
|
|
95
96
|
"tslib": "^2.4.0",
|
package/src/aztec-node/config.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { type GenesisStateConfig, genesisStateConfigMappings } from '@aztec/ethe
|
|
|
3
3
|
import { type L1ContractAddresses, l1ContractAddressesMapping } from '@aztec/ethereum/l1-contract-addresses';
|
|
4
4
|
import { type ConfigMappingsType, booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
|
|
5
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
+
import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
|
|
6
7
|
import {
|
|
7
8
|
type KeyStore,
|
|
8
9
|
type ValidatorKeyStore,
|
|
@@ -26,7 +27,6 @@ import { slasherConfigMappings } from '@aztec/slasher';
|
|
|
26
27
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
27
28
|
import { type NodeRPCConfig, nodeRpcConfigMappings } from '@aztec/stdlib/config';
|
|
28
29
|
import type { SlasherConfig } from '@aztec/stdlib/interfaces/server';
|
|
29
|
-
import { type DataStoreConfig, dataConfigMappings } from '@aztec/stdlib/kv-store';
|
|
30
30
|
import { type ValidatorClientConfig, validatorClientConfigMappings } from '@aztec/validator-client/config';
|
|
31
31
|
import { type WorldStateConfig, worldStateConfigMappings } from '@aztec/world-state/config';
|
|
32
32
|
|
package/src/aztec-node/server.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
14
14
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
15
15
|
import { BadRequestError } from '@aztec/foundation/json-rpc';
|
|
16
16
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
17
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
17
18
|
import { count } from '@aztec/foundation/string';
|
|
18
19
|
import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
19
20
|
import { MembershipWitness, SiblingPath } from '@aztec/foundation/trees';
|
|
@@ -64,6 +65,7 @@ import {
|
|
|
64
65
|
type AztecNodeAdmin,
|
|
65
66
|
type AztecNodeAdminConfig,
|
|
66
67
|
AztecNodeAdminConfigSchema,
|
|
68
|
+
type AztecNodeDebug,
|
|
67
69
|
type GetContractClassLogsResponse,
|
|
68
70
|
type GetPublicLogsResponse,
|
|
69
71
|
} from '@aztec/stdlib/interfaces/client';
|
|
@@ -108,7 +110,7 @@ import {
|
|
|
108
110
|
FullNodeCheckpointsBuilder,
|
|
109
111
|
NodeKeystoreAdapter,
|
|
110
112
|
ValidatorClient,
|
|
111
|
-
|
|
113
|
+
createProposalHandler,
|
|
112
114
|
createValidatorClient,
|
|
113
115
|
} from '@aztec/validator-client';
|
|
114
116
|
import type { SlashingProtectionDatabase } from '@aztec/validator-ha-signer/types';
|
|
@@ -124,7 +126,7 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
124
126
|
/**
|
|
125
127
|
* The aztec node.
|
|
126
128
|
*/
|
|
127
|
-
export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
129
|
+
export class AztecNodeService implements AztecNode, AztecNodeAdmin, AztecNodeDebug, Traceable {
|
|
128
130
|
private metrics: NodeMetrics;
|
|
129
131
|
private initialHeaderHashPromise: Promise<BlockHash> | undefined = undefined;
|
|
130
132
|
|
|
@@ -393,19 +395,21 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
393
395
|
}
|
|
394
396
|
}
|
|
395
397
|
|
|
396
|
-
// If there's no validator client, create a
|
|
398
|
+
// If there's no validator client, create a ProposalHandler to handle block and checkpoint proposals
|
|
397
399
|
// for monitoring or reexecution. Reexecution (default) allows us to follow the pending chain,
|
|
398
400
|
// while non-reexecution is used for validating the proposals and collecting their txs.
|
|
401
|
+
// Checkpoint proposals are handled if the blob client can upload blobs.
|
|
399
402
|
if (!validatorClient) {
|
|
400
403
|
const reexecute = !!config.alwaysReexecuteBlockProposals;
|
|
401
|
-
log.info(`Setting up
|
|
402
|
-
|
|
404
|
+
log.info(`Setting up proposal handler` + (reexecute ? ' with reexecution of proposals' : ''));
|
|
405
|
+
createProposalHandler(config, {
|
|
403
406
|
checkpointsBuilder: validatorCheckpointsBuilder,
|
|
404
407
|
worldState: worldStateSynchronizer,
|
|
405
408
|
epochCache,
|
|
406
409
|
blockSource: archiver,
|
|
407
410
|
l1ToL2MessageSource: archiver,
|
|
408
411
|
p2pClient,
|
|
412
|
+
blobClient,
|
|
409
413
|
dateProvider,
|
|
410
414
|
telemetry,
|
|
411
415
|
}).register(p2pClient, reexecute);
|
|
@@ -458,6 +462,14 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
458
462
|
})
|
|
459
463
|
.catch(err => log.error('Failed to start p2p services after archiver sync', err));
|
|
460
464
|
|
|
465
|
+
const globalVariableBuilder = new GlobalVariableBuilder(dateProvider, publicClient, {
|
|
466
|
+
l1Contracts: config.l1Contracts,
|
|
467
|
+
ethereumSlotDuration: config.ethereumSlotDuration,
|
|
468
|
+
rollupVersion: BigInt(config.rollupVersion),
|
|
469
|
+
l1GenesisTime,
|
|
470
|
+
slotDuration: Number(slotDuration),
|
|
471
|
+
});
|
|
472
|
+
|
|
461
473
|
// Validator enabled, create/start relevant service
|
|
462
474
|
let sequencer: SequencerClient | undefined;
|
|
463
475
|
let slasherClient: SlasherClientInterface | undefined;
|
|
@@ -520,6 +532,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
520
532
|
dateProvider,
|
|
521
533
|
blobClient,
|
|
522
534
|
nodeKeyStore: keyStoreManager!,
|
|
535
|
+
globalVariableBuilder,
|
|
523
536
|
});
|
|
524
537
|
}
|
|
525
538
|
|
|
@@ -553,13 +566,6 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
553
566
|
}
|
|
554
567
|
}
|
|
555
568
|
|
|
556
|
-
const globalVariableBuilder = new GlobalVariableBuilder({
|
|
557
|
-
...config,
|
|
558
|
-
rollupVersion: BigInt(config.rollupVersion),
|
|
559
|
-
l1GenesisTime,
|
|
560
|
-
slotDuration: Number(slotDuration),
|
|
561
|
-
});
|
|
562
|
-
|
|
563
569
|
const node = new AztecNodeService(
|
|
564
570
|
config,
|
|
565
571
|
p2pClient,
|
|
@@ -800,22 +806,18 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
800
806
|
page?: number,
|
|
801
807
|
referenceBlock?: BlockHash,
|
|
802
808
|
): Promise<TxScopedL2Log[][]> {
|
|
803
|
-
let upToBlockNumber: BlockNumber | undefined;
|
|
804
809
|
if (referenceBlock) {
|
|
805
810
|
const initialBlockHash = await this.#getInitialHeaderHash();
|
|
806
|
-
if (referenceBlock.equals(initialBlockHash)) {
|
|
807
|
-
upToBlockNumber = BlockNumber(0);
|
|
808
|
-
} else {
|
|
811
|
+
if (!referenceBlock.equals(initialBlockHash)) {
|
|
809
812
|
const header = await this.blockSource.getBlockHeaderByHash(referenceBlock);
|
|
810
813
|
if (!header) {
|
|
811
814
|
throw new Error(
|
|
812
815
|
`Block ${referenceBlock.toString()} not found in the node. This might indicate a reorg has occurred.`,
|
|
813
816
|
);
|
|
814
817
|
}
|
|
815
|
-
upToBlockNumber = header.globalVariables.blockNumber;
|
|
816
818
|
}
|
|
817
819
|
}
|
|
818
|
-
return this.logsSource.getPrivateLogsByTags(tags, page
|
|
820
|
+
return this.logsSource.getPrivateLogsByTags(tags, page);
|
|
819
821
|
}
|
|
820
822
|
|
|
821
823
|
public async getPublicLogsByTagsFromContract(
|
|
@@ -824,22 +826,18 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
824
826
|
page?: number,
|
|
825
827
|
referenceBlock?: BlockHash,
|
|
826
828
|
): Promise<TxScopedL2Log[][]> {
|
|
827
|
-
let upToBlockNumber: BlockNumber | undefined;
|
|
828
829
|
if (referenceBlock) {
|
|
829
830
|
const initialBlockHash = await this.#getInitialHeaderHash();
|
|
830
|
-
if (referenceBlock.equals(initialBlockHash)) {
|
|
831
|
-
upToBlockNumber = BlockNumber(0);
|
|
832
|
-
} else {
|
|
831
|
+
if (!referenceBlock.equals(initialBlockHash)) {
|
|
833
832
|
const header = await this.blockSource.getBlockHeaderByHash(referenceBlock);
|
|
834
833
|
if (!header) {
|
|
835
834
|
throw new Error(
|
|
836
835
|
`Block ${referenceBlock.toString()} not found in the node. This might indicate a reorg has occurred.`,
|
|
837
836
|
);
|
|
838
837
|
}
|
|
839
|
-
upToBlockNumber = header.globalVariables.blockNumber;
|
|
840
838
|
}
|
|
841
839
|
}
|
|
842
|
-
return this.logsSource.getPublicLogsByTagsFromContract(contractAddress, tags, page
|
|
840
|
+
return this.logsSource.getPublicLogsByTagsFromContract(contractAddress, tags, page);
|
|
843
841
|
}
|
|
844
842
|
|
|
845
843
|
/**
|
|
@@ -1049,6 +1047,16 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1049
1047
|
referenceBlock: BlockParameter,
|
|
1050
1048
|
blockHash: BlockHash,
|
|
1051
1049
|
): Promise<MembershipWitness<typeof ARCHIVE_HEIGHT> | undefined> {
|
|
1050
|
+
// Block 0 (the initial block) has an empty archive, so no membership witness can exist.
|
|
1051
|
+
if (referenceBlock === BlockNumber.ZERO) {
|
|
1052
|
+
return undefined;
|
|
1053
|
+
}
|
|
1054
|
+
if (BlockHash.isBlockHash(referenceBlock)) {
|
|
1055
|
+
const initialBlockHash = await this.#getInitialHeaderHash();
|
|
1056
|
+
if (referenceBlock.equals(initialBlockHash)) {
|
|
1057
|
+
return undefined;
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1052
1060
|
// The Noir circuit checks the archive membership proof against `anchor_block_header.last_archive.root`,
|
|
1053
1061
|
// which is the archive tree root BEFORE the anchor block was added (i.e. the state after block N-1).
|
|
1054
1062
|
// So we need the world state at block N-1, not block N, to produce a sibling path matching that root.
|
|
@@ -1594,6 +1602,40 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1594
1602
|
this.log.info('Keystore reloaded: coinbase, feeRecipient, and attester keys updated');
|
|
1595
1603
|
}
|
|
1596
1604
|
|
|
1605
|
+
public async mineBlock(): Promise<void> {
|
|
1606
|
+
if (!this.sequencer) {
|
|
1607
|
+
throw new BadRequestError('Cannot mine block: no sequencer is running');
|
|
1608
|
+
}
|
|
1609
|
+
|
|
1610
|
+
const currentBlockNumber = await this.getBlockNumber();
|
|
1611
|
+
|
|
1612
|
+
// Use slot duration + 50% buffer as the timeout so this works on running networks too
|
|
1613
|
+
const { slotDuration } = await this.blockSource.getL1Constants();
|
|
1614
|
+
const timeoutSeconds = Math.ceil(slotDuration * 1.5);
|
|
1615
|
+
|
|
1616
|
+
// Temporarily set minTxsPerBlock to 0 so the sequencer produces a block even with no txs
|
|
1617
|
+
const originalMinTxsPerBlock = this.sequencer.getSequencer().getConfig().minTxsPerBlock;
|
|
1618
|
+
this.sequencer.updateConfig({ minTxsPerBlock: 0 });
|
|
1619
|
+
|
|
1620
|
+
try {
|
|
1621
|
+
// Trigger the sequencer to produce a block immediately
|
|
1622
|
+
void this.sequencer.trigger();
|
|
1623
|
+
|
|
1624
|
+
// Wait for the new L2 block to appear
|
|
1625
|
+
await retryUntil(
|
|
1626
|
+
async () => {
|
|
1627
|
+
const newBlockNumber = await this.getBlockNumber();
|
|
1628
|
+
return newBlockNumber > currentBlockNumber ? true : undefined;
|
|
1629
|
+
},
|
|
1630
|
+
'mineBlock',
|
|
1631
|
+
timeoutSeconds,
|
|
1632
|
+
0.1,
|
|
1633
|
+
);
|
|
1634
|
+
} finally {
|
|
1635
|
+
this.sequencer.updateConfig({ minTxsPerBlock: originalMinTxsPerBlock });
|
|
1636
|
+
}
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1597
1639
|
#getInitialHeaderHash(): Promise<BlockHash> {
|
|
1598
1640
|
if (!this.initialHeaderHashPromise) {
|
|
1599
1641
|
this.initialHeaderHashPromise = this.worldStateSynchronizer.getCommitted().getInitialHeader().hash();
|
package/src/sentinel/factory.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { EpochCache } from '@aztec/epoch-cache';
|
|
2
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
+
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
3
4
|
import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
4
5
|
import type { P2PClient } from '@aztec/p2p';
|
|
5
6
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
6
7
|
import type { SlasherConfig } from '@aztec/stdlib/interfaces/server';
|
|
7
|
-
import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
8
8
|
|
|
9
9
|
import type { SentinelConfig } from './config.js';
|
|
10
10
|
import { Sentinel } from './sentinel.js';
|
package/src/sentinel/sentinel.ts
CHANGED
|
@@ -88,7 +88,7 @@ export class Sentinel extends (EventEmitter as new () => WatcherEmitter) impleme
|
|
|
88
88
|
|
|
89
89
|
/** Loads initial slot and initializes blockstream. We will not process anything at or before the initial slot. */
|
|
90
90
|
protected async init() {
|
|
91
|
-
this.initialSlot = this.epochCache.
|
|
91
|
+
this.initialSlot = this.epochCache.getEpochAndSlotNow().slot;
|
|
92
92
|
const startingBlock = BlockNumber(await this.archiver.getBlockNumber());
|
|
93
93
|
this.logger.info(`Starting validator sentinel with initial slot ${this.initialSlot} and block ${startingBlock}`);
|
|
94
94
|
this.blockStream = new L2BlockStream(this.archiver, this.l2TipsStore, this, this.logger, { startingBlock });
|
|
@@ -264,7 +264,7 @@ export class Sentinel extends (EventEmitter as new () => WatcherEmitter) impleme
|
|
|
264
264
|
* and we don't have that data if we were offline during the period.
|
|
265
265
|
*/
|
|
266
266
|
public async work() {
|
|
267
|
-
const currentSlot = this.epochCache.
|
|
267
|
+
const { slot: currentSlot } = this.epochCache.getEpochAndSlotNow();
|
|
268
268
|
try {
|
|
269
269
|
// Manually sync the block stream to ensure we have the latest data.
|
|
270
270
|
// Note we never `start` the blockstream, so it loops at the same pace as we do.
|
|
@@ -436,7 +436,7 @@ export class Sentinel extends (EventEmitter as new () => WatcherEmitter) impleme
|
|
|
436
436
|
? fromEntries(await Promise.all(validators.map(async v => [v.toString(), await this.store.getHistory(v)])))
|
|
437
437
|
: await this.store.getHistories();
|
|
438
438
|
|
|
439
|
-
const slotNow = this.epochCache.
|
|
439
|
+
const slotNow = this.epochCache.getEpochAndSlotNow().slot;
|
|
440
440
|
fromSlot ??= SlotNumber(Math.max((this.lastProcessedSlot ?? slotNow) - this.store.getHistoryLength(), 0));
|
|
441
441
|
toSlot ??= this.lastProcessedSlot ?? slotNow;
|
|
442
442
|
|
|
@@ -464,7 +464,7 @@ export class Sentinel extends (EventEmitter as new () => WatcherEmitter) impleme
|
|
|
464
464
|
return undefined;
|
|
465
465
|
}
|
|
466
466
|
|
|
467
|
-
const slotNow = this.epochCache.
|
|
467
|
+
const slotNow = this.epochCache.getEpochAndSlotNow().slot;
|
|
468
468
|
const effectiveFromSlot =
|
|
469
469
|
fromSlot ?? SlotNumber(Math.max((this.lastProcessedSlot ?? slotNow) - this.store.getHistoryLength(), 0));
|
|
470
470
|
const effectiveToSlot = toSlot ?? this.lastProcessedSlot ?? slotNow;
|