@aztec/world-state 0.0.1-commit.d3ec352c → 0.0.1-commit.e6bd8901
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/instrumentation/instrumentation.d.ts +1 -1
- package/dest/instrumentation/instrumentation.d.ts.map +1 -1
- package/dest/instrumentation/instrumentation.js +11 -42
- package/dest/native/merkle_trees_facade.d.ts +8 -3
- package/dest/native/merkle_trees_facade.d.ts.map +1 -1
- package/dest/native/merkle_trees_facade.js +35 -6
- package/dest/native/message.d.ts +2 -2
- package/dest/native/message.d.ts.map +1 -1
- package/dest/native/message.js +1 -1
- package/dest/native/native_world_state.d.ts +7 -5
- package/dest/native/native_world_state.d.ts.map +1 -1
- package/dest/native/native_world_state.js +5 -4
- package/dest/synchronizer/config.d.ts +1 -3
- package/dest/synchronizer/config.d.ts.map +1 -1
- package/dest/synchronizer/config.js +1 -6
- package/dest/synchronizer/server_world_state_synchronizer.d.ts +5 -4
- package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -1
- package/dest/synchronizer/server_world_state_synchronizer.js +67 -40
- package/dest/test/utils.d.ts +11 -17
- package/dest/test/utils.d.ts.map +1 -1
- package/dest/test/utils.js +44 -81
- package/dest/testing.d.ts +2 -2
- package/dest/testing.d.ts.map +1 -1
- package/dest/testing.js +1 -1
- package/dest/world-state-db/merkle_tree_db.d.ts +7 -9
- package/dest/world-state-db/merkle_tree_db.d.ts.map +1 -1
- package/package.json +11 -11
- package/src/instrumentation/instrumentation.ts +10 -42
- package/src/native/merkle_trees_facade.ts +36 -3
- package/src/native/message.ts +1 -1
- package/src/native/native_world_state.ts +9 -8
- package/src/synchronizer/config.ts +1 -14
- package/src/synchronizer/server_world_state_synchronizer.ts +71 -56
- package/src/test/utils.ts +70 -128
- package/src/testing.ts +1 -1
- package/src/world-state-db/merkle_tree_db.ts +10 -12
- package/dest/synchronizer/utils.d.ts +0 -11
- package/dest/synchronizer/utils.d.ts.map +0 -1
- package/dest/synchronizer/utils.js +0 -59
- package/src/synchronizer/utils.ts +0 -83
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
import { GENESIS_BLOCK_HEADER_HASH, INITIAL_L2_BLOCK_NUM, INITIAL_L2_CHECKPOINT_NUM } from '@aztec/constants';
|
|
1
2
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
4
|
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
4
5
|
import { elapsed } from '@aztec/foundation/timer';
|
|
6
|
+
import { GENESIS_CHECKPOINT_HEADER_HASH, L2BlockStream } from '@aztec/stdlib/block';
|
|
5
7
|
import { WorldStateRunningState } from '@aztec/stdlib/interfaces/server';
|
|
6
8
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
7
|
-
import {
|
|
9
|
+
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
8
10
|
import { WorldStateInstrumentation } from '../instrumentation/instrumentation.js';
|
|
9
11
|
import { WorldStateSynchronizerError } from './errors.js';
|
|
10
|
-
import { findFirstBlocksInCheckpoints } from './utils.js';
|
|
11
12
|
/**
|
|
12
13
|
* Synchronizes the world state with the L2 blocks from a L2BlockSource via a block stream.
|
|
13
14
|
* The synchronizer will download the L2 blocks from the L2BlockSource and update the merkle trees.
|
|
@@ -22,7 +23,6 @@ import { findFirstBlocksInCheckpoints } from './utils.js';
|
|
|
22
23
|
latestBlockNumberAtStart;
|
|
23
24
|
historyToKeep;
|
|
24
25
|
currentState;
|
|
25
|
-
latestBlockHashQuery;
|
|
26
26
|
syncPromise;
|
|
27
27
|
blockStream;
|
|
28
28
|
// WorldState doesn't track the proven block number, it only tracks the latest tips of the pending chain and the finalized chain
|
|
@@ -36,7 +36,6 @@ import { findFirstBlocksInCheckpoints } from './utils.js';
|
|
|
36
36
|
this.log = log;
|
|
37
37
|
this.latestBlockNumberAtStart = BlockNumber.ZERO;
|
|
38
38
|
this.currentState = WorldStateRunningState.IDLE;
|
|
39
|
-
this.latestBlockHashQuery = undefined;
|
|
40
39
|
this.syncPromise = promiseWithResolvers();
|
|
41
40
|
this.merkleTreeCommitted = this.merkleTreeDb.getCommitted();
|
|
42
41
|
this.historyToKeep = config.worldStateBlockHistory < 1 ? undefined : config.worldStateBlockHistory;
|
|
@@ -48,8 +47,8 @@ import { findFirstBlocksInCheckpoints } from './utils.js';
|
|
|
48
47
|
getSnapshot(blockNumber) {
|
|
49
48
|
return this.merkleTreeDb.getSnapshot(blockNumber);
|
|
50
49
|
}
|
|
51
|
-
fork(blockNumber) {
|
|
52
|
-
return this.merkleTreeDb.fork(blockNumber);
|
|
50
|
+
fork(blockNumber, opts) {
|
|
51
|
+
return this.merkleTreeDb.fork(blockNumber, opts);
|
|
53
52
|
}
|
|
54
53
|
backupTo(dstPath, compact) {
|
|
55
54
|
return this.merkleTreeDb.backupTo(dstPath, compact);
|
|
@@ -65,7 +64,7 @@ import { findFirstBlocksInCheckpoints } from './utils.js';
|
|
|
65
64
|
return this.syncPromise;
|
|
66
65
|
}
|
|
67
66
|
// Get the current latest block number
|
|
68
|
-
this.latestBlockNumberAtStart = BlockNumber(await
|
|
67
|
+
this.latestBlockNumberAtStart = BlockNumber(await this.l2BlockSource.getBlockNumber());
|
|
69
68
|
const blockToDownloadFrom = await this.getLatestBlockNumber() + 1;
|
|
70
69
|
if (blockToDownloadFrom <= this.latestBlockNumberAtStart) {
|
|
71
70
|
// If there are blocks to be retrieved, go to a synching state
|
|
@@ -83,12 +82,11 @@ import { findFirstBlocksInCheckpoints } from './utils.js';
|
|
|
83
82
|
return this.syncPromise.promise;
|
|
84
83
|
}
|
|
85
84
|
createBlockStream() {
|
|
86
|
-
const tracer = this.instrumentation.telemetry.getTracer('WorldStateL2BlockStream');
|
|
87
85
|
const logger = createLogger('world-state:block_stream');
|
|
88
|
-
return new
|
|
89
|
-
proven: this.config.worldStateProvenBlocksOnly,
|
|
86
|
+
return new L2BlockStream(this.l2BlockSource, this, this, logger, {
|
|
90
87
|
pollIntervalMS: this.config.worldStateBlockCheckIntervalMS,
|
|
91
|
-
batchSize: this.config.worldStateBlockRequestBatchSize
|
|
88
|
+
batchSize: this.config.worldStateBlockRequestBatchSize,
|
|
89
|
+
ignoreCheckpoints: true
|
|
92
90
|
});
|
|
93
91
|
}
|
|
94
92
|
async stop() {
|
|
@@ -114,7 +112,7 @@ import { findFirstBlocksInCheckpoints } from './utils.js';
|
|
|
114
112
|
};
|
|
115
113
|
}
|
|
116
114
|
async getLatestBlockNumber() {
|
|
117
|
-
return (await this.getL2Tips()).
|
|
115
|
+
return (await this.getL2Tips()).proposed.number;
|
|
118
116
|
}
|
|
119
117
|
async stopSync() {
|
|
120
118
|
this.log.debug('Stopping sync...');
|
|
@@ -175,46 +173,74 @@ import { findFirstBlocksInCheckpoints } from './utils.js';
|
|
|
175
173
|
if (number === BlockNumber.ZERO) {
|
|
176
174
|
return (await this.merkleTreeCommitted.getInitialHeader().hash()).toString();
|
|
177
175
|
}
|
|
178
|
-
|
|
179
|
-
this.latestBlockHashQuery = {
|
|
180
|
-
hash: await this.merkleTreeCommitted.getLeafValue(MerkleTreeId.ARCHIVE, BigInt(number)).then((leaf)=>leaf?.toString()),
|
|
181
|
-
blockNumber: number
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
return this.latestBlockHashQuery.hash;
|
|
176
|
+
return this.merkleTreeCommitted.getLeafValue(MerkleTreeId.ARCHIVE, BigInt(number)).then((leaf)=>leaf?.toString());
|
|
185
177
|
}
|
|
186
178
|
/** Returns the latest L2 block number for each tip of the chain (latest, proven, finalized). */ async getL2Tips() {
|
|
187
179
|
const status = await this.merkleTreeDb.getStatusSummary();
|
|
188
|
-
const
|
|
180
|
+
const unfinalizedBlockHashPromise = this.getL2BlockHash(status.unfinalizedBlockNumber);
|
|
181
|
+
const finalizedBlockHashPromise = this.getL2BlockHash(status.finalizedBlockNumber);
|
|
182
|
+
const provenBlockNumber = this.provenBlockNumber ?? status.finalizedBlockNumber;
|
|
183
|
+
const provenBlockHashPromise = this.provenBlockNumber === undefined ? finalizedBlockHashPromise : this.getL2BlockHash(this.provenBlockNumber);
|
|
184
|
+
const [unfinalizedBlockHash, finalizedBlockHash, provenBlockHash] = await Promise.all([
|
|
185
|
+
unfinalizedBlockHashPromise,
|
|
186
|
+
finalizedBlockHashPromise,
|
|
187
|
+
provenBlockHashPromise
|
|
188
|
+
]);
|
|
189
189
|
const latestBlockId = {
|
|
190
190
|
number: status.unfinalizedBlockNumber,
|
|
191
191
|
hash: unfinalizedBlockHash
|
|
192
192
|
};
|
|
193
|
+
// World state doesn't track checkpointed blocks or checkpoints themselves.
|
|
194
|
+
// but we use a block stream so we need to provide 'local' L2Tips.
|
|
195
|
+
// We configure the block stream to ignore checkpoints and set checkpoint values to genesis here.
|
|
196
|
+
const genesisCheckpointHeaderHash = GENESIS_CHECKPOINT_HEADER_HASH.toString();
|
|
193
197
|
return {
|
|
194
|
-
|
|
198
|
+
proposed: latestBlockId,
|
|
199
|
+
checkpointed: {
|
|
200
|
+
block: {
|
|
201
|
+
number: INITIAL_L2_BLOCK_NUM,
|
|
202
|
+
hash: GENESIS_BLOCK_HEADER_HASH.toString()
|
|
203
|
+
},
|
|
204
|
+
checkpoint: {
|
|
205
|
+
number: INITIAL_L2_CHECKPOINT_NUM,
|
|
206
|
+
hash: genesisCheckpointHeaderHash
|
|
207
|
+
}
|
|
208
|
+
},
|
|
195
209
|
finalized: {
|
|
196
|
-
|
|
197
|
-
|
|
210
|
+
block: {
|
|
211
|
+
number: status.finalizedBlockNumber,
|
|
212
|
+
hash: finalizedBlockHash ?? ''
|
|
213
|
+
},
|
|
214
|
+
checkpoint: {
|
|
215
|
+
number: INITIAL_L2_CHECKPOINT_NUM,
|
|
216
|
+
hash: genesisCheckpointHeaderHash
|
|
217
|
+
}
|
|
198
218
|
},
|
|
199
219
|
proven: {
|
|
200
|
-
|
|
201
|
-
|
|
220
|
+
block: {
|
|
221
|
+
number: provenBlockNumber,
|
|
222
|
+
hash: provenBlockHash ?? ''
|
|
223
|
+
},
|
|
224
|
+
checkpoint: {
|
|
225
|
+
number: INITIAL_L2_CHECKPOINT_NUM,
|
|
226
|
+
hash: genesisCheckpointHeaderHash
|
|
227
|
+
}
|
|
202
228
|
}
|
|
203
229
|
};
|
|
204
230
|
}
|
|
205
231
|
/** Handles an event emitted by the block stream. */ async handleBlockStreamEvent(event) {
|
|
206
232
|
switch(event.type){
|
|
207
233
|
case 'blocks-added':
|
|
208
|
-
await this.handleL2Blocks(event.blocks
|
|
234
|
+
await this.handleL2Blocks(event.blocks);
|
|
209
235
|
break;
|
|
210
236
|
case 'chain-pruned':
|
|
211
|
-
await this.handleChainPruned(
|
|
237
|
+
await this.handleChainPruned(event.block.number);
|
|
212
238
|
break;
|
|
213
239
|
case 'chain-proven':
|
|
214
|
-
await this.handleChainProven(
|
|
240
|
+
await this.handleChainProven(event.block.number);
|
|
215
241
|
break;
|
|
216
242
|
case 'chain-finalized':
|
|
217
|
-
await this.handleChainFinalized(
|
|
243
|
+
await this.handleChainFinalized(event.block.number);
|
|
218
244
|
break;
|
|
219
245
|
}
|
|
220
246
|
}
|
|
@@ -224,12 +250,15 @@ import { findFirstBlocksInCheckpoints } from './utils.js';
|
|
|
224
250
|
* @returns Whether the block handled was produced by this same node.
|
|
225
251
|
*/ async handleL2Blocks(l2Blocks) {
|
|
226
252
|
this.log.trace(`Handling L2 blocks ${l2Blocks[0].number} to ${l2Blocks.at(-1).number}`);
|
|
227
|
-
|
|
253
|
+
// Fetch the L1->L2 messages for the first block in a checkpoint.
|
|
254
|
+
const messagesForBlocks = new Map();
|
|
255
|
+
await Promise.all(l2Blocks.filter((b)=>b.indexWithinCheckpoint === 0).map(async (block)=>{
|
|
256
|
+
const l1ToL2Messages = await this.l2BlockSource.getL1ToL2Messages(block.checkpointNumber);
|
|
257
|
+
messagesForBlocks.set(block.number, l1ToL2Messages);
|
|
258
|
+
}));
|
|
228
259
|
let updateStatus = undefined;
|
|
229
260
|
for (const block of l2Blocks){
|
|
230
|
-
const
|
|
231
|
-
const isFirstBlock = firstBlocksInCheckpoints.has(block.number);
|
|
232
|
-
const [duration, result] = await elapsed(()=>this.handleL2Block(block, l1ToL2Messages, isFirstBlock));
|
|
261
|
+
const [duration, result] = await elapsed(()=>this.handleL2Block(block, messagesForBlocks.get(block.number) ?? []));
|
|
233
262
|
this.log.info(`World state updated with L2 block ${block.number}`, {
|
|
234
263
|
eventName: 'l2-block-handled',
|
|
235
264
|
duration,
|
|
@@ -250,14 +279,13 @@ import { findFirstBlocksInCheckpoints } from './utils.js';
|
|
|
250
279
|
* @param l2Block - The L2 block to handle.
|
|
251
280
|
* @param l1ToL2Messages - The L1 to L2 messages for the block.
|
|
252
281
|
* @returns Whether the block handled was produced by this same node.
|
|
253
|
-
*/ async handleL2Block(l2Block, l1ToL2Messages
|
|
254
|
-
// If the above check succeeds, we can proceed to handle the block.
|
|
282
|
+
*/ async handleL2Block(l2Block, l1ToL2Messages) {
|
|
255
283
|
this.log.trace(`Pushing L2 block ${l2Block.number} to merkle tree db `, {
|
|
256
284
|
blockNumber: l2Block.number,
|
|
257
285
|
blockHash: await l2Block.hash().then((h)=>h.toString()),
|
|
258
286
|
l1ToL2Messages: l1ToL2Messages.map((msg)=>msg.toString())
|
|
259
287
|
});
|
|
260
|
-
const result = await this.merkleTreeDb.handleL2BlockAndMessages(l2Block, l1ToL2Messages
|
|
288
|
+
const result = await this.merkleTreeDb.handleL2BlockAndMessages(l2Block, l1ToL2Messages);
|
|
261
289
|
if (this.currentState === WorldStateRunningState.SYNCHING && l2Block.number >= this.latestBlockNumberAtStart) {
|
|
262
290
|
this.setCurrentState(WorldStateRunningState.RUNNING);
|
|
263
291
|
this.syncPromise.resolve();
|
|
@@ -270,12 +298,12 @@ import { findFirstBlocksInCheckpoints } from './utils.js';
|
|
|
270
298
|
if (this.historyToKeep === undefined) {
|
|
271
299
|
return;
|
|
272
300
|
}
|
|
273
|
-
const newHistoricBlock =
|
|
274
|
-
if (newHistoricBlock <=
|
|
301
|
+
const newHistoricBlock = summary.finalizedBlockNumber - this.historyToKeep + 1;
|
|
302
|
+
if (newHistoricBlock <= 1) {
|
|
275
303
|
return;
|
|
276
304
|
}
|
|
277
305
|
this.log.verbose(`Pruning historic blocks to ${newHistoricBlock}`);
|
|
278
|
-
const status = await this.merkleTreeDb.removeHistoricalBlocks(newHistoricBlock);
|
|
306
|
+
const status = await this.merkleTreeDb.removeHistoricalBlocks(BlockNumber(newHistoricBlock));
|
|
279
307
|
this.log.debug(`World state summary `, status.summary);
|
|
280
308
|
}
|
|
281
309
|
handleChainProven(blockNumber) {
|
|
@@ -286,7 +314,6 @@ import { findFirstBlocksInCheckpoints } from './utils.js';
|
|
|
286
314
|
async handleChainPruned(blockNumber) {
|
|
287
315
|
this.log.warn(`Chain pruned to block ${blockNumber}`);
|
|
288
316
|
const status = await this.merkleTreeDb.unwindBlocks(blockNumber);
|
|
289
|
-
this.latestBlockHashQuery = undefined;
|
|
290
317
|
this.provenBlockNumber = undefined;
|
|
291
318
|
this.instrumentation.updateWorldStateMetrics(status);
|
|
292
319
|
}
|
package/dest/test/utils.d.ts
CHANGED
|
@@ -1,32 +1,26 @@
|
|
|
1
1
|
import { BlockNumber, type CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
2
|
-
import { Fr } from '@aztec/foundation/
|
|
3
|
-
import {
|
|
4
|
-
import { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
5
4
|
import type { MerkleTreeReadOperations, MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
5
|
+
import { mockCheckpointAndMessages } from '@aztec/stdlib/testing';
|
|
6
6
|
import type { NativeWorldStateService } from '../native/native_world_state.js';
|
|
7
|
-
export declare function
|
|
8
|
-
|
|
7
|
+
export declare function updateBlockState(block: L2Block, l1ToL2Messages: Fr[], fork: MerkleTreeWriteOperations): Promise<void>;
|
|
8
|
+
export declare function mockBlock(blockNum: BlockNumber, size: number, fork: MerkleTreeWriteOperations, maxEffects?: number | undefined, numL1ToL2Messages?: number, isFirstBlockInCheckpoint?: boolean): Promise<{
|
|
9
|
+
block: L2Block;
|
|
9
10
|
messages: Fr[];
|
|
10
11
|
}>;
|
|
11
12
|
export declare function mockEmptyBlock(blockNum: BlockNumber, fork: MerkleTreeWriteOperations): Promise<{
|
|
12
|
-
block:
|
|
13
|
+
block: L2Block;
|
|
13
14
|
messages: Fr[];
|
|
14
15
|
}>;
|
|
15
16
|
export declare function mockBlocks(from: BlockNumber, count: number, numTxs: number, worldState: NativeWorldStateService): Promise<{
|
|
16
|
-
blocks:
|
|
17
|
+
blocks: L2Block[];
|
|
17
18
|
messages: Fr[][];
|
|
18
19
|
}>;
|
|
19
|
-
export declare function
|
|
20
|
-
|
|
21
|
-
startBlockNumber?: BlockNumber;
|
|
22
|
-
numBlocks?: number;
|
|
23
|
-
numTxsPerBlock?: number;
|
|
24
|
-
numL1ToL2Messages?: number;
|
|
25
|
-
fork?: MerkleTreeWriteOperations;
|
|
26
|
-
}): Promise<{
|
|
27
|
-
checkpoint: Checkpoint;
|
|
20
|
+
export declare function mockCheckpoint(checkpointNumber: CheckpointNumber, fork: MerkleTreeWriteOperations, options?: Partial<Parameters<typeof mockCheckpointAndMessages>[1]>): Promise<{
|
|
21
|
+
checkpoint: import("@aztec/stdlib/checkpoint").Checkpoint;
|
|
28
22
|
messages: Fr[];
|
|
29
23
|
}>;
|
|
30
24
|
export declare function assertSameState(forkA: MerkleTreeReadOperations, forkB: MerkleTreeReadOperations): Promise<void>;
|
|
31
25
|
export declare function compareChains(left: MerkleTreeReadOperations, right: MerkleTreeReadOperations): Promise<void>;
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxnQkFBZ0IsRUFBeUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUU1RyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxFQUVWLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDMUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQXNCLE1BQU0sdUJBQXVCLENBQUM7QUFJdEYsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUvRSx3QkFBc0IsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixpQkE4QzNHO0FBRUQsd0JBQXNCLFNBQVMsQ0FDN0IsUUFBUSxFQUFFLFdBQVcsRUFDckIsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUseUJBQXlCLEVBQy9CLFVBQVUsR0FBRSxNQUFNLEdBQUcsU0FBZ0IsRUFDckMsaUJBQWlCLEdBQUUsTUFBNEMsRUFDL0Qsd0JBQXdCLEdBQUUsT0FBYzs7O0dBZXpDO0FBRUQsd0JBQXNCLGNBQWMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSx5QkFBeUI7OztHQVkxRjtBQUVELHdCQUFzQixVQUFVLENBQzlCLElBQUksRUFBRSxXQUFXLEVBQ2pCLEtBQUssRUFBRSxNQUFNLEVBQ2IsTUFBTSxFQUFFLE1BQU0sRUFDZCxVQUFVLEVBQUUsdUJBQXVCOzs7R0FlcEM7QUFFRCx3QkFBc0IsY0FBYyxDQUNsQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsSUFBSSxFQUFFLHlCQUF5QixFQUMvQixPQUFPLEdBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQU07OztHQU92RTtBQUVELHdCQUFzQixlQUFlLENBQUMsS0FBSyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSx3QkFBd0IsaUJBUXJHO0FBRUQsd0JBQXNCLGFBQWEsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixpQkFZbEcifQ==
|
package/dest/test/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAyB,MAAM,iCAAiC,CAAC;AAE5G,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAEV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAsB,MAAM,uBAAuB,CAAC;AAItF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE/E,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,iBA8C3G;AAED,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,WAAW,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,yBAAyB,EAC/B,UAAU,GAAE,MAAM,GAAG,SAAgB,EACrC,iBAAiB,GAAE,MAA4C,EAC/D,wBAAwB,GAAE,OAAc;;;GAezC;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,yBAAyB;;;GAY1F;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,uBAAuB;;;GAepC;AAED,wBAAsB,cAAc,CAClC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,yBAAyB,EAC/B,OAAO,GAAE,OAAO,CAAC,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAM;;;GAOvE;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,wBAAwB,iBAQrG;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,wBAAwB,iBAYlG"}
|
package/dest/test/utils.js
CHANGED
|
@@ -1,73 +1,59 @@
|
|
|
1
1
|
import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NULLIFIER_SUBTREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
2
|
-
import {
|
|
2
|
+
import { asyncMap } from '@aztec/foundation/async-map';
|
|
3
|
+
import { BlockNumber, IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
|
|
3
4
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
4
|
-
import { Fr } from '@aztec/foundation/
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { computeInHashFromL1ToL2Messages } from '@aztec/stdlib/messaging';
|
|
5
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
7
|
+
import { mockCheckpointAndMessages, mockL1ToL2Messages } from '@aztec/stdlib/testing';
|
|
8
8
|
import { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
import { BlockHeader } from '@aztec/stdlib/tx';
|
|
10
|
+
export async function updateBlockState(block, l1ToL2Messages, fork) {
|
|
11
|
+
const insertData = async (treeId, data, subTreeHeight, fork)=>{
|
|
12
|
+
for (const dataBatch of data){
|
|
13
|
+
await fork.batchInsert(treeId, dataBatch, subTreeHeight);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const publicDataInsert = insertData(MerkleTreeId.PUBLIC_DATA_TREE, block.body.txEffects.map((txEffect)=>txEffect.publicDataWrites.map((write)=>write.toBuffer())), 0, fork);
|
|
17
|
+
const nullifierInsert = insertData(MerkleTreeId.NULLIFIER_TREE, block.body.txEffects.map((txEffect)=>padArrayEnd(txEffect.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX).map((nullifier)=>nullifier.toBuffer())), NULLIFIER_SUBTREE_HEIGHT, fork);
|
|
18
|
+
const noteHashesPadded = block.body.txEffects.flatMap((txEffect)=>padArrayEnd(txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX));
|
|
19
|
+
const l1ToL2MessagesPadded = block.indexWithinCheckpoint === 0 ? padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP) : l1ToL2Messages;
|
|
20
|
+
const noteHashInsert = fork.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, noteHashesPadded);
|
|
21
|
+
const messageInsert = fork.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded);
|
|
22
|
+
await Promise.all([
|
|
23
|
+
publicDataInsert,
|
|
24
|
+
nullifierInsert,
|
|
25
|
+
noteHashInsert,
|
|
26
|
+
messageInsert
|
|
27
|
+
]);
|
|
28
|
+
const state = await fork.getStateReference();
|
|
29
|
+
block.header = BlockHeader.from({
|
|
30
|
+
...block.header,
|
|
31
|
+
state
|
|
32
|
+
});
|
|
33
|
+
await fork.updateArchive(block.header);
|
|
34
|
+
const archiveState = await fork.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
35
|
+
block.archive = new AppendOnlyTreeSnapshot(Fr.fromBuffer(archiveState.root), Number(archiveState.size));
|
|
36
|
+
}
|
|
37
|
+
export async function mockBlock(blockNum, size, fork, maxEffects = 1000, numL1ToL2Messages = NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, isFirstBlockInCheckpoint = true) {
|
|
38
|
+
const block = await L2Block.random(blockNum, {
|
|
39
|
+
indexWithinCheckpoint: isFirstBlockInCheckpoint ? IndexWithinCheckpoint(0) : IndexWithinCheckpoint(1),
|
|
11
40
|
txsPerBlock: size,
|
|
12
41
|
txOptions: {
|
|
13
42
|
maxEffects
|
|
14
43
|
}
|
|
15
44
|
});
|
|
16
45
|
const l1ToL2Messages = mockL1ToL2Messages(numL1ToL2Messages);
|
|
17
|
-
|
|
18
|
-
const insertData = async (treeId, data, subTreeHeight, fork)=>{
|
|
19
|
-
for (const dataBatch of data){
|
|
20
|
-
await fork.batchInsert(treeId, dataBatch, subTreeHeight);
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
const publicDataInsert = insertData(MerkleTreeId.PUBLIC_DATA_TREE, l2Block.body.txEffects.map((txEffect)=>txEffect.publicDataWrites.map((write)=>write.toBuffer())), 0, fork);
|
|
24
|
-
const nullifierInsert = insertData(MerkleTreeId.NULLIFIER_TREE, l2Block.body.txEffects.map((txEffect)=>padArrayEnd(txEffect.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX).map((nullifier)=>nullifier.toBuffer())), NULLIFIER_SUBTREE_HEIGHT, fork);
|
|
25
|
-
const noteHashesPadded = l2Block.body.txEffects.flatMap((txEffect)=>padArrayEnd(txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX));
|
|
26
|
-
const l1ToL2MessagesPadded = isFirstBlock ? padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP) : l1ToL2Messages;
|
|
27
|
-
const noteHashInsert = fork.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, noteHashesPadded);
|
|
28
|
-
const messageInsert = fork.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded);
|
|
29
|
-
await Promise.all([
|
|
30
|
-
publicDataInsert,
|
|
31
|
-
nullifierInsert,
|
|
32
|
-
noteHashInsert,
|
|
33
|
-
messageInsert
|
|
34
|
-
]);
|
|
35
|
-
}
|
|
36
|
-
const state = await fork.getStateReference();
|
|
37
|
-
l2Block.header.state = state;
|
|
38
|
-
await fork.updateArchive(l2Block.header);
|
|
39
|
-
const archiveState = await fork.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
40
|
-
l2Block.archive = new AppendOnlyTreeSnapshot(Fr.fromBuffer(archiveState.root), Number(archiveState.size));
|
|
46
|
+
await updateBlockState(block, l1ToL2Messages, fork);
|
|
41
47
|
return {
|
|
42
|
-
block
|
|
48
|
+
block,
|
|
43
49
|
messages: l1ToL2Messages
|
|
44
50
|
};
|
|
45
51
|
}
|
|
46
52
|
export async function mockEmptyBlock(blockNum, fork) {
|
|
47
|
-
const l2Block =
|
|
53
|
+
const l2Block = L2Block.empty();
|
|
48
54
|
const l1ToL2Messages = Array(16).fill(0).map(Fr.zero);
|
|
49
55
|
l2Block.header.globalVariables.blockNumber = blockNum;
|
|
50
|
-
|
|
51
|
-
{
|
|
52
|
-
const noteHashesPadded = l2Block.body.txEffects.flatMap((txEffect)=>padArrayEnd(txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX));
|
|
53
|
-
await fork.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, noteHashesPadded);
|
|
54
|
-
const l1ToL2MessagesPadded = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
|
|
55
|
-
await fork.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded);
|
|
56
|
-
}
|
|
57
|
-
// Sync the indexed trees
|
|
58
|
-
{
|
|
59
|
-
// We insert the public data tree leaves with one batch per tx to avoid updating the same key twice
|
|
60
|
-
for (const txEffect of l2Block.body.txEffects){
|
|
61
|
-
await fork.batchInsert(MerkleTreeId.PUBLIC_DATA_TREE, txEffect.publicDataWrites.map((write)=>write.toBuffer()), 0);
|
|
62
|
-
const nullifiersPadded = padArrayEnd(txEffect.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX);
|
|
63
|
-
await fork.batchInsert(MerkleTreeId.NULLIFIER_TREE, nullifiersPadded.map((nullifier)=>nullifier.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
const state = await fork.getStateReference();
|
|
67
|
-
l2Block.header.state = state;
|
|
68
|
-
await fork.updateArchive(l2Block.header);
|
|
69
|
-
const archiveState = await fork.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
70
|
-
l2Block.archive = new AppendOnlyTreeSnapshot(Fr.fromBuffer(archiveState.root), Number(archiveState.size));
|
|
56
|
+
await updateBlockState(l2Block, l1ToL2Messages, fork);
|
|
71
57
|
return {
|
|
72
58
|
block: l2Block,
|
|
73
59
|
messages: l1ToL2Messages
|
|
@@ -88,34 +74,11 @@ export async function mockBlocks(from, count, numTxs, worldState) {
|
|
|
88
74
|
messages: messagesArray
|
|
89
75
|
};
|
|
90
76
|
}
|
|
91
|
-
export function
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const slotNumber = SlotNumber(checkpointNumber * 10);
|
|
96
|
-
const blocksAndMessages = [];
|
|
97
|
-
for(let i = 0; i < numBlocks; i++){
|
|
98
|
-
const blockNumber = BlockNumber(startBlockNumber + i);
|
|
99
|
-
const { block, messages } = fork ? await mockBlock(blockNumber, numTxsPerBlock, fork, blockNumber === startBlockNumber ? numL1ToL2Messages : 0) : {
|
|
100
|
-
block: await L2BlockNew.random(blockNumber, {
|
|
101
|
-
txsPerBlock: numTxsPerBlock,
|
|
102
|
-
slotNumber
|
|
103
|
-
}),
|
|
104
|
-
messages: mockL1ToL2Messages(numL1ToL2Messages)
|
|
105
|
-
};
|
|
106
|
-
blocksAndMessages.push({
|
|
107
|
-
block,
|
|
108
|
-
messages
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
const messages = blocksAndMessages[0].messages;
|
|
112
|
-
const inHash = computeInHashFromL1ToL2Messages(messages);
|
|
113
|
-
const checkpoint = await Checkpoint.random(checkpointNumber, {
|
|
114
|
-
numBlocks: 0,
|
|
115
|
-
slotNumber,
|
|
116
|
-
inHash
|
|
77
|
+
export async function mockCheckpoint(checkpointNumber, fork, options = {}) {
|
|
78
|
+
const { checkpoint, messages } = await mockCheckpointAndMessages(checkpointNumber, options);
|
|
79
|
+
await asyncMap(checkpoint.blocks, async (block, i)=>{
|
|
80
|
+
await updateBlockState(block, i === 0 ? messages : [], fork);
|
|
117
81
|
});
|
|
118
|
-
checkpoint.blocks = blocksAndMessages.map(({ block })=>block);
|
|
119
82
|
return {
|
|
120
83
|
checkpoint,
|
|
121
84
|
messages
|
package/dest/testing.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
3
|
import { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
4
4
|
export declare const defaultInitialAccountFeeJuice: Fr;
|
|
@@ -7,4 +7,4 @@ export declare function getGenesisValues(initialAccounts: AztecAddress[], initia
|
|
|
7
7
|
prefilledPublicData: PublicDataTreeLeaf[];
|
|
8
8
|
fundingNeeded: bigint;
|
|
9
9
|
}>;
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQXlCdkUsZUFBTyxNQUFNLDZCQUE2QixJQUFxQixDQUFDO0FBRWhFLHdCQUFzQixnQkFBZ0IsQ0FDcEMsZUFBZSxFQUFFLFlBQVksRUFBRSxFQUMvQixzQkFBc0IsS0FBZ0MsRUFDdEQsaUJBQWlCLEdBQUUsa0JBQWtCLEVBQU87Ozs7R0FxQjdDIn0=
|
package/dest/testing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAgB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAyBvE,eAAO,MAAM,6BAA6B,IAAqB,CAAC;AAEhE,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,YAAY,EAAE,EAC/B,sBAAsB,KAAgC,EACtD,iBAAiB,GAAE,kBAAkB,EAAO;;;;GAqB7C"}
|
package/dest/testing.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
|
|
2
|
-
import { Fr } from '@aztec/foundation/
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { computeFeePayerBalanceLeafSlot } from '@aztec/protocol-contracts/fee-juice';
|
|
4
4
|
import { MerkleTreeId, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
5
5
|
import { NativeWorldStateService } from './native/index.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
-
import type { Fr } from '@aztec/foundation/
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import type { IndexedTreeSnapshot, TreeSnapshot } from '@aztec/merkle-tree';
|
|
4
|
-
import type {
|
|
5
|
-
import type { ForkMerkleTreeOperations, MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
|
|
4
|
+
import type { L2Block } from '@aztec/stdlib/block';
|
|
5
|
+
import type { ForkMerkleTreeOperations, MerkleTreeReadOperations, ReadonlyWorldStateAccess } from '@aztec/stdlib/interfaces/server';
|
|
6
6
|
import type { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
7
7
|
import type { WorldStateStatusFull, WorldStateStatusSummary } from '../native/message.js';
|
|
8
8
|
/**
|
|
@@ -29,15 +29,13 @@ export type TreeSnapshots = {
|
|
|
29
29
|
[MerkleTreeId.L1_TO_L2_MESSAGE_TREE]: TreeSnapshot<Fr>;
|
|
30
30
|
[MerkleTreeId.ARCHIVE]: TreeSnapshot<Fr>;
|
|
31
31
|
};
|
|
32
|
-
export interface MerkleTreeAdminDatabase extends ForkMerkleTreeOperations {
|
|
32
|
+
export interface MerkleTreeAdminDatabase extends ForkMerkleTreeOperations, ReadonlyWorldStateAccess {
|
|
33
33
|
/**
|
|
34
34
|
* Handles a single L2 block (i.e. Inserts the new note hashes into the merkle tree).
|
|
35
35
|
* @param block - The L2 block to handle.
|
|
36
36
|
* @param l1ToL2Messages - The L1 to L2 messages for the block.
|
|
37
|
-
* @param isFirstBlock - Whether the block is the first block in a checkpoint. The messages are padded and inserted
|
|
38
|
-
* to the tree for the first block in a checkpoint.
|
|
39
37
|
*/
|
|
40
|
-
handleL2BlockAndMessages(block:
|
|
38
|
+
handleL2BlockAndMessages(block: L2Block, l1ToL2Messages: Fr[]): Promise<WorldStateStatusFull>;
|
|
41
39
|
/**
|
|
42
40
|
* Gets a handle that allows reading the latest committed state
|
|
43
41
|
*/
|
|
@@ -70,4 +68,4 @@ export interface MerkleTreeAdminDatabase extends ForkMerkleTreeOperations {
|
|
|
70
68
|
/** Deletes the db. */
|
|
71
69
|
clear(): Promise<void>;
|
|
72
70
|
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVfZGIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JsZC1zdGF0ZS1kYi9tZXJrbGVfdHJlZV9kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFDVix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN6QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhELE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUY7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxlQUFPLE1BQU0sMkJBQTJCLFFBQTRCLENBQUM7QUFFckUsZUFBTyxNQUFNLDZCQUE2QixRQUFtRCxDQUFDO0FBRTlGLE1BQU0sTUFBTSxhQUFhLEdBQUc7SUFDMUIsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsbUJBQW1CLENBQUM7SUFDbkQsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsbUJBQW1CLENBQUM7SUFDckQsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQzFDLENBQUM7QUFFRixNQUFNLFdBQVcsdUJBQXdCLFNBQVEsd0JBQXdCLEVBQUUsd0JBQXdCO0lBQ2pHOzs7O09BSUc7SUFDSCx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUU5Rjs7T0FFRztJQUNILFlBQVksSUFBSSx3QkFBd0IsQ0FBQztJQUV6Qzs7OztPQUlHO0lBQ0gsc0JBQXNCLENBQUMsYUFBYSxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUVsRjs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLGFBQWEsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFeEU7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxhQUFhLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBRTNFOzs7T0FHRztJQUNILGdCQUFnQixJQUFJLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBRXJELHlCQUF5QjtJQUN6QixLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXZCLHNCQUFzQjtJQUN0QixLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3hCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merkle_tree_db.d.ts","sourceRoot":"","sources":["../../src/world-state-db/merkle_tree_db.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"merkle_tree_db.d.ts","sourceRoot":"","sources":["../../src/world-state-db/merkle_tree_db.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE1F;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,2BAA2B,QAA4B,CAAC;AAErE,eAAO,MAAM,6BAA6B,QAAmD,CAAC;AAE9F,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACnD,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACrD,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB,EAAE,wBAAwB;IACjG;;;;OAIG;IACH,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE9F;;OAEG;IACH,YAAY,IAAI,wBAAwB,CAAC;IAEzC;;;;OAIG;IACH,sBAAsB,CAAC,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAElF;;;;OAIG;IACH,YAAY,CAAC,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAExE;;;;OAIG;IACH,YAAY,CAAC,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAE3E;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAErD,yBAAyB;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB,sBAAsB;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/world-state",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.e6bd8901",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -64,23 +64,23 @@
|
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@aztec/constants": "0.0.1-commit.
|
|
68
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
69
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
70
|
-
"@aztec/merkle-tree": "0.0.1-commit.
|
|
71
|
-
"@aztec/native": "0.0.1-commit.
|
|
72
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
73
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
74
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
67
|
+
"@aztec/constants": "0.0.1-commit.e6bd8901",
|
|
68
|
+
"@aztec/foundation": "0.0.1-commit.e6bd8901",
|
|
69
|
+
"@aztec/kv-store": "0.0.1-commit.e6bd8901",
|
|
70
|
+
"@aztec/merkle-tree": "0.0.1-commit.e6bd8901",
|
|
71
|
+
"@aztec/native": "0.0.1-commit.e6bd8901",
|
|
72
|
+
"@aztec/protocol-contracts": "0.0.1-commit.e6bd8901",
|
|
73
|
+
"@aztec/stdlib": "0.0.1-commit.e6bd8901",
|
|
74
|
+
"@aztec/telemetry-client": "0.0.1-commit.e6bd8901",
|
|
75
75
|
"tslib": "^2.4.0",
|
|
76
76
|
"zod": "^3.23.8"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
79
|
+
"@aztec/archiver": "0.0.1-commit.e6bd8901",
|
|
80
80
|
"@jest/globals": "^30.0.0",
|
|
81
81
|
"@types/jest": "^30.0.0",
|
|
82
82
|
"@types/node": "^22.15.17",
|
|
83
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
83
|
+
"@typescript/native-preview": "7.0.0-dev.20260113.1",
|
|
84
84
|
"jest": "^30.0.0",
|
|
85
85
|
"jest-mock-extended": "^4.0.0",
|
|
86
86
|
"ts-node": "^10.9.1",
|