@aztec/archiver 0.61.0 → 0.63.0

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 (66) hide show
  1. package/dest/archiver/archiver.d.ts +13 -5
  2. package/dest/archiver/archiver.d.ts.map +1 -1
  3. package/dest/archiver/archiver.js +49 -26
  4. package/dest/archiver/archiver_store.d.ts +10 -5
  5. package/dest/archiver/archiver_store.d.ts.map +1 -1
  6. package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
  7. package/dest/archiver/archiver_store_test_suite.js +64 -36
  8. package/dest/archiver/config.d.ts +2 -6
  9. package/dest/archiver/config.d.ts.map +1 -1
  10. package/dest/archiver/config.js +3 -6
  11. package/dest/archiver/epoch_helpers.d.ts +10 -10
  12. package/dest/archiver/epoch_helpers.d.ts.map +1 -1
  13. package/dest/archiver/epoch_helpers.js +9 -10
  14. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +10 -5
  15. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
  16. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +17 -5
  17. package/dest/archiver/kv_archiver_store/log_store.d.ts +8 -2
  18. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
  19. package/dest/archiver/kv_archiver_store/log_store.js +144 -57
  20. package/dest/archiver/kv_archiver_store/message_store.d.ts +2 -3
  21. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
  22. package/dest/archiver/kv_archiver_store/message_store.js +7 -12
  23. package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +2 -3
  24. package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts.map +1 -1
  25. package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.js +4 -9
  26. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +15 -7
  27. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -1
  28. package/dest/archiver/memory_archiver_store/memory_archiver_store.js +139 -35
  29. package/dest/factory.d.ts +5 -2
  30. package/dest/factory.d.ts.map +1 -1
  31. package/dest/factory.js +2 -2
  32. package/dest/rpc/index.d.ts +3 -2
  33. package/dest/rpc/index.d.ts.map +1 -1
  34. package/dest/rpc/index.js +10 -3
  35. package/dest/test/mock_archiver.d.ts +1 -1
  36. package/dest/test/mock_archiver.d.ts.map +1 -1
  37. package/dest/test/mock_archiver.js +3 -3
  38. package/dest/test/mock_l1_to_l2_message_source.d.ts +1 -1
  39. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
  40. package/dest/test/mock_l1_to_l2_message_source.js +2 -2
  41. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  42. package/dest/test/mock_l2_block_source.js +6 -4
  43. package/package.json +10 -10
  44. package/src/archiver/archiver.ts +60 -31
  45. package/src/archiver/archiver_store.ts +11 -5
  46. package/src/archiver/archiver_store_test_suite.ts +85 -40
  47. package/src/archiver/config.ts +11 -12
  48. package/src/archiver/epoch_helpers.ts +16 -12
  49. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +18 -6
  50. package/src/archiver/kv_archiver_store/log_store.ts +176 -58
  51. package/src/archiver/kv_archiver_store/message_store.ts +6 -12
  52. package/src/archiver/memory_archiver_store/l1_to_l2_message_store.ts +3 -8
  53. package/src/archiver/memory_archiver_store/memory_archiver_store.ts +155 -31
  54. package/src/factory.ts +6 -3
  55. package/src/rpc/index.ts +11 -2
  56. package/src/test/mock_archiver.ts +2 -2
  57. package/src/test/mock_l1_to_l2_message_source.ts +1 -1
  58. package/src/test/mock_l2_block_source.ts +5 -3
  59. package/dest/rpc/archiver_client.d.ts +0 -3
  60. package/dest/rpc/archiver_client.d.ts.map +0 -1
  61. package/dest/rpc/archiver_client.js +0 -12
  62. package/dest/rpc/archiver_server.d.ts +0 -9
  63. package/dest/rpc/archiver_server.d.ts.map +0 -1
  64. package/dest/rpc/archiver_server.js +0 -20
  65. package/src/rpc/archiver_client.ts +0 -29
  66. package/src/rpc/archiver_server.ts +0 -35
@@ -1,6 +1,7 @@
1
1
  import {
2
+ type Body,
3
+ type ContractClass2BlockL2Logs,
2
4
  type EncryptedL2BlockL2Logs,
3
- type EncryptedL2NoteLog,
4
5
  type EncryptedNoteL2BlockL2Logs,
5
6
  ExtendedUnencryptedL2Log,
6
7
  type FromLogType,
@@ -14,6 +15,7 @@ import {
14
15
  type TxEffect,
15
16
  type TxHash,
16
17
  TxReceipt,
18
+ TxScopedL2Log,
17
19
  type UnencryptedL2BlockL2Logs,
18
20
  } from '@aztec/circuit-types';
19
21
  import {
@@ -24,6 +26,7 @@ import {
24
26
  Fr,
25
27
  type Header,
26
28
  INITIAL_L2_BLOCK_NUM,
29
+ MAX_NOTE_HASHES_PER_TX,
27
30
  type UnconstrainedFunctionWithMembershipProof,
28
31
  } from '@aztec/circuits.js';
29
32
  import { type ContractArtifact } from '@aztec/foundation/abi';
@@ -51,14 +54,16 @@ export class MemoryArchiverStore implements ArchiverDataStore {
51
54
 
52
55
  private noteEncryptedLogsPerBlock: Map<number, EncryptedNoteL2BlockL2Logs> = new Map();
53
56
 
54
- private taggedNoteEncryptedLogs: Map<string, EncryptedL2NoteLog[]> = new Map();
57
+ private taggedLogs: Map<string, TxScopedL2Log[]> = new Map();
55
58
 
56
- private noteEncryptedLogTagsPerBlock: Map<number, Fr[]> = new Map();
59
+ private logTagsPerBlock: Map<number, Fr[]> = new Map();
57
60
 
58
61
  private encryptedLogsPerBlock: Map<number, EncryptedL2BlockL2Logs> = new Map();
59
62
 
60
63
  private unencryptedLogsPerBlock: Map<number, UnencryptedL2BlockL2Logs> = new Map();
61
64
 
65
+ private contractClassLogsPerBlock: Map<number, ContractClass2BlockL2Logs> = new Map();
66
+
62
67
  /**
63
68
  * Contains all L1 to L2 messages.
64
69
  */
@@ -206,6 +211,56 @@ export class MemoryArchiverStore implements ArchiverDataStore {
206
211
  return Promise.resolve(true);
207
212
  }
208
213
 
214
+ #storeTaggedLogs(block: L2Block, logType: keyof Pick<Body, 'noteEncryptedLogs' | 'unencryptedLogs'>): void {
215
+ const dataStartIndexForBlock =
216
+ block.header.state.partial.noteHashTree.nextAvailableLeafIndex -
217
+ block.body.numberOfTxsIncludingPadded * MAX_NOTE_HASHES_PER_TX;
218
+ block.body[logType].txLogs.forEach((txLogs, txIndex) => {
219
+ const txHash = block.body.txEffects[txIndex].txHash;
220
+ const dataStartIndexForTx = dataStartIndexForBlock + txIndex * MAX_NOTE_HASHES_PER_TX;
221
+ const logs = txLogs.unrollLogs();
222
+ logs.forEach(log => {
223
+ if (
224
+ (logType == 'noteEncryptedLogs' && log.data.length < 32) ||
225
+ // TODO remove when #9835 and #9836 are fixed
226
+ (logType === 'unencryptedLogs' && log.data.length < 32 * 33)
227
+ ) {
228
+ this.#log.warn(`Skipping log (${logType}) with invalid data length: ${log.data.length}`);
229
+ return;
230
+ }
231
+ try {
232
+ let tag = Fr.ZERO;
233
+ // TODO remove when #9835 and #9836 are fixed. The partial note logs are emitted as bytes, but encoded as Fields.
234
+ // This means that for every 32 bytes of payload, we only have 1 byte of data.
235
+ // Also, the tag is not stored in the first 32 bytes of the log, (that's the length of public fields now) but in the next 32.
236
+ if (logType === 'unencryptedLogs') {
237
+ const correctedBuffer = Buffer.alloc(32);
238
+ const initialOffset = 32;
239
+ for (let i = 0; i < 32; i++) {
240
+ const byte = Fr.fromBuffer(
241
+ log.data.subarray(i * 32 + initialOffset, i * 32 + 32 + initialOffset),
242
+ ).toNumber();
243
+ correctedBuffer.writeUInt8(byte, i);
244
+ }
245
+ tag = new Fr(correctedBuffer);
246
+ } else {
247
+ tag = new Fr(log.data.subarray(0, 32));
248
+ }
249
+ this.#log.verbose(`Storing tagged (${logType}) log with tag ${tag.toString()} in block ${block.number}`);
250
+ const currentLogs = this.taggedLogs.get(tag.toString()) || [];
251
+ this.taggedLogs.set(tag.toString(), [
252
+ ...currentLogs,
253
+ new TxScopedL2Log(txHash, dataStartIndexForTx, block.number, logType === 'unencryptedLogs', log.data),
254
+ ]);
255
+ const currentTagsInBlock = this.logTagsPerBlock.get(block.number) || [];
256
+ this.logTagsPerBlock.set(block.number, [...currentTagsInBlock, tag]);
257
+ } catch (err) {
258
+ this.#log.warn(`Failed to add tagged log to store: ${err}`);
259
+ }
260
+ });
261
+ });
262
+ }
263
+
209
264
  /**
210
265
  * Append new logs to the store's list.
211
266
  * @param block - The block for which to add the logs.
@@ -213,44 +268,30 @@ export class MemoryArchiverStore implements ArchiverDataStore {
213
268
  */
214
269
  addLogs(blocks: L2Block[]): Promise<boolean> {
215
270
  blocks.forEach(block => {
271
+ void this.#storeTaggedLogs(block, 'noteEncryptedLogs');
272
+ void this.#storeTaggedLogs(block, 'unencryptedLogs');
216
273
  this.noteEncryptedLogsPerBlock.set(block.number, block.body.noteEncryptedLogs);
217
- block.body.noteEncryptedLogs.txLogs.forEach(txLogs => {
218
- const noteLogs = txLogs.unrollLogs();
219
- noteLogs.forEach(noteLog => {
220
- if (noteLog.data.length < 32) {
221
- this.#log.warn(`Skipping note log with invalid data length: ${noteLog.data.length}`);
222
- return;
223
- }
224
- try {
225
- const tag = new Fr(noteLog.data.subarray(0, 32));
226
- const currentNoteLogs = this.taggedNoteEncryptedLogs.get(tag.toString()) || [];
227
- this.taggedNoteEncryptedLogs.set(tag.toString(), [...currentNoteLogs, noteLog]);
228
- const currentTagsInBlock = this.noteEncryptedLogTagsPerBlock.get(block.number) || [];
229
- this.noteEncryptedLogTagsPerBlock.set(block.number, [...currentTagsInBlock, tag]);
230
- } catch (err) {
231
- this.#log.warn(`Failed to add tagged note log to store: ${err}`);
232
- }
233
- });
234
- });
235
274
  this.encryptedLogsPerBlock.set(block.number, block.body.encryptedLogs);
236
275
  this.unencryptedLogsPerBlock.set(block.number, block.body.unencryptedLogs);
276
+ this.contractClassLogsPerBlock.set(block.number, block.body.contractClassLogs);
237
277
  });
238
278
  return Promise.resolve(true);
239
279
  }
240
280
 
241
281
  deleteLogs(blocks: L2Block[]): Promise<boolean> {
242
- const noteTagsToDelete = blocks.flatMap(block => this.noteEncryptedLogTagsPerBlock.get(block.number));
243
- noteTagsToDelete
282
+ const tagsToDelete = blocks.flatMap(block => this.logTagsPerBlock.get(block.number));
283
+ tagsToDelete
244
284
  .filter(tag => tag != undefined)
245
285
  .forEach(tag => {
246
- this.taggedNoteEncryptedLogs.delete(tag!.toString());
286
+ this.taggedLogs.delete(tag!.toString());
247
287
  });
248
288
 
249
289
  blocks.forEach(block => {
250
290
  this.encryptedLogsPerBlock.delete(block.number);
251
291
  this.noteEncryptedLogsPerBlock.delete(block.number);
252
292
  this.unencryptedLogsPerBlock.delete(block.number);
253
- this.noteEncryptedLogTagsPerBlock.delete(block.number);
293
+ this.logTagsPerBlock.delete(block.number);
294
+ this.contractClassLogsPerBlock.delete(block.number);
254
295
  });
255
296
 
256
297
  return Promise.resolve(true);
@@ -281,13 +322,12 @@ export class MemoryArchiverStore implements ArchiverDataStore {
281
322
  }
282
323
 
283
324
  /**
284
- * Gets the first L1 to L2 message index in the L1 to L2 message tree which is greater than or equal to `startIndex`.
325
+ * Gets the L1 to L2 message index in the L1 to L2 message tree.
285
326
  * @param l1ToL2Message - The L1 to L2 message.
286
- * @param startIndex - The index to start searching from.
287
327
  * @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
288
328
  */
289
- getL1ToL2MessageIndex(l1ToL2Message: Fr, startIndex: bigint): Promise<bigint | undefined> {
290
- return Promise.resolve(this.l1ToL2Messages.getMessageIndex(l1ToL2Message, startIndex));
329
+ getL1ToL2MessageIndex(l1ToL2Message: Fr): Promise<bigint | undefined> {
330
+ return Promise.resolve(this.l1ToL2Messages.getMessageIndex(l1ToL2Message));
291
331
  }
292
332
 
293
333
  /**
@@ -420,8 +460,8 @@ export class MemoryArchiverStore implements ArchiverDataStore {
420
460
  * @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
421
461
  * that tag.
422
462
  */
423
- getLogsByTags(tags: Fr[]): Promise<EncryptedL2NoteLog[][]> {
424
- const noteLogs = tags.map(tag => this.taggedNoteEncryptedLogs.get(tag.toString()) || []);
463
+ getLogsByTags(tags: Fr[]): Promise<TxScopedL2Log[][]> {
464
+ const noteLogs = tags.map(tag => this.taggedLogs.get(tag.toString()) || []);
425
465
  return Promise.resolve(noteLogs);
426
466
  }
427
467
 
@@ -508,6 +548,90 @@ export class MemoryArchiverStore implements ArchiverDataStore {
508
548
  });
509
549
  }
510
550
 
551
+ /**
552
+ * Gets contract class logs based on the provided filter.
553
+ * NB: clone of the above fn, but for contract class logs
554
+ * @param filter - The filter to apply to the logs.
555
+ * @returns The requested logs.
556
+ * @remarks Works by doing an intersection of all params in the filter.
557
+ */
558
+ getContractClassLogs(filter: LogFilter): Promise<GetUnencryptedLogsResponse> {
559
+ let txHash: TxHash | undefined;
560
+ let fromBlock = 0;
561
+ let toBlock = this.l2Blocks.length + INITIAL_L2_BLOCK_NUM;
562
+ let txIndexInBlock = 0;
563
+ let logIndexInTx = 0;
564
+
565
+ if (filter.afterLog) {
566
+ // Continuation parameter is set --> tx hash is ignored
567
+ if (filter.fromBlock == undefined || filter.fromBlock <= filter.afterLog.blockNumber) {
568
+ fromBlock = filter.afterLog.blockNumber;
569
+ txIndexInBlock = filter.afterLog.txIndex;
570
+ logIndexInTx = filter.afterLog.logIndex + 1; // We want to start from the next log
571
+ } else {
572
+ fromBlock = filter.fromBlock;
573
+ }
574
+ } else {
575
+ txHash = filter.txHash;
576
+
577
+ if (filter.fromBlock !== undefined) {
578
+ fromBlock = filter.fromBlock;
579
+ }
580
+ }
581
+
582
+ if (filter.toBlock !== undefined) {
583
+ toBlock = filter.toBlock;
584
+ }
585
+
586
+ // Ensure the indices are within block array bounds
587
+ fromBlock = Math.max(fromBlock, INITIAL_L2_BLOCK_NUM);
588
+ toBlock = Math.min(toBlock, this.l2Blocks.length + INITIAL_L2_BLOCK_NUM);
589
+
590
+ if (fromBlock > this.l2Blocks.length || toBlock < fromBlock || toBlock <= 0) {
591
+ return Promise.resolve({
592
+ logs: [],
593
+ maxLogsHit: false,
594
+ });
595
+ }
596
+
597
+ const contractAddress = filter.contractAddress;
598
+
599
+ const logs: ExtendedUnencryptedL2Log[] = [];
600
+
601
+ for (; fromBlock < toBlock; fromBlock++) {
602
+ const block = this.l2Blocks[fromBlock - INITIAL_L2_BLOCK_NUM];
603
+ const blockLogs = this.contractClassLogsPerBlock.get(fromBlock);
604
+
605
+ if (blockLogs) {
606
+ for (; txIndexInBlock < blockLogs.txLogs.length; txIndexInBlock++) {
607
+ const txLogs = blockLogs.txLogs[txIndexInBlock].unrollLogs();
608
+ for (; logIndexInTx < txLogs.length; logIndexInTx++) {
609
+ const log = txLogs[logIndexInTx];
610
+ if (
611
+ (!txHash || block.data.body.txEffects[txIndexInBlock].txHash.equals(txHash)) &&
612
+ (!contractAddress || log.contractAddress.equals(contractAddress))
613
+ ) {
614
+ logs.push(new ExtendedUnencryptedL2Log(new LogId(block.data.number, txIndexInBlock, logIndexInTx), log));
615
+ if (logs.length === this.maxLogs) {
616
+ return Promise.resolve({
617
+ logs,
618
+ maxLogsHit: true,
619
+ });
620
+ }
621
+ }
622
+ }
623
+ logIndexInTx = 0;
624
+ }
625
+ }
626
+ txIndexInBlock = 0;
627
+ }
628
+
629
+ return Promise.resolve({
630
+ logs,
631
+ maxLogsHit: false,
632
+ });
633
+ }
634
+
511
635
  /**
512
636
  * Gets the number of the latest L2 block processed.
513
637
  * @returns The number of the latest L2 block processed.
package/src/factory.ts CHANGED
@@ -1,5 +1,8 @@
1
+ import { type ArchiverApi, type Service } from '@aztec/circuit-types';
1
2
  import { type ContractClassPublic } from '@aztec/circuits.js';
2
3
  import { createDebugLogger } from '@aztec/foundation/log';
4
+ import { type Maybe } from '@aztec/foundation/types';
5
+ import { type DataStoreConfig } from '@aztec/kv-store/config';
3
6
  import { createStore } from '@aztec/kv-store/utils';
4
7
  import { getCanonicalProtocolContract, protocolContractNames } from '@aztec/protocol-contracts';
5
8
  import { type TelemetryClient } from '@aztec/telemetry-client';
@@ -8,13 +11,13 @@ import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
8
11
  import { Archiver } from './archiver/archiver.js';
9
12
  import { type ArchiverConfig } from './archiver/config.js';
10
13
  import { KVArchiverDataStore } from './archiver/index.js';
11
- import { createArchiverClient } from './rpc/archiver_client.js';
14
+ import { createArchiverClient } from './rpc/index.js';
12
15
 
13
16
  export async function createArchiver(
14
- config: ArchiverConfig,
17
+ config: ArchiverConfig & DataStoreConfig,
15
18
  telemetry: TelemetryClient = new NoopTelemetryClient(),
16
19
  opts: { blockUntilSync: boolean } = { blockUntilSync: true },
17
- ) {
20
+ ): Promise<ArchiverApi & Maybe<Service>> {
18
21
  if (!config.archiverUrl) {
19
22
  const store = await createStore('archiver', config, createDebugLogger('aztec:archiver:lmdb'));
20
23
  const archiverStore = new KVArchiverDataStore(store, config.maxLogs);
package/src/rpc/index.ts CHANGED
@@ -1,2 +1,11 @@
1
- export * from './archiver_client.js';
2
- export * from './archiver_server.js';
1
+ import { type ArchiverApi, ArchiverApiSchema } from '@aztec/circuit-types';
2
+ import { createSafeJsonRpcClient, makeFetch } from '@aztec/foundation/json-rpc/client';
3
+ import { createSafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
4
+
5
+ export function createArchiverClient(url: string, fetch = makeFetch([1, 2, 3], true)): ArchiverApi {
6
+ return createSafeJsonRpcClient<ArchiverApi>(url, ArchiverApiSchema, false, 'archiver', fetch);
7
+ }
8
+
9
+ export function createArchiverRpcServer(handler: ArchiverApi) {
10
+ return createSafeJsonRpcServer(handler, ArchiverApiSchema);
11
+ }
@@ -18,8 +18,8 @@ export class MockArchiver extends MockL2BlockSource implements L2BlockSource, L1
18
18
  return this.messageSource.getL1ToL2Messages(blockNumber);
19
19
  }
20
20
 
21
- getL1ToL2MessageIndex(_l1ToL2Message: Fr, _startIndex: bigint): Promise<bigint | undefined> {
22
- return this.messageSource.getL1ToL2MessageIndex(_l1ToL2Message, _startIndex);
21
+ getL1ToL2MessageIndex(_l1ToL2Message: Fr): Promise<bigint | undefined> {
22
+ return this.messageSource.getL1ToL2MessageIndex(_l1ToL2Message);
23
23
  }
24
24
  }
25
25
 
@@ -21,7 +21,7 @@ export class MockL1ToL2MessageSource implements L1ToL2MessageSource {
21
21
  return Promise.resolve(this.messagesPerBlock.get(Number(blockNumber)) ?? []);
22
22
  }
23
23
 
24
- getL1ToL2MessageIndex(_l1ToL2Message: Fr, _startIndex: bigint): Promise<bigint | undefined> {
24
+ getL1ToL2MessageIndex(_l1ToL2Message: Fr): Promise<bigint | undefined> {
25
25
  throw new Error('Method not implemented.');
26
26
  }
27
27
 
@@ -1,5 +1,6 @@
1
1
  import { L2Block, type L2BlockSource, type L2Tips, type TxHash, TxReceipt, TxStatus } from '@aztec/circuit-types';
2
2
  import { EthAddress, type Header } from '@aztec/circuits.js';
3
+ import { DefaultL1ContractsConfig } from '@aztec/ethereum';
3
4
  import { createDebugLogger } from '@aztec/foundation/log';
4
5
 
5
6
  import { getSlotRangeForEpoch } from '../archiver/epoch_helpers.js';
@@ -67,8 +68,8 @@ export class MockL2BlockSource implements L2BlockSource {
67
68
  return Promise.resolve(this.l2Blocks.length);
68
69
  }
69
70
 
70
- public async getProvenBlockNumber(): Promise<number> {
71
- return this.provenBlockNumber ?? (await this.getBlockNumber());
71
+ public getProvenBlockNumber(): Promise<number> {
72
+ return Promise.resolve(this.provenBlockNumber);
72
73
  }
73
74
 
74
75
  public getProvenL2EpochNumber(): Promise<number | undefined> {
@@ -103,7 +104,8 @@ export class MockL2BlockSource implements L2BlockSource {
103
104
  }
104
105
 
105
106
  getBlocksForEpoch(epochNumber: bigint): Promise<L2Block[]> {
106
- const [start, end] = getSlotRangeForEpoch(epochNumber);
107
+ const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
108
+ const [start, end] = getSlotRangeForEpoch(epochNumber, { epochDuration });
107
109
  const blocks = this.l2Blocks.filter(b => {
108
110
  const slot = b.header.globalVariables.slotNumber.toBigInt();
109
111
  return slot >= start && slot <= end;
@@ -1,3 +0,0 @@
1
- import { type ArchiveSource } from '../archiver/archiver.js';
2
- export declare const createArchiverClient: (url: string, fetch?: (host: string, rpcMethod: string, body: any, useApiEndpoints: boolean) => Promise<any>) => ArchiveSource;
3
- //# sourceMappingURL=archiver_client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archiver_client.d.ts","sourceRoot":"","sources":["../../src/rpc/archiver_client.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,oBAAoB,QAAS,MAAM,qGAAuC,aAenE,CAAC"}
@@ -1,12 +0,0 @@
1
- import { EncryptedNoteL2BlockL2Logs, ExtendedUnencryptedL2Log, L2Block, NullifierMembershipWitness, TxReceipt, UnencryptedL2BlockL2Logs, } from '@aztec/circuit-types';
2
- import { EthAddress, Fr } from '@aztec/circuits.js';
3
- import { createJsonRpcClient, makeFetch } from '@aztec/foundation/json-rpc/client';
4
- export const createArchiverClient = (url, fetch = makeFetch([1, 2, 3], true)) => createJsonRpcClient(url, {
5
- EthAddress,
6
- ExtendedUnencryptedL2Log,
7
- Fr,
8
- L2Block,
9
- EncryptedNoteL2BlockL2Logs,
10
- UnencryptedL2BlockL2Logs,
11
- }, { TxReceipt, NullifierMembershipWitness }, false, 'archiver', fetch);
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXJfY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JwYy9hcmNoaXZlcl9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLDBCQUEwQixFQUMxQix3QkFBd0IsRUFDeEIsT0FBTyxFQUNQLDBCQUEwQixFQUMxQixTQUFTLEVBQ1Qsd0JBQXdCLEdBQ3pCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJbkYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQWlCLEVBQUUsQ0FDckcsbUJBQW1CLENBQ2pCLEdBQUcsRUFDSDtJQUNFLFVBQVU7SUFDVix3QkFBd0I7SUFDeEIsRUFBRTtJQUNGLE9BQU87SUFDUCwwQkFBMEI7SUFDMUIsd0JBQXdCO0NBQ3pCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsRUFDekMsS0FBSyxFQUNMLFVBQVUsRUFDVixLQUFLLENBQ1csQ0FBQyJ9
@@ -1,9 +0,0 @@
1
- import { JsonRpcServer } from '@aztec/foundation/json-rpc/server';
2
- import { type Archiver } from '../archiver/archiver.js';
3
- /**
4
- * Wrap an Archiver instance with a JSON RPC HTTP server.
5
- * @param archiverService - The Archiver instance
6
- * @returns An JSON-RPC HTTP server
7
- */
8
- export declare function createArchiverRpcServer(archiverService: Archiver): JsonRpcServer;
9
- //# sourceMappingURL=archiver_server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archiver_server.d.ts","sourceRoot":"","sources":["../../src/rpc/archiver_server.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,QAAQ,GAAG,aAAa,CAehF"}
@@ -1,20 +0,0 @@
1
- import { EncryptedNoteL2BlockL2Logs, ExtendedUnencryptedL2Log, L2Block, NullifierMembershipWitness, TxEffect, TxReceipt, UnencryptedL2BlockL2Logs, } from '@aztec/circuit-types';
2
- import { EthAddress, Fr } from '@aztec/circuits.js';
3
- import { JsonRpcServer } from '@aztec/foundation/json-rpc/server';
4
- /**
5
- * Wrap an Archiver instance with a JSON RPC HTTP server.
6
- * @param archiverService - The Archiver instance
7
- * @returns An JSON-RPC HTTP server
8
- */
9
- export function createArchiverRpcServer(archiverService) {
10
- return new JsonRpcServer(archiverService, {
11
- EthAddress,
12
- ExtendedUnencryptedL2Log,
13
- Fr,
14
- L2Block,
15
- EncryptedNoteL2BlockL2Logs,
16
- UnencryptedL2BlockL2Logs,
17
- TxEffect,
18
- }, { TxReceipt, NullifierMembershipWitness }, ['start', 'stop']);
19
- }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXJfc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JwYy9hcmNoaXZlcl9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLDBCQUEwQixFQUMxQix3QkFBd0IsRUFDeEIsT0FBTyxFQUNQLDBCQUEwQixFQUMxQixRQUFRLEVBQ1IsU0FBUyxFQUNULHdCQUF3QixHQUN6QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBSWxFOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsZUFBeUI7SUFDL0QsT0FBTyxJQUFJLGFBQWEsQ0FDdEIsZUFBZSxFQUNmO1FBQ0UsVUFBVTtRQUNWLHdCQUF3QjtRQUN4QixFQUFFO1FBQ0YsT0FBTztRQUNQLDBCQUEwQjtRQUMxQix3QkFBd0I7UUFDeEIsUUFBUTtLQUNULEVBQ0QsRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsRUFDekMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQ2xCLENBQUM7QUFDSixDQUFDIn0=
@@ -1,29 +0,0 @@
1
- import {
2
- EncryptedNoteL2BlockL2Logs,
3
- ExtendedUnencryptedL2Log,
4
- L2Block,
5
- NullifierMembershipWitness,
6
- TxReceipt,
7
- UnencryptedL2BlockL2Logs,
8
- } from '@aztec/circuit-types';
9
- import { EthAddress, Fr } from '@aztec/circuits.js';
10
- import { createJsonRpcClient, makeFetch } from '@aztec/foundation/json-rpc/client';
11
-
12
- import { type ArchiveSource } from '../archiver/archiver.js';
13
-
14
- export const createArchiverClient = (url: string, fetch = makeFetch([1, 2, 3], true)): ArchiveSource =>
15
- createJsonRpcClient<ArchiveSource>(
16
- url,
17
- {
18
- EthAddress,
19
- ExtendedUnencryptedL2Log,
20
- Fr,
21
- L2Block,
22
- EncryptedNoteL2BlockL2Logs,
23
- UnencryptedL2BlockL2Logs,
24
- },
25
- { TxReceipt, NullifierMembershipWitness },
26
- false,
27
- 'archiver',
28
- fetch,
29
- ) as ArchiveSource;
@@ -1,35 +0,0 @@
1
- import {
2
- EncryptedNoteL2BlockL2Logs,
3
- ExtendedUnencryptedL2Log,
4
- L2Block,
5
- NullifierMembershipWitness,
6
- TxEffect,
7
- TxReceipt,
8
- UnencryptedL2BlockL2Logs,
9
- } from '@aztec/circuit-types';
10
- import { EthAddress, Fr } from '@aztec/circuits.js';
11
- import { JsonRpcServer } from '@aztec/foundation/json-rpc/server';
12
-
13
- import { type Archiver } from '../archiver/archiver.js';
14
-
15
- /**
16
- * Wrap an Archiver instance with a JSON RPC HTTP server.
17
- * @param archiverService - The Archiver instance
18
- * @returns An JSON-RPC HTTP server
19
- */
20
- export function createArchiverRpcServer(archiverService: Archiver): JsonRpcServer {
21
- return new JsonRpcServer(
22
- archiverService,
23
- {
24
- EthAddress,
25
- ExtendedUnencryptedL2Log,
26
- Fr,
27
- L2Block,
28
- EncryptedNoteL2BlockL2Logs,
29
- UnencryptedL2BlockL2Logs,
30
- TxEffect,
31
- },
32
- { TxReceipt, NullifierMembershipWitness },
33
- ['start', 'stop'],
34
- );
35
- }