@aztec/archiver 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2 → 0.76.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 +186 -0
- package/dest/archiver/archiver.d.ts.map +1 -0
- package/dest/archiver/archiver.js +711 -729
- package/dest/archiver/archiver_store.d.ts +217 -0
- package/dest/archiver/archiver_store.d.ts.map +1 -0
- package/dest/archiver/archiver_store.js +2 -4
- package/dest/archiver/archiver_store_test_suite.d.ts +8 -0
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -0
- package/dest/archiver/archiver_store_test_suite.js +224 -385
- package/dest/archiver/config.d.ts +37 -0
- package/dest/archiver/config.d.ts.map +1 -0
- package/dest/archiver/config.js +15 -9
- package/dest/archiver/data_retrieval.d.ts +71 -0
- package/dest/archiver/data_retrieval.d.ts.map +1 -0
- package/dest/archiver/data_retrieval.js +67 -77
- package/dest/archiver/errors.d.ts +4 -0
- package/dest/archiver/errors.d.ts.map +1 -0
- package/dest/archiver/errors.js +2 -1
- package/dest/archiver/index.d.ts +8 -0
- package/dest/archiver/index.d.ts.map +1 -0
- package/dest/archiver/index.js +1 -0
- package/dest/archiver/instrumentation.d.ts +27 -0
- package/dest/archiver/instrumentation.d.ts.map +1 -0
- package/dest/archiver/instrumentation.js +17 -29
- package/dest/archiver/kv_archiver_store/block_store.d.ts +87 -0
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/block_store.js +127 -118
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +17 -0
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/contract_class_store.js +37 -43
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +13 -0
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/contract_instance_store.js +12 -7
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +147 -0
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +158 -135
- package/dest/archiver/kv_archiver_store/log_store.d.ts +47 -0
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/log_store.js +256 -271
- package/dest/archiver/kv_archiver_store/message_store.d.ts +33 -0
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/message_store.js +48 -42
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts +12 -0
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/nullifier_store.js +42 -35
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +23 -0
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts.map +1 -0
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.js +24 -15
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +168 -0
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -0
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +231 -227
- package/dest/archiver/structs/data_retrieval.d.ts +27 -0
- package/dest/archiver/structs/data_retrieval.d.ts.map +1 -0
- package/dest/archiver/structs/data_retrieval.js +2 -5
- package/dest/archiver/structs/published.d.ts +11 -0
- package/dest/archiver/structs/published.d.ts.map +1 -0
- package/dest/archiver/structs/published.js +2 -1
- package/dest/factory.d.ts +10 -0
- package/dest/factory.d.ts.map +1 -0
- package/dest/factory.js +24 -32
- package/dest/index.d.ts +5 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +1 -0
- package/dest/rpc/index.d.ts +9 -0
- package/dest/rpc/index.d.ts.map +1 -0
- package/dest/rpc/index.js +8 -7
- package/dest/test/index.d.ts +4 -0
- package/dest/test/index.d.ts.map +1 -0
- package/dest/test/index.js +1 -0
- package/dest/test/mock_archiver.d.ts +22 -0
- package/dest/test/mock_archiver.d.ts.map +1 -0
- package/dest/test/mock_archiver.js +13 -8
- package/dest/test/mock_l1_to_l2_message_source.d.ts +16 -0
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -0
- package/dest/test/mock_l1_to_l2_message_source.js +4 -4
- package/dest/test/mock_l2_block_source.d.ts +80 -0
- package/dest/test/mock_l2_block_source.d.ts.map +1 -0
- package/dest/test/mock_l2_block_source.js +67 -68
- package/package.json +15 -14
- package/src/archiver/config.ts +7 -1
- package/src/archiver/index.ts +1 -1
- package/src/factory.ts +7 -3
- package/src/rpc/index.ts +16 -3
|
@@ -1,54 +1,43 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import { Attributes, LmdbMetrics, Metrics, ValueType } from '@aztec/telemetry-client';
|
|
2
|
+
import { Attributes, LmdbMetrics, Metrics, ValueType, } from '@aztec/telemetry-client';
|
|
3
3
|
export class ArchiverInstrumentation {
|
|
4
|
-
telemetry
|
|
5
|
-
tracer;
|
|
6
|
-
blockHeight;
|
|
7
|
-
txCount;
|
|
8
|
-
syncDuration;
|
|
9
|
-
l1BlocksSynced;
|
|
10
|
-
proofsSubmittedDelay;
|
|
11
|
-
proofsSubmittedCount;
|
|
12
|
-
dbMetrics;
|
|
13
|
-
pruneCount;
|
|
14
|
-
log;
|
|
15
|
-
constructor(telemetry, lmdbStats){
|
|
4
|
+
constructor(telemetry, lmdbStats) {
|
|
16
5
|
this.telemetry = telemetry;
|
|
17
6
|
this.log = createLogger('archiver:instrumentation');
|
|
18
7
|
this.tracer = telemetry.getTracer('Archiver');
|
|
19
8
|
const meter = telemetry.getMeter('Archiver');
|
|
20
9
|
this.blockHeight = meter.createGauge(Metrics.ARCHIVER_BLOCK_HEIGHT, {
|
|
21
10
|
description: 'The height of the latest block processed by the archiver',
|
|
22
|
-
valueType: ValueType.INT
|
|
11
|
+
valueType: ValueType.INT,
|
|
23
12
|
});
|
|
24
13
|
this.txCount = meter.createUpDownCounter(Metrics.ARCHIVER_TX_COUNT, {
|
|
25
14
|
description: 'The total number of transactions',
|
|
26
|
-
valueType: ValueType.INT
|
|
15
|
+
valueType: ValueType.INT,
|
|
27
16
|
});
|
|
28
17
|
this.syncDuration = meter.createHistogram(Metrics.ARCHIVER_SYNC_DURATION, {
|
|
29
18
|
unit: 'ms',
|
|
30
19
|
description: 'Duration to sync a block',
|
|
31
|
-
valueType: ValueType.INT
|
|
20
|
+
valueType: ValueType.INT,
|
|
32
21
|
});
|
|
33
22
|
this.proofsSubmittedCount = meter.createUpDownCounter(Metrics.ARCHIVER_ROLLUP_PROOF_COUNT, {
|
|
34
23
|
description: 'Number of proofs submitted',
|
|
35
|
-
valueType: ValueType.INT
|
|
24
|
+
valueType: ValueType.INT,
|
|
36
25
|
});
|
|
37
26
|
this.proofsSubmittedDelay = meter.createHistogram(Metrics.ARCHIVER_ROLLUP_PROOF_DELAY, {
|
|
38
27
|
unit: 'ms',
|
|
39
28
|
description: 'Time after a block is submitted until its proof is published',
|
|
40
|
-
valueType: ValueType.INT
|
|
29
|
+
valueType: ValueType.INT,
|
|
41
30
|
});
|
|
42
31
|
this.l1BlocksSynced = meter.createUpDownCounter(Metrics.ARCHIVER_L1_BLOCKS_SYNCED, {
|
|
43
32
|
description: 'Number of blocks synced from L1',
|
|
44
|
-
valueType: ValueType.INT
|
|
33
|
+
valueType: ValueType.INT,
|
|
45
34
|
});
|
|
46
35
|
this.dbMetrics = new LmdbMetrics(meter, {
|
|
47
|
-
[Attributes.DB_DATA_TYPE]: 'archiver'
|
|
36
|
+
[Attributes.DB_DATA_TYPE]: 'archiver',
|
|
48
37
|
}, lmdbStats);
|
|
49
38
|
this.pruneCount = meter.createUpDownCounter(Metrics.ARCHIVER_PRUNE_COUNT, {
|
|
50
39
|
description: 'Number of prunes detected',
|
|
51
|
-
valueType: ValueType.INT
|
|
40
|
+
valueType: ValueType.INT,
|
|
52
41
|
});
|
|
53
42
|
}
|
|
54
43
|
static async new(telemetry, lmdbStats) {
|
|
@@ -62,9 +51,9 @@ export class ArchiverInstrumentation {
|
|
|
62
51
|
}
|
|
63
52
|
processNewBlocks(syncTimePerBlock, blocks) {
|
|
64
53
|
this.syncDuration.record(Math.ceil(syncTimePerBlock));
|
|
65
|
-
this.blockHeight.record(Math.max(...blocks.map(
|
|
54
|
+
this.blockHeight.record(Math.max(...blocks.map(b => b.number)));
|
|
66
55
|
this.l1BlocksSynced.add(blocks.length);
|
|
67
|
-
for (const block of blocks){
|
|
56
|
+
for (const block of blocks) {
|
|
68
57
|
this.txCount.add(block.body.txEffects.length);
|
|
69
58
|
}
|
|
70
59
|
}
|
|
@@ -72,20 +61,19 @@ export class ArchiverInstrumentation {
|
|
|
72
61
|
this.pruneCount.add(1);
|
|
73
62
|
}
|
|
74
63
|
updateLastProvenBlock(blockNumber) {
|
|
75
|
-
this.blockHeight.record(blockNumber, {
|
|
76
|
-
[Attributes.STATUS]: 'proven'
|
|
77
|
-
});
|
|
64
|
+
this.blockHeight.record(blockNumber, { [Attributes.STATUS]: 'proven' });
|
|
78
65
|
}
|
|
79
66
|
processProofsVerified(logs) {
|
|
80
|
-
for (const log of logs){
|
|
67
|
+
for (const log of logs) {
|
|
81
68
|
this.log.debug('Recording proof verified event', log);
|
|
82
69
|
this.proofsSubmittedCount.add(1, {
|
|
83
70
|
[Attributes.ROLLUP_PROVER_ID]: log.proverId,
|
|
84
|
-
[Attributes.PROOF_TIMED_OUT]: log.delay > 20n * 60n * 1000n
|
|
71
|
+
[Attributes.PROOF_TIMED_OUT]: log.delay > 20n * 60n * 1000n,
|
|
85
72
|
});
|
|
86
73
|
this.proofsSubmittedDelay.record(Math.ceil(Number(log.delay)), {
|
|
87
|
-
[Attributes.ROLLUP_PROVER_ID]: log.proverId
|
|
74
|
+
[Attributes.ROLLUP_PROVER_ID]: log.proverId,
|
|
88
75
|
});
|
|
89
76
|
}
|
|
90
77
|
}
|
|
91
78
|
}
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FyY2hpdmVyL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUNMLFVBQVUsRUFHVixXQUFXLEVBRVgsT0FBTyxFQUlQLFNBQVMsR0FDVixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE1BQU0sT0FBTyx1QkFBdUI7SUFjbEMsWUFBNEIsU0FBMEIsRUFBRSxTQUE2QjtRQUF6RCxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUY5QyxRQUFHLEdBQUcsWUFBWSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFHckQsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRTtZQUNsRSxXQUFXLEVBQUUsMERBQTBEO1lBQ3ZFLFNBQVMsRUFBRSxTQUFTLENBQUMsR0FBRztTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUU7WUFDbEUsV0FBVyxFQUFFLGtDQUFrQztZQUMvQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUc7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRTtZQUN4RSxJQUFJLEVBQUUsSUFBSTtZQUNWLFdBQVcsRUFBRSwwQkFBMEI7WUFDdkMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxH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
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { type InBlock, L2Block, type TxEffect, type TxHash, TxReceipt } from '@aztec/circuit-types';
|
|
2
|
+
import { type AztecAddress, BlockHeader } from '@aztec/circuits.js';
|
|
3
|
+
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
4
|
+
import { type L1Published } from '../structs/published.js';
|
|
5
|
+
/**
|
|
6
|
+
* LMDB implementation of the ArchiverDataStore interface.
|
|
7
|
+
*/
|
|
8
|
+
export declare class BlockStore {
|
|
9
|
+
#private;
|
|
10
|
+
private db;
|
|
11
|
+
constructor(db: AztecAsyncKVStore);
|
|
12
|
+
/**
|
|
13
|
+
* Append new blocks to the store's list.
|
|
14
|
+
* @param blocks - The L2 blocks to be added to the store.
|
|
15
|
+
* @returns True if the operation is successful.
|
|
16
|
+
*/
|
|
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>;
|
|
26
|
+
/**
|
|
27
|
+
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
28
|
+
* @param start - Number of the first block to return (inclusive).
|
|
29
|
+
* @param limit - The number of blocks to return.
|
|
30
|
+
* @returns The requested L2 blocks
|
|
31
|
+
*/
|
|
32
|
+
getBlocks(start: number, limit: number): AsyncIterableIterator<L1Published<L2Block>>;
|
|
33
|
+
/**
|
|
34
|
+
* Gets an L2 block.
|
|
35
|
+
* @param blockNumber - The number of the block to return.
|
|
36
|
+
* @returns The requested L2 block.
|
|
37
|
+
*/
|
|
38
|
+
getBlock(blockNumber: number): Promise<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): AsyncIterableIterator<BlockHeader>;
|
|
46
|
+
private getBlockFromBlockStorage;
|
|
47
|
+
/**
|
|
48
|
+
* Gets a tx effect.
|
|
49
|
+
* @param txHash - The txHash of the tx corresponding to the tx effect.
|
|
50
|
+
* @returns The requested tx effect (or undefined if not found).
|
|
51
|
+
*/
|
|
52
|
+
getTxEffect(txHash: TxHash): Promise<InBlock<TxEffect> | undefined>;
|
|
53
|
+
/**
|
|
54
|
+
* Gets a receipt of a settled tx.
|
|
55
|
+
* @param txHash - The hash of a tx we try to get the receipt for.
|
|
56
|
+
* @returns The requested tx receipt (or undefined if not found).
|
|
57
|
+
*/
|
|
58
|
+
getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
|
|
59
|
+
/**
|
|
60
|
+
* Looks up which block included the requested tx effect.
|
|
61
|
+
* @param txHash - The txHash of the tx.
|
|
62
|
+
* @returns The block number and index of the tx.
|
|
63
|
+
*/
|
|
64
|
+
getTxLocation(txHash: TxHash): Promise<[blockNumber: number, txIndex: number] | undefined>;
|
|
65
|
+
/**
|
|
66
|
+
* Looks up which block deployed a particular contract.
|
|
67
|
+
* @param contractAddress - The address of the contract to look up.
|
|
68
|
+
* @returns The block number and index of the contract.
|
|
69
|
+
*/
|
|
70
|
+
getContractLocation(contractAddress: AztecAddress): Promise<[blockNumber: number, index: number] | undefined>;
|
|
71
|
+
/**
|
|
72
|
+
* Gets the number of the latest L2 block processed.
|
|
73
|
+
* @returns The number of the latest L2 block processed.
|
|
74
|
+
*/
|
|
75
|
+
getSynchedL2BlockNumber(): Promise<number>;
|
|
76
|
+
/**
|
|
77
|
+
* Gets the most recent L1 block processed.
|
|
78
|
+
* @returns The L1 block that published the latest L2 block
|
|
79
|
+
*/
|
|
80
|
+
getSynchedL1BlockNumber(): Promise<bigint | undefined>;
|
|
81
|
+
setSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<boolean>;
|
|
82
|
+
getProvenL2BlockNumber(): Promise<number>;
|
|
83
|
+
setProvenL2BlockNumber(blockNumber: number): Promise<boolean>;
|
|
84
|
+
getProvenL2EpochNumber(): Promise<number | undefined>;
|
|
85
|
+
setProvenL2EpochNumber(epochNumber: number): Promise<boolean>;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=block_store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/block_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,OAAO,EAAE,OAAO,EAAe,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvH,OAAO,EAA0B,KAAK,YAAY,EAAE,WAAW,EAAwB,MAAM,oBAAoB,CAAC;AAGlH,OAAO,KAAK,EAAE,iBAAiB,EAA6C,MAAM,iBAAiB,CAAC;AAEpG,OAAO,EAAE,KAAK,WAAW,EAAwB,MAAM,yBAAyB,CAAC;AAUjF;;GAEG;AACH,qBAAa,UAAU;;IAwBT,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,iBAAiB;IAUzC;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BjE;;;;;;OAMG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAyBvD;;;;;OAKG;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAO3F;;;;OAIG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAS9E;;;;;OAKG;IACI,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC;YAM1E,wBAAwB;IAgBtC;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAkBzE;;;;OAIG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAmBzE;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAI1F;;;;OAIG;IACH,mBAAmB,CAAC,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAI7G;;;OAGG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKhD;;;OAGG;IACH,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAItD,uBAAuB,CAAC,aAAa,EAAE,MAAM;IAIvC,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/C,sBAAsB,CAAC,WAAW,EAAE,MAAM;IAI1C,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrD,sBAAsB,CAAC,WAAW,EAAE,MAAM;CAe3C"}
|
|
@@ -1,114 +1,125 @@
|
|
|
1
|
+
var _BlockStore_instances, _BlockStore_blocks, _BlockStore_blockBodies, _BlockStore_lastSynchedL1Block, _BlockStore_lastProvenL2Block, _BlockStore_lastProvenL2Epoch, _BlockStore_txIndex, _BlockStore_contractIndex, _BlockStore_log, _BlockStore_computeBlockRange;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
1
3
|
import { Body, L2Block, L2BlockHash, TxReceipt } from '@aztec/circuit-types';
|
|
2
4
|
import { AppendOnlyTreeSnapshot, BlockHeader, INITIAL_L2_BLOCK_NUM } from '@aztec/circuits.js';
|
|
3
5
|
import { toArray } from '@aztec/foundation/iterable';
|
|
4
6
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
7
|
/**
|
|
6
8
|
* LMDB implementation of the ArchiverDataStore interface.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
/** Stores L1 block number in which the last processed L2 block was included */ #lastSynchedL1Block;
|
|
12
|
-
/** Stores l2 block number of the last proven block */ #lastProvenL2Block;
|
|
13
|
-
/** Stores l2 epoch number of the last proven epoch */ #lastProvenL2Epoch;
|
|
14
|
-
/** Index mapping transaction hash (as a string) to its location in a block */ #txIndex;
|
|
15
|
-
/** Index mapping a contract's address (as a string) to its location in a block */ #contractIndex;
|
|
16
|
-
#log;
|
|
17
|
-
constructor(db){
|
|
9
|
+
*/
|
|
10
|
+
export class BlockStore {
|
|
11
|
+
constructor(db) {
|
|
12
|
+
_BlockStore_instances.add(this);
|
|
18
13
|
this.db = db;
|
|
19
|
-
|
|
20
|
-
this
|
|
21
|
-
|
|
22
|
-
this
|
|
23
|
-
|
|
24
|
-
this
|
|
25
|
-
|
|
26
|
-
this
|
|
14
|
+
/** Map block number to block data */
|
|
15
|
+
_BlockStore_blocks.set(this, void 0);
|
|
16
|
+
/** Map block hash to block body */
|
|
17
|
+
_BlockStore_blockBodies.set(this, void 0);
|
|
18
|
+
/** Stores L1 block number in which the last processed L2 block was included */
|
|
19
|
+
_BlockStore_lastSynchedL1Block.set(this, void 0);
|
|
20
|
+
/** Stores l2 block number of the last proven block */
|
|
21
|
+
_BlockStore_lastProvenL2Block.set(this, void 0);
|
|
22
|
+
/** Stores l2 epoch number of the last proven epoch */
|
|
23
|
+
_BlockStore_lastProvenL2Epoch.set(this, void 0);
|
|
24
|
+
/** Index mapping transaction hash (as a string) to its location in a block */
|
|
25
|
+
_BlockStore_txIndex.set(this, void 0);
|
|
26
|
+
/** Index mapping a contract's address (as a string) to its location in a block */
|
|
27
|
+
_BlockStore_contractIndex.set(this, void 0);
|
|
28
|
+
_BlockStore_log.set(this, createLogger('archiver:block_store'));
|
|
29
|
+
__classPrivateFieldSet(this, _BlockStore_blocks, db.openMap('archiver_blocks'), "f");
|
|
30
|
+
__classPrivateFieldSet(this, _BlockStore_blockBodies, db.openMap('archiver_block_bodies'), "f");
|
|
31
|
+
__classPrivateFieldSet(this, _BlockStore_txIndex, db.openMap('archiver_tx_index'), "f");
|
|
32
|
+
__classPrivateFieldSet(this, _BlockStore_contractIndex, db.openMap('archiver_contract_index'), "f");
|
|
33
|
+
__classPrivateFieldSet(this, _BlockStore_lastSynchedL1Block, db.openSingleton('archiver_last_synched_l1_block'), "f");
|
|
34
|
+
__classPrivateFieldSet(this, _BlockStore_lastProvenL2Block, db.openSingleton('archiver_last_proven_l2_block'), "f");
|
|
35
|
+
__classPrivateFieldSet(this, _BlockStore_lastProvenL2Epoch, db.openSingleton('archiver_last_proven_l2_epoch'), "f");
|
|
27
36
|
}
|
|
28
37
|
/**
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
* Append new blocks to the store's list.
|
|
39
|
+
* @param blocks - The L2 blocks to be added to the store.
|
|
40
|
+
* @returns True if the operation is successful.
|
|
41
|
+
*/
|
|
42
|
+
async addBlocks(blocks) {
|
|
33
43
|
if (blocks.length === 0) {
|
|
34
44
|
return true;
|
|
35
45
|
}
|
|
36
|
-
return await this.db.transactionAsync(async ()=>{
|
|
37
|
-
for (const block of blocks){
|
|
38
|
-
await this
|
|
46
|
+
return await this.db.transactionAsync(async () => {
|
|
47
|
+
for (const block of blocks) {
|
|
48
|
+
await __classPrivateFieldGet(this, _BlockStore_blocks, "f").set(block.data.number, {
|
|
39
49
|
header: block.data.header.toBuffer(),
|
|
40
50
|
archive: block.data.archive.toBuffer(),
|
|
41
|
-
l1: block.l1
|
|
51
|
+
l1: block.l1,
|
|
42
52
|
});
|
|
43
|
-
for(let i = 0; i < block.data.body.txEffects.length; i++){
|
|
53
|
+
for (let i = 0; i < block.data.body.txEffects.length; i++) {
|
|
44
54
|
const txEffect = block.data.body.txEffects[i];
|
|
45
|
-
await this
|
|
46
|
-
block.data.number,
|
|
47
|
-
i
|
|
48
|
-
]);
|
|
55
|
+
await __classPrivateFieldGet(this, _BlockStore_txIndex, "f").set(txEffect.txHash.toString(), [block.data.number, i]);
|
|
49
56
|
}
|
|
50
|
-
await this
|
|
57
|
+
await __classPrivateFieldGet(this, _BlockStore_blockBodies, "f").set((await block.data.hash()).toString(), block.data.body.toBuffer());
|
|
51
58
|
}
|
|
52
|
-
await this
|
|
59
|
+
await __classPrivateFieldGet(this, _BlockStore_lastSynchedL1Block, "f").set(blocks[blocks.length - 1].l1.blockNumber);
|
|
53
60
|
return true;
|
|
54
61
|
});
|
|
55
62
|
}
|
|
56
63
|
/**
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
* Unwinds blocks from the database
|
|
65
|
+
* @param from - The tip of the chain, passed for verification purposes,
|
|
66
|
+
* ensuring that we don't end up deleting something we did not intend
|
|
67
|
+
* @param blocksToUnwind - The number of blocks we are to unwind
|
|
68
|
+
* @returns True if the operation is successful
|
|
69
|
+
*/
|
|
70
|
+
async unwindBlocks(from, blocksToUnwind) {
|
|
71
|
+
return await this.db.transactionAsync(async () => {
|
|
64
72
|
const last = await this.getSynchedL2BlockNumber();
|
|
65
73
|
if (from !== last) {
|
|
66
74
|
throw new Error(`Can only unwind blocks from the tip (requested ${from} but current tip is ${last})`);
|
|
67
75
|
}
|
|
68
|
-
for(let i = 0; i < blocksToUnwind; i++){
|
|
76
|
+
for (let i = 0; i < blocksToUnwind; i++) {
|
|
69
77
|
const blockNumber = from - i;
|
|
70
78
|
const block = await this.getBlock(blockNumber);
|
|
71
79
|
if (block === undefined) {
|
|
72
80
|
throw new Error(`Cannot remove block ${blockNumber} from the store, we don't have it`);
|
|
73
81
|
}
|
|
74
|
-
await this
|
|
75
|
-
await Promise.all(block.data.body.txEffects.map(
|
|
82
|
+
await __classPrivateFieldGet(this, _BlockStore_blocks, "f").delete(block.data.number);
|
|
83
|
+
await Promise.all(block.data.body.txEffects.map(tx => __classPrivateFieldGet(this, _BlockStore_txIndex, "f").delete(tx.txHash.toString())));
|
|
76
84
|
const blockHash = (await block.data.hash()).toString();
|
|
77
|
-
await this
|
|
78
|
-
this
|
|
85
|
+
await __classPrivateFieldGet(this, _BlockStore_blockBodies, "f").delete(blockHash);
|
|
86
|
+
__classPrivateFieldGet(this, _BlockStore_log, "f").debug(`Unwound block ${blockNumber} ${blockHash}`);
|
|
79
87
|
}
|
|
80
88
|
return true;
|
|
81
89
|
});
|
|
82
90
|
}
|
|
83
91
|
/**
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
92
|
+
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
93
|
+
* @param start - Number of the first block to return (inclusive).
|
|
94
|
+
* @param limit - The number of blocks to return.
|
|
95
|
+
* @returns The requested L2 blocks
|
|
96
|
+
*/
|
|
97
|
+
async *getBlocks(start, limit) {
|
|
98
|
+
for await (const blockStorage of __classPrivateFieldGet(this, _BlockStore_blocks, "f").valuesAsync(__classPrivateFieldGet(this, _BlockStore_instances, "m", _BlockStore_computeBlockRange).call(this, start, limit))) {
|
|
90
99
|
const block = await this.getBlockFromBlockStorage(blockStorage);
|
|
91
100
|
yield block;
|
|
92
101
|
}
|
|
93
102
|
}
|
|
94
103
|
/**
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
104
|
+
* Gets an L2 block.
|
|
105
|
+
* @param blockNumber - The number of the block to return.
|
|
106
|
+
* @returns The requested L2 block.
|
|
107
|
+
*/
|
|
108
|
+
async getBlock(blockNumber) {
|
|
109
|
+
const blockStorage = await __classPrivateFieldGet(this, _BlockStore_blocks, "f").getAsync(blockNumber);
|
|
100
110
|
if (!blockStorage || !blockStorage.header) {
|
|
101
111
|
return Promise.resolve(undefined);
|
|
102
112
|
}
|
|
103
113
|
return this.getBlockFromBlockStorage(blockStorage);
|
|
104
114
|
}
|
|
105
115
|
/**
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
116
|
+
* Gets the headers for a sequence of L2 blocks.
|
|
117
|
+
* @param start - Number of the first block to return (inclusive).
|
|
118
|
+
* @param limit - The number of blocks to return.
|
|
119
|
+
* @returns The requested L2 block headers
|
|
120
|
+
*/
|
|
121
|
+
async *getBlockHeaders(start, limit) {
|
|
122
|
+
for await (const blockStorage of __classPrivateFieldGet(this, _BlockStore_blocks, "f").valuesAsync(__classPrivateFieldGet(this, _BlockStore_instances, "m", _BlockStore_computeBlockRange).call(this, start, limit))) {
|
|
112
123
|
yield BlockHeader.fromBuffer(blockStorage.header);
|
|
113
124
|
}
|
|
114
125
|
}
|
|
@@ -116,23 +127,21 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
116
127
|
const header = BlockHeader.fromBuffer(blockStorage.header);
|
|
117
128
|
const archive = AppendOnlyTreeSnapshot.fromBuffer(blockStorage.archive);
|
|
118
129
|
const blockHash = (await header.hash()).toString();
|
|
119
|
-
const blockBodyBuffer = await this
|
|
130
|
+
const blockBodyBuffer = await __classPrivateFieldGet(this, _BlockStore_blockBodies, "f").getAsync(blockHash);
|
|
120
131
|
if (blockBodyBuffer === undefined) {
|
|
121
132
|
throw new Error(`Could not retrieve body for block ${header.globalVariables.blockNumber.toNumber()} ${blockHash}`);
|
|
122
133
|
}
|
|
123
134
|
const body = Body.fromBuffer(blockBodyBuffer);
|
|
124
135
|
const l2Block = new L2Block(archive, header, body);
|
|
125
|
-
return {
|
|
126
|
-
data: l2Block,
|
|
127
|
-
l1: blockStorage.l1
|
|
128
|
-
};
|
|
136
|
+
return { data: l2Block, l1: blockStorage.l1 };
|
|
129
137
|
}
|
|
130
138
|
/**
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
139
|
+
* Gets a tx effect.
|
|
140
|
+
* @param txHash - The txHash of the tx corresponding to the tx effect.
|
|
141
|
+
* @returns The requested tx effect (or undefined if not found).
|
|
142
|
+
*/
|
|
143
|
+
async getTxEffect(txHash) {
|
|
144
|
+
const [blockNumber, txIndex] = (await this.getTxLocation(txHash)) ?? [];
|
|
136
145
|
if (typeof blockNumber !== 'number' || typeof txIndex !== 'number') {
|
|
137
146
|
return undefined;
|
|
138
147
|
}
|
|
@@ -143,77 +152,77 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
143
152
|
return {
|
|
144
153
|
data: block.data.body.txEffects[txIndex],
|
|
145
154
|
l2BlockNumber: block.data.number,
|
|
146
|
-
l2BlockHash: (await block.data.hash()).toString()
|
|
155
|
+
l2BlockHash: (await block.data.hash()).toString(),
|
|
147
156
|
};
|
|
148
157
|
}
|
|
149
158
|
/**
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
159
|
+
* Gets a receipt of a settled tx.
|
|
160
|
+
* @param txHash - The hash of a tx we try to get the receipt for.
|
|
161
|
+
* @returns The requested tx receipt (or undefined if not found).
|
|
162
|
+
*/
|
|
163
|
+
async getSettledTxReceipt(txHash) {
|
|
164
|
+
const [blockNumber, txIndex] = (await this.getTxLocation(txHash)) ?? [];
|
|
155
165
|
if (typeof blockNumber !== 'number' || typeof txIndex !== 'number') {
|
|
156
166
|
return undefined;
|
|
157
167
|
}
|
|
158
|
-
const block = await this.getBlock(blockNumber);
|
|
168
|
+
const block = (await this.getBlock(blockNumber));
|
|
159
169
|
const tx = block.data.body.txEffects[txIndex];
|
|
160
170
|
return new TxReceipt(txHash, TxReceipt.statusFromRevertCode(tx.revertCode), '', tx.transactionFee.toBigInt(), L2BlockHash.fromField(await block.data.hash()), block.data.number);
|
|
161
171
|
}
|
|
162
172
|
/**
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
173
|
+
* Looks up which block included the requested tx effect.
|
|
174
|
+
* @param txHash - The txHash of the tx.
|
|
175
|
+
* @returns The block number and index of the tx.
|
|
176
|
+
*/
|
|
177
|
+
getTxLocation(txHash) {
|
|
178
|
+
return __classPrivateFieldGet(this, _BlockStore_txIndex, "f").getAsync(txHash.toString());
|
|
168
179
|
}
|
|
169
180
|
/**
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
181
|
+
* Looks up which block deployed a particular contract.
|
|
182
|
+
* @param contractAddress - The address of the contract to look up.
|
|
183
|
+
* @returns The block number and index of the contract.
|
|
184
|
+
*/
|
|
185
|
+
getContractLocation(contractAddress) {
|
|
186
|
+
return __classPrivateFieldGet(this, _BlockStore_contractIndex, "f").getAsync(contractAddress.toString());
|
|
175
187
|
}
|
|
176
188
|
/**
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
limit: 1
|
|
183
|
-
}));
|
|
189
|
+
* Gets the number of the latest L2 block processed.
|
|
190
|
+
* @returns The number of the latest L2 block processed.
|
|
191
|
+
*/
|
|
192
|
+
async getSynchedL2BlockNumber() {
|
|
193
|
+
const [lastBlockNumber] = await toArray(__classPrivateFieldGet(this, _BlockStore_blocks, "f").keysAsync({ reverse: true, limit: 1 }));
|
|
184
194
|
return typeof lastBlockNumber === 'number' ? lastBlockNumber : INITIAL_L2_BLOCK_NUM - 1;
|
|
185
195
|
}
|
|
186
196
|
/**
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
197
|
+
* Gets the most recent L1 block processed.
|
|
198
|
+
* @returns The L1 block that published the latest L2 block
|
|
199
|
+
*/
|
|
200
|
+
getSynchedL1BlockNumber() {
|
|
201
|
+
return __classPrivateFieldGet(this, _BlockStore_lastSynchedL1Block, "f").getAsync();
|
|
191
202
|
}
|
|
192
203
|
setSynchedL1BlockNumber(l1BlockNumber) {
|
|
193
|
-
return this
|
|
204
|
+
return __classPrivateFieldGet(this, _BlockStore_lastSynchedL1Block, "f").set(l1BlockNumber);
|
|
194
205
|
}
|
|
195
206
|
async getProvenL2BlockNumber() {
|
|
196
|
-
return await this
|
|
207
|
+
return (await __classPrivateFieldGet(this, _BlockStore_lastProvenL2Block, "f").getAsync()) ?? 0;
|
|
197
208
|
}
|
|
198
209
|
setProvenL2BlockNumber(blockNumber) {
|
|
199
|
-
return this
|
|
210
|
+
return __classPrivateFieldGet(this, _BlockStore_lastProvenL2Block, "f").set(blockNumber);
|
|
200
211
|
}
|
|
201
212
|
getProvenL2EpochNumber() {
|
|
202
|
-
return this
|
|
213
|
+
return __classPrivateFieldGet(this, _BlockStore_lastProvenL2Epoch, "f").getAsync();
|
|
203
214
|
}
|
|
204
215
|
setProvenL2EpochNumber(epochNumber) {
|
|
205
|
-
return this
|
|
206
|
-
}
|
|
207
|
-
#computeBlockRange(start, limit) {
|
|
208
|
-
if (limit < 1) {
|
|
209
|
-
throw new Error(`Invalid limit: ${limit}`);
|
|
210
|
-
}
|
|
211
|
-
if (start < INITIAL_L2_BLOCK_NUM) {
|
|
212
|
-
throw new Error(`Invalid start: ${start}`);
|
|
213
|
-
}
|
|
214
|
-
return {
|
|
215
|
-
start,
|
|
216
|
-
limit
|
|
217
|
-
};
|
|
216
|
+
return __classPrivateFieldGet(this, _BlockStore_lastProvenL2Epoch, "f").set(epochNumber);
|
|
218
217
|
}
|
|
219
218
|
}
|
|
219
|
+
_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) {
|
|
220
|
+
if (limit < 1) {
|
|
221
|
+
throw new Error(`Invalid limit: ${limit}`);
|
|
222
|
+
}
|
|
223
|
+
if (start < INITIAL_L2_BLOCK_NUM) {
|
|
224
|
+
throw new Error(`Invalid start: ${start}`);
|
|
225
|
+
}
|
|
226
|
+
return { start, limit };
|
|
227
|
+
};
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJjaGl2ZXIva3ZfYXJjaGl2ZXJfc3RvcmUvYmxvY2tfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFnQixPQUFPLEVBQUUsV0FBVyxFQUE4QixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2SCxPQUFPLEVBQUUsc0JBQXNCLEVBQXFCLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFhckQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQXdCckIsWUFBb0IsRUFBcUI7O1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBdkJ6QyxxQ0FBcUM7UUFDckMscUNBQTZDO1FBRTdDLG1DQUFtQztRQUNuQywwQ0FBNEM7UUFFNUMsK0VBQStFO1FBQy9FLGlEQUFpRDtRQUVqRCxzREFBc0Q7UUFDdEQsZ0RBQWdEO1FBRWhELHNEQUFzRDtRQUN0RCxnREFBZ0Q7UUFFaEQsOEVBQThFO1FBQzlFLHNDQUFpRDtRQUVqRCxrRkFBa0Y7UUFDbEYsNENBQXVEO1FBRXZELDBCQUFPLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFDO1FBRzFDLHVCQUFBLElBQUksc0JBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFBLENBQUM7UUFDN0MsdUJBQUEsSUFBSSwyQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxNQUFBLENBQUM7UUFDeEQsdUJBQUEsSUFBSSx1QkFBWSxFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLE1BQUEsQ0FBQztRQUNoRCx1QkFBQSxJQUFJLDZCQUFrQixFQUFF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
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ContractClassPublic, type ExecutablePrivateFunctionWithMembershipProof, Fr, type UnconstrainedFunctionWithMembershipProof } from '@aztec/circuits.js';
|
|
2
|
+
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
|
+
/**
|
|
4
|
+
* LMDB implementation of the ArchiverDataStore interface.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ContractClassStore {
|
|
7
|
+
#private;
|
|
8
|
+
private db;
|
|
9
|
+
constructor(db: AztecAsyncKVStore);
|
|
10
|
+
addContractClass(contractClass: ContractClassPublic, bytecodeCommitment: Fr, blockNumber: number): Promise<void>;
|
|
11
|
+
deleteContractClasses(contractClass: ContractClassPublic, blockNumber: number): Promise<void>;
|
|
12
|
+
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
13
|
+
getBytecodeCommitment(id: Fr): Promise<Fr | undefined>;
|
|
14
|
+
getContractClassIds(): Promise<Fr[]>;
|
|
15
|
+
addFunctions(contractClassId: Fr, newPrivateFunctions: ExecutablePrivateFunctionWithMembershipProof[], newUnconstrainedFunctions: UnconstrainedFunctionWithMembershipProof[]): Promise<boolean>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=contract_class_store.d.ts.map
|
|
@@ -0,0 +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,EACL,KAAK,mBAAmB,EAExB,KAAK,4CAA4C,EACjD,EAAE,EAEF,KAAK,wCAAwC,EAE9C,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAExE;;GAEG;AACH,qBAAa,kBAAkB;;IAIjB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,iBAAiB;IAKnC,gBAAgB,CACpB,aAAa,EAAE,mBAAmB,EAClC,kBAAkB,EAAE,EAAE,EACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAQV,qBAAqB,CAAC,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7F,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAKlE,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAKtD,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIpC,YAAY,CAChB,eAAe,EAAE,EAAE,EACnB,mBAAmB,EAAE,4CAA4C,EAAE,EACnE,yBAAyB,EAAE,wCAAwC,EAAE,GACpE,OAAO,CAAC,OAAO,CAAC;CA4BpB"}
|