@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,16 +1,16 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { Body,
|
|
3
|
-
import { AppendOnlyTreeSnapshot,
|
|
2
|
+
import { Body, InboxLeaf } from '@aztec/circuit-types';
|
|
3
|
+
import { AppendOnlyTreeSnapshot, Header } from '@aztec/circuits.js';
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import { PublicClient } from 'viem';
|
|
6
6
|
/**
|
|
7
7
|
* Data retrieved from logs
|
|
8
8
|
*/
|
|
9
|
-
type DataRetrieval<T> = {
|
|
9
|
+
export type DataRetrieval<T> = {
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Blocknumber of the last L1 block from which we obtained data.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
lastProcessedL1BlockNumber: bigint;
|
|
14
14
|
/**
|
|
15
15
|
* The data returned.
|
|
16
16
|
*/
|
|
@@ -24,9 +24,9 @@ type DataRetrieval<T> = {
|
|
|
24
24
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
25
25
|
* @param searchEndBlock - The highest block number that we should search up to.
|
|
26
26
|
* @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
|
|
27
|
-
* @returns An array of tuples representing block metadata including the header, archive tree snapshot
|
|
27
|
+
* @returns An array of tuples representing block metadata including the header, archive tree snapshot; as well as the next eth block to search from.
|
|
28
28
|
*/
|
|
29
|
-
export declare function retrieveBlockMetadataFromRollup(publicClient: PublicClient, rollupAddress: EthAddress, blockUntilSynced: boolean, searchStartBlock: bigint, searchEndBlock: bigint, expectedNextL2BlockNum: bigint): Promise<DataRetrieval<[Header, AppendOnlyTreeSnapshot
|
|
29
|
+
export declare function retrieveBlockMetadataFromRollup(publicClient: PublicClient, rollupAddress: EthAddress, blockUntilSynced: boolean, searchStartBlock: bigint, searchEndBlock: bigint, expectedNextL2BlockNum: bigint): Promise<DataRetrieval<[Header, AppendOnlyTreeSnapshot]>>;
|
|
30
30
|
/**
|
|
31
31
|
* Fetches new L2 block bodies and their hashes.
|
|
32
32
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
@@ -38,35 +38,13 @@ export declare function retrieveBlockMetadataFromRollup(publicClient: PublicClie
|
|
|
38
38
|
*/
|
|
39
39
|
export declare function retrieveBlockBodiesFromAvailabilityOracle(publicClient: PublicClient, availabilityOracleAddress: EthAddress, blockUntilSynced: boolean, searchStartBlock: bigint, searchEndBlock: bigint): Promise<DataRetrieval<[Body, Buffer]>>;
|
|
40
40
|
/**
|
|
41
|
-
* Fetch
|
|
41
|
+
* Fetch L1 to L2 messages.
|
|
42
42
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
43
43
|
* @param inboxAddress - The address of the inbox contract to fetch messages from.
|
|
44
44
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
45
45
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
46
46
|
* @param searchEndBlock - The highest block number that we should search up to.
|
|
47
|
-
* @returns An array of
|
|
47
|
+
* @returns An array of InboxLeaf and next eth block to search from.
|
|
48
48
|
*/
|
|
49
|
-
export declare function
|
|
50
|
-
/**
|
|
51
|
-
* Fetch new L1 to L2 messages.
|
|
52
|
-
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
53
|
-
* @param newInboxAddress - The address of the inbox contract to fetch messages from.
|
|
54
|
-
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
55
|
-
* @param searchStartBlock - The block number to use for starting the search.
|
|
56
|
-
* @param searchEndBlock - The highest block number that we should search up to.
|
|
57
|
-
* @returns An array of NewInboxLeaf and next eth block to search from.
|
|
58
|
-
*/
|
|
59
|
-
export declare function retrieveNewL1ToL2Messages(publicClient: PublicClient, newInboxAddress: EthAddress, blockUntilSynced: boolean, searchStartBlock: bigint, searchEndBlock: bigint): Promise<DataRetrieval<NewInboxLeaf>>;
|
|
60
|
-
/**
|
|
61
|
-
* Fetch newly cancelled L1 to L2 messages.
|
|
62
|
-
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
63
|
-
* @param inboxAddress - The address of the inbox contract to fetch messages from.
|
|
64
|
-
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
65
|
-
* @param searchStartBlock - The block number to use for starting the search.
|
|
66
|
-
* @param searchEndBlock - The highest block number that we should search up to.
|
|
67
|
-
* @returns An array of entry keys that were cancelled and next eth block to search from.
|
|
68
|
-
* TODO(#4492): Nuke the following when purging the old inbox
|
|
69
|
-
*/
|
|
70
|
-
export declare function retrieveNewCancelledL1ToL2Messages(publicClient: PublicClient, inboxAddress: EthAddress, blockUntilSynced: boolean, searchStartBlock: bigint, searchEndBlock: bigint): Promise<DataRetrieval<[Fr, bigint]>>;
|
|
71
|
-
export {};
|
|
49
|
+
export declare function retrieveL1ToL2Messages(publicClient: PublicClient, inboxAddress: EthAddress, blockUntilSynced: boolean, searchStartBlock: bigint, searchEndBlock: bigint): Promise<DataRetrieval<InboxLeaf>>;
|
|
72
50
|
//# sourceMappingURL=data_retrieval.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAWpC;;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;;;;;;;;;GASG;AACH,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,UAAU,EACzB,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,sBAAsB,EAAE,MAAM,GAC7B,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,CA0B1D;AAED;;;;;;;;GAQG;AACH,wBAAsB,yCAAyC,CAC7D,YAAY,EAAE,YAAY,EAC1B,yBAAyB,EAAE,UAAU,EACrC,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAsBxC;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,UAAU,EACxB,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAgBnC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getL2BlockProcessedLogs, getLeafInsertedLogs, getTxsPublishedLogs, processL2BlockProcessedLogs, processLeafInsertedLogs, processTxsPublishedLogs, } from './eth_log_handlers.js';
|
|
2
2
|
/**
|
|
3
3
|
* Fetches new L2 block metadata (header, archive snapshot).
|
|
4
4
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
@@ -7,7 +7,7 @@ import { getL1ToL2MessageCancelledLogs, getL2BlockProcessedLogs, getLeafInserted
|
|
|
7
7
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
8
8
|
* @param searchEndBlock - The highest block number that we should search up to.
|
|
9
9
|
* @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
|
|
10
|
-
* @returns An array of tuples representing block metadata including the header, archive tree snapshot
|
|
10
|
+
* @returns An array of tuples representing block metadata including the header, archive tree snapshot; as well as the next eth block to search from.
|
|
11
11
|
*/
|
|
12
12
|
export async function retrieveBlockMetadataFromRollup(publicClient, rollupAddress, blockUntilSynced, searchStartBlock, searchEndBlock, expectedNextL2BlockNum) {
|
|
13
13
|
const retrievedBlockMetadata = [];
|
|
@@ -24,7 +24,7 @@ export async function retrieveBlockMetadataFromRollup(publicClient, rollupAddres
|
|
|
24
24
|
searchStartBlock = l2BlockProcessedLogs[l2BlockProcessedLogs.length - 1].blockNumber + 1n;
|
|
25
25
|
expectedNextL2BlockNum += BigInt(newBlockMetadata.length);
|
|
26
26
|
} while (blockUntilSynced && searchStartBlock <= searchEndBlock);
|
|
27
|
-
return {
|
|
27
|
+
return { lastProcessedL1BlockNumber: searchStartBlock - 1n, retrievedData: retrievedBlockMetadata };
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Fetches new L2 block bodies and their hashes.
|
|
@@ -49,86 +49,32 @@ export async function retrieveBlockBodiesFromAvailabilityOracle(publicClient, av
|
|
|
49
49
|
retrievedBlockBodies.push(...newBlockBodies);
|
|
50
50
|
searchStartBlock = l2TxsPublishedLogs[l2TxsPublishedLogs.length - 1].blockNumber + 1n;
|
|
51
51
|
} while (blockUntilSynced && searchStartBlock <= searchEndBlock);
|
|
52
|
-
return {
|
|
52
|
+
return { lastProcessedL1BlockNumber: searchStartBlock - 1n, retrievedData: retrievedBlockBodies };
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
|
-
* Fetch
|
|
55
|
+
* Fetch L1 to L2 messages.
|
|
56
56
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
57
57
|
* @param inboxAddress - The address of the inbox contract to fetch messages from.
|
|
58
58
|
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
59
59
|
* @param searchStartBlock - The block number to use for starting the search.
|
|
60
60
|
* @param searchEndBlock - The highest block number that we should search up to.
|
|
61
|
-
* @returns An array of
|
|
61
|
+
* @returns An array of InboxLeaf and next eth block to search from.
|
|
62
62
|
*/
|
|
63
|
-
export async function
|
|
64
|
-
const
|
|
63
|
+
export async function retrieveL1ToL2Messages(publicClient, inboxAddress, blockUntilSynced, searchStartBlock, searchEndBlock) {
|
|
64
|
+
const retrievedL1ToL2Messages = [];
|
|
65
65
|
do {
|
|
66
66
|
if (searchStartBlock > searchEndBlock) {
|
|
67
67
|
break;
|
|
68
68
|
}
|
|
69
|
-
const
|
|
70
|
-
if (newL1ToL2MessageLogs.length === 0) {
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
const newL1ToL2Messages = processPendingL1ToL2MessageAddedLogs(newL1ToL2MessageLogs);
|
|
74
|
-
retrievedNewL1ToL2Messages.push(...newL1ToL2Messages);
|
|
75
|
-
// handles the case when there are no new messages:
|
|
76
|
-
searchStartBlock = (newL1ToL2MessageLogs.findLast(msgLog => !!msgLog)?.blockNumber || searchStartBlock) + 1n;
|
|
77
|
-
} while (blockUntilSynced && searchStartBlock <= searchEndBlock);
|
|
78
|
-
return { nextEthBlockNumber: searchStartBlock, retrievedData: retrievedNewL1ToL2Messages };
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Fetch new L1 to L2 messages.
|
|
82
|
-
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
83
|
-
* @param newInboxAddress - The address of the inbox contract to fetch messages from.
|
|
84
|
-
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
85
|
-
* @param searchStartBlock - The block number to use for starting the search.
|
|
86
|
-
* @param searchEndBlock - The highest block number that we should search up to.
|
|
87
|
-
* @returns An array of NewInboxLeaf and next eth block to search from.
|
|
88
|
-
*/
|
|
89
|
-
export async function retrieveNewL1ToL2Messages(publicClient, newInboxAddress, blockUntilSynced, searchStartBlock, searchEndBlock) {
|
|
90
|
-
const retrievedNewL1ToL2Messages = [];
|
|
91
|
-
do {
|
|
92
|
-
if (searchStartBlock > searchEndBlock) {
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
const leafInsertedLogs = await getLeafInsertedLogs(publicClient, newInboxAddress, searchStartBlock, searchEndBlock);
|
|
69
|
+
const leafInsertedLogs = await getLeafInsertedLogs(publicClient, inboxAddress, searchStartBlock, searchEndBlock);
|
|
96
70
|
if (leafInsertedLogs.length === 0) {
|
|
97
71
|
break;
|
|
98
72
|
}
|
|
99
|
-
const
|
|
100
|
-
|
|
73
|
+
const l1ToL2Messages = processLeafInsertedLogs(leafInsertedLogs);
|
|
74
|
+
retrievedL1ToL2Messages.push(...l1ToL2Messages);
|
|
101
75
|
// handles the case when there are no new messages:
|
|
102
76
|
searchStartBlock = (leafInsertedLogs.findLast(msgLog => !!msgLog)?.blockNumber || searchStartBlock) + 1n;
|
|
103
77
|
} while (blockUntilSynced && searchStartBlock <= searchEndBlock);
|
|
104
|
-
return {
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Fetch newly cancelled L1 to L2 messages.
|
|
108
|
-
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
109
|
-
* @param inboxAddress - The address of the inbox contract to fetch messages from.
|
|
110
|
-
* @param blockUntilSynced - If true, blocks until the archiver has fully synced.
|
|
111
|
-
* @param searchStartBlock - The block number to use for starting the search.
|
|
112
|
-
* @param searchEndBlock - The highest block number that we should search up to.
|
|
113
|
-
* @returns An array of entry keys that were cancelled and next eth block to search from.
|
|
114
|
-
* TODO(#4492): Nuke the following when purging the old inbox
|
|
115
|
-
*/
|
|
116
|
-
export async function retrieveNewCancelledL1ToL2Messages(publicClient, inboxAddress, blockUntilSynced, searchStartBlock, searchEndBlock) {
|
|
117
|
-
const retrievedNewCancelledL1ToL2Messages = [];
|
|
118
|
-
do {
|
|
119
|
-
if (searchStartBlock > searchEndBlock) {
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
const newL1ToL2MessageCancelledLogs = await getL1ToL2MessageCancelledLogs(publicClient, inboxAddress, searchStartBlock, searchEndBlock);
|
|
123
|
-
if (newL1ToL2MessageCancelledLogs.length === 0) {
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
const newCancelledL1ToL2Messages = processCancelledL1ToL2MessagesLogs(newL1ToL2MessageCancelledLogs);
|
|
127
|
-
retrievedNewCancelledL1ToL2Messages.push(...newCancelledL1ToL2Messages);
|
|
128
|
-
// handles the case when there are no new messages:
|
|
129
|
-
searchStartBlock =
|
|
130
|
-
(newL1ToL2MessageCancelledLogs.findLast(msgLog => !!msgLog)?.blockNumber || searchStartBlock) + 1n;
|
|
131
|
-
} while (blockUntilSynced && searchStartBlock <= searchEndBlock);
|
|
132
|
-
return { nextEthBlockNumber: searchStartBlock, retrievedData: retrievedNewCancelledL1ToL2Messages };
|
|
78
|
+
return { lastProcessedL1BlockNumber: searchStartBlock - 1n, retrievedData: retrievedL1ToL2Messages };
|
|
133
79
|
}
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9yZXRyaWV2YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl2ZXIvZGF0YV9yZXRyaWV2YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLDJCQUEyQixFQUMzQix1QkFBdUIsRUFDdkIsdUJBQXVCLEdBQ3hCLE1BQU0sdUJBQXVCLENBQUM7QUFnQi9COzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsK0JBQStCLENBQ25ELFlBQTBCLEVBQzFCLGFBQXlCLEVBQ3pCLGdCQUF5QixFQUN6QixnQkFBd0IsRUFDeEIsY0FBc0IsRUFDdEIsc0JBQThCO0lBRTlCLE1BQU0sc0JBQXNCLEdBQXVDLEVBQUUsQ0FBQztJQUN0RSxHQUFHLENBQUM7UUFDRixJQUFJLGdCQUFnQixHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ3RDLE1BQU07UUFDUixDQUFDO1FBQ0QsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLHVCQUF1QixDQUN4RCxZQUFZLEVBQ1osYUFBYSxFQUNiLGdCQUFnQixFQUNoQixjQUFjLENBQ2YsQ0FBQztRQUNGLElBQUksb0JBQW9CLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE1BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLDJCQUEyQixDQUN4RCxZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLG9CQUFvQixDQUNyQixDQUFDO1FBQ0Ysc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRCxnQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBWSxHQUFHLEVBQUUsQ0FBQztRQUMzRixzQkFBc0IsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENB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
|
|
@@ -1,36 +1,23 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { Body,
|
|
2
|
+
import { Body, InboxLeaf } from '@aztec/circuit-types';
|
|
3
3
|
import { AppendOnlyTreeSnapshot, Header } from '@aztec/circuits.js';
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
|
-
import {
|
|
6
|
-
import { AvailabilityOracleAbi, InboxAbi, NewInboxAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
5
|
+
import { AvailabilityOracleAbi, InboxAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
7
6
|
import { Log, PublicClient } from 'viem';
|
|
8
7
|
/**
|
|
9
8
|
* Processes newly received LeafInserted (L1 to L2) logs.
|
|
10
9
|
* @param logs - LeafInserted logs.
|
|
11
10
|
* @returns Array of all processed LeafInserted logs
|
|
12
11
|
*/
|
|
13
|
-
export declare function processLeafInsertedLogs(logs: Log<bigint, number, false, undefined, true, typeof
|
|
14
|
-
/**
|
|
15
|
-
* Processes newly received MessageAdded (L1 to L2) logs.
|
|
16
|
-
* @param logs - MessageAdded logs.
|
|
17
|
-
* @returns Array of all Pending L1 to L2 messages that were processed
|
|
18
|
-
*/
|
|
19
|
-
export declare function processPendingL1ToL2MessageAddedLogs(logs: Log<bigint, number, false, undefined, true, typeof InboxAbi, 'MessageAdded'>[]): [L1ToL2Message, bigint][];
|
|
20
|
-
/**
|
|
21
|
-
* Process newly received L1ToL2MessageCancelled logs.
|
|
22
|
-
* @param logs - L1ToL2MessageCancelled logs.
|
|
23
|
-
* @returns Array of entry keys of the L1 to L2 messages that were cancelled
|
|
24
|
-
*/
|
|
25
|
-
export declare function processCancelledL1ToL2MessagesLogs(logs: Log<bigint, number, false, undefined, true, typeof InboxAbi, 'L1ToL2MessageCancelled'>[]): [Fr, bigint][];
|
|
12
|
+
export declare function processLeafInsertedLogs(logs: Log<bigint, number, false, undefined, true, typeof InboxAbi, 'LeafInserted'>[]): InboxLeaf[];
|
|
26
13
|
/**
|
|
27
14
|
* Processes newly received L2BlockProcessed logs.
|
|
28
15
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
29
16
|
* @param expectedL2BlockNumber - The next expected L2 block number.
|
|
30
17
|
* @param logs - L2BlockProcessed logs.
|
|
31
|
-
* @returns - An array of tuples representing block metadata including the header, archive tree snapshot
|
|
18
|
+
* @returns - An array of tuples representing block metadata including the header, archive tree snapshot.
|
|
32
19
|
*/
|
|
33
|
-
export declare function processL2BlockProcessedLogs(publicClient: PublicClient, expectedL2BlockNumber: bigint, logs: Log<bigint, number, false, undefined, true, typeof RollupAbi, 'L2BlockProcessed'>[]): Promise<[Header, AppendOnlyTreeSnapshot
|
|
20
|
+
export declare function processL2BlockProcessedLogs(publicClient: PublicClient, expectedL2BlockNumber: bigint, logs: Log<bigint, number, false, undefined, true, typeof RollupAbi, 'L2BlockProcessed'>[]): Promise<[Header, AppendOnlyTreeSnapshot][]>;
|
|
34
21
|
export declare function processTxsPublishedLogs(publicClient: PublicClient, logs: Log<bigint, number, false, undefined, true, typeof AvailabilityOracleAbi, 'TxsPublished'>[]): Promise<[Body, Buffer][]>;
|
|
35
22
|
/**
|
|
36
23
|
* Gets relevant `L2BlockProcessed` logs from chain.
|
|
@@ -51,30 +38,12 @@ export declare function getL2BlockProcessedLogs(publicClient: PublicClient, roll
|
|
|
51
38
|
*/
|
|
52
39
|
export declare function getTxsPublishedLogs(publicClient: PublicClient, dataAvailabilityOracleAddress: EthAddress, fromBlock: bigint, toBlock: bigint): Promise<Log<bigint, number, false, undefined, true, typeof AvailabilityOracleAbi, 'TxsPublished'>[]>;
|
|
53
40
|
/**
|
|
54
|
-
* Get relevant `
|
|
41
|
+
* Get relevant `LeafInserted` logs emitted by Inbox on chain.
|
|
55
42
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
56
43
|
* @param inboxAddress - The address of the inbox contract.
|
|
57
44
|
* @param fromBlock - First block to get logs from (inclusive).
|
|
58
45
|
* @param toBlock - Last block to get logs from (inclusive).
|
|
59
|
-
* @returns An array of `MessageAdded` logs.
|
|
60
|
-
*/
|
|
61
|
-
export declare function getPendingL1ToL2MessageLogs(publicClient: PublicClient, inboxAddress: EthAddress, fromBlock: bigint, toBlock: bigint): Promise<Log<bigint, number, false, undefined, true, typeof InboxAbi, 'MessageAdded'>[]>;
|
|
62
|
-
/**
|
|
63
|
-
* Get relevant `L1ToL2MessageCancelled` logs emitted by Inbox on chain when pending messages are cancelled
|
|
64
|
-
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
65
|
-
* @param inboxAddress - The address of the inbox contract.
|
|
66
|
-
* @param fromBlock - First block to get logs from (inclusive).
|
|
67
|
-
* @param toBlock - Last block to get logs from (inclusive).
|
|
68
|
-
* @returns An array of `L1ToL2MessageCancelled` logs.
|
|
69
|
-
*/
|
|
70
|
-
export declare function getL1ToL2MessageCancelledLogs(publicClient: PublicClient, inboxAddress: EthAddress, fromBlock: bigint, toBlock: bigint): Promise<Log<bigint, number, false, undefined, true, typeof InboxAbi, 'L1ToL2MessageCancelled'>[]>;
|
|
71
|
-
/**
|
|
72
|
-
* Get relevant `LeafInserted` logs emitted by NewInbox on chain.
|
|
73
|
-
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
74
|
-
* @param newInboxAddress - The address of the new inbox contract.
|
|
75
|
-
* @param fromBlock - First block to get logs from (inclusive).
|
|
76
|
-
* @param toBlock - Last block to get logs from (inclusive).
|
|
77
46
|
* @returns An array of `LeafInserted` logs.
|
|
78
47
|
*/
|
|
79
|
-
export declare function getLeafInsertedLogs(publicClient: PublicClient,
|
|
48
|
+
export declare function getLeafInsertedLogs(publicClient: PublicClient, inboxAddress: EthAddress, fromBlock: bigint, toBlock: bigint): Promise<Log<bigint, number, false, undefined, true, typeof InboxAbi, 'LeafInserted'>[]>;
|
|
80
49
|
//# sourceMappingURL=eth_log_handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_log_handlers.d.ts","sourceRoot":"","sources":["../../src/archiver/eth_log_handlers.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"eth_log_handlers.d.ts","sourceRoot":"","sources":["../../src/archiver/eth_log_handlers.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEjF,OAAO,EAAO,GAAG,EAAE,YAAY,EAA0D,MAAM,MAAM,CAAC;AAEtG;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,QAAQ,EAAE,cAAc,CAAC,EAAE,GACnF,SAAS,EAAE,CAOb;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,MAAM,EAC7B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,SAAS,EAAE,kBAAkB,CAAC,EAAE,GACxF,OAAO,CAAC,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAAE,CAAC,CAmB7C;AAED,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,qBAAqB,EAAE,cAAc,CAAC,EAAE,GAChG,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAQ3B;AA0ED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,SAAS,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAU9F;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,EAC1B,6BAA6B,EAAE,UAAU,EACzC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,qBAAqB,EAAE,cAAc,CAAC,EAAE,CAAC,CAUtG;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC,CAUzF"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { Body,
|
|
1
|
+
import { Body, InboxLeaf } from '@aztec/circuit-types';
|
|
2
2
|
import { AppendOnlyTreeSnapshot, Header } from '@aztec/circuits.js';
|
|
3
|
-
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
4
|
-
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
4
|
import { numToUInt32BE } from '@aztec/foundation/serialize';
|
|
7
|
-
import { AvailabilityOracleAbi, InboxAbi,
|
|
5
|
+
import { AvailabilityOracleAbi, InboxAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
8
6
|
import { decodeFunctionData, getAbiItem, getAddress, hexToBytes } from 'viem';
|
|
9
7
|
/**
|
|
10
8
|
* Processes newly received LeafInserted (L1 to L2) logs.
|
|
@@ -15,44 +13,16 @@ export function processLeafInsertedLogs(logs) {
|
|
|
15
13
|
const leaves = [];
|
|
16
14
|
for (const log of logs) {
|
|
17
15
|
const { blockNumber, index, value } = log.args;
|
|
18
|
-
leaves.push(new
|
|
16
|
+
leaves.push(new InboxLeaf(blockNumber, index, Fr.fromString(value)));
|
|
19
17
|
}
|
|
20
18
|
return leaves;
|
|
21
19
|
}
|
|
22
|
-
/**
|
|
23
|
-
* Processes newly received MessageAdded (L1 to L2) logs.
|
|
24
|
-
* @param logs - MessageAdded logs.
|
|
25
|
-
* @returns Array of all Pending L1 to L2 messages that were processed
|
|
26
|
-
*/
|
|
27
|
-
export function processPendingL1ToL2MessageAddedLogs(logs) {
|
|
28
|
-
const l1ToL2Messages = [];
|
|
29
|
-
for (const log of logs) {
|
|
30
|
-
const { sender, senderChainId, recipient, recipientVersion, content, secretHash, deadline, fee, entryKey } = log.args;
|
|
31
|
-
l1ToL2Messages.push([
|
|
32
|
-
new L1ToL2Message(new L1Actor(EthAddress.fromString(sender), Number(senderChainId)), new L2Actor(AztecAddress.fromString(recipient), Number(recipientVersion)), Fr.fromString(content), Fr.fromString(secretHash), deadline, Number(fee), Fr.fromString(entryKey)),
|
|
33
|
-
log.blockNumber,
|
|
34
|
-
]);
|
|
35
|
-
}
|
|
36
|
-
return l1ToL2Messages;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Process newly received L1ToL2MessageCancelled logs.
|
|
40
|
-
* @param logs - L1ToL2MessageCancelled logs.
|
|
41
|
-
* @returns Array of entry keys of the L1 to L2 messages that were cancelled
|
|
42
|
-
*/
|
|
43
|
-
export function processCancelledL1ToL2MessagesLogs(logs) {
|
|
44
|
-
const cancelledL1ToL2Messages = [];
|
|
45
|
-
for (const log of logs) {
|
|
46
|
-
cancelledL1ToL2Messages.push([Fr.fromString(log.args.entryKey), log.blockNumber]);
|
|
47
|
-
}
|
|
48
|
-
return cancelledL1ToL2Messages;
|
|
49
|
-
}
|
|
50
20
|
/**
|
|
51
21
|
* Processes newly received L2BlockProcessed logs.
|
|
52
22
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
53
23
|
* @param expectedL2BlockNumber - The next expected L2 block number.
|
|
54
24
|
* @param logs - L2BlockProcessed logs.
|
|
55
|
-
* @returns - An array of tuples representing block metadata including the header, archive tree snapshot
|
|
25
|
+
* @returns - An array of tuples representing block metadata including the header, archive tree snapshot.
|
|
56
26
|
*/
|
|
57
27
|
export async function processL2BlockProcessedLogs(publicClient, expectedL2BlockNumber, logs) {
|
|
58
28
|
const retrievedBlockMetadata = [];
|
|
@@ -63,7 +33,7 @@ export async function processL2BlockProcessedLogs(publicClient, expectedL2BlockN
|
|
|
63
33
|
}
|
|
64
34
|
// TODO: Fetch blocks from calldata in parallel
|
|
65
35
|
const [header, archive] = await getBlockMetadataFromRollupTx(publicClient, log.transactionHash, log.args.blockNumber);
|
|
66
|
-
retrievedBlockMetadata.push([header, archive
|
|
36
|
+
retrievedBlockMetadata.push([header, archive]);
|
|
67
37
|
expectedL2BlockNumber++;
|
|
68
38
|
}
|
|
69
39
|
return retrievedBlockMetadata;
|
|
@@ -166,60 +136,22 @@ export function getTxsPublishedLogs(publicClient, dataAvailabilityOracleAddress,
|
|
|
166
136
|
});
|
|
167
137
|
}
|
|
168
138
|
/**
|
|
169
|
-
* Get relevant `
|
|
139
|
+
* Get relevant `LeafInserted` logs emitted by Inbox on chain.
|
|
170
140
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
171
141
|
* @param inboxAddress - The address of the inbox contract.
|
|
172
142
|
* @param fromBlock - First block to get logs from (inclusive).
|
|
173
143
|
* @param toBlock - Last block to get logs from (inclusive).
|
|
174
|
-
* @returns An array of `
|
|
175
|
-
*/
|
|
176
|
-
export function getPendingL1ToL2MessageLogs(publicClient, inboxAddress, fromBlock, toBlock) {
|
|
177
|
-
return publicClient.getLogs({
|
|
178
|
-
address: getAddress(inboxAddress.toString()),
|
|
179
|
-
event: getAbiItem({
|
|
180
|
-
abi: InboxAbi,
|
|
181
|
-
name: 'MessageAdded',
|
|
182
|
-
}),
|
|
183
|
-
fromBlock,
|
|
184
|
-
toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Get relevant `L1ToL2MessageCancelled` logs emitted by Inbox on chain when pending messages are cancelled
|
|
189
|
-
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
190
|
-
* @param inboxAddress - The address of the inbox contract.
|
|
191
|
-
* @param fromBlock - First block to get logs from (inclusive).
|
|
192
|
-
* @param toBlock - Last block to get logs from (inclusive).
|
|
193
|
-
* @returns An array of `L1ToL2MessageCancelled` logs.
|
|
144
|
+
* @returns An array of `LeafInserted` logs.
|
|
194
145
|
*/
|
|
195
|
-
export function
|
|
146
|
+
export function getLeafInsertedLogs(publicClient, inboxAddress, fromBlock, toBlock) {
|
|
196
147
|
return publicClient.getLogs({
|
|
197
148
|
address: getAddress(inboxAddress.toString()),
|
|
198
149
|
event: getAbiItem({
|
|
199
150
|
abi: InboxAbi,
|
|
200
|
-
name: 'L1ToL2MessageCancelled',
|
|
201
|
-
}),
|
|
202
|
-
fromBlock,
|
|
203
|
-
toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Get relevant `LeafInserted` logs emitted by NewInbox on chain.
|
|
208
|
-
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
209
|
-
* @param newInboxAddress - The address of the new inbox contract.
|
|
210
|
-
* @param fromBlock - First block to get logs from (inclusive).
|
|
211
|
-
* @param toBlock - Last block to get logs from (inclusive).
|
|
212
|
-
* @returns An array of `LeafInserted` logs.
|
|
213
|
-
*/
|
|
214
|
-
export function getLeafInsertedLogs(publicClient, newInboxAddress, fromBlock, toBlock) {
|
|
215
|
-
return publicClient.getLogs({
|
|
216
|
-
address: getAddress(newInboxAddress.toString()),
|
|
217
|
-
event: getAbiItem({
|
|
218
|
-
abi: NewInboxAbi,
|
|
219
151
|
name: 'LeafInserted',
|
|
220
152
|
}),
|
|
221
153
|
fromBlock,
|
|
222
154
|
toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
|
|
223
155
|
});
|
|
224
156
|
}
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX2xvZ19oYW5kbGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXZlci9ldGhfbG9nX2hhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRixPQUFPLEVBQTBCLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRHOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLElBQW9GO0lBRXBGLE1BQU0sTUFBTSxHQUFnQixFQUFFLENBQUM7SUFDL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsMkJBQTJCLENBQy9DLFlBQTBCLEVBQzFCLHFCQUE2QixFQUM3QixJQUF5RjtJQUV6RixNQUFN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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { L2Block, TxEffect, TxHash, TxReceipt } from '@aztec/circuit-types';
|
|
2
2
|
import { AztecAddress } from '@aztec/circuits.js';
|
|
3
3
|
import { AztecKVStore } from '@aztec/kv-store';
|
|
4
|
+
import { DataRetrieval } from '../data_retrieval.js';
|
|
4
5
|
import { BlockBodyStore } from './block_body_store.js';
|
|
5
6
|
/**
|
|
6
7
|
* LMDB implementation of the ArchiverDataStore interface.
|
|
@@ -11,10 +12,10 @@ export declare class BlockStore {
|
|
|
11
12
|
constructor(db: AztecKVStore, blockBodyStore: BlockBodyStore);
|
|
12
13
|
/**
|
|
13
14
|
* Append new blocks to the store's list.
|
|
14
|
-
* @param blocks - The L2 blocks to be added to the store.
|
|
15
|
+
* @param blocks - The L2 blocks to be added to the store and the last processed L1 block.
|
|
15
16
|
* @returns True if the operation is successful.
|
|
16
17
|
*/
|
|
17
|
-
addBlocks(blocks: L2Block
|
|
18
|
+
addBlocks(blocks: DataRetrieval<L2Block>): Promise<boolean>;
|
|
18
19
|
/**
|
|
19
20
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
20
21
|
* @param start - Number of the first block to return (inclusive).
|
|
@@ -57,11 +58,11 @@ export declare class BlockStore {
|
|
|
57
58
|
* Gets the number of the latest L2 block processed.
|
|
58
59
|
* @returns The number of the latest L2 block processed.
|
|
59
60
|
*/
|
|
60
|
-
|
|
61
|
+
getSynchedL2BlockNumber(): number;
|
|
61
62
|
/**
|
|
62
63
|
* Gets the most recent L1 block processed.
|
|
63
64
|
* @returns The L1 block that published the latest L2 block
|
|
64
65
|
*/
|
|
65
|
-
|
|
66
|
+
getSynchedL1BlockNumber(): bigint;
|
|
66
67
|
}
|
|
67
68
|
//# sourceMappingURL=block_store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/block_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAY,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAA0B,YAAY,EAAgC,MAAM,oBAAoB,CAAC;AAExG,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/block_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAY,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAA0B,YAAY,EAAgC,MAAM,oBAAoB,CAAC;AAExG,OAAO,EAAE,YAAY,EAAmC,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AASvD;;GAEG;AACH,qBAAa,UAAU;;IAgBT,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc;IASpE;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB3D;;;;;OAKG;IACF,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAMnE;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IASlD,OAAO,CAAC,wBAAwB;IAgBhC;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAUjD;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAU1D;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,SAAS;IAIjF;;;;OAIG;IACH,mBAAmB,CAAC,eAAe,EAAE,YAAY,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS;IAIpG;;;OAGG;IACH,uBAAuB,IAAI,MAAM;IAKjC;;;OAGG;IACH,uBAAuB,IAAI,MAAM;CAiBlC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _BlockStore_instances, _BlockStore_blocks, _BlockStore_txIndex, _BlockStore_contractIndex, _BlockStore_log, _BlockStore_blockBodyStore, _BlockStore_computeBlockRange;
|
|
1
|
+
var _BlockStore_instances, _BlockStore_blocks, _BlockStore_lastSynchedL1Block, _BlockStore_txIndex, _BlockStore_contractIndex, _BlockStore_log, _BlockStore_blockBodyStore, _BlockStore_computeBlockRange;
|
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
3
|
import { L2Block, TxReceipt, TxStatus } from '@aztec/circuit-types';
|
|
4
4
|
import { AppendOnlyTreeSnapshot, Header, INITIAL_L2_BLOCK_NUM } from '@aztec/circuits.js';
|
|
@@ -12,6 +12,8 @@ export class BlockStore {
|
|
|
12
12
|
this.db = db;
|
|
13
13
|
/** Map block number to block data */
|
|
14
14
|
_BlockStore_blocks.set(this, void 0);
|
|
15
|
+
/** Stores L1 block number in which the last processed L2 block was included */
|
|
16
|
+
_BlockStore_lastSynchedL1Block.set(this, void 0);
|
|
15
17
|
/** Index mapping transaction hash (as a string) to its location in a block */
|
|
16
18
|
_BlockStore_txIndex.set(this, void 0);
|
|
17
19
|
/** Index mapping a contract's address (as a string) to its location in a block */
|
|
@@ -22,24 +24,25 @@ export class BlockStore {
|
|
|
22
24
|
__classPrivateFieldSet(this, _BlockStore_blocks, db.openMap('archiver_blocks'), "f");
|
|
23
25
|
__classPrivateFieldSet(this, _BlockStore_txIndex, db.openMap('archiver_tx_index'), "f");
|
|
24
26
|
__classPrivateFieldSet(this, _BlockStore_contractIndex, db.openMap('archiver_contract_index'), "f");
|
|
27
|
+
__classPrivateFieldSet(this, _BlockStore_lastSynchedL1Block, db.openSingleton('archiver_last_synched_l1_block'), "f");
|
|
25
28
|
}
|
|
26
29
|
/**
|
|
27
30
|
* Append new blocks to the store's list.
|
|
28
|
-
* @param blocks - The L2 blocks to be added to the store.
|
|
31
|
+
* @param blocks - The L2 blocks to be added to the store and the last processed L1 block.
|
|
29
32
|
* @returns True if the operation is successful.
|
|
30
33
|
*/
|
|
31
34
|
addBlocks(blocks) {
|
|
32
35
|
return this.db.transaction(() => {
|
|
33
|
-
for (const block of blocks) {
|
|
36
|
+
for (const block of blocks.retrievedData) {
|
|
34
37
|
void __classPrivateFieldGet(this, _BlockStore_blocks, "f").set(block.number, {
|
|
35
38
|
header: block.header.toBuffer(),
|
|
36
39
|
archive: block.archive.toBuffer(),
|
|
37
|
-
l1BlockNumber: block.getL1BlockNumber(),
|
|
38
40
|
});
|
|
39
41
|
block.getTxs().forEach((tx, i) => {
|
|
40
42
|
void __classPrivateFieldGet(this, _BlockStore_txIndex, "f").set(tx.txHash.toString(), [block.number, i]);
|
|
41
43
|
});
|
|
42
44
|
}
|
|
45
|
+
void __classPrivateFieldGet(this, _BlockStore_lastSynchedL1Block, "f").set(blocks.lastProcessedL1BlockNumber);
|
|
43
46
|
return true;
|
|
44
47
|
});
|
|
45
48
|
}
|
|
@@ -125,7 +128,7 @@ export class BlockStore {
|
|
|
125
128
|
* Gets the number of the latest L2 block processed.
|
|
126
129
|
* @returns The number of the latest L2 block processed.
|
|
127
130
|
*/
|
|
128
|
-
|
|
131
|
+
getSynchedL2BlockNumber() {
|
|
129
132
|
const [lastBlockNumber] = __classPrivateFieldGet(this, _BlockStore_blocks, "f").keys({ reverse: true, limit: 1 });
|
|
130
133
|
return typeof lastBlockNumber === 'number' ? lastBlockNumber : INITIAL_L2_BLOCK_NUM - 1;
|
|
131
134
|
}
|
|
@@ -133,17 +136,11 @@ export class BlockStore {
|
|
|
133
136
|
* Gets the most recent L1 block processed.
|
|
134
137
|
* @returns The L1 block that published the latest L2 block
|
|
135
138
|
*/
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if (!lastBlock) {
|
|
139
|
-
return 0n;
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
return lastBlock.l1BlockNumber;
|
|
143
|
-
}
|
|
139
|
+
getSynchedL1BlockNumber() {
|
|
140
|
+
return __classPrivateFieldGet(this, _BlockStore_lastSynchedL1Block, "f").get() ?? 0n;
|
|
144
141
|
}
|
|
145
142
|
}
|
|
146
|
-
_BlockStore_blocks = new WeakMap(), _BlockStore_txIndex = new WeakMap(), _BlockStore_contractIndex = new WeakMap(), _BlockStore_log = new WeakMap(), _BlockStore_blockBodyStore = new WeakMap(), _BlockStore_instances = new WeakSet(), _BlockStore_computeBlockRange = function _BlockStore_computeBlockRange(start, limit) {
|
|
143
|
+
_BlockStore_blocks = new WeakMap(), _BlockStore_lastSynchedL1Block = new WeakMap(), _BlockStore_txIndex = new WeakMap(), _BlockStore_contractIndex = new WeakMap(), _BlockStore_log = new WeakMap(), _BlockStore_blockBodyStore = new WeakMap(), _BlockStore_instances = new WeakSet(), _BlockStore_computeBlockRange = function _BlockStore_computeBlockRange(start, limit) {
|
|
147
144
|
if (limit < 1) {
|
|
148
145
|
throw new Error(`Invalid limit: ${limit}`);
|
|
149
146
|
}
|
|
@@ -154,4 +151,4 @@ _BlockStore_blocks = new WeakMap(), _BlockStore_txIndex = new WeakMap(), _BlockS
|
|
|
154
151
|
const end = start + limit;
|
|
155
152
|
return { start, end };
|
|
156
153
|
};
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJjaGl2ZXIva3ZfYXJjaGl2ZXJfc3RvcmUvYmxvY2tfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFvQixTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFnQixNQUFNLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWExRDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBZ0JyQixZQUFvQixFQUFnQixFQUFFLGNBQThCOztRQUFoRCxPQUFFLEdBQUYsRUFBRSxDQUFjO1FBZnBDLHFDQUFxQztRQUNyQyxxQ0FBd0M7UUFDeEMsK0VBQStFO1FBQy9FLGlEQUE0QztRQUU1Qyw4RUFBOEU7UUFDOUUsc0NBQTRDO1FBRTVDLGtGQUFrRjtRQUNsRiw0Q0FBa0Q7UUFFbEQsMEJBQU8saUJBQWlCLENBQUMsNEJBQTRCLENBQUMsRUFBQztRQUV2RCw2Q0FBZ0M7UUFHOUIsdUJBQUEsSUFBSSw4QkFBbUIsY0FBYyxNQUFBLENBQUM7UUFFdEMsdUJBQUEsSUFBSSxzQkFBVyxFQUFFLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLE1BQUEsQ0FBQztRQUM3Qyx1QkFBQSxJQUFJLHVCQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsTUFBQSxDQUFDO1FBQ2hELHVCQUFBLElBQUksNkJBQWtCLEVBQUUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsTUFBQSxDQUFDO1FBQzVELHVCQUFBLElBQUksa0NBQXVCLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUMsTUFBQSxDQUFDO0lBQ2hGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLE1BQThCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQzlCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN6QyxLQUFLLHVCQUFBLElBQUksMEJBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDbEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO29CQUMvQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7aUJBQ2xDLENBQUMsQ0FBQztnQkFFSCxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUMvQixLQUFLLHVCQUFBLElBQUksMkJBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEUsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsS0FBSyx1QkFBQSxJQUFJLHNDQUFvQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUVyRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsQ0FBQyxTQUFTLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDckMsS0FBSyxNQUFNLFlBQVksSUFBSSx1QkFBQSxJQUFJLDBCQUFRLENBQUMsTUFBTSxDQUFDLHVCQUFBLElBQUksNERBQW1CLE1BQXZCLElBQUksRUFBb0IsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN0RixNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsV0FBbUI7UUFDMUIsTUFBTSxZQUFZLEdBQUcsdUJBQUEsSUFBSSwwQkFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFDLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsWUFBMEI7UUFDekQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RSxNQUFNLElBQUksR0FBRyx1QkFBQSxJQUFJLGtDQUFnQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFeEYsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDeEIsTUFBTTtZQUNOLE9BQU87WUFDUCxJQUFJO1NBQ0wsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsTUFBYztRQUN4QixNQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hFLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25FLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG1CQUFtQixDQUFDLE1BQWM7UUFDaEMsTUFBTSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRSxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuRSxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUUsQ0FBQztRQUMxQyxPQUFPLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLE1BQWM7UUFDMUIsT0FBTyx1QkFBQSxJQUFJLDJCQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsZUFBNkI7UUFDL0MsT0FBTyx1QkFBQSxJQUFJLGlDQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSCx1QkFBdUI7UUFDckIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLHVCQUFBLElBQUksMEJBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sT0FBTyxlQUFlLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsdUJBQXVCO1FBQ3JCLE9BQU8sdUJBQUEsSUFBSSxzQ0FBb0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDOUMsQ0FBQztDQWVGOytWQWJvQixLQUFhLEVBQUUsS0FBYTtJQUM3QyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksS0FBSyxHQUFHLG9CQUFvQixFQUFFLENBQUM7UUFDakMsdUJBQUEsSUFBSSx1QkFBSyxNQUFULElBQUksRUFBTSx3QkFBd0IsS0FBSyxPQUFPLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUN0RSxLQUFLLEdBQUcsb0JBQW9CLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDMUIsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN4QixDQUFDIn0=
|