@aztec/archiver 0.0.1-commit.9593d84 → 0.0.1-commit.96bb3f7
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/README.md +14 -14
- package/dest/archiver/archiver.d.ts +105 -85
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +949 -255
- package/dest/archiver/archiver_store.d.ts +109 -49
- 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 +1871 -390
- package/dest/archiver/config.d.ts +5 -4
- package/dest/archiver/config.d.ts.map +1 -1
- package/dest/archiver/config.js +12 -5
- package/dest/archiver/errors.d.ts +25 -1
- package/dest/archiver/errors.d.ts.map +1 -1
- package/dest/archiver/errors.js +37 -0
- package/dest/archiver/index.d.ts +2 -2
- package/dest/archiver/index.d.ts.map +1 -1
- package/dest/archiver/instrumentation.d.ts +3 -1
- package/dest/archiver/instrumentation.d.ts.map +1 -1
- package/dest/archiver/instrumentation.js +22 -59
- package/dest/archiver/kv_archiver_store/block_store.d.ts +60 -20
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +345 -89
- 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 +49 -58
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +68 -48
- package/dest/archiver/kv_archiver_store/log_store.d.ts +12 -16
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.js +149 -84
- package/dest/archiver/kv_archiver_store/message_store.d.ts +6 -5
- 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/l1/bin/retrieve-calldata.d.ts +3 -0
- package/dest/archiver/l1/bin/retrieve-calldata.d.ts.map +1 -0
- package/dest/archiver/l1/bin/retrieve-calldata.js +149 -0
- package/dest/archiver/l1/calldata_retriever.d.ts +112 -0
- package/dest/archiver/l1/calldata_retriever.d.ts.map +1 -0
- package/dest/archiver/l1/calldata_retriever.js +471 -0
- package/dest/archiver/l1/data_retrieval.d.ts +90 -0
- package/dest/archiver/l1/data_retrieval.d.ts.map +1 -0
- package/dest/archiver/{data_retrieval.js → l1/data_retrieval.js} +52 -107
- package/dest/archiver/l1/debug_tx.d.ts +19 -0
- package/dest/archiver/l1/debug_tx.d.ts.map +1 -0
- package/dest/archiver/l1/debug_tx.js +73 -0
- package/dest/archiver/l1/spire_proposer.d.ts +70 -0
- package/dest/archiver/l1/spire_proposer.d.ts.map +1 -0
- package/dest/archiver/l1/spire_proposer.js +157 -0
- package/dest/archiver/l1/trace_tx.d.ts +97 -0
- package/dest/archiver/l1/trace_tx.d.ts.map +1 -0
- package/dest/archiver/l1/trace_tx.js +91 -0
- package/dest/archiver/l1/types.d.ts +12 -0
- package/dest/archiver/l1/types.d.ts.map +1 -0
- package/dest/archiver/l1/types.js +3 -0
- package/dest/archiver/l1/validate_trace.d.ts +29 -0
- package/dest/archiver/l1/validate_trace.d.ts.map +1 -0
- package/dest/archiver/l1/validate_trace.js +150 -0
- 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 -5
- package/dest/archiver/structs/published.d.ts +1 -2
- package/dest/archiver/structs/published.d.ts.map +1 -1
- package/dest/archiver/validation.d.ts +4 -4
- package/dest/archiver/validation.d.ts.map +1 -1
- package/dest/archiver/validation.js +1 -1
- package/dest/factory.d.ts +2 -2
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +4 -3
- package/dest/index.d.ts +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/test/mock_archiver.d.ts +16 -8
- package/dest/test/mock_archiver.d.ts.map +1 -1
- package/dest/test/mock_archiver.js +19 -14
- package/dest/test/mock_l1_to_l2_message_source.d.ts +7 -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 +21 -11
- package/dest/test/mock_l2_block_source.d.ts +23 -8
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +95 -35
- 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 -8
- package/package.json +17 -16
- package/src/archiver/archiver.ts +751 -344
- package/src/archiver/archiver_store.ts +123 -48
- package/src/archiver/archiver_store_test_suite.ts +1943 -365
- package/src/archiver/config.ts +17 -12
- package/src/archiver/errors.ts +64 -0
- package/src/archiver/index.ts +1 -1
- package/src/archiver/instrumentation.ts +24 -59
- package/src/archiver/kv_archiver_store/block_store.ts +475 -106
- 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 +92 -72
- package/src/archiver/kv_archiver_store/log_store.ts +209 -99
- package/src/archiver/kv_archiver_store/message_store.ts +21 -18
- package/src/archiver/l1/README.md +98 -0
- package/src/archiver/l1/bin/retrieve-calldata.ts +182 -0
- package/src/archiver/l1/calldata_retriever.ts +641 -0
- package/src/archiver/{data_retrieval.ts → l1/data_retrieval.ts} +101 -165
- package/src/archiver/l1/debug_tx.ts +99 -0
- package/src/archiver/l1/spire_proposer.ts +160 -0
- package/src/archiver/l1/trace_tx.ts +128 -0
- package/src/archiver/l1/types.ts +13 -0
- package/src/archiver/l1/validate_trace.ts +211 -0
- package/src/archiver/structs/inbox_message.ts +8 -8
- package/src/archiver/structs/published.ts +0 -1
- package/src/archiver/validation.ts +6 -6
- package/src/factory.ts +4 -3
- package/src/index.ts +1 -1
- package/src/test/fixtures/debug_traceTransaction-multicall3.json +88 -0
- package/src/test/fixtures/debug_traceTransaction-multiplePropose.json +153 -0
- package/src/test/fixtures/debug_traceTransaction-proxied.json +122 -0
- package/src/test/fixtures/trace_transaction-multicall3.json +65 -0
- package/src/test/fixtures/trace_transaction-multiplePropose.json +319 -0
- package/src/test/fixtures/trace_transaction-proxied.json +128 -0
- package/src/test/fixtures/trace_transaction-randomRevert.json +216 -0
- package/src/test/mock_archiver.ts +22 -16
- package/src/test/mock_l1_to_l2_message_source.ts +18 -11
- package/src/test/mock_l2_block_source.ts +115 -37
- package/src/test/mock_structs.ts +10 -9
- package/dest/archiver/data_retrieval.d.ts +0 -79
- package/dest/archiver/data_retrieval.d.ts.map +0 -1
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
|
|
2
|
-
import { DefaultL1ContractsConfig } from '@aztec/ethereum';
|
|
2
|
+
import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
|
|
3
|
+
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
3
4
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
5
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
6
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
6
7
|
import { createLogger } from '@aztec/foundation/log';
|
|
7
|
-
import { L2Block, L2BlockHash, PublishedL2Block } from '@aztec/stdlib/block';
|
|
8
|
+
import { CheckpointedL2Block, L2Block, L2BlockHash, PublishedL2Block } from '@aztec/stdlib/block';
|
|
9
|
+
import { L1PublishedData } from '@aztec/stdlib/checkpoint';
|
|
8
10
|
import { EmptyL1RollupConstants, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
|
|
9
11
|
import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
10
12
|
/**
|
|
@@ -13,11 +15,12 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
13
15
|
l2Blocks = [];
|
|
14
16
|
provenBlockNumber = 0;
|
|
15
17
|
finalizedBlockNumber = 0;
|
|
18
|
+
checkpointedBlockNumber = 0;
|
|
16
19
|
log = createLogger('archiver:mock_l2_block_source');
|
|
17
20
|
async createBlocks(numBlocks) {
|
|
18
21
|
for(let i = 0; i < numBlocks; i++){
|
|
19
22
|
const blockNum = this.l2Blocks.length + 1;
|
|
20
|
-
const block = await L2Block.random(blockNum);
|
|
23
|
+
const block = await L2Block.random(BlockNumber(blockNum));
|
|
21
24
|
this.l2Blocks.push(block);
|
|
22
25
|
}
|
|
23
26
|
this.log.verbose(`Created ${numBlocks} blocks in the mock L2 block source`);
|
|
@@ -39,6 +42,9 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
39
42
|
}
|
|
40
43
|
this.finalizedBlockNumber = finalizedBlockNumber;
|
|
41
44
|
}
|
|
45
|
+
setCheckpointedBlockNumber(checkpointedBlockNumber) {
|
|
46
|
+
this.checkpointedBlockNumber = checkpointedBlockNumber;
|
|
47
|
+
}
|
|
42
48
|
/**
|
|
43
49
|
* Method to fetch the rollup contract address at the base-layer.
|
|
44
50
|
* @returns The rollup address.
|
|
@@ -55,10 +61,35 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
55
61
|
* Gets the number of the latest L2 block processed by the block source implementation.
|
|
56
62
|
* @returns In this mock instance, returns the number of L2 blocks that we've mocked.
|
|
57
63
|
*/ getBlockNumber() {
|
|
58
|
-
return Promise.resolve(this.l2Blocks.length);
|
|
64
|
+
return Promise.resolve(BlockNumber(this.l2Blocks.length));
|
|
59
65
|
}
|
|
60
66
|
getProvenBlockNumber() {
|
|
61
|
-
return Promise.resolve(this.provenBlockNumber);
|
|
67
|
+
return Promise.resolve(BlockNumber(this.provenBlockNumber));
|
|
68
|
+
}
|
|
69
|
+
getCheckpointedBlock(number) {
|
|
70
|
+
if (number > this.checkpointedBlockNumber) {
|
|
71
|
+
return Promise.resolve(undefined);
|
|
72
|
+
}
|
|
73
|
+
const block = this.l2Blocks[number - 1];
|
|
74
|
+
if (!block) {
|
|
75
|
+
return Promise.resolve(undefined);
|
|
76
|
+
}
|
|
77
|
+
const checkpointedBlock = new CheckpointedL2Block(CheckpointNumber(number), block.toL2Block(), new L1PublishedData(BigInt(number), BigInt(number), `0x${number.toString(16).padStart(64, '0')}`), []);
|
|
78
|
+
return Promise.resolve(checkpointedBlock);
|
|
79
|
+
}
|
|
80
|
+
async getCheckpointedBlocks(from, limit, _proven) {
|
|
81
|
+
const result = [];
|
|
82
|
+
for(let i = 0; i < limit; i++){
|
|
83
|
+
const blockNum = from + i;
|
|
84
|
+
if (blockNum > this.checkpointedBlockNumber) {
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
const block = await this.getCheckpointedBlock(BlockNumber(blockNum));
|
|
88
|
+
if (block) {
|
|
89
|
+
result.push(block);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return result;
|
|
62
93
|
}
|
|
63
94
|
/**
|
|
64
95
|
* Gets an l2 block.
|
|
@@ -68,6 +99,14 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
68
99
|
return Promise.resolve(this.l2Blocks[number - 1]);
|
|
69
100
|
}
|
|
70
101
|
/**
|
|
102
|
+
* Gets an L2 block (new format).
|
|
103
|
+
* @param number - The block number to return.
|
|
104
|
+
* @returns The requested L2 block.
|
|
105
|
+
*/ getL2BlockNew(number) {
|
|
106
|
+
const block = this.l2Blocks[number - 1];
|
|
107
|
+
return Promise.resolve(block?.toL2Block());
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
71
110
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
72
111
|
* @param from - Number of the first block to return (inclusive).
|
|
73
112
|
* @param limit - The maximum number of blocks to return.
|
|
@@ -75,29 +114,33 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
75
114
|
*/ getBlocks(from, limit, proven) {
|
|
76
115
|
return Promise.resolve(this.l2Blocks.slice(from - 1, from - 1 + limit).filter((b)=>!proven || this.provenBlockNumber === undefined || b.number <= this.provenBlockNumber));
|
|
77
116
|
}
|
|
117
|
+
async getPublishedCheckpoints(from, limit) {
|
|
118
|
+
// TODO: Implement this properly. This only works when we have one block per checkpoint.
|
|
119
|
+
return (await this.getPublishedBlocks(from, limit)).map((block)=>block.toPublishedCheckpoint());
|
|
120
|
+
}
|
|
121
|
+
async getCheckpointByArchive(archive) {
|
|
122
|
+
// TODO: Implement this properly. This only works when we have one block per checkpoint.
|
|
123
|
+
return (await this.getPublishedBlockByArchive(archive))?.block.toCheckpoint();
|
|
124
|
+
}
|
|
78
125
|
async getPublishedBlocks(from, limit, proven) {
|
|
79
126
|
const blocks = await this.getBlocks(from, limit, proven);
|
|
80
127
|
return blocks.map((block)=>PublishedL2Block.fromFields({
|
|
81
128
|
block,
|
|
82
|
-
l1:
|
|
83
|
-
blockNumber: BigInt(block.number),
|
|
84
|
-
blockHash: Buffer32.random().toString(),
|
|
85
|
-
timestamp: BigInt(block.number)
|
|
86
|
-
},
|
|
129
|
+
l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
|
|
87
130
|
attestations: []
|
|
88
131
|
}));
|
|
89
132
|
}
|
|
133
|
+
async getL2BlocksNew(from, limit, proven) {
|
|
134
|
+
const blocks = await this.getBlocks(from, limit, proven);
|
|
135
|
+
return blocks.map((x)=>x.toL2Block());
|
|
136
|
+
}
|
|
90
137
|
async getPublishedBlockByHash(blockHash) {
|
|
91
138
|
for (const block of this.l2Blocks){
|
|
92
139
|
const hash = await block.hash();
|
|
93
140
|
if (hash.equals(blockHash)) {
|
|
94
141
|
return PublishedL2Block.fromFields({
|
|
95
142
|
block,
|
|
96
|
-
l1:
|
|
97
|
-
blockNumber: BigInt(block.number),
|
|
98
|
-
blockHash: Buffer32.random().toString(),
|
|
99
|
-
timestamp: BigInt(block.number)
|
|
100
|
-
},
|
|
143
|
+
l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
|
|
101
144
|
attestations: []
|
|
102
145
|
});
|
|
103
146
|
}
|
|
@@ -111,11 +154,7 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
111
154
|
}
|
|
112
155
|
return Promise.resolve(PublishedL2Block.fromFields({
|
|
113
156
|
block,
|
|
114
|
-
l1:
|
|
115
|
-
blockNumber: BigInt(block.number),
|
|
116
|
-
blockHash: Buffer32.random().toString(),
|
|
117
|
-
timestamp: BigInt(block.number)
|
|
118
|
-
},
|
|
157
|
+
l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
|
|
119
158
|
attestations: []
|
|
120
159
|
}));
|
|
121
160
|
}
|
|
@@ -135,6 +174,10 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
135
174
|
getBlockHeader(number) {
|
|
136
175
|
return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.getBlockHeader());
|
|
137
176
|
}
|
|
177
|
+
getCheckpointsForEpoch(epochNumber) {
|
|
178
|
+
// TODO: Implement this properly. This only works when we have one block per checkpoint.
|
|
179
|
+
return this.getBlocksForEpoch(epochNumber).then((blocks)=>blocks.map((b)=>b.toCheckpoint()));
|
|
180
|
+
}
|
|
138
181
|
getBlocksForEpoch(epochNumber) {
|
|
139
182
|
const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
|
|
140
183
|
const [start, end] = getSlotRangeForEpoch(epochNumber, {
|
|
@@ -185,27 +228,44 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
185
228
|
return undefined;
|
|
186
229
|
}
|
|
187
230
|
async getL2Tips() {
|
|
188
|
-
const [latest, proven, finalized] = [
|
|
231
|
+
const [latest, proven, finalized, checkpointed] = [
|
|
189
232
|
await this.getBlockNumber(),
|
|
190
233
|
await this.getProvenBlockNumber(),
|
|
191
|
-
this.finalizedBlockNumber
|
|
234
|
+
this.finalizedBlockNumber,
|
|
235
|
+
this.checkpointedBlockNumber
|
|
192
236
|
];
|
|
193
237
|
const latestBlock = this.l2Blocks[latest - 1];
|
|
194
238
|
const provenBlock = this.l2Blocks[proven - 1];
|
|
195
239
|
const finalizedBlock = this.l2Blocks[finalized - 1];
|
|
240
|
+
const checkpointedBlock = this.l2Blocks[checkpointed - 1];
|
|
241
|
+
const latestBlockId = {
|
|
242
|
+
number: BlockNumber(latest),
|
|
243
|
+
hash: (await latestBlock?.hash())?.toString()
|
|
244
|
+
};
|
|
245
|
+
const provenBlockId = {
|
|
246
|
+
number: BlockNumber(proven),
|
|
247
|
+
hash: (await provenBlock?.hash())?.toString()
|
|
248
|
+
};
|
|
249
|
+
const finalizedBlockId = {
|
|
250
|
+
number: BlockNumber(finalized),
|
|
251
|
+
hash: (await finalizedBlock?.hash())?.toString()
|
|
252
|
+
};
|
|
253
|
+
const checkpointedBlockId = {
|
|
254
|
+
number: BlockNumber(checkpointed),
|
|
255
|
+
hash: (await checkpointedBlock?.hash())?.toString()
|
|
256
|
+
};
|
|
257
|
+
const makeTipId = (blockId)=>({
|
|
258
|
+
block: blockId,
|
|
259
|
+
checkpoint: {
|
|
260
|
+
number: CheckpointNumber(blockId.number),
|
|
261
|
+
hash: blockId.hash
|
|
262
|
+
}
|
|
263
|
+
});
|
|
196
264
|
return {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
proven: {
|
|
202
|
-
number: proven,
|
|
203
|
-
hash: (await provenBlock?.hash())?.toString()
|
|
204
|
-
},
|
|
205
|
-
finalized: {
|
|
206
|
-
number: finalized,
|
|
207
|
-
hash: (await finalizedBlock?.hash())?.toString()
|
|
208
|
-
}
|
|
265
|
+
proposed: latestBlockId,
|
|
266
|
+
checkpointed: makeTipId(checkpointedBlockId),
|
|
267
|
+
proven: makeTipId(provenBlockId),
|
|
268
|
+
finalized: makeTipId(finalizedBlockId)
|
|
209
269
|
};
|
|
210
270
|
}
|
|
211
271
|
getL2EpochNumber() {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { Buffer16 } from '@aztec/foundation/buffer';
|
|
2
3
|
import { type InboxMessage } from '../archiver/structs/inbox_message.js';
|
|
3
4
|
export declare function makeInboxMessage(previousRollingHash?: Buffer16, overrides?: Partial<InboxMessage>): InboxMessage;
|
|
4
5
|
export declare function makeInboxMessages(count: number, opts?: {
|
|
5
6
|
initialHash?: Buffer16;
|
|
6
|
-
|
|
7
|
+
initialCheckpointNumber?: CheckpointNumber;
|
|
7
8
|
overrideFn?: (msg: InboxMessage, index: number) => InboxMessage;
|
|
8
9
|
}): InboxMessage[];
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdHJ1Y3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3N0cnVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBSzlELE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBcUIsTUFBTSxzQ0FBc0MsQ0FBQztBQUU1Rix3QkFBZ0IsZ0JBQWdCLENBQzlCLG1CQUFtQixXQUFnQixFQUNuQyxTQUFTLEdBQUUsT0FBTyxDQUFDLFlBQVksQ0FBTSxHQUNwQyxZQUFZLENBZ0JkO0FBRUQsd0JBQWdCLGlCQUFpQixDQUMvQixLQUFLLEVBQUUsTUFBTSxFQUNiLElBQUksR0FBRTtJQUNKLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQztJQUN2Qix1QkFBdUIsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0lBQzNDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxLQUFLLFlBQVksQ0FBQztDQUM1RCxHQUNMLFlBQVksRUFBRSxDQWFoQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_structs.d.ts","sourceRoot":"","sources":["../../src/test/mock_structs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAY,MAAM,0BAA0B,CAAC;AAK9D,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,sCAAsC,CAAC;AAE5F,wBAAgB,gBAAgB,CAC9B,mBAAmB,WAAgB,EACnC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GACpC,YAAY,CAgBd;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IACJ,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,
|
|
1
|
+
{"version":3,"file":"mock_structs.d.ts","sourceRoot":"","sources":["../../src/test/mock_structs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAY,MAAM,0BAA0B,CAAC;AAK9D,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,sCAAsC,CAAC;AAE5F,wBAAgB,gBAAgB,CAC9B,mBAAmB,WAAgB,EACnC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GACpC,YAAY,CAgBd;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IACJ,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,uBAAuB,CAAC,EAAE,gBAAgB,CAAC;IAC3C,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC;CAC5D,GACL,YAAY,EAAE,CAahB"}
|
|
@@ -1,34 +1,35 @@
|
|
|
1
|
+
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
2
|
-
import { randomBigInt, randomInt } from '@aztec/foundation/crypto';
|
|
3
|
-
import { Fr } from '@aztec/foundation/
|
|
3
|
+
import { randomBigInt, randomInt } from '@aztec/foundation/crypto/random';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
5
|
import { InboxLeaf } from '@aztec/stdlib/messaging';
|
|
5
6
|
import { updateRollingHash } from '../archiver/structs/inbox_message.js';
|
|
6
7
|
export function makeInboxMessage(previousRollingHash = Buffer16.ZERO, overrides = {}) {
|
|
7
|
-
const {
|
|
8
|
+
const { checkpointNumber = CheckpointNumber(randomInt(100) + 1) } = overrides;
|
|
8
9
|
const { l1BlockNumber = randomBigInt(100n) + 1n } = overrides;
|
|
9
10
|
const { l1BlockHash = Buffer32.random() } = overrides;
|
|
10
11
|
const { leaf = Fr.random() } = overrides;
|
|
11
12
|
const { rollingHash = updateRollingHash(previousRollingHash, leaf) } = overrides;
|
|
12
|
-
const { index = InboxLeaf.
|
|
13
|
+
const { index = InboxLeaf.smallestIndexForCheckpoint(checkpointNumber) } = overrides;
|
|
13
14
|
return {
|
|
14
15
|
index,
|
|
15
16
|
leaf,
|
|
16
|
-
|
|
17
|
+
checkpointNumber,
|
|
17
18
|
l1BlockNumber,
|
|
18
19
|
l1BlockHash,
|
|
19
20
|
rollingHash
|
|
20
21
|
};
|
|
21
22
|
}
|
|
22
23
|
export function makeInboxMessages(count, opts = {}) {
|
|
23
|
-
const { initialHash = Buffer16.ZERO, overrideFn = (msg)=>msg,
|
|
24
|
+
const { initialHash = Buffer16.ZERO, overrideFn = (msg)=>msg, initialCheckpointNumber = 1 } = opts;
|
|
24
25
|
const messages = [];
|
|
25
26
|
let rollingHash = initialHash;
|
|
26
27
|
for(let i = 0; i < count; i++){
|
|
27
28
|
const leaf = Fr.random();
|
|
28
|
-
const
|
|
29
|
+
const checkpointNumber = CheckpointNumber(i + initialCheckpointNumber);
|
|
29
30
|
const message = overrideFn(makeInboxMessage(rollingHash, {
|
|
30
31
|
leaf,
|
|
31
|
-
|
|
32
|
+
checkpointNumber
|
|
32
33
|
}), i);
|
|
33
34
|
rollingHash = message.rollingHash;
|
|
34
35
|
messages.push(message);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/archiver",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.96bb3f7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"tsconfig": "./tsconfig.json"
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
|
-
"build": "yarn clean &&
|
|
21
|
-
"build:dev": "
|
|
20
|
+
"build": "yarn clean && ../scripts/tsc.sh",
|
|
21
|
+
"build:dev": "../scripts/tsc.sh --watch",
|
|
22
22
|
"clean": "rm -rf ./dest .tsbuildinfo",
|
|
23
23
|
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}",
|
|
24
24
|
"test:integration": "concurrently -k -s first -c reset,dim -n test,anvil \"yarn test:integration:run\" \"anvil\"",
|
|
@@ -66,22 +66,23 @@
|
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@aztec/blob-
|
|
70
|
-
"@aztec/blob-
|
|
71
|
-
"@aztec/constants": "0.0.1-commit.
|
|
72
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
73
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
74
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
75
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
76
|
-
"@aztec/l1-artifacts": "0.0.1-commit.
|
|
77
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
78
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
79
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
80
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
69
|
+
"@aztec/blob-client": "0.0.1-commit.96bb3f7",
|
|
70
|
+
"@aztec/blob-lib": "0.0.1-commit.96bb3f7",
|
|
71
|
+
"@aztec/constants": "0.0.1-commit.96bb3f7",
|
|
72
|
+
"@aztec/epoch-cache": "0.0.1-commit.96bb3f7",
|
|
73
|
+
"@aztec/ethereum": "0.0.1-commit.96bb3f7",
|
|
74
|
+
"@aztec/foundation": "0.0.1-commit.96bb3f7",
|
|
75
|
+
"@aztec/kv-store": "0.0.1-commit.96bb3f7",
|
|
76
|
+
"@aztec/l1-artifacts": "0.0.1-commit.96bb3f7",
|
|
77
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.96bb3f7",
|
|
78
|
+
"@aztec/protocol-contracts": "0.0.1-commit.96bb3f7",
|
|
79
|
+
"@aztec/stdlib": "0.0.1-commit.96bb3f7",
|
|
80
|
+
"@aztec/telemetry-client": "0.0.1-commit.96bb3f7",
|
|
81
81
|
"lodash.groupby": "^4.6.0",
|
|
82
82
|
"lodash.omit": "^4.5.0",
|
|
83
83
|
"tslib": "^2.5.0",
|
|
84
|
-
"viem": "npm:@aztec/viem@2.38.2"
|
|
84
|
+
"viem": "npm:@aztec/viem@2.38.2",
|
|
85
|
+
"zod": "^3.23.8"
|
|
85
86
|
},
|
|
86
87
|
"devDependencies": {
|
|
87
88
|
"@jest/globals": "^30.0.0",
|