@aztec/archiver 0.55.1 → 0.57.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/README.md +1 -1
- package/dest/archiver/archiver.d.ts +27 -25
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +391 -169
- package/dest/archiver/archiver_store.d.ts +47 -23
- 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 +75 -42
- package/dest/archiver/config.js +6 -6
- package/dest/archiver/data_retrieval.d.ts +32 -5
- package/dest/archiver/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/data_retrieval.js +126 -16
- package/dest/archiver/epoch_helpers.d.ts +15 -0
- package/dest/archiver/epoch_helpers.d.ts.map +1 -0
- package/dest/archiver/epoch_helpers.js +23 -0
- package/dest/archiver/kv_archiver_store/block_store.d.ts +22 -3
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +75 -12
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +2 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.js +11 -4
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +1 -0
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_instance_store.js +4 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +31 -23
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +65 -38
- package/dest/archiver/kv_archiver_store/log_store.d.ts +4 -5
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.js +18 -14
- package/dest/archiver/kv_archiver_store/message_store.d.ts +2 -0
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/message_store.js +18 -8
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +1 -0
- 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 +4 -1
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +23 -39
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -1
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +132 -91
- package/dest/index.d.ts +0 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -2
- package/dest/test/index.d.ts +2 -0
- package/dest/test/index.d.ts.map +1 -0
- package/dest/test/index.js +2 -0
- package/dest/test/mock_l2_block_source.d.ts +73 -0
- package/dest/test/mock_l2_block_source.d.ts.map +1 -0
- package/dest/test/mock_l2_block_source.js +134 -0
- package/package.json +15 -11
- package/src/archiver/archiver.ts +531 -248
- package/src/archiver/archiver_store.ts +53 -31
- package/src/archiver/archiver_store_test_suite.ts +93 -81
- package/src/archiver/config.ts +5 -5
- package/src/archiver/data_retrieval.ts +189 -30
- package/src/archiver/epoch_helpers.ts +26 -0
- package/src/archiver/kv_archiver_store/block_store.ts +87 -12
- package/src/archiver/kv_archiver_store/contract_class_store.ts +18 -5
- package/src/archiver/kv_archiver_store/contract_instance_store.ts +4 -0
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +74 -47
- package/src/archiver/kv_archiver_store/log_store.ts +18 -18
- package/src/archiver/kv_archiver_store/message_store.ts +18 -5
- package/src/archiver/memory_archiver_store/l1_to_l2_message_store.ts +4 -0
- package/src/archiver/memory_archiver_store/memory_archiver_store.ts +155 -108
- package/src/index.ts +1 -2
- package/src/test/index.ts +1 -0
- package/src/test/mock_l2_block_source.ts +165 -0
- package/dest/archiver/eth_log_handlers.d.ts +0 -59
- package/dest/archiver/eth_log_handlers.d.ts.map +0 -1
- package/dest/archiver/eth_log_handlers.js +0 -155
- package/dest/archiver/kv_archiver_store/block_body_store.d.ts +0 -34
- package/dest/archiver/kv_archiver_store/block_body_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/block_body_store.js +0 -65
- package/dest/archiver/kv_archiver_store/proven_store.d.ts +0 -14
- package/dest/archiver/kv_archiver_store/proven_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/proven_store.js +0 -30
- package/src/archiver/eth_log_handlers.ts +0 -213
- package/src/archiver/kv_archiver_store/block_body_store.ts +0 -74
- package/src/archiver/kv_archiver_store/proven_store.ts +0 -34
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Body, InboxLeaf, L2Block } from '@aztec/circuit-types';
|
|
2
|
+
import { AppendOnlyTreeSnapshot, Fr, Header, Proof } from '@aztec/circuits.js';
|
|
2
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
|
+
import { numToUInt32BE } from '@aztec/foundation/serialize';
|
|
3
5
|
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
4
|
-
import { getAbiItem } from 'viem';
|
|
5
|
-
import { getBlockProofFromSubmitProofTx, getL2BlockProposedLogs, getMessageSentLogs, processL2BlockProposedLogs, processMessageSentLogs, } from './eth_log_handlers.js';
|
|
6
|
+
import { decodeFunctionData, getAbiItem, hexToBytes, } from 'viem';
|
|
6
7
|
/**
|
|
7
8
|
* Fetches new L2 blocks.
|
|
8
9
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
@@ -13,25 +14,93 @@ import { getBlockProofFromSubmitProofTx, getL2BlockProposedLogs, getMessageSentL
|
|
|
13
14
|
* @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
|
|
14
15
|
* @returns An array of block; as well as the next eth block to search from.
|
|
15
16
|
*/
|
|
16
|
-
export async function retrieveBlockFromRollup(
|
|
17
|
+
export async function retrieveBlockFromRollup(rollup, publicClient, blockUntilSynced, searchStartBlock, searchEndBlock, logger = createDebugLogger('aztec:archiver')) {
|
|
17
18
|
const retrievedBlocks = [];
|
|
18
19
|
do {
|
|
19
20
|
if (searchStartBlock > searchEndBlock) {
|
|
20
21
|
break;
|
|
21
22
|
}
|
|
22
|
-
const
|
|
23
|
-
|
|
23
|
+
const l2BlockProposedLogs = await rollup.getEvents.L2BlockProposed({}, {
|
|
24
|
+
fromBlock: searchStartBlock,
|
|
25
|
+
toBlock: searchEndBlock + 1n,
|
|
26
|
+
});
|
|
27
|
+
if (l2BlockProposedLogs.length === 0) {
|
|
24
28
|
break;
|
|
25
29
|
}
|
|
26
|
-
const lastLog =
|
|
27
|
-
logger.debug(`Got L2 block processed logs for ${
|
|
28
|
-
const newBlocks = await processL2BlockProposedLogs(publicClient,
|
|
30
|
+
const lastLog = l2BlockProposedLogs[l2BlockProposedLogs.length - 1];
|
|
31
|
+
logger.debug(`Got L2 block processed logs for ${l2BlockProposedLogs[0].blockNumber}-${lastLog.blockNumber} between ${searchStartBlock}-${searchEndBlock} L1 blocks`);
|
|
32
|
+
const newBlocks = await processL2BlockProposedLogs(rollup, publicClient, l2BlockProposedLogs, logger);
|
|
29
33
|
retrievedBlocks.push(...newBlocks);
|
|
30
34
|
searchStartBlock = lastLog.blockNumber + 1n;
|
|
31
|
-
expectedNextL2BlockNum += BigInt(newBlocks.length);
|
|
32
35
|
} while (blockUntilSynced && searchStartBlock <= searchEndBlock);
|
|
33
36
|
return retrievedBlocks;
|
|
34
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Processes newly received L2BlockProposed logs.
|
|
40
|
+
* @param rollup - The rollup contract
|
|
41
|
+
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
42
|
+
* @param logs - L2BlockProposed logs.
|
|
43
|
+
* @returns - An array blocks.
|
|
44
|
+
*/
|
|
45
|
+
export async function processL2BlockProposedLogs(rollup, publicClient, logs, logger) {
|
|
46
|
+
const retrievedBlocks = [];
|
|
47
|
+
for (const log of logs) {
|
|
48
|
+
const l2BlockNumber = log.args.blockNumber;
|
|
49
|
+
const archive = log.args.archive;
|
|
50
|
+
const archiveFromChain = await rollup.read.archiveAt([l2BlockNumber]);
|
|
51
|
+
// The value from the event and contract will match only if the block is in the chain.
|
|
52
|
+
if (archive === archiveFromChain) {
|
|
53
|
+
// TODO: Fetch blocks from calldata in parallel
|
|
54
|
+
const block = await getBlockFromRollupTx(publicClient, log.transactionHash, l2BlockNumber);
|
|
55
|
+
const l1 = {
|
|
56
|
+
blockNumber: log.blockNumber,
|
|
57
|
+
blockHash: log.blockHash,
|
|
58
|
+
timestamp: await getL1BlockTime(publicClient, log.blockNumber),
|
|
59
|
+
};
|
|
60
|
+
retrievedBlocks.push({ data: block, l1 });
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
logger.warn(`Archive mismatch matching, ignoring block ${l2BlockNumber} with archive: ${archive}, expected ${archiveFromChain}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return retrievedBlocks;
|
|
67
|
+
}
|
|
68
|
+
export async function getL1BlockTime(publicClient, blockNumber) {
|
|
69
|
+
const block = await publicClient.getBlock({ blockNumber, includeTransactions: false });
|
|
70
|
+
return block.timestamp;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Gets block from the calldata of an L1 transaction.
|
|
74
|
+
* Assumes that the block was published from an EOA.
|
|
75
|
+
* TODO: Add retries and error management.
|
|
76
|
+
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
77
|
+
* @param txHash - Hash of the tx that published it.
|
|
78
|
+
* @param l2BlockNum - L2 block number.
|
|
79
|
+
* @returns L2 block from the calldata, deserialized
|
|
80
|
+
*/
|
|
81
|
+
async function getBlockFromRollupTx(publicClient, txHash, l2BlockNum) {
|
|
82
|
+
const { input: data } = await publicClient.getTransaction({ hash: txHash });
|
|
83
|
+
const { functionName, args } = decodeFunctionData({
|
|
84
|
+
abi: RollupAbi,
|
|
85
|
+
data,
|
|
86
|
+
});
|
|
87
|
+
const allowedMethods = ['propose', 'proposeAndClaim'];
|
|
88
|
+
if (!allowedMethods.includes(functionName)) {
|
|
89
|
+
throw new Error(`Unexpected method called ${functionName}`);
|
|
90
|
+
}
|
|
91
|
+
const [headerHex, archiveRootHex, , , , bodyHex] = args;
|
|
92
|
+
const header = Header.fromBuffer(Buffer.from(hexToBytes(headerHex)));
|
|
93
|
+
const blockBody = Body.fromBuffer(Buffer.from(hexToBytes(bodyHex)));
|
|
94
|
+
const blockNumberFromHeader = header.globalVariables.blockNumber.toBigInt();
|
|
95
|
+
if (blockNumberFromHeader !== l2BlockNum) {
|
|
96
|
+
throw new Error(`Block number mismatch: expected ${l2BlockNum} but got ${blockNumberFromHeader}`);
|
|
97
|
+
}
|
|
98
|
+
const archive = AppendOnlyTreeSnapshot.fromBuffer(Buffer.concat([
|
|
99
|
+
Buffer.from(hexToBytes(archiveRootHex)), // L2Block.archive.root
|
|
100
|
+
numToUInt32BE(Number(l2BlockNum + 1n)), // L2Block.archive.nextAvailableLeafIndex
|
|
101
|
+
]));
|
|
102
|
+
return new L2Block(archive, header, blockBody);
|
|
103
|
+
}
|
|
35
104
|
/**
|
|
36
105
|
* Fetch L1 to L2 messages.
|
|
37
106
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
@@ -41,18 +110,23 @@ export async function retrieveBlockFromRollup(publicClient, rollupAddress, block
|
|
|
41
110
|
* @param searchEndBlock - The highest block number that we should search up to.
|
|
42
111
|
* @returns An array of InboxLeaf and next eth block to search from.
|
|
43
112
|
*/
|
|
44
|
-
export async function retrieveL1ToL2Messages(
|
|
113
|
+
export async function retrieveL1ToL2Messages(inbox, blockUntilSynced, searchStartBlock, searchEndBlock) {
|
|
45
114
|
const retrievedL1ToL2Messages = [];
|
|
46
115
|
do {
|
|
47
116
|
if (searchStartBlock > searchEndBlock) {
|
|
48
117
|
break;
|
|
49
118
|
}
|
|
50
|
-
const messageSentLogs = await
|
|
119
|
+
const messageSentLogs = await inbox.getEvents.MessageSent({}, {
|
|
120
|
+
fromBlock: searchStartBlock,
|
|
121
|
+
toBlock: searchEndBlock + 1n,
|
|
122
|
+
});
|
|
51
123
|
if (messageSentLogs.length === 0) {
|
|
52
124
|
break;
|
|
53
125
|
}
|
|
54
|
-
const
|
|
55
|
-
|
|
126
|
+
for (const log of messageSentLogs) {
|
|
127
|
+
const { l2BlockNumber, index, hash } = log.args;
|
|
128
|
+
retrievedL1ToL2Messages.push(new InboxLeaf(l2BlockNumber, index, Fr.fromString(hash)));
|
|
129
|
+
}
|
|
56
130
|
// handles the case when there are no new messages:
|
|
57
131
|
searchStartBlock = (messageSentLogs.findLast(msgLog => !!msgLog)?.blockNumber || searchStartBlock) + 1n;
|
|
58
132
|
} while (blockUntilSynced && searchStartBlock <= searchEndBlock);
|
|
@@ -80,7 +154,7 @@ export async function retrieveL2ProofsFromRollup(publicClient, rollupAddress, se
|
|
|
80
154
|
const retrievedData = [];
|
|
81
155
|
const lastProcessedL1BlockNumber = logs.length > 0 ? logs.at(-1).l1BlockNumber : searchStartBlock - 1n;
|
|
82
156
|
for (const { txHash, proverId, l2BlockNumber } of logs) {
|
|
83
|
-
const proofData = await
|
|
157
|
+
const proofData = await getProofFromSubmitProofTx(publicClient, txHash, proverId);
|
|
84
158
|
retrievedData.push({ proof: proofData.proof, proverId: proofData.proverId, l2BlockNumber, txHash });
|
|
85
159
|
}
|
|
86
160
|
return {
|
|
@@ -88,4 +162,40 @@ export async function retrieveL2ProofsFromRollup(publicClient, rollupAddress, se
|
|
|
88
162
|
lastProcessedL1BlockNumber,
|
|
89
163
|
};
|
|
90
164
|
}
|
|
91
|
-
|
|
165
|
+
/**
|
|
166
|
+
* Gets block metadata (header and archive snapshot) from the calldata of an L1 transaction.
|
|
167
|
+
* Assumes that the block was published from an EOA.
|
|
168
|
+
* TODO: Add retries and error management.
|
|
169
|
+
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
170
|
+
* @param txHash - Hash of the tx that published it.
|
|
171
|
+
* @param l2BlockNum - L2 block number.
|
|
172
|
+
* @returns L2 block metadata (header and archive) from the calldata, deserialized
|
|
173
|
+
*/
|
|
174
|
+
export async function getProofFromSubmitProofTx(publicClient, txHash, expectedProverId) {
|
|
175
|
+
const { input: data } = await publicClient.getTransaction({ hash: txHash });
|
|
176
|
+
const { functionName, args } = decodeFunctionData({ abi: RollupAbi, data });
|
|
177
|
+
let proverId;
|
|
178
|
+
let archiveRoot;
|
|
179
|
+
let aggregationObject;
|
|
180
|
+
let proof;
|
|
181
|
+
if (functionName === 'submitEpochRootProof') {
|
|
182
|
+
const [_epochSize, nestedArgs, _fees, aggregationObjectHex, proofHex] = args;
|
|
183
|
+
aggregationObject = Buffer.from(hexToBytes(aggregationObjectHex));
|
|
184
|
+
proverId = Fr.fromString(nestedArgs[6]);
|
|
185
|
+
archiveRoot = Fr.fromString(nestedArgs[1]);
|
|
186
|
+
proof = Proof.fromBuffer(Buffer.from(hexToBytes(proofHex)));
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
throw new Error(`Unexpected proof method called ${functionName}`);
|
|
190
|
+
}
|
|
191
|
+
if (!proverId.equals(expectedProverId)) {
|
|
192
|
+
throw new Error(`Prover ID mismatch: expected ${expectedProverId} but got ${proverId}`);
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
proverId,
|
|
196
|
+
aggregationObject,
|
|
197
|
+
archiveRoot,
|
|
198
|
+
proof,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9yZXRyaWV2YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJjaGl2ZXIvZGF0YV9yZXRyaWV2YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHL0UsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9ELE9BQU8sRUFPTCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUtkOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsdUJBQXVCLENBQzNDLE1BQW1GLEVBQ25GLFlBQTBCLEVBQzFCLGdCQUF5QixFQUN6QixnQkFBd0IsRUFDeEIsY0FBc0IsRUFDdEIsU0FBc0IsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUM7SUFFekQsTUFBTSxlQUFlLEdBQTJCLEVBQUUsQ0FBQztJQUNuRCxHQUFHLENBQUM7UUFDRixJQUFJLGdCQUFnQixHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ3RDLE1BQU07UUFDUixDQUFDO1FBQ0QsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNoRSxFQUFFLEVBQ0Y7WUFDRSxTQUFTLEVBQUUsZ0JBQWdCO1lBQzNCLE9BQU8sRUFBRSxjQUFjLEdBQUcsRUFBRTtTQUM3QixDQUNGLENBQUM7UUFFRixJQUFJLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FB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
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Returns the slot number for a given timestamp. */
|
|
2
|
+
export declare function getSlotAtTimestamp(ts: bigint, constants: {
|
|
3
|
+
l1GenesisTime: bigint;
|
|
4
|
+
}): bigint;
|
|
5
|
+
/** Returns the epoch number for a given timestamp. */
|
|
6
|
+
export declare function getEpochNumberAtTimestamp(ts: bigint, constants: {
|
|
7
|
+
l1GenesisTime: bigint;
|
|
8
|
+
}): bigint;
|
|
9
|
+
/** Returns the range of slots (inclusive) for a given epoch number. */
|
|
10
|
+
export declare function getSlotRangeForEpoch(epochNumber: bigint): bigint[];
|
|
11
|
+
/** Returns the range of L1 timestamps (inclusive) for a given epoch number. */
|
|
12
|
+
export declare function getTimestampRangeForEpoch(epochNumber: bigint, constants: {
|
|
13
|
+
l1GenesisTime: bigint;
|
|
14
|
+
}): bigint[];
|
|
15
|
+
//# sourceMappingURL=epoch_helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epoch_helpers.d.ts","sourceRoot":"","sources":["../../src/archiver/epoch_helpers.ts"],"names":[],"mappings":"AAEA,qDAAqD;AACrD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,UAElF;AAED,sDAAsD;AACtD,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,UAEzF;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,YAGvD;AAED,+EAA+E;AAC/E,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,YAMlG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AZTEC_EPOCH_DURATION, AZTEC_SLOT_DURATION } from '@aztec/circuits.js';
|
|
2
|
+
/** Returns the slot number for a given timestamp. */
|
|
3
|
+
export function getSlotAtTimestamp(ts, constants) {
|
|
4
|
+
return ts < constants.l1GenesisTime ? 0n : (ts - constants.l1GenesisTime) / BigInt(AZTEC_SLOT_DURATION);
|
|
5
|
+
}
|
|
6
|
+
/** Returns the epoch number for a given timestamp. */
|
|
7
|
+
export function getEpochNumberAtTimestamp(ts, constants) {
|
|
8
|
+
return getSlotAtTimestamp(ts, constants) / BigInt(AZTEC_EPOCH_DURATION);
|
|
9
|
+
}
|
|
10
|
+
/** Returns the range of slots (inclusive) for a given epoch number. */
|
|
11
|
+
export function getSlotRangeForEpoch(epochNumber) {
|
|
12
|
+
const startSlot = epochNumber * BigInt(AZTEC_EPOCH_DURATION);
|
|
13
|
+
return [startSlot, startSlot + BigInt(AZTEC_EPOCH_DURATION) - 1n];
|
|
14
|
+
}
|
|
15
|
+
/** Returns the range of L1 timestamps (inclusive) for a given epoch number. */
|
|
16
|
+
export function getTimestampRangeForEpoch(epochNumber, constants) {
|
|
17
|
+
const [startSlot, endSlot] = getSlotRangeForEpoch(epochNumber);
|
|
18
|
+
return [
|
|
19
|
+
constants.l1GenesisTime + startSlot * BigInt(AZTEC_SLOT_DURATION),
|
|
20
|
+
constants.l1GenesisTime + endSlot * BigInt(AZTEC_SLOT_DURATION),
|
|
21
|
+
];
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hfaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXZlci9lcG9jaF9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRS9FLHFEQUFxRDtBQUNyRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsRUFBVSxFQUFFLFNBQW9DO0lBQ2pGLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFFRCxzREFBc0Q7QUFDdEQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEVBQVUsRUFBRSxTQUFvQztJQUN4RixPQUFPLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQsdUVBQXVFO0FBQ3ZFLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxXQUFtQjtJQUN0RCxNQUFNLFNBQVMsR0FBRyxXQUFXLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDN0QsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxNQUFNLFVBQVUseUJBQXlCLENBQUMsV0FBbUIsRUFBRSxTQUFvQztJQUNqRyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9ELE9BQU87UUFDTCxTQUFTLENBQUMsYUFBYSxHQUFHLFNBQVMsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUM7UUFDakUsU0FBUyxDQUFDLGFBQWEsR0FBRyxPQUFPLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO0tBQ2hFLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
import { L2Block, type TxEffect, type TxHash, TxReceipt } from '@aztec/circuit-types';
|
|
2
|
-
import { type AztecAddress } from '@aztec/circuits.js';
|
|
2
|
+
import { type AztecAddress, Header } from '@aztec/circuits.js';
|
|
3
3
|
import { type AztecKVStore } from '@aztec/kv-store';
|
|
4
4
|
import { type L1Published } from '../structs/published.js';
|
|
5
|
-
import { type BlockBodyStore } from './block_body_store.js';
|
|
6
5
|
/**
|
|
7
6
|
* LMDB implementation of the ArchiverDataStore interface.
|
|
8
7
|
*/
|
|
9
8
|
export declare class BlockStore {
|
|
10
9
|
#private;
|
|
11
10
|
private db;
|
|
12
|
-
constructor(db: AztecKVStore
|
|
11
|
+
constructor(db: AztecKVStore);
|
|
13
12
|
/**
|
|
14
13
|
* Append new blocks to the store's list.
|
|
15
14
|
* @param blocks - The L2 blocks to be added to the store.
|
|
16
15
|
* @returns True if the operation is successful.
|
|
17
16
|
*/
|
|
18
17
|
addBlocks(blocks: L1Published<L2Block>[]): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* Unwinds blocks from the database
|
|
20
|
+
* @param from - The tip of the chain, passed for verification purposes,
|
|
21
|
+
* ensuring that we don't end up deleting something we did not intend
|
|
22
|
+
* @param blocksToUnwind - The number of blocks we are to unwind
|
|
23
|
+
* @returns True if the operation is successful
|
|
24
|
+
*/
|
|
25
|
+
unwindBlocks(from: number, blocksToUnwind: number): Promise<boolean>;
|
|
19
26
|
/**
|
|
20
27
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
21
28
|
* @param start - Number of the first block to return (inclusive).
|
|
@@ -29,6 +36,13 @@ export declare class BlockStore {
|
|
|
29
36
|
* @returns The requested L2 block.
|
|
30
37
|
*/
|
|
31
38
|
getBlock(blockNumber: number): L1Published<L2Block> | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Gets the headers for a sequence of L2 blocks.
|
|
41
|
+
* @param start - Number of the first block to return (inclusive).
|
|
42
|
+
* @param limit - The number of blocks to return.
|
|
43
|
+
* @returns The requested L2 block headers
|
|
44
|
+
*/
|
|
45
|
+
getBlockHeaders(start: number, limit: number): IterableIterator<Header>;
|
|
32
46
|
private getBlockFromBlockStorage;
|
|
33
47
|
/**
|
|
34
48
|
* Gets a tx effect.
|
|
@@ -64,5 +78,10 @@ export declare class BlockStore {
|
|
|
64
78
|
* @returns The L1 block that published the latest L2 block
|
|
65
79
|
*/
|
|
66
80
|
getSynchedL1BlockNumber(): bigint | undefined;
|
|
81
|
+
setSynchedL1BlockNumber(l1BlockNumber: bigint): void;
|
|
82
|
+
getProvenL2BlockNumber(): number;
|
|
83
|
+
setProvenL2BlockNumber(blockNumber: number): void;
|
|
84
|
+
getProvenL2EpochNumber(): number | undefined;
|
|
85
|
+
setProvenL2EpochNumber(epochNumber: number): void;
|
|
67
86
|
}
|
|
68
87
|
//# 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,
|
|
1
|
+
{"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/block_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAA0B,KAAK,YAAY,EAAE,MAAM,EAAwB,MAAM,oBAAoB,CAAC;AAE7G,OAAO,EAAE,KAAK,YAAY,EAAkD,MAAM,iBAAiB,CAAC;AAEpG,OAAO,EAAE,KAAK,WAAW,EAAwB,MAAM,yBAAyB,CAAC;AAUjF;;GAEG;AACH,qBAAa,UAAU;;IAwBT,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,YAAY;IAUpC;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IA0B3D;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAyBjD;;;;;OAKG;IACF,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAMhF;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS;IAS/D;;;;;OAKG;IACF,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAMxE,OAAO,CAAC,wBAAwB;IAchC;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAUjD;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAmB1D;;;;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,GAAG,SAAS;IAI7C,uBAAuB,CAAC,aAAa,EAAE,MAAM;IAI7C,sBAAsB,IAAI,MAAM;IAIhC,sBAAsB,CAAC,WAAW,EAAE,MAAM;IAI1C,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAI5C,sBAAsB,CAAC,WAAW,EAAE,MAAM;CAgB3C"}
|
|
@@ -1,30 +1,37 @@
|
|
|
1
|
-
var _BlockStore_instances, _BlockStore_blocks, _BlockStore_lastSynchedL1Block, _BlockStore_txIndex, _BlockStore_contractIndex, _BlockStore_log,
|
|
1
|
+
var _BlockStore_instances, _BlockStore_blocks, _BlockStore_blockBodies, _BlockStore_lastSynchedL1Block, _BlockStore_lastProvenL2Block, _BlockStore_lastProvenL2Epoch, _BlockStore_txIndex, _BlockStore_contractIndex, _BlockStore_log, _BlockStore_computeBlockRange;
|
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
-
import { L2Block, TxReceipt } from '@aztec/circuit-types';
|
|
3
|
+
import { Body, L2Block, TxReceipt } from '@aztec/circuit-types';
|
|
4
4
|
import { AppendOnlyTreeSnapshot, Header, INITIAL_L2_BLOCK_NUM } from '@aztec/circuits.js';
|
|
5
5
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
6
6
|
/**
|
|
7
7
|
* LMDB implementation of the ArchiverDataStore interface.
|
|
8
8
|
*/
|
|
9
9
|
export class BlockStore {
|
|
10
|
-
constructor(db
|
|
10
|
+
constructor(db) {
|
|
11
11
|
_BlockStore_instances.add(this);
|
|
12
12
|
this.db = db;
|
|
13
13
|
/** Map block number to block data */
|
|
14
14
|
_BlockStore_blocks.set(this, void 0);
|
|
15
|
+
/** Map block body hash to block body */
|
|
16
|
+
_BlockStore_blockBodies.set(this, void 0);
|
|
15
17
|
/** Stores L1 block number in which the last processed L2 block was included */
|
|
16
18
|
_BlockStore_lastSynchedL1Block.set(this, void 0);
|
|
19
|
+
/** Stores l2 block number of the last proven block */
|
|
20
|
+
_BlockStore_lastProvenL2Block.set(this, void 0);
|
|
21
|
+
/** Stores l2 epoch number of the last proven epoch */
|
|
22
|
+
_BlockStore_lastProvenL2Epoch.set(this, void 0);
|
|
17
23
|
/** Index mapping transaction hash (as a string) to its location in a block */
|
|
18
24
|
_BlockStore_txIndex.set(this, void 0);
|
|
19
25
|
/** Index mapping a contract's address (as a string) to its location in a block */
|
|
20
26
|
_BlockStore_contractIndex.set(this, void 0);
|
|
21
27
|
_BlockStore_log.set(this, createDebugLogger('aztec:archiver:block_store'));
|
|
22
|
-
_BlockStore_blockBodyStore.set(this, void 0);
|
|
23
|
-
__classPrivateFieldSet(this, _BlockStore_blockBodyStore, blockBodyStore, "f");
|
|
24
28
|
__classPrivateFieldSet(this, _BlockStore_blocks, db.openMap('archiver_blocks'), "f");
|
|
29
|
+
__classPrivateFieldSet(this, _BlockStore_blockBodies, db.openMap('archiver_block_bodies'), "f");
|
|
25
30
|
__classPrivateFieldSet(this, _BlockStore_txIndex, db.openMap('archiver_tx_index'), "f");
|
|
26
31
|
__classPrivateFieldSet(this, _BlockStore_contractIndex, db.openMap('archiver_contract_index'), "f");
|
|
27
32
|
__classPrivateFieldSet(this, _BlockStore_lastSynchedL1Block, db.openSingleton('archiver_last_synched_l1_block'), "f");
|
|
33
|
+
__classPrivateFieldSet(this, _BlockStore_lastProvenL2Block, db.openSingleton('archiver_last_proven_l2_block'), "f");
|
|
34
|
+
__classPrivateFieldSet(this, _BlockStore_lastProvenL2Epoch, db.openSingleton('archiver_last_proven_l2_epoch'), "f");
|
|
28
35
|
}
|
|
29
36
|
/**
|
|
30
37
|
* Append new blocks to the store's list.
|
|
@@ -45,11 +52,40 @@ export class BlockStore {
|
|
|
45
52
|
block.data.body.txEffects.forEach((tx, i) => {
|
|
46
53
|
void __classPrivateFieldGet(this, _BlockStore_txIndex, "f").set(tx.txHash.toString(), [block.data.number, i]);
|
|
47
54
|
});
|
|
55
|
+
void __classPrivateFieldGet(this, _BlockStore_blockBodies, "f").set(block.data.body.getTxsEffectsHash().toString('hex'), block.data.body.toBuffer());
|
|
48
56
|
}
|
|
49
57
|
void __classPrivateFieldGet(this, _BlockStore_lastSynchedL1Block, "f").set(blocks[blocks.length - 1].l1.blockNumber);
|
|
50
58
|
return true;
|
|
51
59
|
});
|
|
52
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Unwinds blocks from the database
|
|
63
|
+
* @param from - The tip of the chain, passed for verification purposes,
|
|
64
|
+
* ensuring that we don't end up deleting something we did not intend
|
|
65
|
+
* @param blocksToUnwind - The number of blocks we are to unwind
|
|
66
|
+
* @returns True if the operation is successful
|
|
67
|
+
*/
|
|
68
|
+
unwindBlocks(from, blocksToUnwind) {
|
|
69
|
+
return this.db.transaction(() => {
|
|
70
|
+
const last = this.getSynchedL2BlockNumber();
|
|
71
|
+
if (from != last) {
|
|
72
|
+
throw new Error(`Can only remove from the tip`);
|
|
73
|
+
}
|
|
74
|
+
for (let i = 0; i < blocksToUnwind; i++) {
|
|
75
|
+
const blockNumber = from - i;
|
|
76
|
+
const block = this.getBlock(blockNumber);
|
|
77
|
+
if (block === undefined) {
|
|
78
|
+
throw new Error(`Cannot remove block ${blockNumber} from the store, we don't have it`);
|
|
79
|
+
}
|
|
80
|
+
void __classPrivateFieldGet(this, _BlockStore_blocks, "f").delete(block.data.number);
|
|
81
|
+
block.data.body.txEffects.forEach(tx => {
|
|
82
|
+
void __classPrivateFieldGet(this, _BlockStore_txIndex, "f").delete(tx.txHash.toString());
|
|
83
|
+
});
|
|
84
|
+
void __classPrivateFieldGet(this, _BlockStore_blockBodies, "f").delete(block.data.body.getTxsEffectsHash().toString('hex'));
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
53
89
|
/**
|
|
54
90
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
55
91
|
* @param start - Number of the first block to return (inclusive).
|
|
@@ -73,14 +109,26 @@ export class BlockStore {
|
|
|
73
109
|
}
|
|
74
110
|
return this.getBlockFromBlockStorage(blockStorage);
|
|
75
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Gets the headers for a sequence of L2 blocks.
|
|
114
|
+
* @param start - Number of the first block to return (inclusive).
|
|
115
|
+
* @param limit - The number of blocks to return.
|
|
116
|
+
* @returns The requested L2 block headers
|
|
117
|
+
*/
|
|
118
|
+
*getBlockHeaders(start, limit) {
|
|
119
|
+
for (const blockStorage of __classPrivateFieldGet(this, _BlockStore_blocks, "f").values(__classPrivateFieldGet(this, _BlockStore_instances, "m", _BlockStore_computeBlockRange).call(this, start, limit))) {
|
|
120
|
+
yield Header.fromBuffer(blockStorage.header);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
76
123
|
getBlockFromBlockStorage(blockStorage) {
|
|
77
124
|
const header = Header.fromBuffer(blockStorage.header);
|
|
78
125
|
const archive = AppendOnlyTreeSnapshot.fromBuffer(blockStorage.archive);
|
|
79
|
-
const
|
|
80
|
-
if (
|
|
81
|
-
throw new Error('Body
|
|
126
|
+
const blockBodyBuffer = __classPrivateFieldGet(this, _BlockStore_blockBodies, "f").get(header.contentCommitment.txsEffectsHash.toString('hex'));
|
|
127
|
+
if (blockBodyBuffer === undefined) {
|
|
128
|
+
throw new Error('Body could not be retrieved');
|
|
82
129
|
}
|
|
83
|
-
const
|
|
130
|
+
const body = Body.fromBuffer(blockBodyBuffer);
|
|
131
|
+
const l2Block = new L2Block(archive, header, body);
|
|
84
132
|
return { data: l2Block, l1: blockStorage.l1 };
|
|
85
133
|
}
|
|
86
134
|
/**
|
|
@@ -141,15 +189,30 @@ export class BlockStore {
|
|
|
141
189
|
getSynchedL1BlockNumber() {
|
|
142
190
|
return __classPrivateFieldGet(this, _BlockStore_lastSynchedL1Block, "f").get();
|
|
143
191
|
}
|
|
192
|
+
setSynchedL1BlockNumber(l1BlockNumber) {
|
|
193
|
+
void __classPrivateFieldGet(this, _BlockStore_lastSynchedL1Block, "f").set(l1BlockNumber);
|
|
194
|
+
}
|
|
195
|
+
getProvenL2BlockNumber() {
|
|
196
|
+
return __classPrivateFieldGet(this, _BlockStore_lastProvenL2Block, "f").get() ?? 0;
|
|
197
|
+
}
|
|
198
|
+
setProvenL2BlockNumber(blockNumber) {
|
|
199
|
+
void __classPrivateFieldGet(this, _BlockStore_lastProvenL2Block, "f").set(blockNumber);
|
|
200
|
+
}
|
|
201
|
+
getProvenL2EpochNumber() {
|
|
202
|
+
return __classPrivateFieldGet(this, _BlockStore_lastProvenL2Epoch, "f").get();
|
|
203
|
+
}
|
|
204
|
+
setProvenL2EpochNumber(epochNumber) {
|
|
205
|
+
void __classPrivateFieldGet(this, _BlockStore_lastProvenL2Epoch, "f").set(epochNumber);
|
|
206
|
+
}
|
|
144
207
|
}
|
|
145
|
-
_BlockStore_blocks = new WeakMap(), _BlockStore_lastSynchedL1Block = new WeakMap(),
|
|
208
|
+
_BlockStore_blocks = new WeakMap(), _BlockStore_blockBodies = new WeakMap(), _BlockStore_lastSynchedL1Block = new WeakMap(), _BlockStore_lastProvenL2Block = new WeakMap(), _BlockStore_lastProvenL2Epoch = new WeakMap(), _BlockStore_txIndex = new WeakMap(), _BlockStore_contractIndex = new WeakMap(), _BlockStore_log = new WeakMap(), _BlockStore_instances = new WeakSet(), _BlockStore_computeBlockRange = function _BlockStore_computeBlockRange(start, limit) {
|
|
146
209
|
if (limit < 1) {
|
|
147
210
|
throw new Error(`Invalid limit: ${limit}`);
|
|
148
211
|
}
|
|
149
212
|
if (start < INITIAL_L2_BLOCK_NUM) {
|
|
150
|
-
start
|
|
213
|
+
throw new Error(`Invalid start: ${start}`);
|
|
151
214
|
}
|
|
152
215
|
const end = start + limit;
|
|
153
216
|
return { start, end };
|
|
154
217
|
};
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJjaGl2ZXIva3ZfYXJjaGl2ZXJfc3RvcmUvYmxvY2tfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBOEIsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUYsT0FBTyxFQUFFLHNCQUFzQixFQUFxQixNQUFNLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWExRDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBd0JyQixZQUFvQixFQUFnQjs7UUFBaEIsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQXZCcEMscUNBQXFDO1FBQ3JDLHFDQUF3QztRQUV4Qyx3Q0FBd0M7UUFDeEMsMENBQXVDO1FBRXZDLCtFQUErRTtRQUMvRSxpREFBNEM7UUFFNUMsc0RBQXNEO1FBQ3RELGdEQUEyQztRQUUzQyxzREFBc0Q7UUFDdEQsZ0RBQTJDO1FBRTNDLDhFQUE4RTtRQUM5RSxzQ0FBNEM7UUFFNUMsa0ZBQWtGO1FBQ2xGLDRDQUFrRDtRQUVsRCwwQkFBTyxpQkFBaUIsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFDO1FBR3JELHVCQUFBLElBQUksc0JBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFBLENBQUM7UUFDN0MsdUJBQUEsSUFBSSwyQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxNQUFBLENBQUM7UUFDeEQsdUJBQUEsSUFBSSx1QkFBWSxFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLE1BQUEsQ0FBQztRQUNoRCx1QkFBQSxJQUFJLDZCQUFrQixFQUFFLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLE1BQUEsQ0FBQztRQUM1RCx1QkFBQSxJQUFJLGtDQUF1QixFQUFFLENBQUMsYUFBYSxDQUFDLGdDQUFnQyxDQUFDLE1BQUEsQ0FBQztRQUM5RSx1QkFBQSxJQUFJLGlDQUFzQixFQUFFLENBQUMsYUFBYSxDQUFDLCtCQUErQixDQUFDLE1BQUEsQ0FBQztRQUM1RSx1QkFBQSxJQUFJLGlDQUFzQixFQUFFLENBQUMsYUFBYSxDQUFDLCtCQUErQixDQUFDLE1BQUEsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxNQUE4QjtRQUN0QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUM5QixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixLQUFLLHVCQUFBLElBQUksMEJBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ3ZDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7b0JBQ3BDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7b0JBQ3RDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRTtpQkFDYixDQUFDLENBQUM7Z0JBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDMUMsS0FBSyx1QkFBQSxJQUFJLDJCQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2RSxDQUFDLENBQUMsQ0FBQztnQkFFSCxLQUFLLHVCQUFBLElBQUksK0JBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM5RyxDQUFDO1lBRUQsS0FBSyx1QkFBQSxJQUFJLHNDQUFvQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFNUUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxZQUFZLENBQUMsSUFBWSxFQUFFLGNBQXNCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQzVDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFFekMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFdBQVcsbUNBQW1DLENBQUMsQ0FBQztnQkFDekYsQ0FBQztnQkFDRCxLQUFLLHVCQUFBLElBQUksMEJBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDNUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDckMsS0FBSyx1QkFBQSxJQUFJLDJCQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDbEQsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsS0FBSyx1QkFBQSxJQUFJLCtCQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDckYsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxDQUFDLFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBYTtRQUNyQyxLQUFLLE1BQU0sWUFBWSxJQUFJLHVCQUFBLElBQUksMEJBQVEsQ0FBQyxNQUFNLENBQUMsdUJBQUEsSUFBSSw0REFBbUIsTUFBdkIsSUFBSSxFQUFvQixLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RGLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxXQUFtQjtRQUMxQixNQUFNLFlBQVksR0FBRyx1QkFBQSxJQUFJLDBCQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILENBQUMsZUFBZSxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQzNDLEtBQUssTUFBTSxZQUFZLElBQUksdUJBQUEsSUFBSSwwQkFBUSxDQUFDLE1BQU0sQ0FBQyx1QkFBQSxJQUFJLDREQUFtQixNQUF2QixJQUFJLEVBQW9CLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEYsTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHdCQUF3QixDQUFDLFlBQTBCO1FBQ3pELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELE1BQU0sT0FBTyxHQUFHLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEUsTUFBTSxlQUFlLEdBQUcsdUJBQUEsSUFBSSwrQkFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUU5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsTUFBYztRQUN4QixNQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hFLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25FLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsTUFBYztRQUNoQyxNQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hFLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25FLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBRSxDQUFDO1FBQzFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QyxPQUFPLElBQUksU0FBUyxDQUNsQixNQUFNLEVBQ04sU0FBUyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFDN0MsRUFBRSxFQUNGLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsTUFBYztRQUMxQixPQUFPLHVCQUFBLElBQUksMkJBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxtQkFBbUIsQ0FBQyxlQUE2QjtRQUMvQyxPQUFPLHVCQUFBLElBQUksaUNBQWUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7T0FHRztJQUNILHVCQUF1QjtRQUNyQixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsdUJBQUEsSUFBSSwwQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekUsT0FBTyxPQUFPLGVBQWUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7O09BR0c7SUFDSCx1QkFBdUI7UUFDckIsT0FBTyx1QkFBQSxJQUFJLHNDQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxhQUFxQjtRQUMzQyxLQUFLLHVCQUFBLElBQUksc0NBQW9CLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsT0FBTyx1QkFBQSxJQUFJLHFDQUFtQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsV0FBbUI7UUFDeEMsS0FBSyx1QkFBQSxJQUFJLHFDQUFtQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sdUJBQUEsSUFBSSxxQ0FBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsV0FBbUI7UUFDeEMsS0FBSyx1QkFBQSxJQUFJLHFDQUFtQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBY0Y7MGJBWm9CLEtBQWEsRUFBRSxLQUFhO0lBQzdDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxLQUFLLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzFCLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDeEIsQ0FBQyJ9
|
|
@@ -8,7 +8,8 @@ export declare class ContractClassStore {
|
|
|
8
8
|
#private;
|
|
9
9
|
private db;
|
|
10
10
|
constructor(db: AztecKVStore);
|
|
11
|
-
addContractClass(contractClass: ContractClassPublic): Promise<void>;
|
|
11
|
+
addContractClass(contractClass: ContractClassPublic, blockNumber: number): Promise<void>;
|
|
12
|
+
deleteContractClasses(contractClass: ContractClassPublic, blockNumber: number): Promise<void>;
|
|
12
13
|
getContractClass(id: Fr): ContractClassPublic | undefined;
|
|
13
14
|
getContractClassIds(): Fr[];
|
|
14
15
|
addFunctions(contractClassId: Fr, newPrivateFunctions: ExecutablePrivateFunctionWithMembershipProof[], newUnconstrainedFunctions: UnconstrainedFunctionWithMembershipProof[]): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_class_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/contract_class_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA4B,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACL,KAAK,mBAAmB,
|
|
1
|
+
{"version":3,"file":"contract_class_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/contract_class_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA4B,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACL,KAAK,mBAAmB,EAExB,KAAK,4CAA4C,EACjD,KAAK,wCAAwC,EAC9C,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,qBAAa,kBAAkB;;IAGjB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,YAAY;IAI9B,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxF,qBAAqB,CAAC,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnG,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,mBAAmB,GAAG,SAAS;IAKzD,mBAAmB,IAAI,EAAE,EAAE;IAIrB,YAAY,CAChB,eAAe,EAAE,EAAE,EACnB,mBAAmB,EAAE,4CAA4C,EAAE,EACnE,yBAAyB,EAAE,wCAAwC,EAAE,GACpE,OAAO,CAAC,OAAO,CAAC;CA2BpB"}
|
|
@@ -11,8 +11,14 @@ export class ContractClassStore {
|
|
|
11
11
|
_ContractClassStore_contractClasses.set(this, void 0);
|
|
12
12
|
__classPrivateFieldSet(this, _ContractClassStore_contractClasses, db.openMap('archiver_contract_classes'), "f");
|
|
13
13
|
}
|
|
14
|
-
addContractClass(contractClass) {
|
|
15
|
-
|
|
14
|
+
async addContractClass(contractClass, blockNumber) {
|
|
15
|
+
await __classPrivateFieldGet(this, _ContractClassStore_contractClasses, "f").setIfNotExists(contractClass.id.toString(), serializeContractClassPublic({ ...contractClass, l2BlockNumber: blockNumber }));
|
|
16
|
+
}
|
|
17
|
+
async deleteContractClasses(contractClass, blockNumber) {
|
|
18
|
+
const restoredContractClass = __classPrivateFieldGet(this, _ContractClassStore_contractClasses, "f").get(contractClass.id.toString());
|
|
19
|
+
if (restoredContractClass && deserializeContractClassPublic(restoredContractClass).l2BlockNumber >= blockNumber) {
|
|
20
|
+
await __classPrivateFieldGet(this, _ContractClassStore_contractClasses, "f").delete(contractClass.id.toString());
|
|
21
|
+
}
|
|
16
22
|
}
|
|
17
23
|
getContractClass(id) {
|
|
18
24
|
const contractClass = __classPrivateFieldGet(this, _ContractClassStore_contractClasses, "f").get(id.toString());
|
|
@@ -47,7 +53,7 @@ export class ContractClassStore {
|
|
|
47
53
|
}
|
|
48
54
|
_ContractClassStore_contractClasses = new WeakMap();
|
|
49
55
|
function serializeContractClassPublic(contractClass) {
|
|
50
|
-
return serializeToBuffer(numToUInt8(contractClass.version), contractClass.artifactHash, contractClass.publicFunctions.length, contractClass.publicFunctions?.map(f => serializeToBuffer(f.selector, f.bytecode.length, f.bytecode)) ?? [], contractClass.privateFunctions.length, contractClass.privateFunctions.map(serializePrivateFunction), contractClass.unconstrainedFunctions.length, contractClass.unconstrainedFunctions.map(serializeUnconstrainedFunction), contractClass.packedBytecode.length, contractClass.packedBytecode, contractClass.privateFunctionsRoot);
|
|
56
|
+
return serializeToBuffer(contractClass.l2BlockNumber, numToUInt8(contractClass.version), contractClass.artifactHash, contractClass.publicFunctions.length, contractClass.publicFunctions?.map(f => serializeToBuffer(f.selector, f.bytecode.length, f.bytecode)) ?? [], contractClass.privateFunctions.length, contractClass.privateFunctions.map(serializePrivateFunction), contractClass.unconstrainedFunctions.length, contractClass.unconstrainedFunctions.map(serializeUnconstrainedFunction), contractClass.packedBytecode.length, contractClass.packedBytecode, contractClass.privateFunctionsRoot);
|
|
51
57
|
}
|
|
52
58
|
function serializePrivateFunction(fn) {
|
|
53
59
|
return serializeToBuffer(fn.selector, fn.vkHash, fn.bytecode.length, fn.bytecode, fn.functionMetadataHash, fn.artifactMetadataHash, fn.unconstrainedFunctionsArtifactTreeRoot, new Vector(fn.privateFunctionTreeSiblingPath), fn.privateFunctionTreeLeafIndex, new Vector(fn.artifactTreeSiblingPath), fn.artifactTreeLeafIndex);
|
|
@@ -58,6 +64,7 @@ function serializeUnconstrainedFunction(fn) {
|
|
|
58
64
|
function deserializeContractClassPublic(buffer) {
|
|
59
65
|
const reader = BufferReader.asReader(buffer);
|
|
60
66
|
return {
|
|
67
|
+
l2BlockNumber: reader.readNumber(),
|
|
61
68
|
version: reader.readUInt8(),
|
|
62
69
|
artifactHash: reader.readObject(Fr),
|
|
63
70
|
publicFunctions: reader.readVector({
|
|
@@ -99,4 +106,4 @@ function deserializeUnconstrainedFunction(buffer) {
|
|
|
99
106
|
artifactTreeLeafIndex: reader.readNumber(),
|
|
100
107
|
};
|
|
101
108
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfY2xhc3Nfc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJjaGl2ZXIva3ZfYXJjaGl2ZXJfc3RvcmUvY29udHJhY3RfY2xhc3Nfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFTMUY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQW9CLEVBQWdCO1FBQWhCLE9BQUUsR0FBRixFQUFFLENBQWM7UUFGcEMsc0RBQTJDO1FBR3pDLHVCQUFBLElBQUksdUNBQW9CLEVBQUUsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsTUFBQSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsYUFBa0MsRUFBRSxXQUFtQjtRQUM1RSxNQUFNLHVCQUFBLElBQUksMkNBQWlCLENBQUMsY0FBYyxDQUN4QyxhQUFhLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUMzQiw0QkFBNEIsQ0FBQyxFQUFFLEdBQUcsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUMvRSxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxhQUFrQyxFQUFFLFdBQW1CO1FBQ2pGLE1BQU0scUJBQXFCLEdBQUcsdUJBQUEsSUFBSSwyQ0FBaUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLElBQUkscUJBQXFCLElBQUksOEJBQThCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxhQUFhLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEgsTUFBTSx1QkFBQSxJ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
|
|
@@ -8,6 +8,7 @@ export declare class ContractInstanceStore {
|
|
|
8
8
|
#private;
|
|
9
9
|
constructor(db: AztecKVStore);
|
|
10
10
|
addContractInstance(contractInstance: ContractInstanceWithAddress): Promise<void>;
|
|
11
|
+
deleteContractInstance(contractInstance: ContractInstanceWithAddress): Promise<void>;
|
|
11
12
|
getContractInstance(address: AztecAddress): ContractInstanceWithAddress | undefined;
|
|
12
13
|
}
|
|
13
14
|
//# sourceMappingURL=contract_instance_store.d.ts.map
|