@aztec/archiver 0.28.1 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/archiver/archiver.d.ts +13 -53
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +60 -199
- package/dest/archiver/archiver_store.d.ts +21 -67
- package/dest/archiver/archiver_store.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +60 -199
- package/dest/archiver/config.d.ts.map +1 -1
- package/dest/archiver/config.js +6 -2
- package/dest/archiver/data_retrieval.d.ts +10 -32
- package/dest/archiver/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/data_retrieval.js +13 -67
- package/dest/archiver/eth_log_handlers.d.ts +7 -38
- package/dest/archiver/eth_log_handlers.d.ts.map +1 -1
- package/dest/archiver/eth_log_handlers.js +9 -77
- package/dest/archiver/kv_archiver_store/block_store.d.ts +5 -4
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +12 -15
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +15 -56
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +23 -87
- package/dest/archiver/kv_archiver_store/message_store.d.ts +12 -43
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/message_store.js +32 -141
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +8 -41
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts.map +1 -1
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.js +22 -79
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +20 -81
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -1
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +30 -143
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +3 -15
- package/dest/rpc/archiver_client.d.ts.map +1 -1
- package/dest/rpc/archiver_client.js +2 -6
- package/dest/rpc/archiver_server.d.ts.map +1 -1
- package/dest/rpc/archiver_server.js +2 -6
- package/package.json +9 -9
- package/src/archiver/archiver.ts +80 -267
- package/src/archiver/archiver_store.ts +22 -76
- package/src/archiver/archiver_store_test_suite.ts +78 -243
- package/src/archiver/config.ts +6 -0
- package/src/archiver/data_retrieval.ts +19 -101
- package/src/archiver/eth_log_handlers.ts +14 -108
- package/src/archiver/kv_archiver_store/block_store.ts +13 -14
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +23 -93
- package/src/archiver/kv_archiver_store/message_store.ts +38 -169
- package/src/archiver/memory_archiver_store/l1_to_l2_message_store.ts +21 -90
- package/src/archiver/memory_archiver_store/memory_archiver_store.ts +33 -161
- package/src/index.ts +1 -15
- package/src/rpc/archiver_client.ts +0 -8
- package/src/rpc/archiver_server.ts +0 -8
- package/dest/archiver/kv_archiver_store/contract_store.d.ts +0 -26
- package/dest/archiver/kv_archiver_store/contract_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/contract_store.js +0 -49
- package/src/archiver/kv_archiver_store/contract_store.ts +0 -55
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ExtendedUnencryptedL2Log, L2BlockContext, LogId, LogType, TxReceipt, TxStatus, UnencryptedL2Log, } from '@aztec/circuit-types';
|
|
2
|
-
import { Fr, INITIAL_L2_BLOCK_NUM
|
|
3
|
-
import { L1ToL2MessageStore
|
|
2
|
+
import { Fr, INITIAL_L2_BLOCK_NUM } from '@aztec/circuits.js';
|
|
3
|
+
import { L1ToL2MessageStore } from './l1_to_l2_message_store.js';
|
|
4
4
|
/**
|
|
5
5
|
* Simple, in-memory implementation of an archiver data store.
|
|
6
6
|
*/
|
|
@@ -32,29 +32,13 @@ export class MemoryArchiverStore {
|
|
|
32
32
|
*/
|
|
33
33
|
this.unencryptedLogsPerBlock = [];
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* Contains all L1 to L2 messages.
|
|
36
36
|
*/
|
|
37
|
-
this.
|
|
38
|
-
/**
|
|
39
|
-
* A mapping of contract address to extended contract data.
|
|
40
|
-
*/
|
|
41
|
-
this.extendedContractData = new Map();
|
|
42
|
-
// TODO(#4492): Nuke the other message stores
|
|
43
|
-
this.newL1ToL2Messages = new NewL1ToL2MessageStore();
|
|
44
|
-
/**
|
|
45
|
-
* Contains all the confirmed L1 to L2 messages (i.e. messages that were consumed in an L2 block)
|
|
46
|
-
* It is a map of entryKey to the corresponding L1 to L2 message and the number of times it has appeared
|
|
47
|
-
*/
|
|
48
|
-
this.confirmedL1ToL2Messages = new L1ToL2MessageStore();
|
|
49
|
-
/**
|
|
50
|
-
* Contains all the pending L1 to L2 messages (accounts for duplication of messages)
|
|
51
|
-
*/
|
|
52
|
-
this.pendingL1ToL2Messages = new PendingL1ToL2MessageStore();
|
|
37
|
+
this.l1ToL2Messages = new L1ToL2MessageStore();
|
|
53
38
|
this.contractClasses = new Map();
|
|
54
39
|
this.contractInstances = new Map();
|
|
40
|
+
this.lastL1BlockNewBlocks = 0n;
|
|
55
41
|
this.lastL1BlockNewMessages = 0n;
|
|
56
|
-
this.lastL1BlockAddedMessages = 0n;
|
|
57
|
-
this.lastL1BlockCancelledMessages = 0n;
|
|
58
42
|
}
|
|
59
43
|
getContractClass(id) {
|
|
60
44
|
return Promise.resolve(this.contractClasses.get(id.toString()));
|
|
@@ -79,12 +63,13 @@ export class MemoryArchiverStore {
|
|
|
79
63
|
}
|
|
80
64
|
/**
|
|
81
65
|
* Append new blocks to the store's list.
|
|
82
|
-
* @param blocks - The L2 blocks to be added to the store.
|
|
83
|
-
* @returns True if the operation is successful
|
|
66
|
+
* @param blocks - The L2 blocks to be added to the store and the last processed L1 block.
|
|
67
|
+
* @returns True if the operation is successful.
|
|
84
68
|
*/
|
|
85
69
|
addBlocks(blocks) {
|
|
86
|
-
this.
|
|
87
|
-
this.
|
|
70
|
+
this.lastL1BlockNewBlocks = blocks.lastProcessedL1BlockNumber;
|
|
71
|
+
this.l2BlockContexts.push(...blocks.retrievedData.map(block => new L2BlockContext(block)));
|
|
72
|
+
this.txEffects.push(...blocks.retrievedData.flatMap(b => b.getTxs()));
|
|
88
73
|
return Promise.resolve(true);
|
|
89
74
|
}
|
|
90
75
|
/**
|
|
@@ -128,89 +113,27 @@ export class MemoryArchiverStore {
|
|
|
128
113
|
return Promise.resolve(true);
|
|
129
114
|
}
|
|
130
115
|
/**
|
|
131
|
-
* Append
|
|
132
|
-
* @param messages - The L1 to L2 messages to be added to the store.
|
|
133
|
-
* @param lastMessageL1BlockNumber - The L1 block number in which the last message was emitted.
|
|
116
|
+
* Append L1 to L2 messages to the store.
|
|
117
|
+
* @param messages - The L1 to L2 messages to be added to the store and the last processed L1 block.
|
|
134
118
|
* @returns True if the operation is successful.
|
|
135
119
|
*/
|
|
136
|
-
|
|
137
|
-
if (
|
|
120
|
+
addL1ToL2Messages(messages) {
|
|
121
|
+
if (messages.lastProcessedL1BlockNumber <= this.lastL1BlockNewMessages) {
|
|
138
122
|
return Promise.resolve(false);
|
|
139
123
|
}
|
|
140
|
-
this.lastL1BlockNewMessages =
|
|
141
|
-
for (const message of messages) {
|
|
142
|
-
this.
|
|
124
|
+
this.lastL1BlockNewMessages = messages.lastProcessedL1BlockNumber;
|
|
125
|
+
for (const message of messages.retrievedData) {
|
|
126
|
+
this.l1ToL2Messages.addMessage(message);
|
|
143
127
|
}
|
|
144
128
|
return Promise.resolve(true);
|
|
145
129
|
}
|
|
146
130
|
/**
|
|
147
|
-
*
|
|
148
|
-
* @param
|
|
149
|
-
* @
|
|
150
|
-
* @returns True if the operation is successful (always in this implementation).
|
|
151
|
-
*/
|
|
152
|
-
addPendingL1ToL2Messages(messages, l1BlockNumber) {
|
|
153
|
-
if (l1BlockNumber <= this.lastL1BlockAddedMessages) {
|
|
154
|
-
return Promise.resolve(false);
|
|
155
|
-
}
|
|
156
|
-
this.lastL1BlockAddedMessages = l1BlockNumber;
|
|
157
|
-
for (const message of messages) {
|
|
158
|
-
this.pendingL1ToL2Messages.addMessage(message.entryKey, message);
|
|
159
|
-
}
|
|
160
|
-
return Promise.resolve(true);
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Remove pending L1 to L2 messages from the store (if they were cancelled).
|
|
164
|
-
* @param messages - The entry keys to be removed from the store.
|
|
165
|
-
* @param l1BlockNumber - The L1 block number for which to remove the messages.
|
|
166
|
-
* @returns True if the operation is successful (always in this implementation).
|
|
167
|
-
*/
|
|
168
|
-
cancelPendingL1ToL2EntryKeys(messages, l1BlockNumber) {
|
|
169
|
-
if (l1BlockNumber <= this.lastL1BlockCancelledMessages) {
|
|
170
|
-
return Promise.resolve(false);
|
|
171
|
-
}
|
|
172
|
-
this.lastL1BlockCancelledMessages = l1BlockNumber;
|
|
173
|
-
messages.forEach(entryKey => {
|
|
174
|
-
this.pendingL1ToL2Messages.removeMessage(entryKey);
|
|
175
|
-
});
|
|
176
|
-
return Promise.resolve(true);
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Messages that have been published in an L2 block are confirmed.
|
|
180
|
-
* Add them to the confirmed store, also remove them from the pending store.
|
|
181
|
-
* @param entryKeys - The entry keys to be removed from the store.
|
|
182
|
-
* @returns True if the operation is successful (always in this implementation).
|
|
131
|
+
* Gets the L1 to L2 message index in the L1 to L2 message tree.
|
|
132
|
+
* @param l1ToL2Message - The L1 to L2 message.
|
|
133
|
+
* @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
|
|
183
134
|
*/
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if (entryKey.equals(Fr.ZERO)) {
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
this.confirmedL1ToL2Messages.addMessage(entryKey, this.pendingL1ToL2Messages.getMessage(entryKey));
|
|
190
|
-
this.pendingL1ToL2Messages.removeMessage(entryKey);
|
|
191
|
-
});
|
|
192
|
-
return Promise.resolve(true);
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Store new extended contract data from an L2 block to the store's list.
|
|
196
|
-
* @param data - List of contracts' data to be added.
|
|
197
|
-
* @param blockNum - Number of the L2 block the contract data was deployed in.
|
|
198
|
-
* @returns True if the operation is successful (always in this implementation).
|
|
199
|
-
*/
|
|
200
|
-
addExtendedContractData(data, blockNum) {
|
|
201
|
-
// Add to the contracts mapping
|
|
202
|
-
for (const contractData of data) {
|
|
203
|
-
const key = contractData.contractData.contractAddress.toString();
|
|
204
|
-
this.extendedContractData.set(key, contractData);
|
|
205
|
-
}
|
|
206
|
-
// Add the index per block
|
|
207
|
-
if (this.extendedContractDataByBlock[blockNum]?.length) {
|
|
208
|
-
this.extendedContractDataByBlock[blockNum]?.push(...data);
|
|
209
|
-
}
|
|
210
|
-
else {
|
|
211
|
-
this.extendedContractDataByBlock[blockNum] = [...data];
|
|
212
|
-
}
|
|
213
|
-
return Promise.resolve(true);
|
|
135
|
+
getL1ToL2MessageIndex(l1ToL2Message) {
|
|
136
|
+
return Promise.resolve(this.l1ToL2Messages.getMessageIndex(l1ToL2Message));
|
|
214
137
|
}
|
|
215
138
|
/**
|
|
216
139
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
@@ -256,32 +179,12 @@ export class MemoryArchiverStore {
|
|
|
256
179
|
return Promise.resolve(undefined);
|
|
257
180
|
}
|
|
258
181
|
/**
|
|
259
|
-
* Gets
|
|
260
|
-
* @param limit - The number of messages to return (by default NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).
|
|
261
|
-
* @returns The requested L1 to L2 entry keys.
|
|
262
|
-
*/
|
|
263
|
-
getPendingL1ToL2EntryKeys(limit = NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP) {
|
|
264
|
-
return Promise.resolve(this.pendingL1ToL2Messages.getEntryKeys(limit));
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Gets the confirmed L1 to L2 message corresponding to the given entry key.
|
|
268
|
-
* @param entryKey - The entry key to look up.
|
|
269
|
-
* @returns The requested L1 to L2 message or throws if not found.
|
|
270
|
-
*/
|
|
271
|
-
getConfirmedL1ToL2Message(entryKey) {
|
|
272
|
-
const message = this.confirmedL1ToL2Messages.getMessage(entryKey);
|
|
273
|
-
if (!message) {
|
|
274
|
-
throw new Error(`L1 to L2 Message with key ${entryKey.toString()} not found in the confirmed messages store`);
|
|
275
|
-
}
|
|
276
|
-
return Promise.resolve(message);
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Gets new L1 to L2 message (to be) included in a given block.
|
|
182
|
+
* Gets L1 to L2 message (to be) included in a given block.
|
|
280
183
|
* @param blockNumber - L2 block number to get messages for.
|
|
281
184
|
* @returns The L1 to L2 messages/leaves of the messages subtree (throws if not found).
|
|
282
185
|
*/
|
|
283
|
-
|
|
284
|
-
return Promise.resolve(this.
|
|
186
|
+
getL1ToL2Messages(blockNumber) {
|
|
187
|
+
return Promise.resolve(this.l1ToL2Messages.getMessages(blockNumber));
|
|
285
188
|
}
|
|
286
189
|
/**
|
|
287
190
|
* Gets up to `limit` amount of logs starting from `from`.
|
|
@@ -374,37 +277,21 @@ export class MemoryArchiverStore {
|
|
|
374
277
|
maxLogsHit: false,
|
|
375
278
|
});
|
|
376
279
|
}
|
|
377
|
-
/**
|
|
378
|
-
* Get the extended contract data for this contract.
|
|
379
|
-
* TODO(palla/purge-old-contract-deploy): Delete me?
|
|
380
|
-
* @param contractAddress - The contract data address.
|
|
381
|
-
* @returns The extended contract data or undefined if not found.
|
|
382
|
-
*/
|
|
383
|
-
getExtendedContractData(contractAddress) {
|
|
384
|
-
const result = this.extendedContractData.get(contractAddress.toString());
|
|
385
|
-
return Promise.resolve(result);
|
|
386
|
-
}
|
|
387
280
|
/**
|
|
388
281
|
* Gets the number of the latest L2 block processed.
|
|
389
282
|
* @returns The number of the latest L2 block processed.
|
|
390
283
|
*/
|
|
391
|
-
|
|
284
|
+
getSynchedL2BlockNumber() {
|
|
392
285
|
if (this.l2BlockContexts.length === 0) {
|
|
393
286
|
return Promise.resolve(INITIAL_L2_BLOCK_NUM - 1);
|
|
394
287
|
}
|
|
395
288
|
return Promise.resolve(this.l2BlockContexts[this.l2BlockContexts.length - 1].block.number);
|
|
396
289
|
}
|
|
397
|
-
|
|
398
|
-
const addedBlock = this.l2BlockContexts[this.l2BlockContexts.length - 1]?.block?.getL1BlockNumber() ?? 0n;
|
|
399
|
-
const newMessages = this.lastL1BlockNewMessages;
|
|
400
|
-
const addedMessages = this.lastL1BlockAddedMessages;
|
|
401
|
-
const cancelledMessages = this.lastL1BlockCancelledMessages;
|
|
290
|
+
getSynchedL1BlockNumbers() {
|
|
402
291
|
return Promise.resolve({
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
addedMessages,
|
|
406
|
-
cancelledMessages,
|
|
292
|
+
blocks: this.lastL1BlockNewBlocks,
|
|
293
|
+
messages: this.lastL1BlockNewMessages,
|
|
407
294
|
});
|
|
408
295
|
}
|
|
409
296
|
}
|
|
410
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X2FyY2hpdmVyX3N0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FyY2hpdmVyL21lbW9yeV9hcmNoaXZlcl9zdG9yZS9tZW1vcnlfYXJjaGl2ZXJfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHdCQUF3QixFQUl4QixjQUFjLEVBR2QsS0FBSyxFQUNMLE9BQU8sRUFJUCxTQUFTLEVBQ1QsUUFBUSxFQUNSLGdCQUFnQixHQUNqQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUtuRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVuSDs7R0FFRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUE0RDlCO0lBQ0Usa0ZBQWtGO0lBQ2xFLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBN0RqQzs7V0FFRztRQUNLLG9CQUFlLEdBQXFCLEVBQUUsQ0FBQztRQUUvQzs7V0FFRztRQUNLLGtCQUFhLEdBQXNCLElBQUksR0FBRyxFQUFFLENBQUM7UUFFckQ7O1dBRUc7UUFDSyxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBRW5DOzs7V0FHRztRQUNLLDBCQUFxQixHQUFvQixFQUFFLENBQUM7UUFFcEQ7OztXQUdHO1FBQ0ssNEJBQXVCLEdBQW9CLEVBQUUsQ0FBQztRQUV0RDs7V0FFRztRQUNLLGdDQUEyQixHQUEyQyxFQUFFLENBQUM7UUFFakY7O1dBRUc7UUFDSyx5QkFBb0IsR0FBc0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUU1RSw2Q0FBNkM7UUFDckMsc0JBQWlCLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBRXhEOzs7V0FHRztRQUNLLDRCQUF1QixHQUF1QixJQUFJLGtCQUFrQixFQUFF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
|
|
297
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X2FyY2hpdmVyX3N0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FyY2hpdmVyL21lbW9yeV9hcmNoaXZlcl9zdG9yZS9tZW1vcnlfYXJjaGl2ZXJfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHdCQUF3QixFQUl4QixjQUFjLEVBR2QsS0FBSyxFQUNMLE9BQU8sRUFHUCxTQUFTLEVBQ1QsUUFBUSxFQUNSLGdCQUFnQixHQUNqQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQU05RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVqRTs7R0FFRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUF3QzlCO0lBQ0Usa0ZBQWtGO0lBQ2xFLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBekNqQzs7V0FFRztRQUNLLG9CQUFlLEdBQXFCLEVBQUUsQ0FBQztRQUUvQzs7V0FFRztRQUNLLGtCQUFhLEdBQXNCLElBQUksR0FBRyxFQUFFLENBQUM7UUFFckQ7O1dBRUc7UUFDSyxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBRW5DOzs7V0FHRztRQUNLLDBCQUFxQixHQUFvQixFQUFFLENBQUM7UUFFcEQ7OztXQUdHO1FBQ0ssNEJBQXVCLEdBQW9CLEVBQUUsQ0FBQztRQUV0RDs7V0FFRztRQUNLLG1CQUFjLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBRTFDLG9CQUFlLEdBQXFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFFOUQsc0JBQWlCLEdBQTZDLElBQUksR0FBRyxFQUFFLENBQUM7UUFFeEUseUJBQW9CLEdBQVcsRUFBRSxDQUFDO1FBQ2xDLDJCQUFzQixHQUFXLEVBQUUsQ0FBQztJQUt6QyxDQUFDO0lBRUcsZ0JBQWdCLENBQUMsRUFBTTtRQUM1QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRU0sbUJBQW1CLENBQUMsT0FBcUI7UUFDOUMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sa0JBQWtCLENBQUMsSUFBMkIsRUFBRSxZQUFvQjtRQUN6RSxLQUFLLE1BQU0sYUFBYSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sb0JBQW9CLENBQUMsSUFBbUMsRUFBRSxZQUFvQjtRQUNuRixLQUFLLE1BQU0sZ0JBQWdCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUFDLE1BQThCO1FBQzdDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUM7UUFDOUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsV0FBbUI7UUFDaEMsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUMvQixLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxnQkFBMEI7UUFDdkMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkgsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBcUIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxPQUFPLENBQUMsYUFBNEIsRUFBRSxlQUE4QixFQUFFLFdBQW1CO1FBQ3ZGLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUNqRixDQUFDO1FBRUQsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLEdBQUcsZUFBZSxDQUFDO1FBQ3JGLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxpQkFBaUIsQ0FBQyxRQUFrQztRQUN6RCxJQUFJLFFBQVEsQ0FBQywwQkFBMEIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUN2RSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUVELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLENBQUMsMEJBQTBCLENBQUM7UUFDbEUsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHFCQUFxQixDQUFDLGFBQWlCO1FBQzVDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxTQUFTLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDMUMsbURBQW1EO1FBQ25ELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLGtCQUFrQixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0MsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsTUFBYztRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDckUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksbUJBQW1CLENBQUMsTUFBYztRQUN2QyxLQUFLLE1BQU0sWUFBWSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNoRCxLQUFLLE1BQU0sYUFBYSxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDakMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUNwQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUMzRyxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLFdBQW1CO1FBQ25DLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxPQUFPLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxPQUFnQjtRQUNuRCxJQUFJLElBQUksR0FBRyxvQkFBb0IsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsT0FBTyxLQUFLLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQ3ZHLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxvQkFBb0IsQ0FBQztRQUMvQyxNQUFNLFFBQVEsR0FBRyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGtCQUFrQixDQUFDLE1BQWlCO1FBQ2xDLElBQUksTUFBMEIsQ0FBQztRQUMvQixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQztRQUN2RCxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLHVEQUF1RDtZQUN2RCxJQUFJLE1BQU0sQ0FBQyxTQUFTLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckYsY0FBYyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDO2dCQUNwRSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3pDLFlBQVksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUM7WUFDcEYsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGNBQWMsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDO1lBQzNELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBRXZCLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDbkMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsb0JBQW9CLENBQUM7WUFDM0QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEdBQUcsb0JBQW9CLENBQUM7UUFDdkQsQ0FBQztRQUVELG1EQUFtRDtRQUNuRCxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0MsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzRSxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxJQUFJLFlBQVksR0FBRyxjQUFjLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9HLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztnQkFDckIsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsVUFBVSxFQUFFLEtBQUs7YUFDbEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUVqQyxNQUFNLElBQUksR0FBK0IsRUFBRSxDQUFDO1FBRTVDLE9BQU8sY0FBYyxHQUFHLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDMUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUM7Z0JBQ2xFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzFHLE9BQU8sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQztvQkFDcEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNqQyxJQUNFLENBQUMsQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ2xFLENBQUMsQ0FBQyxlQUFlLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7d0JBQ2pFLENBQUMsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDNUMsQ0FBQzt3QkFDRCxJQUFJLENBQUMsSUFBSSxDQUNQLElBQUksd0JBQXdCLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUN0RyxDQUFDO3dCQUNGLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7NEJBQ2pDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztnQ0FDckIsSUFBSTtnQ0FDSixVQUFVLEVBQUUsSUFBSTs2QkFDakIsQ0FBQyxDQUFDO3dCQUNMLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUNELFlBQVksR0FBRyxDQUFDLENBQUM7WUFDbkIsQ0FBQztZQUNELGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNyQixJQUFJO1lBQ0osVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHVCQUF1QjtRQUM1QixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsc0JBQXNCO1NBQ3RDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9
|
package/dest/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
package/dest/index.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
1
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
2
|
import { fileURLToPath } from '@aztec/foundation/url';
|
|
4
|
-
import {
|
|
5
|
-
import { createPublicClient, getAddress, getContract, http } from 'viem';
|
|
3
|
+
import { createPublicClient, http } from 'viem';
|
|
6
4
|
import { localhost } from 'viem/chains';
|
|
7
5
|
import { Archiver, getConfigEnvVars } from './archiver/index.js';
|
|
8
6
|
import { MemoryArchiverStore } from './archiver/memory_archiver_store/memory_archiver_store.js';
|
|
@@ -21,17 +19,7 @@ async function main() {
|
|
|
21
19
|
transport: http(rpcUrl),
|
|
22
20
|
});
|
|
23
21
|
const archiverStore = new MemoryArchiverStore(1000);
|
|
24
|
-
|
|
25
|
-
let newInboxAddress;
|
|
26
|
-
{
|
|
27
|
-
const rollup = getContract({
|
|
28
|
-
address: getAddress(l1Contracts.rollupAddress.toString()),
|
|
29
|
-
abi: RollupAbi,
|
|
30
|
-
client: publicClient,
|
|
31
|
-
});
|
|
32
|
-
newInboxAddress = EthAddress.fromString(await rollup.read.NEW_INBOX());
|
|
33
|
-
}
|
|
34
|
-
const archiver = new Archiver(publicClient, l1Contracts.rollupAddress, l1Contracts.availabilityOracleAddress, l1Contracts.inboxAddress, newInboxAddress, l1Contracts.registryAddress, archiverStore);
|
|
22
|
+
const archiver = new Archiver(publicClient, l1Contracts.rollupAddress, l1Contracts.availabilityOracleAddress, l1Contracts.inboxAddress, l1Contracts.registryAddress, archiverStore);
|
|
35
23
|
const shutdown = async () => {
|
|
36
24
|
await archiver.stop();
|
|
37
25
|
process.exit(0);
|
|
@@ -47,4 +35,4 @@ if (process.argv[1] === fileURLToPath(import.meta.url).replace(/\/index\.js$/, '
|
|
|
47
35
|
process.exit(1);
|
|
48
36
|
});
|
|
49
37
|
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFFaEcsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdCQUFnQixDQUFDO0FBRS9CLE1BQU0sR0FBRyxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFaEQ7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUNsQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUV2QyxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztRQUN0QyxLQUFLLEVBQUUsU0FBUztRQUNoQixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUN4QixDQUFDLENBQUM7SUFFSCxNQUFNLGFBQWEsR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXBELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUMzQixZQUFZLEVBQ1osV0FBVyxDQUFDLGFBQWEsRUFDekIsV0FBVyxDQUFDLHlCQUF5QixFQUNyQyxXQUFXLENBQUMsWUFBWSxFQUN4QixXQUFXLENBQUMsZUFBZSxFQUMzQixhQUFhLENBQ2QsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQzFCLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELGlFQUFpRTtBQUNqRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ25GLG1FQUFtRTtJQUNuRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDakIsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver_client.d.ts","sourceRoot":"","sources":["../../src/rpc/archiver_client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"archiver_client.d.ts","sourceRoot":"","sources":["../../src/rpc/archiver_client.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,eAAO,MAAM,oBAAoB,QAAS,MAAM,qGAAuC,aAcpF,CAAC"}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ExtendedUnencryptedL2Log, L2Block, L2BlockL2Logs, NullifierMembershipWitness, TxReceipt, } from '@aztec/circuit-types';
|
|
2
2
|
import { EthAddress, Fr } from '@aztec/circuits.js';
|
|
3
3
|
import { createJsonRpcClient, makeFetch } from '@aztec/foundation/json-rpc/client';
|
|
4
4
|
export const createArchiverClient = (url, fetch = makeFetch([1, 2, 3], true)) => createJsonRpcClient(url, {
|
|
5
|
-
ContractData,
|
|
6
|
-
EncodedContractFunction,
|
|
7
5
|
EthAddress,
|
|
8
|
-
ExtendedContractData,
|
|
9
6
|
ExtendedUnencryptedL2Log,
|
|
10
7
|
Fr,
|
|
11
|
-
L1ToL2Message,
|
|
12
8
|
L2Block,
|
|
13
9
|
L2BlockL2Logs,
|
|
14
10
|
}, { TxReceipt, NullifierMembershipWitness }, false, 'archiver', fetch);
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXJfY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JwYy9hcmNoaXZlcl9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixPQUFPLEVBQ1AsYUFBYSxFQUNiLDBCQUEwQixFQUMxQixTQUFTLEdBQ1YsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUluRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBaUIsRUFBRSxDQUNyRyxtQkFBbUIsQ0FDakIsR0FBRyxFQUNIO0lBQ0UsVUFBVTtJQUNWLHdCQUF3QjtJQUN4QixFQUFFO0lBQ0YsT0FBTztJQUNQLGFBQWE7Q0FDZCxFQUNELEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLEVBQ3pDLEtBQUssRUFDTCxVQUFVLEVBQ1YsS0FBSyxDQUNOLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver_server.d.ts","sourceRoot":"","sources":["../../src/rpc/archiver_server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"archiver_server.d.ts","sourceRoot":"","sources":["../../src/rpc/archiver_server.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,QAAQ,GAAG,aAAa,CAchF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ExtendedUnencryptedL2Log, L2Block, L2BlockL2Logs, NullifierMembershipWitness, TxEffect, TxReceipt, } from '@aztec/circuit-types';
|
|
2
2
|
import { EthAddress, Fr } from '@aztec/circuits.js';
|
|
3
3
|
import { JsonRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
4
4
|
/**
|
|
@@ -8,16 +8,12 @@ import { JsonRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
|
8
8
|
*/
|
|
9
9
|
export function createArchiverRpcServer(archiverService) {
|
|
10
10
|
return new JsonRpcServer(archiverService, {
|
|
11
|
-
ContractData,
|
|
12
|
-
EncodedContractFunction,
|
|
13
11
|
EthAddress,
|
|
14
|
-
ExtendedContractData,
|
|
15
12
|
ExtendedUnencryptedL2Log,
|
|
16
13
|
Fr,
|
|
17
|
-
L1ToL2Message,
|
|
18
14
|
L2Block,
|
|
19
15
|
L2BlockL2Logs,
|
|
20
16
|
TxEffect,
|
|
21
17
|
}, { TxReceipt, NullifierMembershipWitness }, ['start', 'stop']);
|
|
22
18
|
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXJfc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JwYy9hcmNoaXZlcl9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixPQUFPLEVBQ1AsYUFBYSxFQUNiLDBCQUEwQixFQUMxQixRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJbEU7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxlQUF5QjtJQUMvRCxPQUFPLElBQUksYUFBYSxDQUN0QixlQUFlLEVBQ2Y7UUFDRSxVQUFVO1FBQ1Ysd0JBQXdCO1FBQ3hCLEVBQUU7UUFDRixPQUFPO1FBQ1AsYUFBYTtRQUNiLFFBQVE7S0FDVCxFQUNELEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLEVBQ3pDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUNsQixDQUFDO0FBQ0osQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/archiver",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"typedocOptions": {
|
|
@@ -35,14 +35,14 @@
|
|
|
35
35
|
"workerThreads": true
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@aztec/circuit-types": "0.
|
|
39
|
-
"@aztec/circuits.js": "0.
|
|
40
|
-
"@aztec/ethereum": "0.
|
|
41
|
-
"@aztec/foundation": "0.
|
|
42
|
-
"@aztec/kv-store": "0.
|
|
43
|
-
"@aztec/l1-artifacts": "0.
|
|
44
|
-
"@aztec/protocol-contracts": "0.
|
|
45
|
-
"@aztec/types": "0.
|
|
38
|
+
"@aztec/circuit-types": "0.30.0",
|
|
39
|
+
"@aztec/circuits.js": "0.30.0",
|
|
40
|
+
"@aztec/ethereum": "0.30.0",
|
|
41
|
+
"@aztec/foundation": "0.30.0",
|
|
42
|
+
"@aztec/kv-store": "0.30.0",
|
|
43
|
+
"@aztec/l1-artifacts": "0.30.0",
|
|
44
|
+
"@aztec/protocol-contracts": "0.30.0",
|
|
45
|
+
"@aztec/types": "0.30.0",
|
|
46
46
|
"debug": "^4.3.4",
|
|
47
47
|
"lmdb": "^2.9.2",
|
|
48
48
|
"lodash.omit": "^4.5.0",
|