@aztec/aztec-node 0.0.0-test.1 → 0.0.1-commit.b655e406
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 +14 -9
- package/dest/aztec-node/config.d.ts.map +1 -1
- package/dest/aztec-node/config.js +75 -14
- package/dest/aztec-node/node_metrics.d.ts +4 -0
- package/dest/aztec-node/node_metrics.d.ts.map +1 -1
- package/dest/aztec-node/node_metrics.js +21 -0
- package/dest/aztec-node/server.d.ts +90 -50
- package/dest/aztec-node/server.d.ts.map +1 -1
- package/dest/aztec-node/server.js +526 -218
- package/dest/bin/index.js +4 -2
- package/dest/index.d.ts +0 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +0 -1
- package/dest/sentinel/config.d.ts +8 -0
- package/dest/sentinel/config.d.ts.map +1 -0
- package/dest/sentinel/config.js +29 -0
- package/dest/sentinel/factory.d.ts +9 -0
- package/dest/sentinel/factory.d.ts.map +1 -0
- package/dest/sentinel/factory.js +17 -0
- package/dest/sentinel/index.d.ts +3 -0
- package/dest/sentinel/index.d.ts.map +1 -0
- package/dest/sentinel/index.js +1 -0
- package/dest/sentinel/sentinel.d.ts +91 -0
- package/dest/sentinel/sentinel.d.ts.map +1 -0
- package/dest/sentinel/sentinel.js +391 -0
- package/dest/sentinel/store.d.ts +34 -0
- package/dest/sentinel/store.d.ts.map +1 -0
- package/dest/sentinel/store.js +169 -0
- package/dest/test/index.d.ts +31 -0
- package/dest/test/index.d.ts.map +1 -0
- package/dest/test/index.js +1 -0
- package/package.json +42 -32
- package/src/aztec-node/config.ts +128 -25
- package/src/aztec-node/node_metrics.ts +28 -0
- package/src/aztec-node/server.ts +684 -278
- package/src/bin/index.ts +4 -2
- package/src/index.ts +0 -1
- package/src/sentinel/config.ts +37 -0
- package/src/sentinel/factory.ts +36 -0
- package/src/sentinel/index.ts +8 -0
- package/src/sentinel/sentinel.ts +489 -0
- package/src/sentinel/store.ts +184 -0
- package/src/test/index.ts +32 -0
- package/dest/aztec-node/http_rpc_server.d.ts +0 -8
- package/dest/aztec-node/http_rpc_server.d.ts.map +0 -1
- package/dest/aztec-node/http_rpc_server.js +0 -9
- package/src/aztec-node/http_rpc_server.ts +0 -11
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import { type ArchiverConfig } from '@aztec/archiver/config';
|
|
2
|
+
import { type GenesisStateConfig, type L1ContractAddresses } from '@aztec/ethereum';
|
|
2
3
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
3
4
|
import { type DataStoreConfig } from '@aztec/kv-store/config';
|
|
5
|
+
import { type KeyStore } from '@aztec/node-keystore';
|
|
6
|
+
import { type SharedNodeConfig } from '@aztec/node-lib/config';
|
|
4
7
|
import { type P2PConfig } from '@aztec/p2p/config';
|
|
5
|
-
import { type
|
|
6
|
-
import { type SequencerClientConfig, sequencerClientConfigMappings } from '@aztec/sequencer-client/config';
|
|
8
|
+
import { type ProverClientUserConfig } from '@aztec/prover-client/config';
|
|
9
|
+
import { type SequencerClientConfig, type TxSenderConfig, sequencerClientConfigMappings } from '@aztec/sequencer-client/config';
|
|
10
|
+
import { type NodeRPCConfig } from '@aztec/stdlib/config';
|
|
11
|
+
import type { SlasherConfig } from '@aztec/stdlib/interfaces/server';
|
|
7
12
|
import { type ValidatorClientConfig } from '@aztec/validator-client/config';
|
|
8
13
|
import { type WorldStateConfig } from '@aztec/world-state/config';
|
|
14
|
+
import { type SentinelConfig } from '../sentinel/config.js';
|
|
9
15
|
export { sequencerClientConfigMappings, type SequencerClientConfig };
|
|
10
16
|
/**
|
|
11
17
|
* The configuration the aztec node.
|
|
12
18
|
*/
|
|
13
|
-
export type AztecNodeConfig = ArchiverConfig & SequencerClientConfig & ValidatorClientConfig &
|
|
19
|
+
export type AztecNodeConfig = ArchiverConfig & SequencerClientConfig & ValidatorClientConfig & ProverClientUserConfig & WorldStateConfig & Pick<ProverClientUserConfig, 'bbBinaryPath' | 'bbWorkingDirectory' | 'realProofs'> & P2PConfig & DataStoreConfig & SentinelConfig & SharedNodeConfig & GenesisStateConfig & NodeRPCConfig & SlasherConfig & {
|
|
20
|
+
/** L1 contracts addresses */
|
|
21
|
+
l1Contracts: L1ContractAddresses;
|
|
14
22
|
/** Whether the validator is disabled for this node */
|
|
15
23
|
disableValidator: boolean;
|
|
16
|
-
/** Whether to
|
|
17
|
-
|
|
24
|
+
/** Whether to skip waiting for the archiver to be fully synced before starting other services */
|
|
25
|
+
skipArchiverInitialSync: boolean;
|
|
18
26
|
};
|
|
19
27
|
export declare const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig>;
|
|
20
28
|
/**
|
|
@@ -22,8 +30,5 @@ export declare const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig
|
|
|
22
30
|
* @returns A valid aztec node config.
|
|
23
31
|
*/
|
|
24
32
|
export declare function getConfigEnvVars(): AztecNodeConfig;
|
|
25
|
-
|
|
26
|
-
* Returns package version.
|
|
27
|
-
*/
|
|
28
|
-
export declare function getPackageVersion(): any;
|
|
33
|
+
export declare function createKeyStoreForValidator(config: TxSenderConfig & SequencerClientConfig & SharedNodeConfig): KeyStore | undefined;
|
|
29
34
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -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,EAA8C,MAAM,0BAA0B,CAAC;
|
|
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,EACL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAGzB,MAAM,iBAAiB,CAAC;AACzB,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,qBAAqB,EAC1B,KAAK,cAAc,EACnB,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,GAAG;IACd,6BAA6B;IAC7B,WAAW,EAAE,mBAAmB,CAAC;IACjC,sDAAsD;IACtD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iGAAiG;IACjG,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAAC;AAEJ,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CA4BvE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,eAAe,CAElD;AAoED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,cAAc,GAAG,qBAAqB,GAAG,gBAAgB,GAChE,QAAQ,GAAG,SAAS,CAMtB"}
|
|
@@ -1,32 +1,48 @@
|
|
|
1
1
|
import { archiverConfigMappings } from '@aztec/archiver/config';
|
|
2
|
+
import { genesisStateConfigMappings, l1ContractAddressesMapping } from '@aztec/ethereum';
|
|
2
3
|
import { booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
|
|
4
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
5
|
import { dataConfigMappings } from '@aztec/kv-store/config';
|
|
6
|
+
import { ethPrivateKeySchema, keyStoreConfigMappings } from '@aztec/node-keystore';
|
|
7
|
+
import { sharedNodeConfigMappings } from '@aztec/node-lib/config';
|
|
4
8
|
import { p2pConfigMappings } from '@aztec/p2p/config';
|
|
5
9
|
import { proverClientConfigMappings } from '@aztec/prover-client/config';
|
|
6
10
|
import { sequencerClientConfigMappings } from '@aztec/sequencer-client/config';
|
|
11
|
+
import { slasherConfigMappings } from '@aztec/slasher';
|
|
12
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
13
|
+
import { nodeRpcConfigMappings } from '@aztec/stdlib/config';
|
|
7
14
|
import { validatorClientConfigMappings } from '@aztec/validator-client/config';
|
|
8
15
|
import { worldStateConfigMappings } from '@aztec/world-state/config';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { fileURLToPath } from 'url';
|
|
16
|
+
import { privateKeyToAddress } from 'viem/accounts';
|
|
17
|
+
import { sentinelConfigMappings } from '../sentinel/config.js';
|
|
12
18
|
export { sequencerClientConfigMappings };
|
|
13
19
|
export const aztecNodeConfigMappings = {
|
|
20
|
+
...dataConfigMappings,
|
|
21
|
+
...keyStoreConfigMappings,
|
|
14
22
|
...archiverConfigMappings,
|
|
15
23
|
...sequencerClientConfigMappings,
|
|
16
24
|
...validatorClientConfigMappings,
|
|
17
25
|
...proverClientConfigMappings,
|
|
18
26
|
...worldStateConfigMappings,
|
|
19
27
|
...p2pConfigMappings,
|
|
20
|
-
...
|
|
28
|
+
...sentinelConfigMappings,
|
|
29
|
+
...sharedNodeConfigMappings,
|
|
30
|
+
...genesisStateConfigMappings,
|
|
31
|
+
...nodeRpcConfigMappings,
|
|
32
|
+
...slasherConfigMappings,
|
|
33
|
+
l1Contracts: {
|
|
34
|
+
description: 'The deployed L1 contract addresses',
|
|
35
|
+
nested: l1ContractAddressesMapping
|
|
36
|
+
},
|
|
21
37
|
disableValidator: {
|
|
22
38
|
env: 'VALIDATOR_DISABLED',
|
|
23
39
|
description: 'Whether the validator is disabled for this node.',
|
|
24
40
|
...booleanConfigHelper()
|
|
25
41
|
},
|
|
26
|
-
|
|
27
|
-
env: '
|
|
28
|
-
description: 'Whether to
|
|
29
|
-
...booleanConfigHelper()
|
|
42
|
+
skipArchiverInitialSync: {
|
|
43
|
+
env: 'SKIP_ARCHIVER_INITIAL_SYNC',
|
|
44
|
+
description: 'Whether to skip waiting for the archiver to be fully synced before starting other services.',
|
|
45
|
+
...booleanConfigHelper(false)
|
|
30
46
|
}
|
|
31
47
|
};
|
|
32
48
|
/**
|
|
@@ -35,10 +51,55 @@ export const aztecNodeConfigMappings = {
|
|
|
35
51
|
*/ export function getConfigEnvVars() {
|
|
36
52
|
return getConfigFromMappings(aztecNodeConfigMappings);
|
|
37
53
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
54
|
+
function createKeyStoreFromWeb3Signer(config) {
|
|
55
|
+
const validatorKeyStores = [];
|
|
56
|
+
if (config.web3SignerUrl === undefined || config.web3SignerUrl.length === 0 || config.validatorAddresses === undefined || config.validatorAddresses.length === 0) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
validatorKeyStores.push({
|
|
60
|
+
attester: config.validatorAddresses,
|
|
61
|
+
feeRecipient: config.feeRecipient ?? AztecAddress.ZERO,
|
|
62
|
+
coinbase: config.coinbase ?? config.validatorAddresses[0],
|
|
63
|
+
remoteSigner: config.web3SignerUrl,
|
|
64
|
+
publisher: config.publisherAddresses ?? []
|
|
65
|
+
});
|
|
66
|
+
const keyStore = {
|
|
67
|
+
schemaVersion: 1,
|
|
68
|
+
slasher: undefined,
|
|
69
|
+
prover: undefined,
|
|
70
|
+
remoteSigner: undefined,
|
|
71
|
+
validators: validatorKeyStores
|
|
72
|
+
};
|
|
73
|
+
return keyStore;
|
|
74
|
+
}
|
|
75
|
+
function createKeyStoreFromPrivateKeys(config) {
|
|
76
|
+
const validatorKeyStores = [];
|
|
77
|
+
const ethPrivateKeys = config.validatorPrivateKeys ? config.validatorPrivateKeys.getValue().map((x)=>ethPrivateKeySchema.parse(x)) : [];
|
|
78
|
+
if (!ethPrivateKeys.length) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
const coinbase = config.coinbase ?? EthAddress.fromString(privateKeyToAddress(ethPrivateKeys[0]));
|
|
82
|
+
const feeRecipient = config.feeRecipient ?? AztecAddress.ZERO;
|
|
83
|
+
const publisherKeys = config.publisherPrivateKeys ? config.publisherPrivateKeys.map((k)=>ethPrivateKeySchema.parse(k.getValue())) : [];
|
|
84
|
+
validatorKeyStores.push({
|
|
85
|
+
attester: ethPrivateKeys,
|
|
86
|
+
feeRecipient: feeRecipient,
|
|
87
|
+
coinbase: coinbase,
|
|
88
|
+
remoteSigner: undefined,
|
|
89
|
+
publisher: publisherKeys
|
|
90
|
+
});
|
|
91
|
+
const keyStore = {
|
|
92
|
+
schemaVersion: 1,
|
|
93
|
+
slasher: undefined,
|
|
94
|
+
prover: undefined,
|
|
95
|
+
remoteSigner: undefined,
|
|
96
|
+
validators: validatorKeyStores
|
|
97
|
+
};
|
|
98
|
+
return keyStore;
|
|
99
|
+
}
|
|
100
|
+
export function createKeyStoreForValidator(config) {
|
|
101
|
+
if (config.web3SignerUrl !== undefined && config.web3SignerUrl.length > 0) {
|
|
102
|
+
return createKeyStoreFromWeb3Signer(config);
|
|
103
|
+
}
|
|
104
|
+
return createKeyStoreFromPrivateKeys(config);
|
|
44
105
|
}
|
|
@@ -2,7 +2,11 @@ import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
|
2
2
|
export declare class NodeMetrics {
|
|
3
3
|
private receiveTxCount;
|
|
4
4
|
private receiveTxDuration;
|
|
5
|
+
private snapshotErrorCount;
|
|
6
|
+
private snapshotDuration;
|
|
5
7
|
constructor(client: TelemetryClient, name?: string);
|
|
6
8
|
receivedTx(durationMs: number, isAccepted: boolean): void;
|
|
9
|
+
recordSnapshot(durationMs: number): void;
|
|
10
|
+
recordSnapshotError(): void;
|
|
7
11
|
}
|
|
8
12
|
//# sourceMappingURL=node_metrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node_metrics.d.ts","sourceRoot":"","sources":["../../src/aztec-node/node_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,iBAAiB,CAAY;
|
|
1
|
+
{"version":3,"file":"node_metrics.d.ts","sourceRoot":"","sources":["../../src/aztec-node/node_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,iBAAiB,CAAY;IAErC,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,gBAAgB,CAAY;gBAExB,MAAM,EAAE,eAAe,EAAE,IAAI,SAAc;IAuBvD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;IASlD,cAAc,CAAC,UAAU,EAAE,MAAM;IAQjC,mBAAmB;CAGpB"}
|
|
@@ -2,6 +2,8 @@ import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
|
|
|
2
2
|
export class NodeMetrics {
|
|
3
3
|
receiveTxCount;
|
|
4
4
|
receiveTxDuration;
|
|
5
|
+
snapshotErrorCount;
|
|
6
|
+
snapshotDuration;
|
|
5
7
|
constructor(client, name = 'AztecNode'){
|
|
6
8
|
const meter = client.getMeter(name);
|
|
7
9
|
this.receiveTxCount = meter.createUpDownCounter(Metrics.NODE_RECEIVE_TX_COUNT, {});
|
|
@@ -10,6 +12,16 @@ export class NodeMetrics {
|
|
|
10
12
|
unit: 'ms',
|
|
11
13
|
valueType: ValueType.INT
|
|
12
14
|
});
|
|
15
|
+
this.snapshotDuration = meter.createHistogram(Metrics.NODE_SNAPSHOT_DURATION, {
|
|
16
|
+
description: 'How long taking a snapshot takes',
|
|
17
|
+
unit: 'ms',
|
|
18
|
+
valueType: ValueType.INT
|
|
19
|
+
});
|
|
20
|
+
this.snapshotErrorCount = meter.createUpDownCounter(Metrics.NODE_SNAPSHOT_ERROR_COUNT, {
|
|
21
|
+
description: 'How many snapshot errors have happened',
|
|
22
|
+
valueType: ValueType.INT
|
|
23
|
+
});
|
|
24
|
+
this.snapshotErrorCount.add(0);
|
|
13
25
|
}
|
|
14
26
|
receivedTx(durationMs, isAccepted) {
|
|
15
27
|
this.receiveTxDuration.record(Math.ceil(durationMs), {
|
|
@@ -19,4 +31,13 @@ export class NodeMetrics {
|
|
|
19
31
|
[Attributes.OK]: isAccepted
|
|
20
32
|
});
|
|
21
33
|
}
|
|
34
|
+
recordSnapshot(durationMs) {
|
|
35
|
+
if (isNaN(durationMs)) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
this.snapshotDuration.record(Math.ceil(durationMs));
|
|
39
|
+
}
|
|
40
|
+
recordSnapshotError() {
|
|
41
|
+
this.snapshotErrorCount.add(1);
|
|
42
|
+
}
|
|
22
43
|
}
|
|
@@ -1,29 +1,36 @@
|
|
|
1
1
|
import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
2
|
-
import {
|
|
2
|
+
import { ARCHIVE_HEIGHT, type L1_TO_L2_MSG_TREE_HEIGHT, type NOTE_HASH_TREE_HEIGHT, type NULLIFIER_TREE_HEIGHT, type PUBLIC_DATA_TREE_HEIGHT } from '@aztec/constants';
|
|
3
|
+
import { type EpochCacheInterface } from '@aztec/epoch-cache';
|
|
3
4
|
import { type L1ContractAddresses } from '@aztec/ethereum';
|
|
5
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
6
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
7
|
import { type Logger } from '@aztec/foundation/log';
|
|
6
8
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
7
|
-
import { SiblingPath } from '@aztec/foundation/trees';
|
|
8
|
-
import { type P2P } from '@aztec/p2p';
|
|
9
|
-
import {
|
|
9
|
+
import { MembershipWitness, SiblingPath } from '@aztec/foundation/trees';
|
|
10
|
+
import { type P2P, type P2PClientDeps } from '@aztec/p2p';
|
|
11
|
+
import { SequencerClient, type SequencerPublisher } from '@aztec/sequencer-client';
|
|
12
|
+
import { EpochPruneWatcher, type SlasherClientInterface } from '@aztec/slasher';
|
|
10
13
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
11
|
-
import type
|
|
14
|
+
import { type InBlock, type L2Block, type L2BlockNumber, type L2BlockSource, type PublishedL2Block } from '@aztec/stdlib/block';
|
|
12
15
|
import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress, NodeInfo, ProtocolContractAddresses } from '@aztec/stdlib/contract';
|
|
13
16
|
import type { GasFees } from '@aztec/stdlib/gas';
|
|
14
|
-
import type
|
|
15
|
-
import { type
|
|
17
|
+
import { type AztecNode, type AztecNodeAdmin, type AztecNodeAdminConfig, type GetContractClassLogsResponse, type GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
18
|
+
import { type AllowedElement, type ClientProtocolCircuitVerifier, type L2LogsSource, type Service, type WorldStateSyncStatus, type WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
16
19
|
import type { LogFilter, PrivateLog, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
17
|
-
import type
|
|
18
|
-
import {
|
|
20
|
+
import { type L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
21
|
+
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
22
|
+
import type { Offense, SlashPayloadRound } from '@aztec/stdlib/slashing';
|
|
19
23
|
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
20
|
-
import {
|
|
24
|
+
import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
25
|
+
import { type BlockHeader, type GlobalVariableBuilder as GlobalVariableBuilderInterface, type IndexedTxEffect, PublicSimulationOutput, Tx, type TxHash, TxReceipt, type TxValidationResult } from '@aztec/stdlib/tx';
|
|
26
|
+
import type { SingleValidatorStats, ValidatorsStats } from '@aztec/stdlib/validators';
|
|
21
27
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
28
|
+
import { Sentinel } from '../sentinel/sentinel.js';
|
|
22
29
|
import { type AztecNodeConfig } from './config.js';
|
|
23
30
|
/**
|
|
24
31
|
* The aztec node.
|
|
25
32
|
*/
|
|
26
|
-
export declare class AztecNodeService implements AztecNode, Traceable {
|
|
33
|
+
export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
27
34
|
#private;
|
|
28
35
|
protected config: AztecNodeConfig;
|
|
29
36
|
protected readonly p2pClient: P2P;
|
|
@@ -31,19 +38,24 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
31
38
|
protected readonly logsSource: L2LogsSource;
|
|
32
39
|
protected readonly contractDataSource: ContractDataSource;
|
|
33
40
|
protected readonly l1ToL2MessageSource: L1ToL2MessageSource;
|
|
34
|
-
protected readonly nullifierSource: NullifierWithBlockSource;
|
|
35
41
|
protected readonly worldStateSynchronizer: WorldStateSynchronizer;
|
|
36
42
|
protected readonly sequencer: SequencerClient | undefined;
|
|
43
|
+
protected readonly slasherClient: SlasherClientInterface | undefined;
|
|
44
|
+
protected readonly validatorsSentinel: Sentinel | undefined;
|
|
45
|
+
protected readonly epochPruneWatcher: EpochPruneWatcher | undefined;
|
|
37
46
|
protected readonly l1ChainId: number;
|
|
38
47
|
protected readonly version: number;
|
|
39
|
-
protected readonly globalVariableBuilder:
|
|
48
|
+
protected readonly globalVariableBuilder: GlobalVariableBuilderInterface;
|
|
49
|
+
protected readonly epochCache: EpochCacheInterface;
|
|
50
|
+
protected readonly packageVersion: string;
|
|
40
51
|
private proofVerifier;
|
|
41
52
|
private telemetry;
|
|
42
53
|
private log;
|
|
43
|
-
private packageVersion;
|
|
44
54
|
private metrics;
|
|
55
|
+
private isUploadingSnapshot;
|
|
56
|
+
private txQueue;
|
|
45
57
|
readonly tracer: Tracer;
|
|
46
|
-
constructor(config: AztecNodeConfig, p2pClient: P2P, blockSource: L2BlockSource & Partial<Service>, logsSource: L2LogsSource, contractDataSource: ContractDataSource, l1ToL2MessageSource: L1ToL2MessageSource,
|
|
58
|
+
constructor(config: AztecNodeConfig, p2pClient: P2P, blockSource: L2BlockSource & Partial<Service>, logsSource: L2LogsSource, contractDataSource: ContractDataSource, l1ToL2MessageSource: L1ToL2MessageSource, worldStateSynchronizer: WorldStateSynchronizer, sequencer: SequencerClient | undefined, slasherClient: SlasherClientInterface | undefined, validatorsSentinel: Sentinel | undefined, epochPruneWatcher: EpochPruneWatcher | undefined, l1ChainId: number, version: number, globalVariableBuilder: GlobalVariableBuilderInterface, epochCache: EpochCacheInterface, packageVersion: string, proofVerifier: ClientProtocolCircuitVerifier, telemetry?: TelemetryClient, log?: Logger);
|
|
47
59
|
getWorldStateSyncStatus(): Promise<WorldStateSyncStatus>;
|
|
48
60
|
getL2Tips(): Promise<import("@aztec/stdlib/block").L2Tips>;
|
|
49
61
|
/**
|
|
@@ -51,14 +63,16 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
51
63
|
* @param config - The configuration to be used by the aztec node.
|
|
52
64
|
* @returns - A fully synced Aztec Node for use in development/testing.
|
|
53
65
|
*/
|
|
54
|
-
static createAndSync(
|
|
66
|
+
static createAndSync(inputConfig: AztecNodeConfig, deps?: {
|
|
55
67
|
telemetry?: TelemetryClient;
|
|
56
68
|
logger?: Logger;
|
|
57
69
|
publisher?: SequencerPublisher;
|
|
58
70
|
dateProvider?: DateProvider;
|
|
59
71
|
blobSinkClient?: BlobSinkClientInterface;
|
|
72
|
+
p2pClientDeps?: P2PClientDeps<P2PClientType.Full>;
|
|
60
73
|
}, options?: {
|
|
61
74
|
prefilledPublicData?: PublicDataTreeLeaf[];
|
|
75
|
+
dontStartSequencer?: boolean;
|
|
62
76
|
}): Promise<AztecNodeService>;
|
|
63
77
|
/**
|
|
64
78
|
* Returns the sequencer client instance.
|
|
@@ -74,6 +88,7 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
74
88
|
*/
|
|
75
89
|
getL1ContractAddresses(): Promise<L1ContractAddresses>;
|
|
76
90
|
getEncodedEnr(): Promise<string | undefined>;
|
|
91
|
+
getAllowedPublicSetup(): Promise<AllowedElement[]>;
|
|
77
92
|
/**
|
|
78
93
|
* Method to determine if the node is ready to accept transactions.
|
|
79
94
|
* @returns - Flag indicating the readiness for tx submission.
|
|
@@ -85,7 +100,19 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
85
100
|
* @param number - The block number being requested.
|
|
86
101
|
* @returns The requested block.
|
|
87
102
|
*/
|
|
88
|
-
getBlock(number:
|
|
103
|
+
getBlock(number: L2BlockNumber): Promise<L2Block | undefined>;
|
|
104
|
+
/**
|
|
105
|
+
* Get a block specified by its hash.
|
|
106
|
+
* @param blockHash - The block hash being requested.
|
|
107
|
+
* @returns The requested block.
|
|
108
|
+
*/
|
|
109
|
+
getBlockByHash(blockHash: Fr): Promise<L2Block | undefined>;
|
|
110
|
+
/**
|
|
111
|
+
* Get a block specified by its archive root.
|
|
112
|
+
* @param archive - The archive root being requested.
|
|
113
|
+
* @returns The requested block.
|
|
114
|
+
*/
|
|
115
|
+
getBlockByArchive(archive: Fr): Promise<L2Block | undefined>;
|
|
89
116
|
/**
|
|
90
117
|
* Method to request blocks. Will attempt to return all requested blocks but will return only those available.
|
|
91
118
|
* @param from - The start of the range of blocks to return.
|
|
@@ -93,13 +120,14 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
93
120
|
* @returns The blocks requested.
|
|
94
121
|
*/
|
|
95
122
|
getBlocks(from: number, limit: number): Promise<L2Block[]>;
|
|
123
|
+
getPublishedBlocks(from: number, limit: number): Promise<PublishedL2Block[]>;
|
|
96
124
|
/**
|
|
97
125
|
* Method to fetch the current base fees.
|
|
98
126
|
* @returns The current base fees.
|
|
99
127
|
*/
|
|
100
128
|
getCurrentBaseFees(): Promise<GasFees>;
|
|
101
129
|
/**
|
|
102
|
-
* Method to fetch the
|
|
130
|
+
* Method to fetch the latest block number synchronized by the node.
|
|
103
131
|
* @returns The block number.
|
|
104
132
|
*/
|
|
105
133
|
getBlockNumber(): Promise<number>;
|
|
@@ -131,10 +159,11 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
131
159
|
/**
|
|
132
160
|
* Gets all logs that match any of the received tags (i.e. logs with their first field equal to a tag).
|
|
133
161
|
* @param tags - The tags to filter the logs by.
|
|
162
|
+
* @param logsPerTag - The maximum number of logs to return for each tag. By default no limit is set
|
|
134
163
|
* @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
|
|
135
164
|
* that tag.
|
|
136
165
|
*/
|
|
137
|
-
getLogsByTags(tags: Fr[]): Promise<TxScopedL2Log[][]>;
|
|
166
|
+
getLogsByTags(tags: Fr[], logsPerTag?: number): Promise<TxScopedL2Log[][]>;
|
|
138
167
|
/**
|
|
139
168
|
* Gets public logs based on the provided filter.
|
|
140
169
|
* @param filter - The filter to apply to the logs.
|
|
@@ -153,46 +182,40 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
153
182
|
*/
|
|
154
183
|
sendTx(tx: Tx): Promise<void>;
|
|
155
184
|
getTxReceipt(txHash: TxHash): Promise<TxReceipt>;
|
|
156
|
-
getTxEffect(txHash: TxHash): Promise<
|
|
185
|
+
getTxEffect(txHash: TxHash): Promise<IndexedTxEffect | undefined>;
|
|
157
186
|
/**
|
|
158
187
|
* Method to stop the aztec node.
|
|
159
188
|
*/
|
|
160
189
|
stop(): Promise<void>;
|
|
161
190
|
/**
|
|
162
191
|
* Method to retrieve pending txs.
|
|
192
|
+
* @param limit - The number of items to returns
|
|
193
|
+
* @param after - The last known pending tx. Used for pagination
|
|
163
194
|
* @returns - The pending txs.
|
|
164
195
|
*/
|
|
165
|
-
getPendingTxs(): Promise<Tx[]>;
|
|
196
|
+
getPendingTxs(limit?: number, after?: TxHash): Promise<Tx[]>;
|
|
166
197
|
getPendingTxCount(): Promise<number>;
|
|
167
198
|
/**
|
|
168
|
-
* Method to retrieve a single tx from the mempool or
|
|
199
|
+
* Method to retrieve a single tx from the mempool or unfinalized chain.
|
|
169
200
|
* @param txHash - The transaction hash to return.
|
|
170
201
|
* @returns - The tx if it exists.
|
|
171
202
|
*/
|
|
172
203
|
getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
173
204
|
/**
|
|
174
|
-
* Method to retrieve txs from the mempool or
|
|
205
|
+
* Method to retrieve txs from the mempool or unfinalized chain.
|
|
175
206
|
* @param txHash - The transaction hash to return.
|
|
176
207
|
* @returns - The txs if it exists.
|
|
177
208
|
*/
|
|
178
209
|
getTxsByHash(txHashes: TxHash[]): Promise<Tx[]>;
|
|
179
210
|
/**
|
|
180
|
-
* Find the indexes of the given leaves in the given tree
|
|
181
|
-
*
|
|
211
|
+
* Find the indexes of the given leaves in the given tree along with a block metadata pointing to the block in which
|
|
212
|
+
* the leaves were inserted.
|
|
213
|
+
* @param blockNumber - The block number at which to get the data or 'latest' for latest data.
|
|
182
214
|
* @param treeId - The tree to search in.
|
|
183
|
-
* @param
|
|
184
|
-
* @returns The
|
|
215
|
+
* @param leafValues - The values to search for.
|
|
216
|
+
* @returns The indices of leaves and the block metadata of a block in which the leaves were inserted.
|
|
185
217
|
*/
|
|
186
|
-
findLeavesIndexes(blockNumber: L2BlockNumber, treeId: MerkleTreeId, leafValues: Fr[]): Promise<(bigint | undefined)[]>;
|
|
187
|
-
/**
|
|
188
|
-
* Find the block numbers of the given leaf indices in the given tree.
|
|
189
|
-
* @param blockNumber - The block number at which to get the data or 'latest' for latest data
|
|
190
|
-
* @param treeId - The tree to search in.
|
|
191
|
-
* @param leafIndices - The values to search for
|
|
192
|
-
* @returns The indexes of the given leaves in the given tree or undefined if not found.
|
|
193
|
-
*/
|
|
194
|
-
findBlockNumbersForIndexes(blockNumber: L2BlockNumber, treeId: MerkleTreeId, leafIndices: bigint[]): Promise<(bigint | undefined)[]>;
|
|
195
|
-
findNullifiersIndexesWithBlock(blockNumber: L2BlockNumber, nullifiers: Fr[]): Promise<(InBlock<bigint> | undefined)[]>;
|
|
218
|
+
findLeavesIndexes(blockNumber: L2BlockNumber, treeId: MerkleTreeId, leafValues: Fr[]): Promise<(InBlock<bigint> | undefined)[]>;
|
|
196
219
|
/**
|
|
197
220
|
* Returns a sibling path for the given index in the nullifier tree.
|
|
198
221
|
* @param blockNumber - The block number at which to get the data.
|
|
@@ -207,6 +230,8 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
207
230
|
* @returns The sibling path for the leaf index.
|
|
208
231
|
*/
|
|
209
232
|
getNoteHashSiblingPath(blockNumber: L2BlockNumber, leafIndex: bigint): Promise<SiblingPath<typeof NOTE_HASH_TREE_HEIGHT>>;
|
|
233
|
+
getArchiveMembershipWitness(blockNumber: L2BlockNumber, archive: Fr): Promise<MembershipWitness<typeof ARCHIVE_HEIGHT> | undefined>;
|
|
234
|
+
getNoteHashMembershipWitness(blockNumber: L2BlockNumber, noteHash: Fr): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT> | undefined>;
|
|
210
235
|
/**
|
|
211
236
|
* Returns the index and a sibling path for a leaf in the committed l1 to l2 data tree.
|
|
212
237
|
* @param blockNumber - The block number at which to get the data.
|
|
@@ -214,6 +239,7 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
214
239
|
* @returns A tuple of the index and the sibling path of the L1ToL2Message (undefined if not found).
|
|
215
240
|
*/
|
|
216
241
|
getL1ToL2MessageMembershipWitness(blockNumber: L2BlockNumber, l1ToL2Message: Fr): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>] | undefined>;
|
|
242
|
+
getL1ToL2MessageBlock(l1ToL2Message: Fr): Promise<number | undefined>;
|
|
217
243
|
/**
|
|
218
244
|
* Returns whether an L1 to L2 message is synced by archiver and if it's ready to be included in a block.
|
|
219
245
|
* @param l1ToL2Message - The L1 to L2 message to check.
|
|
@@ -221,16 +247,11 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
221
247
|
*/
|
|
222
248
|
isL1ToL2MessageSynced(l1ToL2Message: Fr): Promise<boolean>;
|
|
223
249
|
/**
|
|
224
|
-
* Returns the
|
|
225
|
-
* @remarks This tree is considered ephemeral because it is created on-demand by: taking all the l2ToL1 messages
|
|
226
|
-
* in a single block, and then using them to make a variable depth append-only tree with these messages as leaves.
|
|
227
|
-
* The tree is discarded immediately after calculating what we need from it.
|
|
228
|
-
* TODO: Handle the case where two messages in the same tx have the same hash.
|
|
250
|
+
* Returns all the L2 to L1 messages in a block.
|
|
229
251
|
* @param blockNumber - The block number at which to get the data.
|
|
230
|
-
* @
|
|
231
|
-
* @returns A tuple of the index and the sibling path of the L2ToL1Message.
|
|
252
|
+
* @returns The L2 to L1 messages (undefined if the block number is not found).
|
|
232
253
|
*/
|
|
233
|
-
|
|
254
|
+
getL2ToL1Messages(blockNumber: L2BlockNumber): Promise<Fr[][] | undefined>;
|
|
234
255
|
/**
|
|
235
256
|
* Returns a sibling path for a leaf in the committed blocks tree.
|
|
236
257
|
* @param blockNumber - The block number at which to get the data.
|
|
@@ -267,7 +288,7 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
267
288
|
* TODO: This is a confusing behavior and we should eventually address that.
|
|
268
289
|
*/
|
|
269
290
|
getLowNullifierMembershipWitness(blockNumber: L2BlockNumber, nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
270
|
-
|
|
291
|
+
getPublicDataWitness(blockNumber: L2BlockNumber, leafSlot: Fr): Promise<PublicDataWitness | undefined>;
|
|
271
292
|
/**
|
|
272
293
|
* Gets the storage value at the given contract storage slot.
|
|
273
294
|
*
|
|
@@ -285,6 +306,18 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
285
306
|
* @returns The current committed block header.
|
|
286
307
|
*/
|
|
287
308
|
getBlockHeader(blockNumber?: L2BlockNumber): Promise<BlockHeader | undefined>;
|
|
309
|
+
/**
|
|
310
|
+
* Get a block header specified by its hash.
|
|
311
|
+
* @param blockHash - The block hash being requested.
|
|
312
|
+
* @returns The requested block header.
|
|
313
|
+
*/
|
|
314
|
+
getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
|
|
315
|
+
/**
|
|
316
|
+
* Get a block header specified by its archive root.
|
|
317
|
+
* @param archive - The archive root being requested.
|
|
318
|
+
* @returns The requested block header.
|
|
319
|
+
*/
|
|
320
|
+
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
288
321
|
/**
|
|
289
322
|
* Simulates the public part of a transaction with the current state.
|
|
290
323
|
* @param tx - The transaction to simulate.
|
|
@@ -294,10 +327,17 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
294
327
|
isSimulation?: boolean;
|
|
295
328
|
skipFeeEnforcement?: boolean;
|
|
296
329
|
}): Promise<TxValidationResult>;
|
|
297
|
-
|
|
330
|
+
getConfig(): Promise<AztecNodeAdminConfig>;
|
|
331
|
+
setConfig(config: Partial<AztecNodeAdminConfig>): Promise<void>;
|
|
298
332
|
getProtocolContractAddresses(): Promise<ProtocolContractAddresses>;
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
333
|
+
registerContractFunctionSignatures(signatures: string[]): Promise<void>;
|
|
334
|
+
getValidatorsStats(): Promise<ValidatorsStats>;
|
|
335
|
+
getValidatorStats(validatorAddress: EthAddress, fromSlot?: bigint, toSlot?: bigint): Promise<SingleValidatorStats | undefined>;
|
|
336
|
+
startSnapshotUpload(location: string): Promise<void>;
|
|
337
|
+
rollbackTo(targetBlock: number, force?: boolean): Promise<void>;
|
|
338
|
+
pauseSync(): Promise<void>;
|
|
339
|
+
resumeSync(): Promise<void>;
|
|
340
|
+
getSlashPayloads(): Promise<SlashPayloadRound[]>;
|
|
341
|
+
getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]>;
|
|
302
342
|
}
|
|
303
343
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,uBAAuB,EAAwB,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"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"}
|