@aztec/archiver 3.0.0-nightly.20251209 → 3.0.0-nightly.20251210

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 (58) hide show
  1. package/dest/archiver/archiver.d.ts +8 -9
  2. package/dest/archiver/archiver.d.ts.map +1 -1
  3. package/dest/archiver/archiver.js +31 -18
  4. package/dest/archiver/archiver_store.d.ts +8 -8
  5. package/dest/archiver/archiver_store.d.ts.map +1 -1
  6. package/dest/archiver/archiver_store_test_suite.d.ts +1 -1
  7. package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
  8. package/dest/archiver/archiver_store_test_suite.js +47 -46
  9. package/dest/archiver/data_retrieval.d.ts +2 -2
  10. package/dest/archiver/data_retrieval.d.ts.map +1 -1
  11. package/dest/archiver/data_retrieval.js +7 -6
  12. package/dest/archiver/kv_archiver_store/block_store.d.ts +2 -2
  13. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
  14. package/dest/archiver/kv_archiver_store/block_store.js +1 -1
  15. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +2 -2
  16. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
  17. package/dest/archiver/kv_archiver_store/contract_class_store.js +1 -1
  18. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +2 -2
  19. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
  20. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +7 -7
  21. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
  22. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +6 -6
  23. package/dest/archiver/kv_archiver_store/log_store.d.ts +2 -2
  24. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
  25. package/dest/archiver/kv_archiver_store/message_store.d.ts +5 -4
  26. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
  27. package/dest/archiver/kv_archiver_store/message_store.js +15 -14
  28. package/dest/archiver/structs/inbox_message.d.ts +4 -4
  29. package/dest/archiver/structs/inbox_message.d.ts.map +1 -1
  30. package/dest/archiver/structs/inbox_message.js +6 -6
  31. package/dest/test/mock_archiver.d.ts +4 -5
  32. package/dest/test/mock_archiver.d.ts.map +1 -1
  33. package/dest/test/mock_archiver.js +5 -9
  34. package/dest/test/mock_l1_to_l2_message_source.d.ts +5 -6
  35. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
  36. package/dest/test/mock_l1_to_l2_message_source.js +7 -11
  37. package/dest/test/mock_l2_block_source.d.ts +2 -2
  38. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  39. package/dest/test/mock_l2_block_source.js +1 -1
  40. package/dest/test/mock_structs.d.ts +3 -2
  41. package/dest/test/mock_structs.d.ts.map +1 -1
  42. package/dest/test/mock_structs.js +9 -9
  43. package/package.json +13 -13
  44. package/src/archiver/archiver.ts +34 -20
  45. package/src/archiver/archiver_store.ts +7 -7
  46. package/src/archiver/archiver_store_test_suite.ts +56 -48
  47. package/src/archiver/data_retrieval.ts +7 -6
  48. package/src/archiver/kv_archiver_store/block_store.ts +1 -1
  49. package/src/archiver/kv_archiver_store/contract_class_store.ts +1 -1
  50. package/src/archiver/kv_archiver_store/contract_instance_store.ts +1 -1
  51. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +8 -8
  52. package/src/archiver/kv_archiver_store/log_store.ts +1 -1
  53. package/src/archiver/kv_archiver_store/message_store.ts +20 -17
  54. package/src/archiver/structs/inbox_message.ts +7 -8
  55. package/src/test/mock_archiver.ts +6 -11
  56. package/src/test/mock_l1_to_l2_message_source.ts +6 -11
  57. package/src/test/mock_l2_block_source.ts +1 -1
  58. package/src/test/mock_structs.ts +10 -10
@@ -1,14 +1,13 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
1
+ import { CheckpointNumber } from '@aztec/foundation/branded-types';
2
2
  import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
3
- import { keccak256 } from '@aztec/foundation/crypto';
4
- import { Fr } from '@aztec/foundation/fields';
3
+ import { keccak256 } from '@aztec/foundation/crypto/keccak';
4
+ import { Fr } from '@aztec/foundation/curves/bn254';
5
5
  import { BufferReader, bigintToUInt64BE, numToUInt32BE, serializeToBuffer } from '@aztec/foundation/serialize';
6
6
 
7
7
  export type InboxMessage = {
8
8
  index: bigint;
9
9
  leaf: Fr;
10
- // TODO: should be checkpointNumber
11
- l2BlockNumber: BlockNumber;
10
+ checkpointNumber: CheckpointNumber;
12
11
  l1BlockNumber: bigint; // L1 block number - NOT Aztec L2
13
12
  l1BlockHash: Buffer32;
14
13
  rollingHash: Buffer16;
@@ -25,7 +24,7 @@ export function serializeInboxMessage(message: InboxMessage): Buffer {
25
24
  message.leaf,
26
25
  message.l1BlockHash,
27
26
  numToUInt32BE(Number(message.l1BlockNumber)),
28
- numToUInt32BE(message.l2BlockNumber),
27
+ numToUInt32BE(message.checkpointNumber),
29
28
  message.rollingHash,
30
29
  ]);
31
30
  }
@@ -36,7 +35,7 @@ export function deserializeInboxMessage(buffer: Buffer): InboxMessage {
36
35
  const leaf = reader.readObject(Fr);
37
36
  const l1BlockHash = reader.readObject(Buffer32);
38
37
  const l1BlockNumber = BigInt(reader.readNumber());
39
- const l2BlockNumber = BlockNumber(reader.readNumber());
38
+ const checkpointNumber = CheckpointNumber(reader.readNumber());
40
39
  const rollingHash = reader.readObject(Buffer16);
41
- return { index, leaf, l1BlockHash, l1BlockNumber, l2BlockNumber, rollingHash };
40
+ return { index, leaf, l1BlockHash, l1BlockNumber, checkpointNumber, rollingHash };
42
41
  }
@@ -1,5 +1,5 @@
1
1
  import type { CheckpointNumber } from '@aztec/foundation/branded-types';
2
- import type { Fr } from '@aztec/foundation/fields';
2
+ import type { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { L2Block, type L2BlockSource } from '@aztec/stdlib/block';
4
4
  import type { Checkpoint } from '@aztec/stdlib/checkpoint';
5
5
  import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
@@ -13,22 +13,17 @@ import { MockL2BlockSource } from './mock_l2_block_source.js';
13
13
  export class MockArchiver extends MockL2BlockSource implements L2BlockSource, L1ToL2MessageSource {
14
14
  private messageSource = new MockL1ToL2MessageSource(0);
15
15
 
16
- public setL1ToL2Messages(blockNumber: number, msgs: Fr[]) {
17
- this.messageSource.setL1ToL2Messages(blockNumber, msgs);
16
+ public setL1ToL2Messages(checkpointNumber: CheckpointNumber, msgs: Fr[]) {
17
+ this.messageSource.setL1ToL2Messages(checkpointNumber, msgs);
18
18
  }
19
19
 
20
- getL1ToL2Messages(blockNumber: number): Promise<Fr[]> {
21
- return this.messageSource.getL1ToL2Messages(blockNumber);
20
+ getL1ToL2Messages(checkpointNumber: CheckpointNumber): Promise<Fr[]> {
21
+ return this.messageSource.getL1ToL2Messages(checkpointNumber);
22
22
  }
23
23
 
24
24
  getL1ToL2MessageIndex(_l1ToL2Message: Fr): Promise<bigint | undefined> {
25
25
  return this.messageSource.getL1ToL2MessageIndex(_l1ToL2Message);
26
26
  }
27
-
28
- getL1ToL2MessagesForCheckpoint(checkpointNumber: CheckpointNumber): Promise<Fr[]> {
29
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
30
- return this.messageSource.getL1ToL2Messages(checkpointNumber);
31
- }
32
27
  }
33
28
 
34
29
  /**
@@ -48,7 +43,7 @@ export class MockPrefilledArchiver extends MockArchiver {
48
43
  if (checkpoint.blocks.length !== 1) {
49
44
  throw new Error('Prefilled checkpoint must only have 1 block at the moment.');
50
45
  }
51
- this.setL1ToL2Messages(checkpoint.blocks[0].number, messages);
46
+ this.setL1ToL2Messages(checkpoint.number, messages);
52
47
  }
53
48
  }
54
49
 
@@ -1,5 +1,5 @@
1
1
  import { BlockNumber, type CheckpointNumber } from '@aztec/foundation/branded-types';
2
- import { Fr } from '@aztec/foundation/fields';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import type { L2Tips } from '@aztec/stdlib/block';
4
4
  import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
5
5
 
@@ -7,25 +7,20 @@ import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
7
7
  * A mocked implementation of L1ToL2MessageSource to be used in tests.
8
8
  */
9
9
  export class MockL1ToL2MessageSource implements L1ToL2MessageSource {
10
- private messagesPerBlock = new Map<number, Fr[]>();
10
+ private messagesPerCheckpoint = new Map<CheckpointNumber, Fr[]>();
11
11
 
12
12
  constructor(private blockNumber: number) {}
13
13
 
14
- public setL1ToL2Messages(blockNumber: number, msgs: Fr[]) {
15
- this.messagesPerBlock.set(blockNumber, msgs);
14
+ public setL1ToL2Messages(checkpointNumber: CheckpointNumber, msgs: Fr[]) {
15
+ this.messagesPerCheckpoint.set(checkpointNumber, msgs);
16
16
  }
17
17
 
18
18
  public setBlockNumber(blockNumber: number) {
19
19
  this.blockNumber = blockNumber;
20
20
  }
21
21
 
22
- getL1ToL2MessagesForCheckpoint(checkpointNumber: CheckpointNumber): Promise<Fr[]> {
23
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
24
- return this.getL1ToL2Messages(checkpointNumber);
25
- }
26
-
27
- getL1ToL2Messages(blockNumber: number): Promise<Fr[]> {
28
- return Promise.resolve(this.messagesPerBlock.get(blockNumber) ?? []);
22
+ getL1ToL2Messages(checkpointNumber: CheckpointNumber): Promise<Fr[]> {
23
+ return Promise.resolve(this.messagesPerCheckpoint.get(checkpointNumber) ?? []);
29
24
  }
30
25
 
31
26
  getL1ToL2MessageIndex(_l1ToL2Message: Fr): Promise<bigint | undefined> {
@@ -2,8 +2,8 @@ import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
2
2
  import { DefaultL1ContractsConfig } from '@aztec/ethereum';
3
3
  import { BlockNumber, CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
4
4
  import { Buffer32 } from '@aztec/foundation/buffer';
5
+ import { Fr } from '@aztec/foundation/curves/bn254';
5
6
  import { EthAddress } from '@aztec/foundation/eth-address';
6
- import { Fr } from '@aztec/foundation/fields';
7
7
  import { createLogger } from '@aztec/foundation/log';
8
8
  import type { FunctionSelector } from '@aztec/stdlib/abi';
9
9
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
@@ -1,7 +1,7 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
1
+ import { CheckpointNumber } from '@aztec/foundation/branded-types';
2
2
  import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
3
- import { randomBigInt, randomInt } from '@aztec/foundation/crypto';
4
- import { Fr } from '@aztec/foundation/fields';
3
+ import { randomBigInt, randomInt } from '@aztec/foundation/crypto/random';
4
+ import { Fr } from '@aztec/foundation/curves/bn254';
5
5
  import { InboxLeaf } from '@aztec/stdlib/messaging';
6
6
 
7
7
  import { type InboxMessage, updateRollingHash } from '../archiver/structs/inbox_message.js';
@@ -10,17 +10,17 @@ export function makeInboxMessage(
10
10
  previousRollingHash = Buffer16.ZERO,
11
11
  overrides: Partial<InboxMessage> = {},
12
12
  ): InboxMessage {
13
- const { l2BlockNumber = randomInt(100) + 1 } = overrides;
13
+ const { checkpointNumber = CheckpointNumber(randomInt(100) + 1) } = overrides;
14
14
  const { l1BlockNumber = randomBigInt(100n) + 1n } = overrides;
15
15
  const { l1BlockHash = Buffer32.random() } = overrides;
16
16
  const { leaf = Fr.random() } = overrides;
17
17
  const { rollingHash = updateRollingHash(previousRollingHash, leaf) } = overrides;
18
- const { index = InboxLeaf.smallestIndexFromL2Block(l2BlockNumber) } = overrides;
18
+ const { index = InboxLeaf.smallestIndexForCheckpoint(checkpointNumber) } = overrides;
19
19
 
20
20
  return {
21
21
  index,
22
22
  leaf,
23
- l2BlockNumber: BlockNumber(l2BlockNumber),
23
+ checkpointNumber,
24
24
  l1BlockNumber,
25
25
  l1BlockHash,
26
26
  rollingHash,
@@ -31,17 +31,17 @@ export function makeInboxMessages(
31
31
  count: number,
32
32
  opts: {
33
33
  initialHash?: Buffer16;
34
- initialL2BlockNumber?: number;
34
+ initialCheckpointNumber?: CheckpointNumber;
35
35
  overrideFn?: (msg: InboxMessage, index: number) => InboxMessage;
36
36
  } = {},
37
37
  ): InboxMessage[] {
38
- const { initialHash = Buffer16.ZERO, overrideFn = msg => msg, initialL2BlockNumber = 1 } = opts;
38
+ const { initialHash = Buffer16.ZERO, overrideFn = msg => msg, initialCheckpointNumber = 1 } = opts;
39
39
  const messages: InboxMessage[] = [];
40
40
  let rollingHash = initialHash;
41
41
  for (let i = 0; i < count; i++) {
42
42
  const leaf = Fr.random();
43
- const l2BlockNumber = BlockNumber(i + initialL2BlockNumber);
44
- const message = overrideFn(makeInboxMessage(rollingHash, { leaf, l2BlockNumber }), i);
43
+ const checkpointNumber = CheckpointNumber(i + initialCheckpointNumber);
44
+ const message = overrideFn(makeInboxMessage(rollingHash, { leaf, checkpointNumber }), i);
45
45
  rollingHash = message.rollingHash;
46
46
  messages.push(message);
47
47
  }