@aztec/archiver 0.0.1-commit.9b94fc1 → 0.0.1-commit.9badcec54
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 +162 -22
- package/dest/archiver.d.ts +140 -0
- package/dest/archiver.d.ts.map +1 -0
- package/dest/archiver.js +750 -0
- package/dest/config.d.ts +30 -0
- package/dest/config.d.ts.map +1 -0
- package/dest/{archiver/config.js → config.js} +24 -7
- package/dest/errors.d.ts +65 -0
- package/dest/errors.d.ts.map +1 -0
- package/dest/errors.js +91 -0
- package/dest/factory.d.ts +8 -7
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +99 -15
- package/dest/index.d.ts +11 -4
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +9 -3
- package/dest/interfaces.d.ts +9 -0
- package/dest/interfaces.d.ts.map +1 -0
- package/dest/interfaces.js +3 -0
- package/dest/l1/bin/retrieve-calldata.d.ts +3 -0
- package/dest/l1/bin/retrieve-calldata.d.ts.map +1 -0
- package/dest/l1/bin/retrieve-calldata.js +152 -0
- package/dest/l1/calldata_retriever.d.ts +135 -0
- package/dest/l1/calldata_retriever.d.ts.map +1 -0
- package/dest/l1/calldata_retriever.js +403 -0
- package/dest/l1/data_retrieval.d.ts +88 -0
- package/dest/l1/data_retrieval.d.ts.map +1 -0
- package/dest/{archiver → l1}/data_retrieval.js +87 -160
- package/dest/l1/debug_tx.d.ts +19 -0
- package/dest/l1/debug_tx.d.ts.map +1 -0
- package/dest/l1/debug_tx.js +73 -0
- package/dest/l1/spire_proposer.d.ts +70 -0
- package/dest/l1/spire_proposer.d.ts.map +1 -0
- package/dest/l1/spire_proposer.js +149 -0
- package/dest/l1/trace_tx.d.ts +97 -0
- package/dest/l1/trace_tx.d.ts.map +1 -0
- package/dest/l1/trace_tx.js +91 -0
- package/dest/l1/types.d.ts +12 -0
- package/dest/l1/types.d.ts.map +1 -0
- package/dest/l1/types.js +3 -0
- package/dest/l1/validate_trace.d.ts +32 -0
- package/dest/l1/validate_trace.d.ts.map +1 -0
- package/dest/l1/validate_trace.js +154 -0
- package/dest/modules/data_source_base.d.ts +91 -0
- package/dest/modules/data_source_base.d.ts.map +1 -0
- package/dest/modules/data_source_base.js +222 -0
- package/dest/modules/data_store_updater.d.ts +86 -0
- package/dest/modules/data_store_updater.d.ts.map +1 -0
- package/dest/modules/data_store_updater.js +333 -0
- package/dest/modules/instrumentation.d.ts +52 -0
- package/dest/modules/instrumentation.d.ts.map +1 -0
- package/dest/modules/instrumentation.js +138 -0
- package/dest/modules/l1_synchronizer.d.ts +73 -0
- package/dest/modules/l1_synchronizer.d.ts.map +1 -0
- package/dest/modules/l1_synchronizer.js +1154 -0
- package/dest/modules/validation.d.ts +17 -0
- package/dest/modules/validation.d.ts.map +1 -0
- package/dest/{archiver → modules}/validation.js +9 -3
- package/dest/store/block_store.d.ts +230 -0
- package/dest/store/block_store.d.ts.map +1 -0
- package/dest/store/block_store.js +942 -0
- package/dest/store/contract_class_store.d.ts +17 -0
- package/dest/store/contract_class_store.d.ts.map +1 -0
- package/dest/store/contract_class_store.js +64 -0
- package/dest/store/contract_instance_store.d.ts +24 -0
- package/dest/store/contract_instance_store.d.ts.map +1 -0
- package/dest/{archiver/kv_archiver_store → store}/contract_instance_store.js +7 -3
- package/dest/store/kv_archiver_store.d.ts +377 -0
- package/dest/store/kv_archiver_store.d.ts.map +1 -0
- package/dest/store/kv_archiver_store.js +494 -0
- package/dest/store/l2_tips_cache.d.ts +20 -0
- package/dest/store/l2_tips_cache.d.ts.map +1 -0
- package/dest/store/l2_tips_cache.js +109 -0
- package/dest/store/log_store.d.ts +57 -0
- package/dest/store/log_store.d.ts.map +1 -0
- package/dest/store/log_store.js +531 -0
- package/dest/store/message_store.d.ts +44 -0
- package/dest/store/message_store.d.ts.map +1 -0
- package/dest/{archiver/kv_archiver_store → store}/message_store.js +36 -23
- package/dest/{archiver/structs → structs}/data_retrieval.d.ts +1 -1
- package/dest/structs/data_retrieval.d.ts.map +1 -0
- package/dest/structs/inbox_message.d.ts +15 -0
- package/dest/structs/inbox_message.d.ts.map +1 -0
- package/dest/{archiver/structs → structs}/inbox_message.js +6 -5
- package/dest/structs/published.d.ts +2 -0
- package/dest/structs/published.d.ts.map +1 -0
- package/dest/test/fake_l1_state.d.ts +210 -0
- package/dest/test/fake_l1_state.d.ts.map +1 -0
- package/dest/test/fake_l1_state.js +490 -0
- package/dest/test/index.d.ts +2 -1
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +4 -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 +23 -12
- package/dest/test/mock_l2_block_source.d.ts +59 -20
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +276 -85
- package/dest/test/mock_structs.d.ts +83 -4
- package/dest/test/mock_structs.d.ts.map +1 -1
- package/dest/test/mock_structs.js +157 -11
- package/dest/test/noop_l1_archiver.d.ts +26 -0
- package/dest/test/noop_l1_archiver.d.ts.map +1 -0
- package/dest/test/noop_l1_archiver.js +71 -0
- package/package.json +20 -20
- package/src/archiver.ts +510 -0
- package/src/{archiver/config.ts → config.ts} +37 -14
- package/src/errors.ts +146 -0
- package/src/factory.ts +154 -17
- package/src/index.ts +11 -3
- package/src/interfaces.ts +9 -0
- package/src/l1/README.md +55 -0
- package/src/l1/bin/retrieve-calldata.ts +194 -0
- package/src/l1/calldata_retriever.ts +512 -0
- package/src/{archiver → l1}/data_retrieval.ts +146 -233
- package/src/l1/debug_tx.ts +99 -0
- package/src/l1/spire_proposer.ts +152 -0
- package/src/l1/trace_tx.ts +128 -0
- package/src/l1/types.ts +13 -0
- package/src/l1/validate_trace.ts +229 -0
- package/src/modules/data_source_base.ts +347 -0
- package/src/modules/data_store_updater.ts +437 -0
- package/src/modules/instrumentation.ts +196 -0
- package/src/modules/l1_synchronizer.ts +961 -0
- package/src/{archiver → modules}/validation.ts +13 -8
- package/src/store/block_store.ts +1245 -0
- package/src/store/contract_class_store.ts +82 -0
- package/src/{archiver/kv_archiver_store → store}/contract_instance_store.ts +10 -7
- package/src/store/kv_archiver_store.ts +713 -0
- package/src/store/l2_tips_cache.ts +134 -0
- package/src/store/log_store.ts +733 -0
- package/src/{archiver/kv_archiver_store → store}/message_store.ts +48 -28
- package/src/{archiver/structs → structs}/inbox_message.ts +7 -7
- package/src/{archiver/structs → structs}/published.ts +0 -1
- package/src/test/fake_l1_state.ts +747 -0
- 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/index.ts +4 -0
- package/src/test/mock_archiver.ts +23 -16
- package/src/test/mock_l1_to_l2_message_source.ts +19 -11
- package/src/test/mock_l2_block_source.ts +346 -93
- package/src/test/mock_structs.ts +289 -13
- package/src/test/noop_l1_archiver.ts +114 -0
- package/dest/archiver/archiver.d.ts +0 -287
- package/dest/archiver/archiver.d.ts.map +0 -1
- package/dest/archiver/archiver.js +0 -1408
- package/dest/archiver/archiver_store.d.ts +0 -255
- package/dest/archiver/archiver_store.d.ts.map +0 -1
- package/dest/archiver/archiver_store.js +0 -4
- package/dest/archiver/archiver_store_test_suite.d.ts +0 -8
- package/dest/archiver/archiver_store_test_suite.d.ts.map +0 -1
- package/dest/archiver/archiver_store_test_suite.js +0 -1289
- package/dest/archiver/config.d.ts +0 -21
- package/dest/archiver/config.d.ts.map +0 -1
- package/dest/archiver/data_retrieval.d.ts +0 -79
- package/dest/archiver/data_retrieval.d.ts.map +0 -1
- package/dest/archiver/errors.d.ts +0 -12
- package/dest/archiver/errors.d.ts.map +0 -1
- package/dest/archiver/errors.js +0 -17
- package/dest/archiver/index.d.ts +0 -7
- package/dest/archiver/index.d.ts.map +0 -1
- package/dest/archiver/index.js +0 -4
- package/dest/archiver/instrumentation.d.ts +0 -35
- package/dest/archiver/instrumentation.d.ts.map +0 -1
- package/dest/archiver/instrumentation.js +0 -140
- package/dest/archiver/kv_archiver_store/block_store.d.ts +0 -124
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/block_store.js +0 -370
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +0 -18
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.js +0 -120
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +0 -24
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +0 -168
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +0 -296
- package/dest/archiver/kv_archiver_store/log_store.d.ts +0 -49
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/log_store.js +0 -336
- package/dest/archiver/kv_archiver_store/message_store.d.ts +0 -39
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +0 -1
- package/dest/archiver/structs/data_retrieval.d.ts.map +0 -1
- package/dest/archiver/structs/inbox_message.d.ts +0 -15
- package/dest/archiver/structs/inbox_message.d.ts.map +0 -1
- package/dest/archiver/structs/published.d.ts +0 -3
- package/dest/archiver/structs/published.d.ts.map +0 -1
- package/dest/archiver/validation.d.ts +0 -17
- package/dest/archiver/validation.d.ts.map +0 -1
- package/dest/rpc/index.d.ts +0 -9
- package/dest/rpc/index.d.ts.map +0 -1
- package/dest/rpc/index.js +0 -15
- package/src/archiver/archiver.ts +0 -1858
- package/src/archiver/archiver_store.ts +0 -305
- package/src/archiver/archiver_store_test_suite.ts +0 -1264
- package/src/archiver/errors.ts +0 -26
- package/src/archiver/index.ts +0 -6
- package/src/archiver/instrumentation.ts +0 -187
- package/src/archiver/kv_archiver_store/block_store.ts +0 -481
- package/src/archiver/kv_archiver_store/contract_class_store.ts +0 -176
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +0 -422
- package/src/archiver/kv_archiver_store/log_store.ts +0 -406
- package/src/rpc/index.ts +0 -16
- /package/dest/{archiver/structs → structs}/data_retrieval.js +0 -0
- /package/dest/{archiver/structs → structs}/published.js +0 -0
- /package/src/{archiver/structs → structs}/data_retrieval.ts +0 -0
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
2
3
|
import { toArray } from '@aztec/foundation/iterable';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
5
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
5
6
|
import { mapRange } from '@aztec/kv-store';
|
|
6
7
|
import { InboxLeaf } from '@aztec/stdlib/messaging';
|
|
8
|
+
import { L1ToL2MessagesNotReadyError } from '../errors.js';
|
|
7
9
|
import { deserializeInboxMessage, serializeInboxMessage, updateRollingHash } from '../structs/inbox_message.js';
|
|
8
10
|
export class MessageStoreError extends Error {
|
|
9
11
|
inboxMessage;
|
|
@@ -18,6 +20,7 @@ export class MessageStore {
|
|
|
18
20
|
/** Maps from hex-stringified message leaf to its index */ #l1ToL2MessageIndices;
|
|
19
21
|
/** Stores L1 block number and hash of the L1 synchpoint */ #lastSynchedL1Block;
|
|
20
22
|
/** Stores total messages stored */ #totalMessageCount;
|
|
23
|
+
/** Stores the checkpoint number whose message tree is currently being filled on L1. */ #inboxTreeInProgress;
|
|
21
24
|
#log;
|
|
22
25
|
constructor(db){
|
|
23
26
|
this.db = db;
|
|
@@ -26,6 +29,7 @@ export class MessageStore {
|
|
|
26
29
|
this.#l1ToL2MessageIndices = db.openMap('archiver_l1_to_l2_message_indices');
|
|
27
30
|
this.#lastSynchedL1Block = db.openSingleton('archiver_last_l1_block_id');
|
|
28
31
|
this.#totalMessageCount = db.openSingleton('archiver_l1_to_l2_message_count');
|
|
32
|
+
this.#inboxTreeInProgress = db.openSingleton('archiver_inbox_tree_in_progress');
|
|
29
33
|
}
|
|
30
34
|
async getTotalL1ToL2MessageCount() {
|
|
31
35
|
return await this.#totalMessageCount.getAsync() ?? 0n;
|
|
@@ -77,18 +81,18 @@ export class MessageStore {
|
|
|
77
81
|
if (!expectedRollingHash.equals(message.rollingHash)) {
|
|
78
82
|
throw new MessageStoreError(`Invalid rolling hash for incoming L1 to L2 message ${message.leaf.toString()} ` + `with index ${message.index} ` + `(expected ${expectedRollingHash.toString()} from previous hash ${previousRollingHash} but got ${message.rollingHash.toString()})`, message);
|
|
79
83
|
}
|
|
80
|
-
// Check index corresponds to the
|
|
81
|
-
const [expectedStart, expectedEnd] = InboxLeaf.
|
|
84
|
+
// Check index corresponds to the checkpoint number.
|
|
85
|
+
const [expectedStart, expectedEnd] = InboxLeaf.indexRangeForCheckpoint(message.checkpointNumber);
|
|
82
86
|
if (message.index < expectedStart || message.index >= expectedEnd) {
|
|
83
|
-
throw new MessageStoreError(`Invalid index ${message.index} for incoming L1 to L2 message ${message.leaf.toString()} ` + `at
|
|
87
|
+
throw new MessageStoreError(`Invalid index ${message.index} for incoming L1 to L2 message ${message.leaf.toString()} ` + `at checkpoint ${message.checkpointNumber} (expected value in range [${expectedStart}, ${expectedEnd}))`, message);
|
|
84
88
|
}
|
|
85
|
-
// Check there are no gaps in the indices within the same
|
|
86
|
-
if (lastMessage && message.
|
|
89
|
+
// Check there are no gaps in the indices within the same checkpoint.
|
|
90
|
+
if (lastMessage && message.checkpointNumber === lastMessage.checkpointNumber && message.index !== lastMessage.index + 1n) {
|
|
87
91
|
throw new MessageStoreError(`Missing prior message for incoming L1 to L2 message ${message.leaf.toString()} ` + `with index ${message.index}`, message);
|
|
88
92
|
}
|
|
89
|
-
// Check the first message in a
|
|
90
|
-
if ((!lastMessage || message.
|
|
91
|
-
throw new MessageStoreError(`Message ${message.leaf.toString()} for
|
|
93
|
+
// Check the first message in a checkpoint has the correct index.
|
|
94
|
+
if ((!lastMessage || message.checkpointNumber > lastMessage.checkpointNumber) && message.index !== expectedStart) {
|
|
95
|
+
throw new MessageStoreError(`Message ${message.leaf.toString()} for checkpoint ${message.checkpointNumber} has wrong index ` + `${message.index} (expected ${expectedStart})`, message);
|
|
92
96
|
}
|
|
93
97
|
// Perform the insertions.
|
|
94
98
|
await this.#l1ToL2Messages.set(this.indexToKey(message.index), serializeInboxMessage(message));
|
|
@@ -97,14 +101,6 @@ export class MessageStore {
|
|
|
97
101
|
this.#log.trace(`Inserted L1 to L2 message ${message.leaf} with index ${message.index} into the store`);
|
|
98
102
|
lastMessage = message;
|
|
99
103
|
}
|
|
100
|
-
// Update the L1 sync point to that of the last message added.
|
|
101
|
-
const currentSyncPoint = await this.getSynchedL1Block();
|
|
102
|
-
if (!currentSyncPoint || currentSyncPoint.l1BlockNumber < lastMessage.l1BlockNumber) {
|
|
103
|
-
await this.setSynchedL1Block({
|
|
104
|
-
l1BlockNumber: lastMessage.l1BlockNumber,
|
|
105
|
-
l1BlockHash: lastMessage.l1BlockHash
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
104
|
// Update total message count with the number of inserted messages.
|
|
109
105
|
await this.increaseTotalMessageCount(messageCount);
|
|
110
106
|
});
|
|
@@ -123,17 +119,34 @@ export class MessageStore {
|
|
|
123
119
|
}));
|
|
124
120
|
return msg ? deserializeInboxMessage(msg) : undefined;
|
|
125
121
|
}
|
|
126
|
-
|
|
122
|
+
/** Returns the inbox tree-in-progress checkpoint number from L1, or undefined if not yet set. */ getInboxTreeInProgress() {
|
|
123
|
+
return this.#inboxTreeInProgress.getAsync();
|
|
124
|
+
}
|
|
125
|
+
/** Atomically updates the message sync state: the L1 sync point and the inbox tree-in-progress marker. */ setMessageSyncState(l1Block, treeInProgress) {
|
|
126
|
+
return this.db.transactionAsync(async ()=>{
|
|
127
|
+
await this.setSynchedL1Block(l1Block);
|
|
128
|
+
if (treeInProgress !== undefined) {
|
|
129
|
+
await this.#inboxTreeInProgress.set(treeInProgress);
|
|
130
|
+
} else {
|
|
131
|
+
await this.#inboxTreeInProgress.delete();
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
async getL1ToL2Messages(checkpointNumber) {
|
|
136
|
+
const treeInProgress = await this.#inboxTreeInProgress.getAsync();
|
|
137
|
+
if (treeInProgress !== undefined && BigInt(checkpointNumber) >= treeInProgress) {
|
|
138
|
+
throw new L1ToL2MessagesNotReadyError(checkpointNumber, treeInProgress);
|
|
139
|
+
}
|
|
127
140
|
const messages = [];
|
|
128
|
-
const [startIndex, endIndex] = InboxLeaf.
|
|
141
|
+
const [startIndex, endIndex] = InboxLeaf.indexRangeForCheckpoint(checkpointNumber);
|
|
129
142
|
let lastIndex = startIndex - 1n;
|
|
130
143
|
for await (const msgBuffer of this.#l1ToL2Messages.valuesAsync({
|
|
131
144
|
start: this.indexToKey(startIndex),
|
|
132
145
|
end: this.indexToKey(endIndex)
|
|
133
146
|
})){
|
|
134
147
|
const msg = deserializeInboxMessage(msgBuffer);
|
|
135
|
-
if (msg.
|
|
136
|
-
throw new Error(`L1 to L2 message with index ${msg.index} has invalid
|
|
148
|
+
if (msg.checkpointNumber !== checkpointNumber) {
|
|
149
|
+
throw new Error(`L1 to L2 message with index ${msg.index} has invalid checkpoint number ${msg.checkpointNumber}`);
|
|
137
150
|
} else if (msg.index !== lastIndex + 1n) {
|
|
138
151
|
throw new Error(`Expected L1 to L2 message with index ${lastIndex + 1n} but got ${msg.index}`);
|
|
139
152
|
}
|
|
@@ -164,9 +177,9 @@ export class MessageStore {
|
|
|
164
177
|
this.#log.warn(`Deleted ${deleteCount} L1 to L2 messages from index ${startIndex} from the store`);
|
|
165
178
|
});
|
|
166
179
|
}
|
|
167
|
-
|
|
168
|
-
this.#log.debug(`Deleting L1 to L2 messages up to target
|
|
169
|
-
const startIndex = InboxLeaf.
|
|
180
|
+
rollbackL1ToL2MessagesToCheckpoint(targetCheckpointNumber) {
|
|
181
|
+
this.#log.debug(`Deleting L1 to L2 messages up to target checkpoint ${targetCheckpointNumber}`);
|
|
182
|
+
const startIndex = InboxLeaf.smallestIndexForCheckpoint(CheckpointNumber(targetCheckpointNumber + 1));
|
|
170
183
|
return this.removeL1ToL2Messages(startIndex);
|
|
171
184
|
}
|
|
172
185
|
indexToKey(index) {
|
|
@@ -24,4 +24,4 @@ export type SingletonDataRetrieval<T> = {
|
|
|
24
24
|
*/
|
|
25
25
|
retrievedData: T;
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9yZXRyaWV2YWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJ1Y3RzL2RhdGFfcmV0cmlldmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxNQUFNLGFBQWEsQ0FBQyxDQUFDLElBQUk7SUFDN0I7O09BRUc7SUFDSCwwQkFBMEIsRUFBRSxNQUFNLENBQUM7SUFDbkM7O09BRUc7SUFDSCxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUM7Q0FDcEIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxNQUFNLHNCQUFzQixDQUFDLENBQUMsSUFBSTtJQUN0Qzs7T0FFRztJQUNILDBCQUEwQixFQUFFLE1BQU0sQ0FBQztJQUNuQzs7T0FFRztJQUNILGFBQWEsRUFBRSxDQUFDLENBQUM7Q0FDbEIsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/structs/data_retrieval.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B;;OAEG;IACH,0BAA0B,EAAE,MAAM,CAAC;IACnC;;OAEG;IACH,aAAa,EAAE,CAAC,EAAE,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;IACtC;;OAEG;IACH,0BAA0B,EAAE,MAAM,CAAC;IACnC;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC;CAClB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
|
+
export type InboxMessage = {
|
|
5
|
+
index: bigint;
|
|
6
|
+
leaf: Fr;
|
|
7
|
+
checkpointNumber: CheckpointNumber;
|
|
8
|
+
l1BlockNumber: bigint;
|
|
9
|
+
l1BlockHash: Buffer32;
|
|
10
|
+
rollingHash: Buffer16;
|
|
11
|
+
};
|
|
12
|
+
export declare function updateRollingHash(currentRollingHash: Buffer16, leaf: Fr): Buffer16;
|
|
13
|
+
export declare function serializeInboxMessage(message: InboxMessage): Buffer;
|
|
14
|
+
export declare function deserializeInboxMessage(buffer: Buffer): InboxMessage;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3hfbWVzc2FnZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cnVjdHMvaW5ib3hfbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdwRCxNQUFNLE1BQU0sWUFBWSxHQUFHO0lBQ3pCLEtBQUssRUFBRSxNQUFNLENBQUM7SUFDZCxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ1QsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDbkMsYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUN0QixXQUFXLEVBQUUsUUFBUSxDQUFDO0lBQ3RCLFdBQVcsRUFBRSxRQUFRLENBQUM7Q0FDdkIsQ0FBQztBQUVGLHdCQUFnQixpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxRQUFRLENBR2xGO0FBRUQsd0JBQWdCLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsTUFBTSxDQVNuRTtBQUVELHdCQUFnQix1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksQ0FTcEUifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox_message.d.ts","sourceRoot":"","sources":["../../src/structs/inbox_message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,EAAE,CAAC;IACT,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,QAAQ,CAAC;IACtB,WAAW,EAAE,QAAQ,CAAC;CACvB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,QAAQ,CAGlF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CASnE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CASpE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
2
|
-
import { keccak256 } from '@aztec/foundation/crypto';
|
|
3
|
-
import { Fr } from '@aztec/foundation/
|
|
3
|
+
import { keccak256 } from '@aztec/foundation/crypto/keccak';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
5
|
import { BufferReader, bigintToUInt64BE, numToUInt32BE, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
5
6
|
export function updateRollingHash(currentRollingHash, leaf) {
|
|
6
7
|
const input = Buffer.concat([
|
|
@@ -15,7 +16,7 @@ export function serializeInboxMessage(message) {
|
|
|
15
16
|
message.leaf,
|
|
16
17
|
message.l1BlockHash,
|
|
17
18
|
numToUInt32BE(Number(message.l1BlockNumber)),
|
|
18
|
-
numToUInt32BE(message.
|
|
19
|
+
numToUInt32BE(message.checkpointNumber),
|
|
19
20
|
message.rollingHash
|
|
20
21
|
]);
|
|
21
22
|
}
|
|
@@ -25,14 +26,14 @@ export function deserializeInboxMessage(buffer) {
|
|
|
25
26
|
const leaf = reader.readObject(Fr);
|
|
26
27
|
const l1BlockHash = reader.readObject(Buffer32);
|
|
27
28
|
const l1BlockNumber = BigInt(reader.readNumber());
|
|
28
|
-
const
|
|
29
|
+
const checkpointNumber = CheckpointNumber(reader.readNumber());
|
|
29
30
|
const rollingHash = reader.readObject(Buffer16);
|
|
30
31
|
return {
|
|
31
32
|
index,
|
|
32
33
|
leaf,
|
|
33
34
|
l1BlockHash,
|
|
34
35
|
l1BlockNumber,
|
|
35
|
-
|
|
36
|
+
checkpointNumber,
|
|
36
37
|
rollingHash
|
|
37
38
|
};
|
|
38
39
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export type { L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RydWN0cy9wdWJsaXNoZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"published.d.ts","sourceRoot":"","sources":["../../src/structs/published.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import type { BlobClientInterface } from '@aztec/blob-client/client';
|
|
2
|
+
import { type Blob } from '@aztec/blob-lib';
|
|
3
|
+
import type { InboxContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
4
|
+
import type { ViemPublicClient } from '@aztec/ethereum/types';
|
|
5
|
+
import { CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
6
|
+
import { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
7
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
8
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
9
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
10
|
+
import { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
11
|
+
import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
|
|
12
|
+
import { type MockProxy } from 'jest-mock-extended';
|
|
13
|
+
/** Configuration for the fake L1 state. */
|
|
14
|
+
export type FakeL1StateConfig = {
|
|
15
|
+
/** Genesis archive root. */
|
|
16
|
+
genesisArchiveRoot: Fr;
|
|
17
|
+
/** L1 start block number. */
|
|
18
|
+
l1StartBlock: bigint;
|
|
19
|
+
/** L1 genesis time in seconds. */
|
|
20
|
+
l1GenesisTime: bigint;
|
|
21
|
+
/** Ethereum slot duration in seconds. */
|
|
22
|
+
ethereumSlotDuration: number;
|
|
23
|
+
/** Rollup address for mock contracts. */
|
|
24
|
+
rollupAddress: EthAddress;
|
|
25
|
+
/** Inbox address for mock contracts. */
|
|
26
|
+
inboxAddress: EthAddress;
|
|
27
|
+
/** Aztec slot duration in seconds */
|
|
28
|
+
slotDuration: number;
|
|
29
|
+
};
|
|
30
|
+
/** Options for adding a checkpoint. */
|
|
31
|
+
type AddCheckpointOptions = {
|
|
32
|
+
/** L1 block number where checkpoint was proposed. */
|
|
33
|
+
l1BlockNumber: bigint;
|
|
34
|
+
/** Number of L2 blocks in the checkpoint. Default: 1 */
|
|
35
|
+
numBlocks?: number;
|
|
36
|
+
/** Or the actual blocks for the checkpoint */
|
|
37
|
+
blocks?: L2Block[];
|
|
38
|
+
/** Number of transactions per block. Default: 4 */
|
|
39
|
+
txsPerBlock?: number;
|
|
40
|
+
/** Max number of effects per tx (for generating large blobs). Default: undefined */
|
|
41
|
+
maxEffects?: number;
|
|
42
|
+
/** Signers for attestations. Default: none */
|
|
43
|
+
signers?: Secp256k1Signer[];
|
|
44
|
+
/** Override slot number. */
|
|
45
|
+
slotNumber?: SlotNumber;
|
|
46
|
+
/** Override previous archive. */
|
|
47
|
+
previousArchive?: AppendOnlyTreeSnapshot;
|
|
48
|
+
/** Timestamp for the checkpoint. */
|
|
49
|
+
timestamp?: bigint;
|
|
50
|
+
/** Number of L1-to-L2 messages. Default: 3 */
|
|
51
|
+
numL1ToL2Messages?: number;
|
|
52
|
+
/** L1 block number where messages were sent. Default: l1BlockNumber - 3 */
|
|
53
|
+
messagesL1BlockNumber?: bigint;
|
|
54
|
+
};
|
|
55
|
+
/** Result from adding a checkpoint. */
|
|
56
|
+
type AddCheckpointResult = {
|
|
57
|
+
/** The checkpoint that was created. */
|
|
58
|
+
checkpoint: Checkpoint;
|
|
59
|
+
/** The L1-to-L2 messages for this checkpoint. */
|
|
60
|
+
messages: Fr[];
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Stateful fake for L1 data used by the archiver.
|
|
64
|
+
*
|
|
65
|
+
* This class simulates the L1 blockchain state that the archiver reads from:
|
|
66
|
+
* - RollupContract: status(), archiveAt(), getVersion(), getTargetCommitteeSize(), CheckpointProposed events
|
|
67
|
+
* - InboxContract: getState(), MessageSent events
|
|
68
|
+
* - PublicClient: getBlockNumber(), getBlock(), getTransaction()
|
|
69
|
+
* - BlobClient: getBlobSidecar()
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* const fake = new FakeL1State(config);
|
|
74
|
+
*
|
|
75
|
+
* // Add checkpoint (creates messages automatically)
|
|
76
|
+
* const { checkpoint, messages } = await fake.addCheckpoint(CheckpointNumber(1), { l1BlockNumber: 101n });
|
|
77
|
+
* fake.setL1BlockNumber(105n);
|
|
78
|
+
*
|
|
79
|
+
* // Status auto-updated
|
|
80
|
+
* expect(fake.getRollupStatus().pendingCheckpointNumber).toEqual(CheckpointNumber(1));
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export declare class FakeL1State {
|
|
84
|
+
private readonly config;
|
|
85
|
+
private readonly log;
|
|
86
|
+
private l1BlockNumber;
|
|
87
|
+
private checkpoints;
|
|
88
|
+
private messages;
|
|
89
|
+
private messagesRollingHash;
|
|
90
|
+
private lastArchive;
|
|
91
|
+
private provenCheckpointNumber;
|
|
92
|
+
private targetCommitteeSize;
|
|
93
|
+
private version;
|
|
94
|
+
private canPruneResult;
|
|
95
|
+
private pendingCheckpointNumber;
|
|
96
|
+
private finalizedL1BlockNumber;
|
|
97
|
+
constructor(config: FakeL1StateConfig);
|
|
98
|
+
/**
|
|
99
|
+
* Adds messages for a checkpoint. Returns the message leaves.
|
|
100
|
+
* Auto-updates rolling hash.
|
|
101
|
+
*
|
|
102
|
+
* Note: For most use cases, use `addCheckpoint` which creates both checkpoint and messages.
|
|
103
|
+
* Use this method only when you need to add messages without creating a checkpoint (e.g., for reorg tests).
|
|
104
|
+
*/
|
|
105
|
+
addMessages(checkpointNumber: CheckpointNumber, l1BlockNumber: bigint, messageLeaves: Fr[]): void;
|
|
106
|
+
/**
|
|
107
|
+
* Creates blocks for a checkpoint without adding them to L1 state.
|
|
108
|
+
* Useful for creating blocks to pass to addBlock() for testing provisional block handling.
|
|
109
|
+
* Returns the blocks directly.
|
|
110
|
+
*/
|
|
111
|
+
makeBlocks(checkpointNumber: CheckpointNumber, options: Partial<AddCheckpointOptions>): Promise<L2Block[]>;
|
|
112
|
+
/**
|
|
113
|
+
* Creates and adds a checkpoint with its L1-to-L2 messages.
|
|
114
|
+
* Returns both the checkpoint and the message leaves.
|
|
115
|
+
* Auto-chains from lastArchive, auto-updates pending status if L1 block >= checkpoint's L1 block.
|
|
116
|
+
*/
|
|
117
|
+
addCheckpoint(checkpointNumber: CheckpointNumber, options: AddCheckpointOptions): Promise<AddCheckpointResult>;
|
|
118
|
+
/** Creates a checkpoint and messages without adding them to L1 state. */
|
|
119
|
+
private makeCheckpointAndMessages;
|
|
120
|
+
/** Returns the L2 slot at the given L1 block (assuming all L1 blocks are mined) */
|
|
121
|
+
getL2SlotAtL1Block(l1BlockNumber: bigint): SlotNumber;
|
|
122
|
+
/** Returns the timestamp at the given L1 block (assuming all L1 blocks are mined) */
|
|
123
|
+
getTimestampAtL1Block(l1BlockNumber: bigint): bigint;
|
|
124
|
+
/**
|
|
125
|
+
* Sets the current L1 block number.
|
|
126
|
+
* Auto-updates pending checkpoint number based on visible checkpoints.
|
|
127
|
+
*/
|
|
128
|
+
setL1BlockNumber(blockNumber: bigint): void;
|
|
129
|
+
/** Sets the L1 block number that will be reported as "finalized". */
|
|
130
|
+
setFinalizedL1BlockNumber(blockNumber: bigint): void;
|
|
131
|
+
/** Marks a checkpoint as proven. Updates provenCheckpointNumber. */
|
|
132
|
+
markCheckpointAsProven(checkpointNumber: CheckpointNumber): void;
|
|
133
|
+
/**
|
|
134
|
+
* Simulates what `rollup.getProvenCheckpointNumber({ blockNumber: atL1Block })` would return.
|
|
135
|
+
*/
|
|
136
|
+
getProvenCheckpointNumberAtL1Block(atL1Block: bigint): CheckpointNumber;
|
|
137
|
+
/** Sets the target committee size for attestation validation. */
|
|
138
|
+
setTargetCommitteeSize(size: number): void;
|
|
139
|
+
/** Sets whether the rollup contract would allow pruning at the next block. */
|
|
140
|
+
setCanPrune(value: boolean): void;
|
|
141
|
+
/**
|
|
142
|
+
* Removes all entries for a checkpoint number (simulates L1 reorg or prune).
|
|
143
|
+
* Note: Does NOT remove messages for this checkpoint (use numL1ToL2Messages: 0 when re-adding).
|
|
144
|
+
* Auto-updates pending status.
|
|
145
|
+
*/
|
|
146
|
+
removeCheckpoint(checkpointNumber: CheckpointNumber): void;
|
|
147
|
+
/**
|
|
148
|
+
* Moves a checkpoint to a different L1 block number (simulates L1 reorg that
|
|
149
|
+
* re-includes the same checkpoint transaction in a different block).
|
|
150
|
+
* The checkpoint content stays the same — only the L1 metadata changes.
|
|
151
|
+
* Auto-updates pending status.
|
|
152
|
+
*/
|
|
153
|
+
moveCheckpointToL1Block(checkpointNumber: CheckpointNumber, newL1BlockNumber: bigint): void;
|
|
154
|
+
/**
|
|
155
|
+
* Removes messages after a given total index (simulates L1 reorg).
|
|
156
|
+
* Auto-updates rolling hash.
|
|
157
|
+
*/
|
|
158
|
+
removeMessagesAfter(totalIndex: number): void;
|
|
159
|
+
/**
|
|
160
|
+
* Simulates a pruned checkpoint by marking all entries with this number as pruned.
|
|
161
|
+
* The event will still be returned, but archiveAt() will return the previous checkpoint's archive
|
|
162
|
+
* (or genesis if no previous checkpoint), causing a mismatch that the archiver will detect.
|
|
163
|
+
*/
|
|
164
|
+
markCheckpointAsPruned(checkpointNumber: CheckpointNumber): void;
|
|
165
|
+
/**
|
|
166
|
+
* Moves messages at a given L1 block to a new L1 block.
|
|
167
|
+
* Useful for simulating partial message visibility (messages at higher L1 blocks won't be fetched).
|
|
168
|
+
*/
|
|
169
|
+
moveMessagesToL1Block(fromL1Block: bigint, toL1Block: bigint): void;
|
|
170
|
+
/**
|
|
171
|
+
* Moves a specific message (by index in the messages array) to a new L1 block.
|
|
172
|
+
*/
|
|
173
|
+
moveMessageAtIndexToL1Block(index: number, toL1Block: bigint): void;
|
|
174
|
+
/** Gets current rollup status. */
|
|
175
|
+
getRollupStatus(): {
|
|
176
|
+
provenCheckpointNumber: CheckpointNumber;
|
|
177
|
+
pendingCheckpointNumber: CheckpointNumber;
|
|
178
|
+
provenArchive: Fr;
|
|
179
|
+
pendingArchive: Fr;
|
|
180
|
+
};
|
|
181
|
+
/** Gets the last archive (for manual chaining if needed). */
|
|
182
|
+
getLastArchive(): AppendOnlyTreeSnapshot;
|
|
183
|
+
/** Gets the latest checkpoint entry by number (returns the last added one). */
|
|
184
|
+
getCheckpoint(checkpointNumber: CheckpointNumber): Checkpoint | undefined;
|
|
185
|
+
/** Gets messages for a checkpoint. */
|
|
186
|
+
getMessages(checkpointNumber: CheckpointNumber): Fr[];
|
|
187
|
+
/** Gets the blobs for a checkpoint. */
|
|
188
|
+
getCheckpointBlobs(checkpointNumber: CheckpointNumber): Blob[];
|
|
189
|
+
/** Creates mock RollupContract that reads from this fake state. */
|
|
190
|
+
createMockRollupContract(_publicClient: MockProxy<ViemPublicClient>): MockProxy<RollupContract>;
|
|
191
|
+
/** Creates mock InboxContract that reads from this fake state. */
|
|
192
|
+
createMockInboxContract(_publicClient: MockProxy<ViemPublicClient>): MockProxy<InboxContract>;
|
|
193
|
+
/** Creates mock PublicClient that reads from this fake state. */
|
|
194
|
+
createMockPublicClient(): MockProxy<ViemPublicClient>;
|
|
195
|
+
/** Creates mock BlobClient that reads from this fake state. */
|
|
196
|
+
createMockBlobClient(): MockProxy<BlobClientInterface>;
|
|
197
|
+
private updatePendingCheckpointNumber;
|
|
198
|
+
private getArchiveAt;
|
|
199
|
+
private getNextBlockNumber;
|
|
200
|
+
private getCheckpointProposedLogs;
|
|
201
|
+
private getMessageSentLogs;
|
|
202
|
+
private getMessageSentLogByHash;
|
|
203
|
+
private makeRollupTx;
|
|
204
|
+
/** Extracts the CommitteeAttestations struct definition from RollupAbi for hash computation. */
|
|
205
|
+
private getCommitteeAttestationsStructDef;
|
|
206
|
+
private makeVersionedBlobHashes;
|
|
207
|
+
private makeBlobsFromCheckpoint;
|
|
208
|
+
}
|
|
209
|
+
export {};
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZV9sMV9zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvZmFrZV9sMV9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLElBQUksRUFBcUQsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRixPQUFPLEtBQUssRUFBeUIsYUFBYSxFQUFrQixjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV0SCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUF5RCxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFTdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0QsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFjMUQsMkNBQTJDO0FBQzNDLE1BQU0sTUFBTSxpQkFBaUIsR0FBRztJQUM5Qiw0QkFBNEI7SUFDNUIsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO0lBQ3ZCLDZCQUE2QjtJQUM3QixZQUFZLEVBQUUsTUFBTSxDQUFDO0lBQ3JCLGtDQUFrQztJQUNsQyxhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLHlDQUF5QztJQUN6QyxvQkFBb0IsRUFBRSxNQUFNLENBQUM7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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake_l1_state.d.ts","sourceRoot":"","sources":["../../src/test/fake_l1_state.ts"],"names":[],"mappings":"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"}
|