@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.
- package/dest/archiver/archiver.d.ts +8 -9
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +31 -18
- package/dest/archiver/archiver_store.d.ts +8 -8
- package/dest/archiver/archiver_store.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +47 -46
- package/dest/archiver/data_retrieval.d.ts +2 -2
- package/dest/archiver/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/data_retrieval.js +7 -6
- package/dest/archiver/kv_archiver_store/block_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +1 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.js +1 -1
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +7 -7
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +6 -6
- package/dest/archiver/kv_archiver_store/log_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/message_store.d.ts +5 -4
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/message_store.js +15 -14
- package/dest/archiver/structs/inbox_message.d.ts +4 -4
- package/dest/archiver/structs/inbox_message.d.ts.map +1 -1
- package/dest/archiver/structs/inbox_message.js +6 -6
- package/dest/test/mock_archiver.d.ts +4 -5
- package/dest/test/mock_archiver.d.ts.map +1 -1
- package/dest/test/mock_archiver.js +5 -9
- package/dest/test/mock_l1_to_l2_message_source.d.ts +5 -6
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
- package/dest/test/mock_l1_to_l2_message_source.js +7 -11
- package/dest/test/mock_l2_block_source.d.ts +2 -2
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +1 -1
- package/dest/test/mock_structs.d.ts +3 -2
- package/dest/test/mock_structs.d.ts.map +1 -1
- package/dest/test/mock_structs.js +9 -9
- package/package.json +13 -13
- package/src/archiver/archiver.ts +34 -20
- package/src/archiver/archiver_store.ts +7 -7
- package/src/archiver/archiver_store_test_suite.ts +56 -48
- package/src/archiver/data_retrieval.ts +7 -6
- package/src/archiver/kv_archiver_store/block_store.ts +1 -1
- package/src/archiver/kv_archiver_store/contract_class_store.ts +1 -1
- package/src/archiver/kv_archiver_store/contract_instance_store.ts +1 -1
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +8 -8
- package/src/archiver/kv_archiver_store/log_store.ts +1 -1
- package/src/archiver/kv_archiver_store/message_store.ts +20 -17
- package/src/archiver/structs/inbox_message.ts +7 -8
- package/src/test/mock_archiver.ts +6 -11
- package/src/test/mock_l1_to_l2_message_source.ts +6 -11
- package/src/test/mock_l2_block_source.ts +1 -1
- package/src/test/mock_structs.ts +10 -10
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
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/
|
|
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
|
-
|
|
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.
|
|
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
|
|
38
|
+
const checkpointNumber = CheckpointNumber(reader.readNumber());
|
|
40
39
|
const rollingHash = reader.readObject(Buffer16);
|
|
41
|
-
return { index, leaf, l1BlockHash, l1BlockNumber,
|
|
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/
|
|
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(
|
|
17
|
-
this.messageSource.setL1ToL2Messages(
|
|
16
|
+
public setL1ToL2Messages(checkpointNumber: CheckpointNumber, msgs: Fr[]) {
|
|
17
|
+
this.messageSource.setL1ToL2Messages(checkpointNumber, msgs);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
getL1ToL2Messages(
|
|
21
|
-
return this.messageSource.getL1ToL2Messages(
|
|
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.
|
|
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/
|
|
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
|
|
10
|
+
private messagesPerCheckpoint = new Map<CheckpointNumber, Fr[]>();
|
|
11
11
|
|
|
12
12
|
constructor(private blockNumber: number) {}
|
|
13
13
|
|
|
14
|
-
public setL1ToL2Messages(
|
|
15
|
-
this.
|
|
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
|
-
|
|
23
|
-
|
|
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';
|
package/src/test/mock_structs.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
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/
|
|
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 {
|
|
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.
|
|
18
|
+
const { index = InboxLeaf.smallestIndexForCheckpoint(checkpointNumber) } = overrides;
|
|
19
19
|
|
|
20
20
|
return {
|
|
21
21
|
index,
|
|
22
22
|
leaf,
|
|
23
|
-
|
|
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
|
-
|
|
34
|
+
initialCheckpointNumber?: CheckpointNumber;
|
|
35
35
|
overrideFn?: (msg: InboxMessage, index: number) => InboxMessage;
|
|
36
36
|
} = {},
|
|
37
37
|
): InboxMessage[] {
|
|
38
|
-
const { initialHash = Buffer16.ZERO, overrideFn = msg => msg,
|
|
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
|
|
44
|
-
const message = overrideFn(makeInboxMessage(rollingHash, { leaf,
|
|
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
|
}
|