@aztec-labs/aztec-node 6.0.0-nightly.20260829

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.
Files changed (83) hide show
  1. package/README.md +15 -0
  2. package/dest/aztec-node/block_response_helpers.d.ts +25 -0
  3. package/dest/aztec-node/block_response_helpers.d.ts.map +1 -0
  4. package/dest/aztec-node/block_response_helpers.js +112 -0
  5. package/dest/aztec-node/config.d.ts +52 -0
  6. package/dest/aztec-node/config.d.ts.map +1 -0
  7. package/dest/aztec-node/config.js +129 -0
  8. package/dest/aztec-node/node_metrics.d.ts +12 -0
  9. package/dest/aztec-node/node_metrics.d.ts.map +1 -0
  10. package/dest/aztec-node/node_metrics.js +36 -0
  11. package/dest/aztec-node/node_public_calls_simulator.d.ts +108 -0
  12. package/dest/aztec-node/node_public_calls_simulator.d.ts.map +1 -0
  13. package/dest/aztec-node/node_public_calls_simulator.js +380 -0
  14. package/dest/aztec-node/public_data_overrides.d.ts +13 -0
  15. package/dest/aztec-node/public_data_overrides.d.ts.map +1 -0
  16. package/dest/aztec-node/public_data_overrides.js +21 -0
  17. package/dest/aztec-node/register_node_rpc_handlers.d.ts +11 -0
  18. package/dest/aztec-node/register_node_rpc_handlers.d.ts.map +1 -0
  19. package/dest/aztec-node/register_node_rpc_handlers.js +48 -0
  20. package/dest/aztec-node/server.d.ts +281 -0
  21. package/dest/aztec-node/server.d.ts.map +1 -0
  22. package/dest/aztec-node/server.js +1235 -0
  23. package/dest/bin/index.d.ts +3 -0
  24. package/dest/bin/index.d.ts.map +1 -0
  25. package/dest/bin/index.js +57 -0
  26. package/dest/factory.d.ts +33 -0
  27. package/dest/factory.d.ts.map +1 -0
  28. package/dest/factory.js +539 -0
  29. package/dest/index.d.ts +5 -0
  30. package/dest/index.d.ts.map +1 -0
  31. package/dest/index.js +4 -0
  32. package/dest/modules/block_parameter.d.ts +25 -0
  33. package/dest/modules/block_parameter.d.ts.map +1 -0
  34. package/dest/modules/block_parameter.js +100 -0
  35. package/dest/modules/node_block_provider.d.ts +19 -0
  36. package/dest/modules/node_block_provider.d.ts.map +1 -0
  37. package/dest/modules/node_block_provider.js +112 -0
  38. package/dest/modules/node_tx_receipt.d.ts +24 -0
  39. package/dest/modules/node_tx_receipt.d.ts.map +1 -0
  40. package/dest/modules/node_tx_receipt.js +70 -0
  41. package/dest/modules/node_world_state_queries.d.ts +65 -0
  42. package/dest/modules/node_world_state_queries.d.ts.map +1 -0
  43. package/dest/modules/node_world_state_queries.js +270 -0
  44. package/dest/sentinel/config.d.ts +9 -0
  45. package/dest/sentinel/config.d.ts.map +1 -0
  46. package/dest/sentinel/config.js +39 -0
  47. package/dest/sentinel/factory.d.ts +11 -0
  48. package/dest/sentinel/factory.d.ts.map +1 -0
  49. package/dest/sentinel/factory.js +24 -0
  50. package/dest/sentinel/index.d.ts +3 -0
  51. package/dest/sentinel/index.d.ts.map +1 -0
  52. package/dest/sentinel/index.js +1 -0
  53. package/dest/sentinel/sentinel.d.ts +217 -0
  54. package/dest/sentinel/sentinel.d.ts.map +1 -0
  55. package/dest/sentinel/sentinel.js +551 -0
  56. package/dest/sentinel/store.d.ts +35 -0
  57. package/dest/sentinel/store.d.ts.map +1 -0
  58. package/dest/sentinel/store.js +182 -0
  59. package/dest/test/index.d.ts +31 -0
  60. package/dest/test/index.d.ts.map +1 -0
  61. package/dest/test/index.js +1 -0
  62. package/package.json +118 -0
  63. package/src/aztec-node/block_response_helpers.ts +161 -0
  64. package/src/aztec-node/config.ts +216 -0
  65. package/src/aztec-node/node_metrics.ts +49 -0
  66. package/src/aztec-node/node_public_calls_simulator.ts +437 -0
  67. package/src/aztec-node/public_data_overrides.ts +35 -0
  68. package/src/aztec-node/register_node_rpc_handlers.ts +45 -0
  69. package/src/aztec-node/server.ts +1155 -0
  70. package/src/bin/index.ts +77 -0
  71. package/src/factory.ts +704 -0
  72. package/src/index.ts +4 -0
  73. package/src/modules/block_parameter.ts +93 -0
  74. package/src/modules/node_block_provider.ts +149 -0
  75. package/src/modules/node_tx_receipt.ts +115 -0
  76. package/src/modules/node_world_state_queries.ts +373 -0
  77. package/src/sentinel/README.md +103 -0
  78. package/src/sentinel/config.ts +49 -0
  79. package/src/sentinel/factory.ts +46 -0
  80. package/src/sentinel/index.ts +8 -0
  81. package/src/sentinel/sentinel.ts +694 -0
  82. package/src/sentinel/store.ts +193 -0
  83. package/src/test/index.ts +32 -0
package/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # Aztec Node
2
+
3
+ The Aztec Node implements a sequencer node in the network, and is currently meant to be used for local development and testing. The Node is the entrypoint for creating and starting a new Sequencer client with default components (a local P2P client, an in-memory merkle tree database, etc).
4
+
5
+ The Node also exposes methods that are consumed by the client (see `pxe`), such as querying network info or submitting a transaction. As Aztec evolves beyond local development, these methods will be accessible via a JSON-RPC API or similar. Refer to the `end-to-end` tests for examples on how to initialize an Aztec Node and use it along with a Private eXecution Environment (PXE).
6
+
7
+ ## Development
8
+
9
+ Start by running `bootstrap.sh` in the project root.
10
+
11
+ To build the package, run `yarn build` in the root.
12
+
13
+ To watch for changes, `yarn build:dev`.
14
+
15
+ To run the tests, execute `yarn test`.
@@ -0,0 +1,25 @@
1
+ import { type BlockData, type CommitteeAttestation, L2Block } from '@aztec-labs/stdlib/block';
2
+ import type { CheckpointData, L1PublishedData, ProposedCheckpointData, PublishedCheckpoint } from '@aztec-labs/stdlib/checkpoint';
3
+ import { type BlockIncludeOptions, type BlockResponse, type CheckpointIncludeOptions, type CheckpointResponse } from '@aztec-labs/stdlib/interfaces/client';
4
+ /** Projects a full {@link L2Block} into a {@link BlockResponse}, attaching L1 / attestation context when provided. */
5
+ export declare function blockResponseFromL2Block(block: L2Block, options: BlockIncludeOptions, context?: {
6
+ l1?: L1PublishedData;
7
+ attestations?: CommitteeAttestation[];
8
+ }): Promise<BlockResponse>;
9
+ /** Projects metadata-only {@link BlockData} into a {@link BlockResponse}. */
10
+ export declare function blockResponseFromBlockData(data: BlockData, options: BlockIncludeOptions, context?: {
11
+ l1?: L1PublishedData;
12
+ attestations?: CommitteeAttestation[];
13
+ }): BlockResponse;
14
+ /** Projects a {@link PublishedCheckpoint} into a {@link CheckpointResponse}. */
15
+ export declare function checkpointResponseFromPublishedCheckpoint(pc: PublishedCheckpoint, options: CheckpointIncludeOptions): Promise<CheckpointResponse>;
16
+ /** Projects metadata-only {@link CheckpointData} into a {@link CheckpointResponse}. `includeBlocks` is ignored (no blocks loaded). */
17
+ export declare function checkpointResponseFromCheckpointData(cd: CheckpointData, options: CheckpointIncludeOptions): CheckpointResponse;
18
+ /**
19
+ * Projects a {@link ProposedCheckpointData} into a {@link CheckpointResponse}.
20
+ * Pure projection — caller pre-fetches `blocks` via `blockSource.getBlocks(...)` when
21
+ * `options.includeBlocks` is true. Throws if `includeL1PublishInfo` or `includeAttestations`
22
+ * is requested (proposed checkpoints have no L1 publish info or attestations).
23
+ */
24
+ export declare function projectProposedToCheckpointResponse(proposed: ProposedCheckpointData, options: CheckpointIncludeOptions, blocks?: L2Block[]): Promise<CheckpointResponse>;
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfcmVzcG9uc2VfaGVscGVycy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F6dGVjLW5vZGUvYmxvY2tfcmVzcG9uc2VfaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQUUsS0FBSyxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RixPQUFPLEtBQUssRUFDVixjQUFjLEVBQ2QsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDcEIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQ0wsS0FBSyxtQkFBbUIsRUFDeEIsS0FBSyxhQUFhLEVBQ2xCLEtBQUssd0JBQXdCLEVBQzdCLEtBQUssa0JBQWtCLEVBRXhCLE1BQU0sc0NBQXNDLENBQUM7QUFFOUMsc0hBQXNIO0FBQ3RILHdCQUFzQix3QkFBd0IsQ0FDNUMsS0FBSyxFQUFFLE9BQU8sRUFDZCxPQUFPLEVBQUUsbUJBQW1CLEVBQzVCLE9BQU8sQ0FBQyxFQUFFO0lBQUUsRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDO0lBQUMsWUFBWSxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQTtDQUFFLEdBQ3hFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FtQnhCO0FBRUQsNkVBQTZFO0FBQzdFLHdCQUFnQiwwQkFBMEIsQ0FDeEMsSUFBSSxFQUFFLFNBQVMsRUFDZixPQUFPLEVBQUUsbUJBQW1CLEVBQzVCLE9BQU8sQ0FBQyxFQUFFO0lBQUUsRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDO0lBQUMsWUFBWSxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQTtDQUFFLEdBQ3hFLGFBQWEsQ0FnQmY7QUFFRCxnRkFBZ0Y7QUFDaEYsd0JBQXNCLHlDQUF5QyxDQUM3RCxFQUFFLEVBQUUsbUJBQW1CLEVBQ3ZCLE9BQU8sRUFBRSx3QkFBd0IsR0FDaEMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBNEI3QjtBQUVELHNJQUFzSTtBQUN0SSx3QkFBZ0Isb0NBQW9DLENBQ2xELEVBQUUsRUFBRSxjQUFjLEVBQ2xCLE9BQU8sRUFBRSx3QkFBd0IsR0FDaEMsa0JBQWtCLENBaUJwQjtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQXNCLG1DQUFtQyxDQUN2RCxRQUFRLEVBQUUsc0JBQXNCLEVBQ2hDLE9BQU8sRUFBRSx3QkFBd0IsRUFDakMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQ2pCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQTRCN0IifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block_response_helpers.d.ts","sourceRoot":"","sources":["../../src/aztec-node/block_response_helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,oBAAoB,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EAExB,MAAM,sCAAsC,CAAC;AAE9C,sHAAsH;AACtH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE;IAAE,EAAE,CAAC,EAAE,eAAe,CAAC;IAAC,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAA;CAAE,GACxE,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAED,6EAA6E;AAC7E,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE;IAAE,EAAE,CAAC,EAAE,eAAe,CAAC;IAAC,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAA;CAAE,GACxE,aAAa,CAgBf;AAED,gFAAgF;AAChF,wBAAsB,yCAAyC,CAC7D,EAAE,EAAE,mBAAmB,EACvB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CA4B7B;AAED,sIAAsI;AACtI,wBAAgB,oCAAoC,CAClD,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,wBAAwB,GAChC,kBAAkB,CAiBpB;AAED;;;;;GAKG;AACH,wBAAsB,mCAAmC,CACvD,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,wBAAwB,EACjC,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,kBAAkB,CAAC,CA4B7B"}
@@ -0,0 +1,112 @@
1
+ import { BlockNumber } from '@aztec-labs/foundation/branded-types';
2
+ import { l1PublishInfoFromL1PublishedData } from '@aztec-labs/stdlib/interfaces/client';
3
+ /** Projects a full {@link L2Block} into a {@link BlockResponse}, attaching L1 / attestation context when provided. */ export async function blockResponseFromL2Block(block, options, context) {
4
+ const response = {
5
+ header: block.header,
6
+ archive: block.archive,
7
+ hash: await block.hash(),
8
+ checkpointNumber: block.checkpointNumber,
9
+ indexWithinCheckpoint: block.indexWithinCheckpoint,
10
+ number: block.number
11
+ };
12
+ if (options.includeTransactions) {
13
+ response.body = block.body;
14
+ }
15
+ if (options.includeL1PublishInfo) {
16
+ response.l1 = l1PublishInfoFromL1PublishedData(context?.l1);
17
+ }
18
+ if (options.includeAttestations) {
19
+ response.attestations = context?.attestations ?? [];
20
+ }
21
+ return response;
22
+ }
23
+ /** Projects metadata-only {@link BlockData} into a {@link BlockResponse}. */ export function blockResponseFromBlockData(data, options, context) {
24
+ const response = {
25
+ header: data.header,
26
+ archive: data.archive,
27
+ hash: data.blockHash,
28
+ checkpointNumber: data.checkpointNumber,
29
+ indexWithinCheckpoint: data.indexWithinCheckpoint,
30
+ number: data.header.getBlockNumber()
31
+ };
32
+ if (options.includeL1PublishInfo) {
33
+ response.l1 = l1PublishInfoFromL1PublishedData(context?.l1);
34
+ }
35
+ if (options.includeAttestations) {
36
+ response.attestations = context?.attestations ?? [];
37
+ }
38
+ return response;
39
+ }
40
+ /** Projects a {@link PublishedCheckpoint} into a {@link CheckpointResponse}. */ export async function checkpointResponseFromPublishedCheckpoint(pc, options) {
41
+ const response = {
42
+ number: pc.checkpoint.number,
43
+ header: pc.checkpoint.header,
44
+ archive: pc.checkpoint.archive,
45
+ checkpointOutHash: pc.checkpoint.getCheckpointOutHash(),
46
+ startBlock: pc.checkpoint.blocks[0]?.number ?? BlockNumber.ZERO,
47
+ blockCount: pc.checkpoint.blocks.length,
48
+ feeAssetPriceModifier: pc.checkpoint.feeAssetPriceModifier
49
+ };
50
+ if (options.includeBlocks) {
51
+ response.blocks = await Promise.all(pc.checkpoint.blocks.map((block)=>blockResponseFromL2Block(block, {
52
+ includeTransactions: options.includeTransactions,
53
+ includeL1PublishInfo: false,
54
+ includeAttestations: false
55
+ })));
56
+ }
57
+ if (options.includeL1PublishInfo) {
58
+ response.l1 = l1PublishInfoFromL1PublishedData(pc.l1);
59
+ }
60
+ if (options.includeAttestations) {
61
+ response.attestations = pc.attestations;
62
+ }
63
+ return response;
64
+ }
65
+ /** Projects metadata-only {@link CheckpointData} into a {@link CheckpointResponse}. `includeBlocks` is ignored (no blocks loaded). */ export function checkpointResponseFromCheckpointData(cd, options) {
66
+ const response = {
67
+ number: cd.checkpointNumber,
68
+ header: cd.header,
69
+ archive: cd.archive,
70
+ checkpointOutHash: cd.checkpointOutHash,
71
+ startBlock: cd.startBlock,
72
+ blockCount: cd.blockCount,
73
+ feeAssetPriceModifier: cd.feeAssetPriceModifier
74
+ };
75
+ if (options.includeL1PublishInfo) {
76
+ response.l1 = l1PublishInfoFromL1PublishedData(cd.l1);
77
+ }
78
+ if (options.includeAttestations) {
79
+ response.attestations = cd.attestations;
80
+ }
81
+ return response;
82
+ }
83
+ /**
84
+ * Projects a {@link ProposedCheckpointData} into a {@link CheckpointResponse}.
85
+ * Pure projection — caller pre-fetches `blocks` via `blockSource.getBlocks(...)` when
86
+ * `options.includeBlocks` is true. Throws if `includeL1PublishInfo` or `includeAttestations`
87
+ * is requested (proposed checkpoints have no L1 publish info or attestations).
88
+ */ export async function projectProposedToCheckpointResponse(proposed, options, blocks) {
89
+ if (options.includeL1PublishInfo || options.includeAttestations) {
90
+ throw new Error('Proposed checkpoints have no L1 publish info or attestations');
91
+ }
92
+ const response = {
93
+ number: proposed.checkpointNumber,
94
+ header: proposed.header,
95
+ archive: proposed.archive,
96
+ checkpointOutHash: proposed.checkpointOutHash,
97
+ startBlock: proposed.startBlock,
98
+ blockCount: proposed.blockCount,
99
+ feeAssetPriceModifier: proposed.feeAssetPriceModifier
100
+ };
101
+ if (options.includeBlocks) {
102
+ if (!blocks) {
103
+ throw new Error('Blocks must be supplied when includeBlocks is true');
104
+ }
105
+ response.blocks = await Promise.all(blocks.map((block)=>blockResponseFromL2Block(block, {
106
+ includeTransactions: options.includeTransactions,
107
+ includeL1PublishInfo: false,
108
+ includeAttestations: false
109
+ })));
110
+ }
111
+ return response;
112
+ }
@@ -0,0 +1,52 @@
1
+ import { type ArchiverConfig } from '@aztec-labs/archiver/config';
2
+ import { type GenesisStateConfig } from '@aztec-labs/ethereum/config';
3
+ import { type ConfigMappingsType } from '@aztec-labs/foundation/config';
4
+ import { type KeyStore } from '@aztec-labs/node-keystore';
5
+ import { type SharedNodeConfig } from '@aztec-labs/node-lib/config';
6
+ import { type P2PConfig } from '@aztec-labs/p2p/config';
7
+ import { type ProverClientUserConfig } from '@aztec-labs/prover-client/config';
8
+ import { type ProverNodeConfig } from '@aztec-labs/prover-node/config';
9
+ import { type SequencerClientConfig, type SequencerTxSenderConfig, sequencerClientConfigMappings } from '@aztec-labs/sequencer-client/config';
10
+ import { type NodeRPCConfig } from '@aztec-labs/stdlib/config';
11
+ import type { SlasherConfig } from '@aztec-labs/stdlib/interfaces/server';
12
+ import { type DataStoreConfig } from '@aztec-labs/stdlib/kv-store';
13
+ import { type ValidatorClientConfig } from '@aztec-labs/validator-client/config';
14
+ import { type WorldStateConfig } from '@aztec-labs/world-state/config';
15
+ import { type SentinelConfig } from '../sentinel/config.js';
16
+ export { sequencerClientConfigMappings, type SequencerClientConfig };
17
+ /**
18
+ * The configuration the aztec node.
19
+ */
20
+ export type AztecNodeConfig = ArchiverConfig & SequencerClientConfig & ValidatorClientConfig & ProverClientUserConfig & WorldStateConfig & Pick<ProverClientUserConfig, 'bbBinaryPath' | 'bbWorkingDirectory' | 'realProofs'> & P2PConfig & DataStoreConfig & SentinelConfig & SharedNodeConfig & GenesisStateConfig & NodeRPCConfig & SlasherConfig & ProverNodeConfig & {
21
+ /** Whether the validator is disabled for this node */
22
+ disableValidator: boolean;
23
+ /** Whether to skip waiting for the archiver to be fully synced before starting other services */
24
+ skipArchiverInitialSync: boolean;
25
+ /** A flag to force verification of tx Chonk proofs. Only used for testnet */
26
+ debugForceTxProofVerification: boolean;
27
+ /** Whether to enable the prover node as a subsystem. */
28
+ enableProverNode: boolean;
29
+ /** Whether to run the slashing watchers to collect offenses even if not a validator. */
30
+ enableOffenseCollection: boolean;
31
+ /**
32
+ * Test-only: use the deterministic AutomineSequencer instead of the production Sequencer.
33
+ * Requires `aztecTargetCommitteeSize === 0` on the deployed rollup and anvil-backed L1.
34
+ * See `AUTOMINE_E2E_OPTS` in `end-to-end/src/fixtures/fixtures.ts`.
35
+ */
36
+ useAutomineSequencer?: boolean;
37
+ /**
38
+ * Test-only: have the AutomineSequencer automatically prove epochs (write epoch out hashes into
39
+ * the L1 Outbox and advance the proven tip) as checkpoints land, replacing the standalone
40
+ * `EpochTestSettler`. Set by the local network/sandbox; the e2e `AUTOMINE_E2E_OPTS` fixture leaves
41
+ * it off so tests drive proving manually via `prove` / `cheatCodes.rollup.markAsProven`.
42
+ */
43
+ automineEnableProveEpoch?: boolean;
44
+ };
45
+ export declare const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig>;
46
+ /**
47
+ * Returns the config of the aztec node from environment variables with reasonable defaults.
48
+ * @returns A valid aztec node config.
49
+ */
50
+ export declare function getConfigEnvVars(): AztecNodeConfig;
51
+ export declare function createKeyStoreForValidator(config: SequencerTxSenderConfig & SequencerClientConfig & SharedNodeConfig): KeyStore | undefined;
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUEwQixNQUFNLDZCQUE2QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUE4QixNQUFNLDZCQUE2QixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUE4QyxNQUFNLCtCQUErQixDQUFDO0FBRXBILE9BQU8sRUFDTCxLQUFLLFFBQVEsRUFJZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUE0QixNQUFNLDZCQUE2QixDQUFDO0FBQzlGLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBcUIsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsS0FBSyxzQkFBc0IsRUFBOEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRyxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFHdEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsS0FBSyxxQkFBcUIsRUFDMUIsS0FBSyx1QkFBdUIsRUFDNUIsNkJBQTZCLEVBQzlCLE1BQU0scUNBQXFDLENBQUM7QUFHN0MsT0FBTyxFQUFFLEtBQUssYUFBYSxFQUF5QixNQUFNLDJCQUEyQixDQUFDO0FBQ3RGLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RixPQUFPLEVBQUUsS0FBSyxxQkFBcUIsRUFBaUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoSCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBNEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdqRyxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQTBCLE1BQU0sdUJBQXVCLENBQUM7QUFFcEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sTUFBTSxlQUFlLEdBQUcsY0FBYyxHQUMxQyxxQkFBcUIsR0FDckIscUJBQXFCLEdBQ3JCLHNCQUFzQixHQUN0QixnQkFBZ0IsR0FDaEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLGNBQWMsR0FBRyxvQkFBb0IsR0FBRyxZQUFZLENBQUMsR0FDbEYsU0FBUyxHQUNULGVBQWUsR0FDZixjQUFjLEdBQ2QsZ0JBQWdCLEdBQ2hCLGtCQUFrQixHQUNsQixhQUFhLEdBQ2IsYUFBYSxHQUNiLGdCQUFnQixHQUFHO0lBQ2pCLHNEQUFzRDtJQUN0RCxnQkFBZ0IsRUFBRSxPQUFPLENBQUM7SUFDMUIsaUdBQWlHO0lBQ2pHLHVCQUF1QixFQUFFLE9BQU8sQ0FBQztJQUNqQyw2RUFBNkU7SUFDN0UsNkJBQTZCLEVBQUUsT0FBTyxDQUFDO0lBQ3ZDLHdEQUF3RDtJQUN4RCxnQkFBZ0IsRUFBRSxPQUFPLENBQUM7SUFDMUIsd0ZBQXdGO0lBQ3hGLHVCQUF1QixFQUFFLE9BQU8sQ0FBQztJQUNqQzs7OztPQUlHO0lBQ0gsb0JBQW9CLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDL0I7Ozs7O09BS0c7SUFDSCx3QkFBd0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUNwQyxDQUFDO0FBRUosZUFBTyxNQUFNLHVCQUF1QixFQUFFLGtCQUFrQixDQUFDLGVBQWUsQ0FtRHZFLENBQUM7QUFFRjs7O0dBR0c7QUFDSCx3QkFBZ0IsZ0JBQWdCLElBQUksZUFBZSxDQUVsRDtBQXNFRCx3QkFBZ0IsMEJBQTBCLENBQ3hDLE1BQU0sRUFBRSx1QkFBdUIsR0FBRyxxQkFBcUIsR0FBRyxnQkFBZ0IsR0FDekUsUUFBUSxHQUFHLFNBQVMsQ0FNdEIifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/aztec-node/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,KAAK,kBAAkB,EAA8B,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,KAAK,kBAAkB,EAA8C,MAAM,+BAA+B,CAAC;AAEpH,OAAO,EACL,KAAK,QAAQ,EAId,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,6BAA6B,CAAC;AAC9F,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,KAAK,sBAAsB,EAA8B,MAAM,kCAAkC,CAAC;AAC3G,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,6BAA6B,EAC9B,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,2BAA2B,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,KAAK,qBAAqB,EAAiC,MAAM,qCAAqC,CAAC;AAChH,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,gCAAgC,CAAC;AAGjG,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,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;IAC1B,wFAAwF;IACxF,uBAAuB,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEJ,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CAmDvE,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"}
@@ -0,0 +1,129 @@
1
+ import { archiverConfigMappings } from '@aztec-labs/archiver/config';
2
+ import { genesisStateConfigMappings } from '@aztec-labs/ethereum/config';
3
+ import { booleanConfigHelper, getConfigFromMappings } from '@aztec-labs/foundation/config';
4
+ import { EthAddress } from '@aztec-labs/foundation/eth-address';
5
+ import { ethPrivateKeySchema, keyStoreConfigMappings } from '@aztec-labs/node-keystore';
6
+ import { sharedNodeConfigMappings } from '@aztec-labs/node-lib/config';
7
+ import { p2pConfigMappings } from '@aztec-labs/p2p/config';
8
+ import { proverClientConfigMappings } from '@aztec-labs/prover-client/config';
9
+ import { proverNodeConfigMappings, specificProverNodeConfigMappings } from '@aztec-labs/prover-node/config';
10
+ import { sequencerClientConfigMappings } from '@aztec-labs/sequencer-client/config';
11
+ import { slasherConfigMappings } from '@aztec-labs/slasher';
12
+ import { AztecAddress } from '@aztec-labs/stdlib/aztec-address';
13
+ import { nodeRpcConfigMappings } from '@aztec-labs/stdlib/config';
14
+ import { dataConfigMappings } from '@aztec-labs/stdlib/kv-store';
15
+ import { validatorClientConfigMappings } from '@aztec-labs/validator-client/config';
16
+ import { worldStateConfigMappings } from '@aztec-labs/world-state/config';
17
+ import { privateKeyToAddress } from 'viem/accounts';
18
+ import { sentinelConfigMappings } from '../sentinel/config.js';
19
+ export { sequencerClientConfigMappings };
20
+ export const aztecNodeConfigMappings = {
21
+ ...dataConfigMappings,
22
+ ...keyStoreConfigMappings,
23
+ ...archiverConfigMappings,
24
+ ...sequencerClientConfigMappings,
25
+ ...proverNodeConfigMappings,
26
+ ...validatorClientConfigMappings,
27
+ ...proverClientConfigMappings,
28
+ ...worldStateConfigMappings,
29
+ ...p2pConfigMappings,
30
+ ...sentinelConfigMappings,
31
+ ...sharedNodeConfigMappings,
32
+ ...genesisStateConfigMappings,
33
+ ...nodeRpcConfigMappings,
34
+ ...slasherConfigMappings,
35
+ ...specificProverNodeConfigMappings,
36
+ disableValidator: {
37
+ env: 'VALIDATOR_DISABLED',
38
+ description: 'Whether the validator is disabled for this node.',
39
+ ...booleanConfigHelper()
40
+ },
41
+ skipArchiverInitialSync: {
42
+ env: 'SKIP_ARCHIVER_INITIAL_SYNC',
43
+ description: 'Whether to skip waiting for the archiver to be fully synced before starting other services.',
44
+ ...booleanConfigHelper(false)
45
+ },
46
+ debugForceTxProofVerification: {
47
+ env: 'DEBUG_FORCE_TX_PROOF_VERIFICATION',
48
+ description: 'Whether to skip waiting for the archiver to be fully synced before starting other services.',
49
+ ...booleanConfigHelper(false)
50
+ },
51
+ enableProverNode: {
52
+ env: 'ENABLE_PROVER_NODE',
53
+ description: 'Whether to enable the prover node as a subsystem.',
54
+ ...booleanConfigHelper(false)
55
+ },
56
+ enableOffenseCollection: {
57
+ env: 'OFFENSE_COLLECTION_ENABLED',
58
+ description: 'Whether to run the slashing watchers to collect offenses even if not a validator.',
59
+ ...booleanConfigHelper(false)
60
+ },
61
+ useAutomineSequencer: {
62
+ env: 'USE_AUTOMINE_SEQUENCER',
63
+ description: 'Test-only: use AutomineSequencer instead of the production Sequencer.',
64
+ ...booleanConfigHelper(false)
65
+ },
66
+ automineEnableProveEpoch: {
67
+ env: 'AUTOMINE_ENABLE_PROVE_EPOCH',
68
+ description: 'Test-only: have the AutomineSequencer automatically prove epochs as checkpoints land.',
69
+ ...booleanConfigHelper(false)
70
+ }
71
+ };
72
+ /**
73
+ * Returns the config of the aztec node from environment variables with reasonable defaults.
74
+ * @returns A valid aztec node config.
75
+ */ export function getConfigEnvVars() {
76
+ return getConfigFromMappings(aztecNodeConfigMappings);
77
+ }
78
+ function createKeyStoreFromWeb3Signer(config) {
79
+ const validatorKeyStores = [];
80
+ if (config.web3SignerUrl === undefined || config.web3SignerUrl.length === 0 || config.validatorAddresses === undefined || config.validatorAddresses.length === 0) {
81
+ return undefined;
82
+ }
83
+ validatorKeyStores.push({
84
+ attester: config.validatorAddresses,
85
+ feeRecipient: config.feeRecipient ?? AztecAddress.ZERO,
86
+ coinbase: config.coinbase ?? config.validatorAddresses[0],
87
+ remoteSigner: config.web3SignerUrl,
88
+ publisher: config.sequencerPublisherAddresses ?? []
89
+ });
90
+ const keyStore = {
91
+ schemaVersion: 1,
92
+ slasher: undefined,
93
+ prover: undefined,
94
+ remoteSigner: undefined,
95
+ validators: validatorKeyStores
96
+ };
97
+ return keyStore;
98
+ }
99
+ function createKeyStoreFromPrivateKeys(config) {
100
+ const validatorKeyStores = [];
101
+ const ethPrivateKeys = config.validatorPrivateKeys ? config.validatorPrivateKeys.getValue().map((x)=>ethPrivateKeySchema.parse(x)) : [];
102
+ if (!ethPrivateKeys.length) {
103
+ return undefined;
104
+ }
105
+ const coinbase = config.coinbase ?? EthAddress.fromString(privateKeyToAddress(ethPrivateKeys[0]));
106
+ const feeRecipient = config.feeRecipient ?? AztecAddress.ZERO;
107
+ const publisherKeys = config.sequencerPublisherPrivateKeys ? config.sequencerPublisherPrivateKeys.map((k)=>ethPrivateKeySchema.parse(k.getValue())) : [];
108
+ validatorKeyStores.push({
109
+ attester: ethPrivateKeys,
110
+ feeRecipient: feeRecipient,
111
+ coinbase: coinbase,
112
+ remoteSigner: undefined,
113
+ publisher: publisherKeys
114
+ });
115
+ const keyStore = {
116
+ schemaVersion: 1,
117
+ slasher: undefined,
118
+ prover: undefined,
119
+ remoteSigner: undefined,
120
+ validators: validatorKeyStores
121
+ };
122
+ return keyStore;
123
+ }
124
+ export function createKeyStoreForValidator(config) {
125
+ if (config.web3SignerUrl !== undefined && config.web3SignerUrl.length > 0) {
126
+ return createKeyStoreFromWeb3Signer(config);
127
+ }
128
+ return createKeyStoreFromPrivateKeys(config);
129
+ }
@@ -0,0 +1,12 @@
1
+ import { type TelemetryClient } from '@aztec-labs/telemetry-client';
2
+ export declare class NodeMetrics {
3
+ private receiveTxCount;
4
+ private receiveTxDuration;
5
+ private snapshotErrorCount;
6
+ private snapshotDuration;
7
+ constructor(client: TelemetryClient, name?: string);
8
+ receivedTx(durationMs: number, isAccepted: boolean): void;
9
+ recordSnapshot(durationMs: number): void;
10
+ recordSnapshotError(): void;
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9tZXRyaWNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9ub2RlX21ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLEtBQUssZUFBZSxFQUdyQixNQUFNLDhCQUE4QixDQUFDO0FBRXRDLHFCQUFhLFdBQVc7SUFDdEIsT0FBTyxDQUFDLGNBQWMsQ0FBZ0I7SUFDdEMsT0FBTyxDQUFDLGlCQUFpQixDQUFZO0lBRXJDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBZ0I7SUFDMUMsT0FBTyxDQUFDLGdCQUFnQixDQUFZO0lBRXBDLFlBQVksTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLFNBQWMsRUFVdEQ7SUFFRCxVQUFVLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxRQU9qRDtJQUVELGNBQWMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxRQU1oQztJQUVELG1CQUFtQixTQUVsQjtDQUNGIn0=
@@ -0,0 +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,8BAA8B,CAAC;AAEtC,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,iBAAiB,CAAY;IAErC,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,gBAAgB,CAAY;IAEpC,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAc,EAUtD;IAED,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,QAOjD;IAED,cAAc,CAAC,UAAU,EAAE,MAAM,QAMhC;IAED,mBAAmB,SAElB;CACF"}
@@ -0,0 +1,36 @@
1
+ import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec-labs/telemetry-client';
2
+ export class NodeMetrics {
3
+ receiveTxCount;
4
+ receiveTxDuration;
5
+ snapshotErrorCount;
6
+ snapshotDuration;
7
+ constructor(client, name = 'AztecNode'){
8
+ const meter = client.getMeter(name);
9
+ this.receiveTxCount = createUpDownCounterWithDefault(meter, Metrics.NODE_RECEIVE_TX_COUNT, {
10
+ [Attributes.OK]: [
11
+ true,
12
+ false
13
+ ]
14
+ });
15
+ this.receiveTxDuration = meter.createHistogram(Metrics.NODE_RECEIVE_TX_DURATION);
16
+ this.snapshotDuration = meter.createHistogram(Metrics.NODE_SNAPSHOT_DURATION);
17
+ this.snapshotErrorCount = createUpDownCounterWithDefault(meter, Metrics.NODE_SNAPSHOT_ERROR_COUNT);
18
+ }
19
+ receivedTx(durationMs, isAccepted) {
20
+ this.receiveTxDuration.record(Math.ceil(durationMs), {
21
+ [Attributes.OK]: isAccepted
22
+ });
23
+ this.receiveTxCount.add(1, {
24
+ [Attributes.OK]: isAccepted
25
+ });
26
+ }
27
+ recordSnapshot(durationMs) {
28
+ if (isNaN(durationMs)) {
29
+ return;
30
+ }
31
+ this.snapshotDuration.record(Math.ceil(durationMs));
32
+ }
33
+ recordSnapshotError() {
34
+ this.snapshotErrorCount.add(1);
35
+ }
36
+ }
@@ -0,0 +1,108 @@
1
+ import type { EpochCacheInterface } from '@aztec-labs/epoch-cache';
2
+ import { type RollupContract } from '@aztec-labs/ethereum/contracts';
3
+ import { type Logger } from '@aztec-labs/foundation/log';
4
+ import { type InboxBucketSource } from '@aztec-labs/sequencer-client';
5
+ import { type AvmSimulator } from '@aztec-labs/simulator/server';
6
+ import type { L2BlockSource } from '@aztec-labs/stdlib/block';
7
+ import type { ContractDataSource } from '@aztec-labs/stdlib/contract';
8
+ import type { WorldStateSynchronizer } from '@aztec-labs/stdlib/interfaces/server';
9
+ import { type L1ToL2MessageSource } from '@aztec-labs/stdlib/messaging';
10
+ import type { CoordinationSignatureContext } from '@aztec-labs/stdlib/p2p';
11
+ import { type GlobalVariableBuilder, PublicSimulationOutput, type SimulationOverrides, type Tx } from '@aztec-labs/stdlib/tx';
12
+ import { type TelemetryClient } from '@aztec-labs/telemetry-client';
13
+ /** Inbox queries the simulator needs to predict the message bundle the next block would consume. */
14
+ type SimulatorInboxSource = InboxBucketSource & Pick<L1ToL2MessageSource, 'getInboxBucketByTotalMsgCount'>;
15
+ /** Config fields the simulator needs — a narrow subset of `AztecNodeConfig`. */
16
+ export interface NodePublicCallsSimulatorConfig {
17
+ /** Maximum total gas limit accepted for an incoming simulation. */
18
+ rpcSimulatePublicMaxGasLimit: number;
19
+ /** Maximum number of debug-log memory reads collected during simulation. */
20
+ rpcSimulatePublicMaxDebugLogMemoryReads: number;
21
+ }
22
+ /** Dependencies required to build a {@link NodePublicCallsSimulator}. */
23
+ export interface NodePublicCallsSimulatorDeps {
24
+ blockSource: L2BlockSource;
25
+ worldStateSynchronizer: WorldStateSynchronizer;
26
+ /** Inbox bucket queries, used to predict the L1-to-L2 messages the next block will consume. */
27
+ l1ToL2MessageSource: SimulatorInboxSource;
28
+ contractDataSource: ContractDataSource;
29
+ globalVariableBuilder: GlobalVariableBuilder;
30
+ /**
31
+ * Rollup contract used to build the fee-relevant L1 state overrides when opening a new checkpoint.
32
+ * Only needed when a proposed parent checkpoint exists (pipelining) or the pending chain is invalid;
33
+ * may be omitted in environments that never reach those states (e.g. TXE). When omitted, those paths
34
+ * degrade to a pinned-tips plan (non-pipelined fees) instead.
35
+ */
36
+ rollupContract?: RollupContract;
37
+ epochCache: EpochCacheInterface;
38
+ signatureContext: CoordinationSignatureContext;
39
+ config: NodePublicCallsSimulatorConfig;
40
+ /**
41
+ * AVM execution backend the public processor drives to run public calls. Optional because unit/TXE nodes
42
+ * that never call {@link simulate} are constructed without one; asserted at the simulation call site.
43
+ */
44
+ avmSimulator?: AvmSimulator;
45
+ telemetry?: TelemetryClient;
46
+ log?: Logger;
47
+ }
48
+ /**
49
+ * Simulates the public part of a transaction against a fresh world-state fork.
50
+ *
51
+ * Extracted from `AztecNodeService` so the slot/globals selection can be unit-tested without
52
+ * standing up the whole node, and to keep `server.ts` smaller.
53
+ *
54
+ * The simulator picks globals in one of two ways, mirroring how the sequencer builds the next block:
55
+ * - **When the next block continues an in-progress checkpoint** (the latest proposed block is ahead of
56
+ * the proposed-checkpoint frontier): every block in a checkpoint shares the same
57
+ * `CheckpointGlobalVariables`, so we copy the latest proposed block's globals verbatim and only
58
+ * bump the block number. No L1 calls.
59
+ * - **When the next block opens a new checkpoint** (the latest proposed block coincides with the
60
+ * proposed-checkpoint frontier): we compute fresh globals for the slot the next block will land in,
61
+ * applying the same `SimulationOverridesPlan` the sequencer applies so the simulated mana min fee
62
+ * matches what the sequencer will write into the block header.
63
+ *
64
+ * Either way it also predicts the L1-to-L2 message bundle the next block would consume and appends it
65
+ * to the fork, so a transaction consuming a message that is in the Inbox but not yet in a block
66
+ * simulates against the state it will actually run in.
67
+ */
68
+ export declare class NodePublicCallsSimulator {
69
+ private readonly blockSource;
70
+ private readonly worldStateSynchronizer;
71
+ private readonly l1ToL2MessageSource;
72
+ private readonly contractDataSource;
73
+ private readonly globalVariableBuilder;
74
+ private readonly rollupContract;
75
+ private readonly epochCache;
76
+ private readonly signatureContext;
77
+ private readonly config;
78
+ private readonly avmSimulator?;
79
+ private readonly telemetry;
80
+ private readonly log;
81
+ private readonly dateProvider;
82
+ constructor(deps: NodePublicCallsSimulatorDeps);
83
+ /**
84
+ * Simulates the public part of a transaction with the current state.
85
+ * @param tx - The transaction to simulate.
86
+ * @param skipFeeEnforcement - If true, fee enforcement is skipped.
87
+ * @param overrides - Optional pre-simulation overrides applied to the ephemeral fork and contract DB.
88
+ */
89
+ simulate(tx: Tx, skipFeeEnforcement?: boolean, overrides?: SimulationOverrides): Promise<PublicSimulationOutput>;
90
+ private appendPredictedL1ToL2Messages;
91
+ private getConsumedMessageTotal;
92
+ private copyGlobalVariablesFromLatestProposedBlock;
93
+ private buildGlobalVariablesForNewCheckpoint;
94
+ /**
95
+ * Slot the next block will land in. The first term is the sequencer's exact formula
96
+ * (`getEpochAndSlotInNextL1Slot().slot + PROPOSER_PIPELINING_SLOT_OFFSET`). The `max` with
97
+ * `proposedCheckpointSlot + 1` is an RPC-side approximation of the next build: when a proposed
98
+ * checkpoint is gossiped before its L1 slot starts, the next build (once its wall clock arrives)
99
+ * will target `parentSlot + 1`. The sequencer never advances its own target past wall clock — it
100
+ * just declines to build — so this is a prediction of inclusion globals, not literal sequencer
101
+ * behavior. The parent slot comes from the proposed checkpoint header so the slot and the
102
+ * overrides plan cannot derive from different snapshots.
103
+ */
104
+ private computeTargetSlot;
105
+ private buildSimulationOverridesPlan;
106
+ }
107
+ export {};
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9wdWJsaWNfY2FsbHNfc2ltdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9ub2RlX3B1YmxpY19jYWxsc19zaW11bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsS0FBSyxjQUFjLEVBR3BCLE1BQU0sZ0NBQWdDLENBQUM7QUFLeEMsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLDRCQUE0QixDQUFDO0FBRXZFLE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUE2QixNQUFNLDhCQUE4QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBNkMsTUFBTSw4QkFBOEIsQ0FBQztBQUc1RyxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQVUsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUE2QixzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlHLE9BQU8sRUFDTCxLQUFLLG1CQUFtQixFQUd6QixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0UsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBRTFCLHNCQUFzQixFQUN0QixLQUFLLG1CQUFtQixFQUN4QixLQUFLLEVBQUUsRUFDUixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSw4QkFBOEIsQ0FBQztBQUl4RixvR0FBb0c7QUFDcEcsS0FBSyxvQkFBb0IsR0FBRyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsK0JBQStCLENBQUMsQ0FBQztBQUUzRyxrRkFBZ0Y7QUFDaEYsTUFBTSxXQUFXLDhCQUE4QjtJQUM3QyxtRUFBbUU7SUFDbkUsNEJBQTRCLEVBQUUsTUFBTSxDQUFDO0lBQ3JDLDRFQUE0RTtJQUM1RSx1Q0FBdUMsRUFBRSxNQUFNLENBQUM7Q0FDakQ7QUFFRCx5RUFBeUU7QUFDekUsTUFBTSxXQUFXLDRCQUE0QjtJQUMzQyxXQUFXLEVBQUUsYUFBYSxDQUFDO0lBQzNCLHNCQUFzQixFQUFFLHNCQUFzQixDQUFDO0lBQy9DLCtGQUErRjtJQUMvRixtQkFBbUIsRUFBRSxvQkFBb0IsQ0FBQztJQUMxQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQztJQUN2QyxxQkFBcUIsRUFBRSxxQkFBcUIsQ0FBQztJQUM3Qzs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxFQUFFLGNBQWMsQ0FBQztJQUNoQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7SUFDaEMsZ0JBQWdCLEVBQUUsNEJBQTRCLENBQUM7SUFDL0MsTUFBTSxFQUFFLDhCQUE4QixDQUFDO0lBQ3ZDOzs7T0FHRztJQUNILFlBQVksQ0FBQyxFQUFFLFlBQVksQ0FBQztJQUM1QixTQUFTLENBQUMsRUFBRSxlQUFlLENBQUM7SUFDNUIsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILHFCQUFhLHdCQUF3QjtJQUNuQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBZ0I7SUFDNUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBeUI7SUFDaEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBdUI7SUFDM0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBcUI7SUFDeEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBd0I7SUFDOUQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQTZCO0lBQzVELE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFzQjtJQUNqRCxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUErQjtJQUNoRSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBaUM7SUFDeEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBZTtJQUM3QyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBa0I7SUFDNUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQVM7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQXNCO0lBRW5ELFlBQVksSUFBSSxFQUFFLDRCQUE0QixFQWE3QztJQUVEOzs7OztPQUtHO0lBQ1UsUUFBUSxDQUNuQixFQUFFLEVBQUUsRUFBRSxFQUNOLGtCQUFrQixVQUFRLEVBQzFCLFNBQVMsQ0FBQyxFQUFFLG1CQUFtQixHQUM5QixPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0F3R2pDO1lBWWEsNkJBQTZCO1lBeUQ3Qix1QkFBdUI7WUFrQnZCLDBDQUEwQztZQXNCMUMsb0NBQW9DO0lBc0JsRDs7Ozs7Ozs7O09BU0c7SUFDSCxPQUFPLENBQUMsaUJBQWlCO1lBbUJYLDRCQUE0QjtDQWtDM0MifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node_public_calls_simulator.d.ts","sourceRoot":"","sources":["../../src/aztec-node/node_public_calls_simulator.ts"],"names":[],"mappings":"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"}