@aztec/aztec-node 0.0.1-commit.d431d1c → 0.0.1-commit.e3c1de76

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.
@@ -9,4 +9,4 @@ export declare class NodeMetrics {
9
9
  recordSnapshot(durationMs: number): void;
10
10
  recordSnapshotError(): void;
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9tZXRyaWNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9ub2RlX21ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QyxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUV4SCxxQkFBYSxXQUFXO0lBQ3RCLE9BQU8sQ0FBQyxjQUFjLENBQWdCO0lBQ3RDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBWTtJQUVyQyxPQUFPLENBQUMsa0JBQWtCLENBQWdCO0lBQzFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBWTtJQUVwQyxZQUFZLE1BQU0sRUFBRSxlQUFlLEVBQUUsSUFBSSxTQUFjLEVBVXREO0lBRUQsVUFBVSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sUUFPakQ7SUFFRCxjQUFjLENBQUMsVUFBVSxFQUFFLE1BQU0sUUFNaEM7SUFFRCxtQkFBbUIsU0FFbEI7Q0FDRiJ9
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9tZXRyaWNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9ub2RlX21ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLHFCQUFhLFdBQVc7SUFDdEIsT0FBTyxDQUFDLGNBQWMsQ0FBZ0I7SUFDdEMsT0FBTyxDQUFDLGlCQUFpQixDQUFZO0lBRXJDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBZ0I7SUFDMUMsT0FBTyxDQUFDLGdCQUFnQixDQUFZO0lBRXBDLFlBQVksTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLFNBQWMsRUFVdEQ7SUFFRCxVQUFVLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxRQU9qRDtJQUVELGNBQWMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxRQU1oQztJQUVELG1CQUFtQixTQUVsQjtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"node_metrics.d.ts","sourceRoot":"","sources":["../../src/aztec-node/node_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAExH,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"}
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;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"}
@@ -1,4 +1,4 @@
1
- import { Attributes, Metrics } from '@aztec/telemetry-client';
1
+ import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
2
2
  export class NodeMetrics {
3
3
  receiveTxCount;
4
4
  receiveTxDuration;
@@ -6,11 +6,15 @@ export class NodeMetrics {
6
6
  snapshotDuration;
7
7
  constructor(client, name = 'AztecNode'){
8
8
  const meter = client.getMeter(name);
9
- this.receiveTxCount = meter.createUpDownCounter(Metrics.NODE_RECEIVE_TX_COUNT);
9
+ this.receiveTxCount = createUpDownCounterWithDefault(meter, Metrics.NODE_RECEIVE_TX_COUNT, {
10
+ [Attributes.OK]: [
11
+ true,
12
+ false
13
+ ]
14
+ });
10
15
  this.receiveTxDuration = meter.createHistogram(Metrics.NODE_RECEIVE_TX_DURATION);
11
16
  this.snapshotDuration = meter.createHistogram(Metrics.NODE_SNAPSHOT_DURATION);
12
- this.snapshotErrorCount = meter.createUpDownCounter(Metrics.NODE_SNAPSHOT_ERROR_COUNT);
13
- this.snapshotErrorCount.add(0);
17
+ this.snapshotErrorCount = createUpDownCounterWithDefault(meter, Metrics.NODE_SNAPSHOT_ERROR_COUNT);
14
18
  }
15
19
  receivedTx(durationMs, isAccepted) {
16
20
  this.receiveTxDuration.record(Math.ceil(durationMs), {
@@ -1,5 +1,5 @@
1
1
  import { type BlobClientInterface } from '@aztec/blob-client/client';
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';
2
+ import { ARCHIVE_HEIGHT, type L1_TO_L2_MSG_TREE_HEIGHT, type NOTE_HASH_TREE_HEIGHT } from '@aztec/constants';
3
3
  import { type EpochCacheInterface } from '@aztec/epoch-cache';
4
4
  import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
5
5
  import { BlockNumber, CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
@@ -12,7 +12,7 @@ import { type P2P, type P2PClientDeps } from '@aztec/p2p';
12
12
  import { SequencerClient, type SequencerPublisher } from '@aztec/sequencer-client';
13
13
  import { EpochPruneWatcher, type SlasherClientInterface } from '@aztec/slasher';
14
14
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
15
- import { type BlockParameter, type CheckpointedL2Block, type DataInBlock, L2BlockNew, type L2BlockSource } from '@aztec/stdlib/block';
15
+ import { BlockHash, type BlockParameter, type DataInBlock, L2Block, type L2BlockSource } from '@aztec/stdlib/block';
16
16
  import type { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
17
17
  import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress, NodeInfo, ProtocolContractAddresses } from '@aztec/stdlib/contract';
18
18
  import { GasFees } from '@aztec/stdlib/gas';
@@ -102,31 +102,29 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
102
102
  * @param block - The block parameter (block number, block hash, or 'latest').
103
103
  * @returns The requested block.
104
104
  */
105
- getBlock(block: BlockParameter): Promise<L2BlockNew | undefined>;
105
+ getBlock(block: BlockParameter): Promise<L2Block | undefined>;
106
106
  /**
107
107
  * Get a block specified by its hash.
108
108
  * @param blockHash - The block hash being requested.
109
109
  * @returns The requested block.
110
110
  */
111
- getBlockByHash(blockHash: Fr): Promise<L2BlockNew | undefined>;
111
+ getBlockByHash(blockHash: BlockHash): Promise<L2Block | undefined>;
112
112
  private buildInitialBlock;
113
113
  /**
114
114
  * Get a block specified by its archive root.
115
115
  * @param archive - The archive root being requested.
116
116
  * @returns The requested block.
117
117
  */
118
- getBlockByArchive(archive: Fr): Promise<L2BlockNew | undefined>;
118
+ getBlockByArchive(archive: Fr): Promise<L2Block | undefined>;
119
119
  /**
120
120
  * Method to request blocks. Will attempt to return all requested blocks but will return only those available.
121
121
  * @param from - The start of the range of blocks to return.
122
122
  * @param limit - The maximum number of blocks to obtain.
123
123
  * @returns The blocks requested.
124
124
  */
125
- getBlocks(from: BlockNumber, limit: number): Promise<L2BlockNew[]>;
126
- getPublishedBlocks(from: BlockNumber, limit: number): Promise<CheckpointedL2Block[]>;
127
- getPublishedCheckpoints(from: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
128
- getL2BlocksNew(from: BlockNumber, limit: number): Promise<L2BlockNew[]>;
129
- getCheckpointedBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<CheckpointedL2Block[]>;
125
+ getBlocks(from: BlockNumber, limit: number): Promise<L2Block[]>;
126
+ getCheckpoints(from: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
127
+ getCheckpointedBlocks(from: BlockNumber, limit: number): Promise<import("@aztec/stdlib/block").CheckpointedL2Block[]>;
130
128
  /**
131
129
  * Method to fetch the current min L2 fees.
132
130
  * @returns The current min L2 fees.
@@ -139,6 +137,7 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
139
137
  */
140
138
  getBlockNumber(): Promise<BlockNumber>;
141
139
  getProvenBlockNumber(): Promise<BlockNumber>;
140
+ getCheckpointedBlockNumber(): Promise<BlockNumber>;
142
141
  /**
143
142
  * Method to fetch the version of the package.
144
143
  * @returns The node package version
@@ -156,8 +155,8 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
156
155
  getChainId(): Promise<number>;
157
156
  getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
158
157
  getContract(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
159
- getPrivateLogsByTags(tags: SiloedTag[], page?: number): Promise<TxScopedL2Log[][]>;
160
- getPublicLogsByTagsFromContract(contractAddress: AztecAddress, tags: Tag[], page?: number): Promise<TxScopedL2Log[][]>;
158
+ getPrivateLogsByTags(tags: SiloedTag[], page?: number, referenceBlock?: BlockHash): Promise<TxScopedL2Log[][]>;
159
+ getPublicLogsByTagsFromContract(contractAddress: AztecAddress, tags: Tag[], page?: number, referenceBlock?: BlockHash): Promise<TxScopedL2Log[][]>;
161
160
  /**
162
161
  * Gets public logs based on the provided filter.
163
162
  * @param filter - The filter to apply to the logs.
@@ -207,8 +206,6 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
207
206
  */
208
207
  getTxsByHash(txHashes: TxHash[]): Promise<Tx[]>;
209
208
  findLeavesIndexes(block: BlockParameter, treeId: MerkleTreeId, leafValues: Fr[]): Promise<(DataInBlock<bigint> | undefined)[]>;
210
- getNullifierSiblingPath(block: BlockParameter, leafIndex: bigint): Promise<SiblingPath<typeof NULLIFIER_TREE_HEIGHT>>;
211
- getNoteHashSiblingPath(block: BlockParameter, leafIndex: bigint): Promise<SiblingPath<typeof NOTE_HASH_TREE_HEIGHT>>;
212
209
  getArchiveMembershipWitness(block: BlockParameter, archive: Fr): Promise<MembershipWitness<typeof ARCHIVE_HEIGHT> | undefined>;
213
210
  getNoteHashMembershipWitness(block: BlockParameter, noteHash: Fr): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT> | undefined>;
214
211
  getL1ToL2MessageMembershipWitness(block: BlockParameter, l1ToL2Message: Fr): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>] | undefined>;
@@ -225,8 +222,6 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
225
222
  * @returns The L2 to L1 messages (empty array if the epoch is not found).
226
223
  */
227
224
  getL2ToL1Messages(epoch: EpochNumber): Promise<Fr[][][][]>;
228
- getArchiveSiblingPath(block: BlockParameter, leafIndex: bigint): Promise<SiblingPath<typeof ARCHIVE_HEIGHT>>;
229
- getPublicDataSiblingPath(block: BlockParameter, leafIndex: bigint): Promise<SiblingPath<typeof PUBLIC_DATA_TREE_HEIGHT>>;
230
225
  getNullifierMembershipWitness(block: BlockParameter, nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
231
226
  /**
232
227
  * Returns a low nullifier membership witness for a given nullifier at a given block.
@@ -274,4 +269,4 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
274
269
  getSlashPayloads(): Promise<SlashPayloadRound[]>;
275
270
  getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]>;
276
271
  }
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQWtDLE1BQU0sMkJBQTJCLENBQUM7QUFDckcsT0FBTyxFQUNMLGNBQWMsRUFDZCxLQUFLLHdCQUF3QixFQUM3QixLQUFLLHFCQUFxQixFQUMxQixLQUFLLHFCQUFxQixFQUMxQixLQUFLLHVCQUF1QixFQUM3QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBYyxLQUFLLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJMUUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6RyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTNELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsWUFBWSxFQUFTLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBT3pFLE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLGFBQWEsRUFBb0QsTUFBTSxZQUFZLENBQUM7QUFFNUcsT0FBTyxFQUF5QixlQUFlLEVBQUUsS0FBSyxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTFHLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsS0FBSyxzQkFBc0IsRUFHNUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsWUFBWSxF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
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQWtDLE1BQU0sMkJBQTJCLENBQUM7QUFDckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLHdCQUF3QixFQUFFLEtBQUsscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RyxPQUFPLEVBQWMsS0FBSyxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTFFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBUyxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU96RSxPQUFPLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxhQUFhLEVBQW9ELE1BQU0sWUFBWSxDQUFDO0FBRTVHLE9BQU8sRUFBeUIsZUFBZSxFQUFFLEtBQUssa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRyxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLEtBQUssc0JBQXNCLEVBRzVCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSyxXQUFXLEVBQUUsT0FBTyxFQUFFLEtBQUssYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEgsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEtBQUssRUFDVixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQixRQUFRLEVBQ1IseUJBQXlCLEVBQzFCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFDTCxLQUFLLFNBQVMsRUFDZCxLQUFLLGNBQWMsRUFDbkIsS0FBSyxvQkFBb0IsRUFFekIsS0FBSyw0QkFBNEIsRUFDakMsS0FBSyxxQkFBcUIsRUFDM0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsS0FBSyxjQUFjLEVBQ25CLEtBQUssNkJBQTZCLEVBQ2xDLEtBQUssWUFBWSxFQUNqQixLQUFLLE9BQU8sRUFDWixLQUFLLG9CQUFvQixFQUN6QixLQUFLLHNCQUFzQixFQUU1QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25GLE9BQU8sRUFBYSxLQUFLLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sS0FBSyxFQUF5QixrQkFBa0IsRUFBOEIsTUFBTSxxQkFBcUIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEcsT0FBTyxFQUNMLEtBQUssV0FBVyxFQUNoQixLQUFLLHFCQUFxQixJQUFJLDhCQUE4QixFQUM1RCxLQUFLLGVBQWUsRUFDcEIsc0JBQXNCLEVBQ3RCLEVBQUUsRUFDRixLQUFLLE1BQU0sRUFDWCxTQUFTLEVBRVQsS0FBSyxrQkFBa0IsRUFDeEIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RixPQUFPLEVBRUwsS0FBSyxlQUFlLEVBQ3BCLEtBQUssU0FBUyxFQUNkLEtBQUssTUFBTSxFQUdaLE1BQU0seUJBQXlCLENBQUM7QUFlakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBOEIsTUFBTSxhQUFhLENBQUM7QUFHL0U7O0dBRUc7QUFDSCxxQkFBYSxnQkFBaUIsWUFBVyxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVM7O0lBVXpFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsZUFBZTtJQUNqQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHO0lBQ2pDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2hFLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFlBQVk7SUFDM0MsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0I7SUFDekQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxtQkFBbUI7SUFDM0QsU0FBUyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxzQkFBc0I7SUFDakUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsZUFBZSxHQUFHLFNBQVM7SUFDekQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsc0JBQXNCLEdBQUcsU0FBUztJQUNwRSxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsR0FBRyxTQUFTO0lBQzNELFNBQVMsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLEdBQUcsU0FBUztJQUNuRSxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxNQUFNO0lBQ3BDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU07SUFDbEMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSw4QkFBOEI7SUFDeEUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CO0lBQ2xELFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLE1BQU07SUFDekMsT0FBTyxDQUFDLGFBQWE7SUFDckIsT0FBTyxDQUFDLFNBQVM7SUFDakIsT0FBTyxDQUFDLEdBQUc7SUFDWCxPQUFPLENBQUMsVUFBVSxDQUFDO0lBNUJyQixPQUFPLENBQUMsT0FBTyxDQUFjO0lBQzdCLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBNkM7SUFHN0UsT0FBTyxDQUFDLG1CQUFtQixDQUFTO0lBRXBDLFNBQWdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFL0IsWUFDWSxNQUFNLEVBQUUsZUFBZSxFQUNkLFNBQVMsRUFBRSxHQUFHLEVBQ2QsV0FBVyxFQUFFLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQzdDLFVBQVUsRUFBRSxZQUFZLEVBQ3hCLGtCQUFrQixFQUFFLGtCQUFrQixFQUN0QyxtQkFBbUIsRUFBRSxtQkFBbUIsRUFDeEMsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQzlDLFNBQVMsRUFBRSxlQUFlLEdBQUcsU0FBUyxFQUN0QyxhQUFhLEVBQUUsc0JBQXNCLEdBQUcsU0FBUyxFQUNqRCxrQkFBa0IsRUFBRSxRQUFRLEdBQUcsU0FBUyxFQUN4QyxpQkFBaUIsRUFBRSxpQkFBaUIsR0FBRyxTQUFTLEVBQ2hELFNBQVMsRUFBRSxNQUFNLEVBQ2pCLE9BQU8sRUFBRSxNQUFNLEVBQ2YscUJBQXFCLEVBQUUsOEJBQThCLEVBQ3JELFVBQVUsRUFBRSxtQkFBbUIsRUFDL0IsY0FBYyxFQUFFLE1BQU0sRUFDakMsYUFBYSxFQUFFLDZCQUE2QixFQUM1QyxTQUFTLEdBQUUsZUFBc0MsRUFDakQsR0FBRyxTQUF1QixFQUMxQixVQUFVLENBQUMsaUNBQXFCLEVBT3pDO0lBRVksdUJBQXVCLElBQUksT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBR3BFO0lBRU0sU0FBUyxrREFFZjtJQUVEOzs7O09BSUc7SUFDSCxPQUFvQixhQUFhLENBQy9CLFdBQVcsRUFBRSxlQUFlLEVBQzVCLElBQUksR0FBRTtRQUNKLFNBQVMsQ0FBQyxFQUFFLGVBQWUsQ0FBQztRQUM1QixNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDaEIsU0FBUyxDQUFDLEVBQUUsa0JBQWtCLENBQUM7UUFDL0IsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFDO1FBQzVCLGFBQWEsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUMsRUFDTixPQUFPLEdBQUU7UUFDUCxtQkFBbUIsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUM7UUFDM0Msa0JBQWtCLENBQUMsRUFBRSxPQUFPLENBQUM7S0FDekIsR0FDTCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0EwVDNCO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWSxJQUFJLGVBQWUsR0FBRyxTQUFTLENBRWpEO0lBRU0sY0FBYyxJQUFJLGFBQWEsQ0FFckM7SUFFTSxxQkFBcUIsSUFBSSxrQkFBa0IsQ0FFakQ7SUFFTSxNQUFNLElBQUksR0FBRyxDQUVuQjtJQUVEOzs7T0FHRztJQUNJLHNCQUFzQixJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUU1RDtJQUVNLGFBQWEsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUVsRDtJQUVZLHFCQUFxQixJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUU5RDtJQUVEOzs7T0FHRztJQUNJLE9BQU8scUJBRWI7SUFFWSxXQUFXLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQW9CNUM7SUFFRDs7OztPQUlHO0lBQ1UsUUFBUSxDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FTekU7SUFFRDs7OztPQUlHO0lBQ1UsY0FBYyxDQUFDLFNBQVMsRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FNOUU7SUFFRCxPQUFPLENBQUMsaUJBQWlCO0lBS3pCOzs7O09BSUc7SUFDVSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLENBRXhFO0lBRUQ7Ozs7O09BS0c7SUFDVSxTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUUzRTtJQUVZLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUVqRztJQUVZLHFCQUFxQixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0VBRWxFO0lBRUQ7OztPQUdHO0lBQ1UsaUJBQWlCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUVqRDtJQUVZLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FNbEQ7SUFFRDs7O09BR0c7SUFDVSxjQUFjLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUVsRDtJQUVZLG9CQUFvQixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FFeEQ7SUFFWSwwQkFBMEIsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBRTlEO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFdkM7SUFFRDs7O09BR0c7SUFDSSxVQUFVLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUVuQztJQUVEOzs7T0FHRztJQUNJLFVBQVUsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRW5DO0lBRU0sZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLENBRXhFO0lBRU0sV0FBVyxDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixHQUFHLFNBQVMsQ0FBQyxDQUUxRjtJQUVZLG9CQUFvQixDQUMvQixJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQ2pCLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFDYixjQUFjLENBQUMsRUFBRSxTQUFTLEdBQ3pCLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBYTVCO0lBRVksK0JBQStCLENBQzFDLGVBQWUsRUFBRSxZQUFZLEVBQzdCLElBQUksRUFBRSxHQUFHLEVBQUUsRUFDWCxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQ2IsY0FBYyxDQUFDLEVBQUUsU0FBUyxHQUN6QixPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQWE1QjtJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsTUFBTSxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FFL0Q7SUFFRDs7OztPQUlHO0lBQ0gsb0JBQW9CLENBQUMsTUFBTSxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FFN0U7SUFFRDs7O09BR0c7SUFDVSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsaUJBRXpCO0lBbUJZLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FxQjVEO0lBRU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FFdkU7SUFFRDs7T0FFRztJQUNVLElBQUksa0JBYWhCO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYSxJQUFJLG1CQUFtQixHQUFHLFNBQVMsQ0FFdEQ7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUVsRTtJQUVNLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFMUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FFMUQ7SUFFRDs7OztPQUlHO0lBQ1UsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FFM0Q7SUFFWSxpQkFBaUIsQ0FDNUIsS0FBSyxFQUFFLGNBQWMsRUFDckIsTUFBTSxFQUFFLFlBQVksRUFDcEIsVUFBVSxFQUFFLEVBQUUsRUFBRSxHQUNmLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBeUQ5QztJQUVZLDJCQUEyQixDQUN0QyxLQUFLLEVBQUUsY0FBYyxFQUNyQixPQUFPLEVBQUUsRUFBRSxHQUNWLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLGNBQWMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQU0vRDtJQUVZLDRCQUE0QixDQUN2QyxLQUFLLEVBQUUsY0FBYyxFQUNyQixRQUFRLEVBQUUsRUFBRSxHQUNYLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLHFCQUFxQixDQUFDLEdBQUcsU0FBUyxDQUFDLENBU3RFO0lBRVksaUNBQWlDLENBQzVDLEtBQUssRUFBRSxjQUFjLEVBQ3JCLGFBQWEsRUFBRSxFQUFFLEdBQ2hCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBUzdFO0lBRVkscUJBQXFCLENBQUMsYUFBYSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUt0RjtJQUVEOzs7O09BSUc7SUFDVSxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHdEU7SUFFRDs7OztPQUlHO0lBQ1UsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FtQnRFO0lBRVksNkJBQTZCLENBQ3hDLEtBQUssRUFBRSxjQUFjLEVBQ3JCLFNBQVMsRUFBRSxFQUFFLEdBQ1osT0FBTyxDQUFDLDBCQUEwQixHQUFHLFNBQVMsQ0FBQyxDQWNqRDtJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDVSxnQ0FBZ0MsQ0FDM0MsS0FBSyxFQUFFLGNBQWMsRUFDckIsU0FBUyxFQUFFLEVBQUUsR0FDWixPQUFPLENBQUMsMEJBQTBCLEdBQUcsU0FBUyxDQUFDLENBY2pEO0lBRUssb0JBQW9CLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUMsQ0FhdEc7SUFFWSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBYXBHO0lBRVksY0FBYyxDQUFDLEtBQUssR0FBRSxjQUF5QixHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBZ0I5RjtJQUVEOzs7O09BSUc7SUFDVSx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBRWxGO0lBRUQ7OztRQUdJO0lBSVMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsVUFBUSxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQXlFcEc7SUFFWSxTQUFTLENBQ3BCLEVBQUUsRUFBRSxFQUFFLEVBQ04sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsR0FBRTtRQUFFLFlBQVksQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUFDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxDQUFBO0tBQU8sR0FDbEcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBeUI3QjtJQUVNLFNBQVMsSUFBSSxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FJaEQ7SUFFWSxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FlM0U7SUFFTSw0QkFBNEIsSUFBSSxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FPeEU7SUFFTSxrQ0FBa0MsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUU3RTtJQUVNLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FFcEQ7SUFFTSxpQkFBaUIsQ0FDdEIsZ0JBQWdCLEVBQUUsVUFBVSxFQUM1QixRQUFRLENBQUMsRUFBRSxVQUFVLEVBQ3JCLE1BQU0sQ0FBQyxFQUFFLFVBQVUsR0FDbEIsT0FBTyxDQUFDLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxDQUUzQztJQUVZLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQTBDaEU7SUFFWSxVQUFVLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWtDaEY7SUFFWSxTQUFTLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUl0QztJQUVNLFVBQVUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBS2pDO0lBRU0sZ0JBQWdCLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FLdEQ7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLEtBQUssR0FBRyxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBUzdFO0NBbUVGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"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"}
@@ -397,7 +397,7 @@ import { PublicProcessorFactory } from '@aztec/simulator/server';
397
397
  import { AttestationsBlockWatcher, EpochPruneWatcher, createSlasher } from '@aztec/slasher';
398
398
  import { CollectionLimitsConfig, PublicSimulatorConfig } from '@aztec/stdlib/avm';
399
399
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
400
- import { L2BlockHash, L2BlockNew } from '@aztec/stdlib/block';
400
+ import { BlockHash, L2Block } from '@aztec/stdlib/block';
401
401
  import { GasFees } from '@aztec/stdlib/gas';
402
402
  import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
403
403
  import { AztecNodeAdminConfigSchema } from '@aztec/stdlib/interfaces/client';
@@ -767,14 +767,14 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
767
767
  * @param block - The block parameter (block number, block hash, or 'latest').
768
768
  * @returns The requested block.
769
769
  */ async getBlock(block) {
770
- if (L2BlockHash.isL2BlockHash(block)) {
771
- return this.getBlockByHash(Fr.fromBuffer(block.toBuffer()));
770
+ if (BlockHash.isBlockHash(block)) {
771
+ return this.getBlockByHash(block);
772
772
  }
773
773
  const blockNumber = block === 'latest' ? await this.getBlockNumber() : block;
774
774
  if (blockNumber === BlockNumber.ZERO) {
775
775
  return this.buildInitialBlock();
776
776
  }
777
- return await this.blockSource.getL2BlockNew(blockNumber);
777
+ return await this.blockSource.getL2Block(blockNumber);
778
778
  }
779
779
  /**
780
780
  * Get a block specified by its hash.
@@ -782,21 +782,21 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
782
782
  * @returns The requested block.
783
783
  */ async getBlockByHash(blockHash) {
784
784
  const initialBlockHash = await this.#getInitialHeaderHash();
785
- if (blockHash.equals(Fr.fromBuffer(initialBlockHash.toBuffer()))) {
785
+ if (blockHash.equals(initialBlockHash)) {
786
786
  return this.buildInitialBlock();
787
787
  }
788
- return await this.blockSource.getL2BlockNewByHash(blockHash);
788
+ return await this.blockSource.getL2BlockByHash(blockHash);
789
789
  }
790
790
  buildInitialBlock() {
791
791
  const initialHeader = this.worldStateSynchronizer.getCommitted().getInitialHeader();
792
- return L2BlockNew.empty(initialHeader);
792
+ return L2Block.empty(initialHeader);
793
793
  }
794
794
  /**
795
795
  * Get a block specified by its archive root.
796
796
  * @param archive - The archive root being requested.
797
797
  * @returns The requested block.
798
798
  */ async getBlockByArchive(archive) {
799
- return await this.blockSource.getL2BlockNewByArchive(archive);
799
+ return await this.blockSource.getL2BlockByArchive(archive);
800
800
  }
801
801
  /**
802
802
  * Method to request blocks. Will attempt to return all requested blocks but will return only those available.
@@ -804,19 +804,13 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
804
804
  * @param limit - The maximum number of blocks to obtain.
805
805
  * @returns The blocks requested.
806
806
  */ async getBlocks(from, limit) {
807
- return await this.blockSource.getL2BlocksNew(from, limit) ?? [];
807
+ return await this.blockSource.getBlocks(from, BlockNumber(limit)) ?? [];
808
808
  }
809
- async getPublishedBlocks(from, limit) {
810
- return await this.blockSource.getPublishedBlocks(from, limit) ?? [];
809
+ async getCheckpoints(from, limit) {
810
+ return await this.blockSource.getCheckpoints(from, limit) ?? [];
811
811
  }
812
- async getPublishedCheckpoints(from, limit) {
813
- return await this.blockSource.getPublishedCheckpoints(from, limit) ?? [];
814
- }
815
- async getL2BlocksNew(from, limit) {
816
- return await this.blockSource.getL2BlocksNew(from, limit) ?? [];
817
- }
818
- async getCheckpointedBlocks(from, limit, proven) {
819
- return await this.blockSource.getCheckpointedBlocks(from, limit, proven) ?? [];
812
+ async getCheckpointedBlocks(from, limit) {
813
+ return await this.blockSource.getCheckpointedBlocks(from, limit) ?? [];
820
814
  }
821
815
  /**
822
816
  * Method to fetch the current min L2 fees.
@@ -842,6 +836,9 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
842
836
  async getProvenBlockNumber() {
843
837
  return await this.blockSource.getProvenBlockNumber();
844
838
  }
839
+ async getCheckpointedBlockNumber() {
840
+ return await this.blockSource.getCheckpointedL2BlockNumber();
841
+ }
845
842
  /**
846
843
  * Method to fetch the version of the package.
847
844
  * @returns The node package version
@@ -866,10 +863,28 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
866
863
  getContract(address) {
867
864
  return this.contractDataSource.getContract(address);
868
865
  }
869
- getPrivateLogsByTags(tags, page) {
866
+ async getPrivateLogsByTags(tags, page, referenceBlock) {
867
+ if (referenceBlock) {
868
+ const initialBlockHash = await this.#getInitialHeaderHash();
869
+ if (!referenceBlock.equals(initialBlockHash)) {
870
+ const header = await this.blockSource.getBlockHeaderByHash(referenceBlock);
871
+ if (!header) {
872
+ throw new Error(`Block ${referenceBlock.toString()} not found in the node. This might indicate a reorg has occurred.`);
873
+ }
874
+ }
875
+ }
870
876
  return this.logsSource.getPrivateLogsByTags(tags, page);
871
877
  }
872
- getPublicLogsByTagsFromContract(contractAddress, tags, page) {
878
+ async getPublicLogsByTagsFromContract(contractAddress, tags, page, referenceBlock) {
879
+ if (referenceBlock) {
880
+ const initialBlockHash = await this.#getInitialHeaderHash();
881
+ if (!referenceBlock.equals(initialBlockHash)) {
882
+ const header = await this.blockSource.getBlockHeaderByHash(referenceBlock);
883
+ if (!header) {
884
+ throw new Error(`Block ${referenceBlock.toString()} not found in the node. This might indicate a reorg has occurred.`);
885
+ }
886
+ }
887
+ }
873
888
  return this.logsSource.getPublicLogsByTagsFromContract(contractAddress, tags, page);
874
889
  }
875
890
  /**
@@ -911,18 +926,24 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
911
926
  });
912
927
  }
913
928
  async getTxReceipt(txHash) {
914
- let txReceipt = new TxReceipt(txHash, TxStatus.DROPPED, 'Tx dropped by P2P node.');
915
- // We first check if the tx is in pending (instead of first checking if it is mined) because if we first check
916
- // for mined and then for pending there could be a race condition where the tx is mined between the two checks
917
- // and we would incorrectly return a TxReceipt with status DROPPED
918
- if (await this.p2pClient.getTxStatus(txHash) === 'pending') {
919
- txReceipt = new TxReceipt(txHash, TxStatus.PENDING, '');
920
- }
929
+ // Check the tx pool status first. If the tx is known to the pool (pending or mined), we'll use that
930
+ // as a fallback if we don't find a settled receipt in the archiver.
931
+ const txPoolStatus = await this.p2pClient.getTxStatus(txHash);
932
+ const isKnownToPool = txPoolStatus === 'pending' || txPoolStatus === 'mined';
933
+ // Then get the actual tx from the archiver, which tracks every tx in a mined block.
921
934
  const settledTxReceipt = await this.blockSource.getSettledTxReceipt(txHash);
922
935
  if (settledTxReceipt) {
923
- txReceipt = settledTxReceipt;
936
+ // If the archiver has the receipt then return it.
937
+ return settledTxReceipt;
938
+ } else if (isKnownToPool) {
939
+ // If the tx is in the pool but not in the archiver, it's pending.
940
+ // This handles race conditions between archiver and p2p, where the archiver
941
+ // has pruned the block in which a tx was mined, but p2p has not caught up yet.
942
+ return new TxReceipt(txHash, TxStatus.PENDING, undefined, undefined);
943
+ } else {
944
+ // Otherwise, if we don't know the tx, we consider it dropped.
945
+ return new TxReceipt(txHash, TxStatus.DROPPED, undefined, 'Tx dropped by P2P node');
924
946
  }
925
- return txReceipt;
926
947
  }
927
948
  getTxEffect(txHash) {
928
949
  return this.blockSource.getTxEffect(txHash);
@@ -1018,19 +1039,11 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1018
1039
  }
1019
1040
  return {
1020
1041
  l2BlockNumber: BlockNumber(Number(blockNumber)),
1021
- l2BlockHash: L2BlockHash.fromField(blockHash),
1042
+ l2BlockHash: new BlockHash(blockHash),
1022
1043
  data: index
1023
1044
  };
1024
1045
  });
1025
1046
  }
1026
- async getNullifierSiblingPath(block, leafIndex) {
1027
- const committedDb = await this.#getWorldState(block);
1028
- return committedDb.getSiblingPath(MerkleTreeId.NULLIFIER_TREE, leafIndex);
1029
- }
1030
- async getNoteHashSiblingPath(block, leafIndex) {
1031
- const committedDb = await this.#getWorldState(block);
1032
- return committedDb.getSiblingPath(MerkleTreeId.NOTE_HASH_TREE, leafIndex);
1033
- }
1034
1047
  async getArchiveMembershipWitness(block, archive) {
1035
1048
  const committedDb = await this.#getWorldState(block);
1036
1049
  const [pathAndIndex] = await committedDb.findSiblingPaths(MerkleTreeId.ARCHIVE, [
@@ -1076,12 +1089,13 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1076
1089
  * @param epoch - The epoch at which to get the data.
1077
1090
  * @returns The L2 to L1 messages (empty array if the epoch is not found).
1078
1091
  */ async getL2ToL1Messages(epoch) {
1079
- // Assumes `getBlocksForEpoch` returns blocks in ascending order of block number.
1080
- const blocks = await this.blockSource.getBlocksForEpoch(epoch);
1092
+ // Assumes `getCheckpointedBlocksForEpoch` returns blocks in ascending order of block number.
1093
+ const checkpointedBlocks = await this.blockSource.getCheckpointedBlocksForEpoch(epoch);
1081
1094
  const blocksInCheckpoints = [];
1082
1095
  let previousSlotNumber = SlotNumber.ZERO;
1083
1096
  let checkpointIndex = -1;
1084
- for (const block of blocks){
1097
+ for (const checkpointedBlock of checkpointedBlocks){
1098
+ const block = checkpointedBlock.block;
1085
1099
  const slotNumber = block.header.globalVariables.slotNumber;
1086
1100
  if (slotNumber !== previousSlotNumber) {
1087
1101
  checkpointIndex++;
@@ -1092,14 +1106,6 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1092
1106
  }
1093
1107
  return blocksInCheckpoints.map((blocks)=>blocks.map((block)=>block.body.txEffects.map((txEffect)=>txEffect.l2ToL1Msgs)));
1094
1108
  }
1095
- async getArchiveSiblingPath(block, leafIndex) {
1096
- const committedDb = await this.#getWorldState(block);
1097
- return committedDb.getSiblingPath(MerkleTreeId.ARCHIVE, leafIndex);
1098
- }
1099
- async getPublicDataSiblingPath(block, leafIndex) {
1100
- const committedDb = await this.#getWorldState(block);
1101
- return committedDb.getSiblingPath(MerkleTreeId.PUBLIC_DATA_TREE, leafIndex);
1102
- }
1103
1109
  async getNullifierMembershipWitness(block, nullifier) {
1104
1110
  const db = await this.#getWorldState(block);
1105
1111
  const [witness] = await db.findSiblingPaths(MerkleTreeId.NULLIFIER_TREE, [
@@ -1164,14 +1170,13 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1164
1170
  return preimage.leaf.value;
1165
1171
  }
1166
1172
  async getBlockHeader(block = 'latest') {
1167
- if (L2BlockHash.isL2BlockHash(block)) {
1173
+ if (BlockHash.isBlockHash(block)) {
1168
1174
  const initialBlockHash = await this.#getInitialHeaderHash();
1169
1175
  if (block.equals(initialBlockHash)) {
1170
1176
  // Block source doesn't handle initial header so we need to handle the case separately.
1171
1177
  return this.worldStateSynchronizer.getCommitted().getInitialHeader();
1172
1178
  }
1173
- const blockHashFr = Fr.fromBuffer(block.toBuffer());
1174
- return this.blockSource.getBlockHeaderByHash(blockHashFr);
1179
+ return this.blockSource.getBlockHeaderByHash(block);
1175
1180
  } else {
1176
1181
  // Block source doesn't handle initial header so we need to handle the case separately.
1177
1182
  const blockNumber = block === 'latest' ? await this.getBlockNumber() : block;
@@ -1205,7 +1210,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1205
1210
  const coinbase = EthAddress.ZERO;
1206
1211
  const feeRecipient = AztecAddress.ZERO;
1207
1212
  const newGlobalVariables = await this.globalVariableBuilder.buildGlobalVariables(blockNumber, coinbase, feeRecipient);
1208
- const publicProcessorFactory = new PublicProcessorFactory(this.contractDataSource, new DateProvider(), this.telemetry);
1213
+ const publicProcessorFactory = new PublicProcessorFactory(this.contractDataSource, new DateProvider(), this.telemetry, this.log.getBindings());
1209
1214
  this.log.verbose(`Simulating public calls for tx ${txHash}`, {
1210
1215
  globalVariables: newGlobalVariables.toInspect(),
1211
1216
  txHash,
@@ -1256,7 +1261,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1256
1261
  gasFees: await this.getCurrentMinFees(),
1257
1262
  skipFeeEnforcement,
1258
1263
  txsPermitted: !this.config.disableTransactions
1259
- });
1264
+ }, this.log.getBindings());
1260
1265
  return await validator.validateTx(tx);
1261
1266
  }
1262
1267
  getConfig() {
@@ -1400,7 +1405,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1400
1405
  }
1401
1406
  #getInitialHeaderHash() {
1402
1407
  if (!this.initialHeaderHashPromise) {
1403
- this.initialHeaderHashPromise = this.worldStateSynchronizer.getCommitted().getInitialHeader().hash().then((hash)=>L2BlockHash.fromField(hash));
1408
+ this.initialHeaderHashPromise = this.worldStateSynchronizer.getCommitted().getInitialHeader().hash();
1404
1409
  }
1405
1410
  return this.initialHeaderHashPromise;
1406
1411
  }
@@ -1420,14 +1425,13 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1420
1425
  this.log.debug(`Using committed db for block 'latest', world state synced upto ${blockSyncedTo}`);
1421
1426
  return this.worldStateSynchronizer.getCommitted();
1422
1427
  }
1423
- if (L2BlockHash.isL2BlockHash(block)) {
1428
+ if (BlockHash.isBlockHash(block)) {
1424
1429
  const initialBlockHash = await this.#getInitialHeaderHash();
1425
1430
  if (block.equals(initialBlockHash)) {
1426
1431
  // Block source doesn't handle initial header so we need to handle the case separately.
1427
1432
  return this.worldStateSynchronizer.getSnapshot(BlockNumber.ZERO);
1428
1433
  }
1429
- const blockHashFr = Fr.fromBuffer(block.toBuffer());
1430
- const header = await this.blockSource.getBlockHeaderByHash(blockHashFr);
1434
+ const header = await this.blockSource.getBlockHeaderByHash(block);
1431
1435
  if (!header) {
1432
1436
  throw new Error(`Block hash ${block.toString()} not found when querying world state. If the node API has been queried with anchor block hash possibly a reorg has occurred.`);
1433
1437
  }
@@ -6,4 +6,4 @@ import type { SlasherConfig } from '@aztec/stdlib/interfaces/server';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlbnRpbmVsL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pDLHdCQUFzQixjQUFjLENBQ2xDLFVBQVUsRUFBRSxVQUFVLEVBQ3RCLFFBQVEsRUFBRSxhQUFhLEVBQ3ZCLEdBQUcsRUFBRSxTQUFTLEVBQ2QsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLEdBQUcsYUFBYSxFQUN4RCxNQUFNLHlDQUFnQyxHQUNyQyxPQUFPLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQWlCL0IifQ==
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;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,CAiB/B"}
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"}
@@ -6,7 +6,7 @@ export async function createSentinel(epochCache, archiver, p2p, config, logger =
6
6
  if (!config.sentinelEnabled) {
7
7
  return undefined;
8
8
  }
9
- const kvStore = await createStore('sentinel', SentinelStore.SCHEMA_VERSION, config, createLogger('node:sentinel:lmdb'));
9
+ const kvStore = await createStore('sentinel', SentinelStore.SCHEMA_VERSION, config, logger.getBindings());
10
10
  const storeHistoryLength = config.sentinelHistoryLengthInEpochs * epochCache.getL1Constants().epochDuration;
11
11
  const storeHistoricProvenPerformanceLength = config.sentinelHistoricProvenPerformanceLengthInEpochs;
12
12
  const sentinelStore = new SentinelStore(kvStore, {
@@ -82,7 +82,7 @@ export class Sentinel extends EventEmitter {
82
82
  return;
83
83
  }
84
84
  const blockNumber = event.block.number;
85
- const block = await this.archiver.getL2BlockNew(blockNumber);
85
+ const block = await this.archiver.getL2Block(blockNumber);
86
86
  if (!block) {
87
87
  this.logger.error(`Failed to get block ${blockNumber}`, {
88
88
  block
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/aztec-node",
3
- "version": "0.0.1-commit.d431d1c",
3
+ "version": "0.0.1-commit.e3c1de76",
4
4
  "main": "dest/index.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -65,30 +65,30 @@
65
65
  ]
66
66
  },
67
67
  "dependencies": {
68
- "@aztec/archiver": "0.0.1-commit.d431d1c",
69
- "@aztec/bb-prover": "0.0.1-commit.d431d1c",
70
- "@aztec/blob-client": "0.0.1-commit.d431d1c",
71
- "@aztec/constants": "0.0.1-commit.d431d1c",
72
- "@aztec/epoch-cache": "0.0.1-commit.d431d1c",
73
- "@aztec/ethereum": "0.0.1-commit.d431d1c",
74
- "@aztec/foundation": "0.0.1-commit.d431d1c",
75
- "@aztec/kv-store": "0.0.1-commit.d431d1c",
76
- "@aztec/l1-artifacts": "0.0.1-commit.d431d1c",
77
- "@aztec/merkle-tree": "0.0.1-commit.d431d1c",
78
- "@aztec/node-keystore": "0.0.1-commit.d431d1c",
79
- "@aztec/node-lib": "0.0.1-commit.d431d1c",
80
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.d431d1c",
81
- "@aztec/p2p": "0.0.1-commit.d431d1c",
82
- "@aztec/protocol-contracts": "0.0.1-commit.d431d1c",
83
- "@aztec/prover-client": "0.0.1-commit.d431d1c",
84
- "@aztec/sequencer-client": "0.0.1-commit.d431d1c",
85
- "@aztec/simulator": "0.0.1-commit.d431d1c",
86
- "@aztec/slasher": "0.0.1-commit.d431d1c",
87
- "@aztec/stdlib": "0.0.1-commit.d431d1c",
88
- "@aztec/telemetry-client": "0.0.1-commit.d431d1c",
89
- "@aztec/validator-client": "0.0.1-commit.d431d1c",
90
- "@aztec/validator-ha-signer": "0.0.1-commit.d431d1c",
91
- "@aztec/world-state": "0.0.1-commit.d431d1c",
68
+ "@aztec/archiver": "0.0.1-commit.e3c1de76",
69
+ "@aztec/bb-prover": "0.0.1-commit.e3c1de76",
70
+ "@aztec/blob-client": "0.0.1-commit.e3c1de76",
71
+ "@aztec/constants": "0.0.1-commit.e3c1de76",
72
+ "@aztec/epoch-cache": "0.0.1-commit.e3c1de76",
73
+ "@aztec/ethereum": "0.0.1-commit.e3c1de76",
74
+ "@aztec/foundation": "0.0.1-commit.e3c1de76",
75
+ "@aztec/kv-store": "0.0.1-commit.e3c1de76",
76
+ "@aztec/l1-artifacts": "0.0.1-commit.e3c1de76",
77
+ "@aztec/merkle-tree": "0.0.1-commit.e3c1de76",
78
+ "@aztec/node-keystore": "0.0.1-commit.e3c1de76",
79
+ "@aztec/node-lib": "0.0.1-commit.e3c1de76",
80
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.e3c1de76",
81
+ "@aztec/p2p": "0.0.1-commit.e3c1de76",
82
+ "@aztec/protocol-contracts": "0.0.1-commit.e3c1de76",
83
+ "@aztec/prover-client": "0.0.1-commit.e3c1de76",
84
+ "@aztec/sequencer-client": "0.0.1-commit.e3c1de76",
85
+ "@aztec/simulator": "0.0.1-commit.e3c1de76",
86
+ "@aztec/slasher": "0.0.1-commit.e3c1de76",
87
+ "@aztec/stdlib": "0.0.1-commit.e3c1de76",
88
+ "@aztec/telemetry-client": "0.0.1-commit.e3c1de76",
89
+ "@aztec/validator-client": "0.0.1-commit.e3c1de76",
90
+ "@aztec/validator-ha-signer": "0.0.1-commit.e3c1de76",
91
+ "@aztec/world-state": "0.0.1-commit.e3c1de76",
92
92
  "koa": "^2.16.1",
93
93
  "koa-router": "^13.1.1",
94
94
  "tslib": "^2.4.0",
@@ -1,4 +1,11 @@
1
- import { Attributes, type Histogram, Metrics, type TelemetryClient, type UpDownCounter } from '@aztec/telemetry-client';
1
+ import {
2
+ Attributes,
3
+ type Histogram,
4
+ Metrics,
5
+ type TelemetryClient,
6
+ type UpDownCounter,
7
+ createUpDownCounterWithDefault,
8
+ } from '@aztec/telemetry-client';
2
9
 
3
10
  export class NodeMetrics {
4
11
  private receiveTxCount: UpDownCounter;
@@ -9,14 +16,14 @@ export class NodeMetrics {
9
16
 
10
17
  constructor(client: TelemetryClient, name = 'AztecNode') {
11
18
  const meter = client.getMeter(name);
12
- this.receiveTxCount = meter.createUpDownCounter(Metrics.NODE_RECEIVE_TX_COUNT);
19
+ this.receiveTxCount = createUpDownCounterWithDefault(meter, Metrics.NODE_RECEIVE_TX_COUNT, {
20
+ [Attributes.OK]: [true, false],
21
+ });
13
22
  this.receiveTxDuration = meter.createHistogram(Metrics.NODE_RECEIVE_TX_DURATION);
14
23
 
15
24
  this.snapshotDuration = meter.createHistogram(Metrics.NODE_SNAPSHOT_DURATION);
16
25
 
17
- this.snapshotErrorCount = meter.createUpDownCounter(Metrics.NODE_SNAPSHOT_ERROR_COUNT);
18
-
19
- this.snapshotErrorCount.add(0);
26
+ this.snapshotErrorCount = createUpDownCounterWithDefault(meter, Metrics.NODE_SNAPSHOT_ERROR_COUNT);
20
27
  }
21
28
 
22
29
  receivedTx(durationMs: number, isAccepted: boolean) {
@@ -1,13 +1,7 @@
1
1
  import { Archiver, createArchiver } from '@aztec/archiver';
2
2
  import { BBCircuitVerifier, QueuedIVCVerifier, TestCircuitVerifier } from '@aztec/bb-prover';
3
3
  import { type BlobClientInterface, createBlobClientWithFileStores } from '@aztec/blob-client/client';
4
- import {
5
- ARCHIVE_HEIGHT,
6
- type L1_TO_L2_MSG_TREE_HEIGHT,
7
- type NOTE_HASH_TREE_HEIGHT,
8
- type NULLIFIER_TREE_HEIGHT,
9
- type PUBLIC_DATA_TREE_HEIGHT,
10
- } from '@aztec/constants';
4
+ import { ARCHIVE_HEIGHT, type L1_TO_L2_MSG_TREE_HEIGHT, type NOTE_HASH_TREE_HEIGHT } from '@aztec/constants';
11
5
  import { EpochCache, type EpochCacheInterface } from '@aztec/epoch-cache';
12
6
  import { createEthereumChain } from '@aztec/ethereum/chain';
13
7
  import { getPublicClient } from '@aztec/ethereum/client';
@@ -41,14 +35,7 @@ import {
41
35
  } from '@aztec/slasher';
42
36
  import { CollectionLimitsConfig, PublicSimulatorConfig } from '@aztec/stdlib/avm';
43
37
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
44
- import {
45
- type BlockParameter,
46
- type CheckpointedL2Block,
47
- type DataInBlock,
48
- L2BlockHash,
49
- L2BlockNew,
50
- type L2BlockSource,
51
- } from '@aztec/stdlib/block';
38
+ import { BlockHash, type BlockParameter, type DataInBlock, L2Block, type L2BlockSource } from '@aztec/stdlib/block';
52
39
  import type { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
53
40
  import type {
54
41
  ContractClassPublic,
@@ -126,7 +113,7 @@ import { NodeMetrics } from './node_metrics.js';
126
113
  */
127
114
  export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
128
115
  private metrics: NodeMetrics;
129
- private initialHeaderHashPromise: Promise<L2BlockHash> | undefined = undefined;
116
+ private initialHeaderHashPromise: Promise<BlockHash> | undefined = undefined;
130
117
 
131
118
  // Prevent two snapshot operations to happen simultaneously
132
119
  private isUploadingSnapshot = false;
@@ -576,15 +563,15 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
576
563
  * @param block - The block parameter (block number, block hash, or 'latest').
577
564
  * @returns The requested block.
578
565
  */
579
- public async getBlock(block: BlockParameter): Promise<L2BlockNew | undefined> {
580
- if (L2BlockHash.isL2BlockHash(block)) {
581
- return this.getBlockByHash(Fr.fromBuffer(block.toBuffer()));
566
+ public async getBlock(block: BlockParameter): Promise<L2Block | undefined> {
567
+ if (BlockHash.isBlockHash(block)) {
568
+ return this.getBlockByHash(block);
582
569
  }
583
570
  const blockNumber = block === 'latest' ? await this.getBlockNumber() : (block as BlockNumber);
584
571
  if (blockNumber === BlockNumber.ZERO) {
585
572
  return this.buildInitialBlock();
586
573
  }
587
- return await this.blockSource.getL2BlockNew(blockNumber);
574
+ return await this.blockSource.getL2Block(blockNumber);
588
575
  }
589
576
 
590
577
  /**
@@ -592,17 +579,17 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
592
579
  * @param blockHash - The block hash being requested.
593
580
  * @returns The requested block.
594
581
  */
595
- public async getBlockByHash(blockHash: Fr): Promise<L2BlockNew | undefined> {
582
+ public async getBlockByHash(blockHash: BlockHash): Promise<L2Block | undefined> {
596
583
  const initialBlockHash = await this.#getInitialHeaderHash();
597
- if (blockHash.equals(Fr.fromBuffer(initialBlockHash.toBuffer()))) {
584
+ if (blockHash.equals(initialBlockHash)) {
598
585
  return this.buildInitialBlock();
599
586
  }
600
- return await this.blockSource.getL2BlockNewByHash(blockHash);
587
+ return await this.blockSource.getL2BlockByHash(blockHash);
601
588
  }
602
589
 
603
- private buildInitialBlock(): L2BlockNew {
590
+ private buildInitialBlock(): L2Block {
604
591
  const initialHeader = this.worldStateSynchronizer.getCommitted().getInitialHeader();
605
- return L2BlockNew.empty(initialHeader);
592
+ return L2Block.empty(initialHeader);
606
593
  }
607
594
 
608
595
  /**
@@ -610,8 +597,8 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
610
597
  * @param archive - The archive root being requested.
611
598
  * @returns The requested block.
612
599
  */
613
- public async getBlockByArchive(archive: Fr): Promise<L2BlockNew | undefined> {
614
- return await this.blockSource.getL2BlockNewByArchive(archive);
600
+ public async getBlockByArchive(archive: Fr): Promise<L2Block | undefined> {
601
+ return await this.blockSource.getL2BlockByArchive(archive);
615
602
  }
616
603
 
617
604
  /**
@@ -620,24 +607,16 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
620
607
  * @param limit - The maximum number of blocks to obtain.
621
608
  * @returns The blocks requested.
622
609
  */
623
- public async getBlocks(from: BlockNumber, limit: number): Promise<L2BlockNew[]> {
624
- return (await this.blockSource.getL2BlocksNew(from, limit)) ?? [];
625
- }
626
-
627
- public async getPublishedBlocks(from: BlockNumber, limit: number): Promise<CheckpointedL2Block[]> {
628
- return (await this.blockSource.getPublishedBlocks(from, limit)) ?? [];
629
- }
630
-
631
- public async getPublishedCheckpoints(from: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]> {
632
- return (await this.blockSource.getPublishedCheckpoints(from, limit)) ?? [];
610
+ public async getBlocks(from: BlockNumber, limit: number): Promise<L2Block[]> {
611
+ return (await this.blockSource.getBlocks(from, BlockNumber(limit))) ?? [];
633
612
  }
634
613
 
635
- public async getL2BlocksNew(from: BlockNumber, limit: number): Promise<L2BlockNew[]> {
636
- return (await this.blockSource.getL2BlocksNew(from, limit)) ?? [];
614
+ public async getCheckpoints(from: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]> {
615
+ return (await this.blockSource.getCheckpoints(from, limit)) ?? [];
637
616
  }
638
617
 
639
- public async getCheckpointedBlocks(from: BlockNumber, limit: number, proven?: boolean) {
640
- return (await this.blockSource.getCheckpointedBlocks(from, limit, proven)) ?? [];
618
+ public async getCheckpointedBlocks(from: BlockNumber, limit: number) {
619
+ return (await this.blockSource.getCheckpointedBlocks(from, limit)) ?? [];
641
620
  }
642
621
 
643
622
  /**
@@ -668,6 +647,10 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
668
647
  return await this.blockSource.getProvenBlockNumber();
669
648
  }
670
649
 
650
+ public async getCheckpointedBlockNumber(): Promise<BlockNumber> {
651
+ return await this.blockSource.getCheckpointedL2BlockNumber();
652
+ }
653
+
671
654
  /**
672
655
  * Method to fetch the version of the package.
673
656
  * @returns The node package version
@@ -700,15 +683,42 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
700
683
  return this.contractDataSource.getContract(address);
701
684
  }
702
685
 
703
- public getPrivateLogsByTags(tags: SiloedTag[], page?: number): Promise<TxScopedL2Log[][]> {
686
+ public async getPrivateLogsByTags(
687
+ tags: SiloedTag[],
688
+ page?: number,
689
+ referenceBlock?: BlockHash,
690
+ ): Promise<TxScopedL2Log[][]> {
691
+ if (referenceBlock) {
692
+ const initialBlockHash = await this.#getInitialHeaderHash();
693
+ if (!referenceBlock.equals(initialBlockHash)) {
694
+ const header = await this.blockSource.getBlockHeaderByHash(referenceBlock);
695
+ if (!header) {
696
+ throw new Error(
697
+ `Block ${referenceBlock.toString()} not found in the node. This might indicate a reorg has occurred.`,
698
+ );
699
+ }
700
+ }
701
+ }
704
702
  return this.logsSource.getPrivateLogsByTags(tags, page);
705
703
  }
706
704
 
707
- public getPublicLogsByTagsFromContract(
705
+ public async getPublicLogsByTagsFromContract(
708
706
  contractAddress: AztecAddress,
709
707
  tags: Tag[],
710
708
  page?: number,
709
+ referenceBlock?: BlockHash,
711
710
  ): Promise<TxScopedL2Log[][]> {
711
+ if (referenceBlock) {
712
+ const initialBlockHash = await this.#getInitialHeaderHash();
713
+ if (!referenceBlock.equals(initialBlockHash)) {
714
+ const header = await this.blockSource.getBlockHeaderByHash(referenceBlock);
715
+ if (!header) {
716
+ throw new Error(
717
+ `Block ${referenceBlock.toString()} not found in the node. This might indicate a reorg has occurred.`,
718
+ );
719
+ }
720
+ }
721
+ }
712
722
  return this.logsSource.getPublicLogsByTagsFromContract(contractAddress, tags, page);
713
723
  }
714
724
 
@@ -756,21 +766,26 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
756
766
  }
757
767
 
758
768
  public async getTxReceipt(txHash: TxHash): Promise<TxReceipt> {
759
- let txReceipt = new TxReceipt(txHash, TxStatus.DROPPED, 'Tx dropped by P2P node.');
760
-
761
- // We first check if the tx is in pending (instead of first checking if it is mined) because if we first check
762
- // for mined and then for pending there could be a race condition where the tx is mined between the two checks
763
- // and we would incorrectly return a TxReceipt with status DROPPED
764
- if ((await this.p2pClient.getTxStatus(txHash)) === 'pending') {
765
- txReceipt = new TxReceipt(txHash, TxStatus.PENDING, '');
766
- }
769
+ // Check the tx pool status first. If the tx is known to the pool (pending or mined), we'll use that
770
+ // as a fallback if we don't find a settled receipt in the archiver.
771
+ const txPoolStatus = await this.p2pClient.getTxStatus(txHash);
772
+ const isKnownToPool = txPoolStatus === 'pending' || txPoolStatus === 'mined';
767
773
 
774
+ // Then get the actual tx from the archiver, which tracks every tx in a mined block.
768
775
  const settledTxReceipt = await this.blockSource.getSettledTxReceipt(txHash);
776
+
769
777
  if (settledTxReceipt) {
770
- txReceipt = settledTxReceipt;
778
+ // If the archiver has the receipt then return it.
779
+ return settledTxReceipt;
780
+ } else if (isKnownToPool) {
781
+ // If the tx is in the pool but not in the archiver, it's pending.
782
+ // This handles race conditions between archiver and p2p, where the archiver
783
+ // has pruned the block in which a tx was mined, but p2p has not caught up yet.
784
+ return new TxReceipt(txHash, TxStatus.PENDING, undefined, undefined);
785
+ } else {
786
+ // Otherwise, if we don't know the tx, we consider it dropped.
787
+ return new TxReceipt(txHash, TxStatus.DROPPED, undefined, 'Tx dropped by P2P node');
771
788
  }
772
-
773
- return txReceipt;
774
789
  }
775
790
 
776
791
  public getTxEffect(txHash: TxHash): Promise<IndexedTxEffect | undefined> {
@@ -892,28 +907,12 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
892
907
  }
893
908
  return {
894
909
  l2BlockNumber: BlockNumber(Number(blockNumber)),
895
- l2BlockHash: L2BlockHash.fromField(blockHash),
910
+ l2BlockHash: new BlockHash(blockHash),
896
911
  data: index,
897
912
  };
898
913
  });
899
914
  }
900
915
 
901
- public async getNullifierSiblingPath(
902
- block: BlockParameter,
903
- leafIndex: bigint,
904
- ): Promise<SiblingPath<typeof NULLIFIER_TREE_HEIGHT>> {
905
- const committedDb = await this.#getWorldState(block);
906
- return committedDb.getSiblingPath(MerkleTreeId.NULLIFIER_TREE, leafIndex);
907
- }
908
-
909
- public async getNoteHashSiblingPath(
910
- block: BlockParameter,
911
- leafIndex: bigint,
912
- ): Promise<SiblingPath<typeof NOTE_HASH_TREE_HEIGHT>> {
913
- const committedDb = await this.#getWorldState(block);
914
- return committedDb.getSiblingPath(MerkleTreeId.NOTE_HASH_TREE, leafIndex);
915
- }
916
-
917
916
  public async getArchiveMembershipWitness(
918
917
  block: BlockParameter,
919
918
  archive: Fr,
@@ -976,12 +975,13 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
976
975
  * @returns The L2 to L1 messages (empty array if the epoch is not found).
977
976
  */
978
977
  public async getL2ToL1Messages(epoch: EpochNumber): Promise<Fr[][][][]> {
979
- // Assumes `getBlocksForEpoch` returns blocks in ascending order of block number.
980
- const blocks = await this.blockSource.getBlocksForEpoch(epoch);
981
- const blocksInCheckpoints: L2BlockNew[][] = [];
978
+ // Assumes `getCheckpointedBlocksForEpoch` returns blocks in ascending order of block number.
979
+ const checkpointedBlocks = await this.blockSource.getCheckpointedBlocksForEpoch(epoch);
980
+ const blocksInCheckpoints: L2Block[][] = [];
982
981
  let previousSlotNumber = SlotNumber.ZERO;
983
982
  let checkpointIndex = -1;
984
- for (const block of blocks) {
983
+ for (const checkpointedBlock of checkpointedBlocks) {
984
+ const block = checkpointedBlock.block;
985
985
  const slotNumber = block.header.globalVariables.slotNumber;
986
986
  if (slotNumber !== previousSlotNumber) {
987
987
  checkpointIndex++;
@@ -995,22 +995,6 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
995
995
  );
996
996
  }
997
997
 
998
- public async getArchiveSiblingPath(
999
- block: BlockParameter,
1000
- leafIndex: bigint,
1001
- ): Promise<SiblingPath<typeof ARCHIVE_HEIGHT>> {
1002
- const committedDb = await this.#getWorldState(block);
1003
- return committedDb.getSiblingPath(MerkleTreeId.ARCHIVE, leafIndex);
1004
- }
1005
-
1006
- public async getPublicDataSiblingPath(
1007
- block: BlockParameter,
1008
- leafIndex: bigint,
1009
- ): Promise<SiblingPath<typeof PUBLIC_DATA_TREE_HEIGHT>> {
1010
- const committedDb = await this.#getWorldState(block);
1011
- return committedDb.getSiblingPath(MerkleTreeId.PUBLIC_DATA_TREE, leafIndex);
1012
- }
1013
-
1014
998
  public async getNullifierMembershipWitness(
1015
999
  block: BlockParameter,
1016
1000
  nullifier: Fr,
@@ -1094,14 +1078,13 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
1094
1078
  }
1095
1079
 
1096
1080
  public async getBlockHeader(block: BlockParameter = 'latest'): Promise<BlockHeader | undefined> {
1097
- if (L2BlockHash.isL2BlockHash(block)) {
1081
+ if (BlockHash.isBlockHash(block)) {
1098
1082
  const initialBlockHash = await this.#getInitialHeaderHash();
1099
1083
  if (block.equals(initialBlockHash)) {
1100
1084
  // Block source doesn't handle initial header so we need to handle the case separately.
1101
1085
  return this.worldStateSynchronizer.getCommitted().getInitialHeader();
1102
1086
  }
1103
- const blockHashFr = Fr.fromBuffer(block.toBuffer());
1104
- return this.blockSource.getBlockHeaderByHash(blockHashFr);
1087
+ return this.blockSource.getBlockHeaderByHash(block);
1105
1088
  } else {
1106
1089
  // Block source doesn't handle initial header so we need to handle the case separately.
1107
1090
  const blockNumber = block === 'latest' ? await this.getBlockNumber() : (block as BlockNumber);
@@ -1159,6 +1142,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
1159
1142
  this.contractDataSource,
1160
1143
  new DateProvider(),
1161
1144
  this.telemetry,
1145
+ this.log.getBindings(),
1162
1146
  );
1163
1147
 
1164
1148
  this.log.verbose(`Simulating public calls for tx ${txHash}`, {
@@ -1212,16 +1196,22 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
1212
1196
  // We accept transactions if they are not expired by the next slot (checked based on the IncludeByTimestamp field)
1213
1197
  const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
1214
1198
  const blockNumber = BlockNumber((await this.blockSource.getBlockNumber()) + 1);
1215
- const validator = createValidatorForAcceptingTxs(db, this.contractDataSource, verifier, {
1216
- timestamp: nextSlotTimestamp,
1217
- blockNumber,
1218
- l1ChainId: this.l1ChainId,
1219
- rollupVersion: this.version,
1220
- setupAllowList: this.config.txPublicSetupAllowList ?? (await getDefaultAllowedSetupFunctions()),
1221
- gasFees: await this.getCurrentMinFees(),
1222
- skipFeeEnforcement,
1223
- txsPermitted: !this.config.disableTransactions,
1224
- });
1199
+ const validator = createValidatorForAcceptingTxs(
1200
+ db,
1201
+ this.contractDataSource,
1202
+ verifier,
1203
+ {
1204
+ timestamp: nextSlotTimestamp,
1205
+ blockNumber,
1206
+ l1ChainId: this.l1ChainId,
1207
+ rollupVersion: this.version,
1208
+ setupAllowList: this.config.txPublicSetupAllowList ?? (await getDefaultAllowedSetupFunctions()),
1209
+ gasFees: await this.getCurrentMinFees(),
1210
+ skipFeeEnforcement,
1211
+ txsPermitted: !this.config.disableTransactions,
1212
+ },
1213
+ this.log.getBindings(),
1214
+ );
1225
1215
 
1226
1216
  return await validator.validateTx(tx);
1227
1217
  }
@@ -1385,13 +1375,9 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
1385
1375
  }
1386
1376
  }
1387
1377
 
1388
- #getInitialHeaderHash(): Promise<L2BlockHash> {
1378
+ #getInitialHeaderHash(): Promise<BlockHash> {
1389
1379
  if (!this.initialHeaderHashPromise) {
1390
- this.initialHeaderHashPromise = this.worldStateSynchronizer
1391
- .getCommitted()
1392
- .getInitialHeader()
1393
- .hash()
1394
- .then(hash => L2BlockHash.fromField(hash));
1380
+ this.initialHeaderHashPromise = this.worldStateSynchronizer.getCommitted().getInitialHeader().hash();
1395
1381
  }
1396
1382
  return this.initialHeaderHashPromise;
1397
1383
  }
@@ -1415,15 +1401,14 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
1415
1401
  return this.worldStateSynchronizer.getCommitted();
1416
1402
  }
1417
1403
 
1418
- if (L2BlockHash.isL2BlockHash(block)) {
1404
+ if (BlockHash.isBlockHash(block)) {
1419
1405
  const initialBlockHash = await this.#getInitialHeaderHash();
1420
1406
  if (block.equals(initialBlockHash)) {
1421
1407
  // Block source doesn't handle initial header so we need to handle the case separately.
1422
1408
  return this.worldStateSynchronizer.getSnapshot(BlockNumber.ZERO);
1423
1409
  }
1424
1410
 
1425
- const blockHashFr = Fr.fromBuffer(block.toBuffer());
1426
- const header = await this.blockSource.getBlockHeaderByHash(blockHashFr);
1411
+ const header = await this.blockSource.getBlockHeaderByHash(block);
1427
1412
  if (!header) {
1428
1413
  throw new Error(
1429
1414
  `Block hash ${block.toString()} not found when querying world state. If the node API has been queried with anchor block hash possibly a reorg has occurred.`,
@@ -20,12 +20,7 @@ export async function createSentinel(
20
20
  if (!config.sentinelEnabled) {
21
21
  return undefined;
22
22
  }
23
- const kvStore = await createStore(
24
- 'sentinel',
25
- SentinelStore.SCHEMA_VERSION,
26
- config,
27
- createLogger('node:sentinel:lmdb'),
28
- );
23
+ const kvStore = await createStore('sentinel', SentinelStore.SCHEMA_VERSION, config, logger.getBindings());
29
24
  const storeHistoryLength = config.sentinelHistoryLengthInEpochs * epochCache.getL1Constants().epochDuration;
30
25
  const storeHistoricProvenPerformanceLength = config.sentinelHistoricProvenPerformanceLengthInEpochs;
31
26
  const sentinelStore = new SentinelStore(kvStore, {
@@ -128,7 +128,7 @@ export class Sentinel extends (EventEmitter as new () => WatcherEmitter) impleme
128
128
  return;
129
129
  }
130
130
  const blockNumber = event.block.number;
131
- const block = await this.archiver.getL2BlockNew(blockNumber);
131
+ const block = await this.archiver.getL2Block(blockNumber);
132
132
  if (!block) {
133
133
  this.logger.error(`Failed to get block ${blockNumber}`, { block });
134
134
  return;