@aztec-labs/archiver 6.0.0-rc.1 → 6.0.0-rc.2
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 +7 -1
- package/dest/errors.d.ts +20 -1
- package/dest/errors.d.ts.map +1 -1
- package/dest/errors.js +22 -0
- package/dest/l1/bin/retrieve-calldata.js +14 -4
- package/dest/l1/calldata_retriever.d.ts +15 -17
- package/dest/l1/calldata_retriever.d.ts.map +1 -1
- package/dest/l1/calldata_retriever.js +2 -9
- package/dest/l1/data_retrieval.d.ts +7 -3
- package/dest/l1/data_retrieval.d.ts.map +1 -1
- package/dest/l1/data_retrieval.js +14 -9
- package/dest/modules/data_store_updater.js +5 -5
- package/dest/modules/l1_synchronizer.d.ts +1 -1
- package/dest/modules/l1_synchronizer.d.ts.map +1 -1
- package/dest/modules/l1_synchronizer.js +228 -191
- package/dest/modules/validation.d.ts +14 -8
- package/dest/modules/validation.d.ts.map +1 -1
- package/dest/modules/validation.js +72 -22
- package/dest/store/block_store.d.ts +2 -1
- package/dest/store/block_store.d.ts.map +1 -1
- package/dest/store/block_store.js +34 -14
- package/dest/store/contract_class_store.d.ts +1 -1
- package/dest/store/contract_class_store.d.ts.map +1 -1
- package/dest/store/contract_class_store.js +4 -2
- package/dest/store/contract_instance_store.d.ts +5 -4
- package/dest/store/contract_instance_store.d.ts.map +1 -1
- package/dest/store/contract_instance_store.js +20 -9
- package/dest/test/fake_l1_state.d.ts +3 -1
- package/dest/test/fake_l1_state.d.ts.map +1 -1
- package/dest/test/fake_l1_state.js +4 -4
- package/package.json +13 -13
- package/src/errors.ts +32 -0
- package/src/l1/bin/retrieve-calldata.ts +15 -4
- package/src/l1/calldata_retriever.ts +14 -20
- package/src/l1/data_retrieval.ts +22 -14
- package/src/modules/data_store_updater.ts +4 -4
- package/src/modules/l1_synchronizer.ts +294 -261
- package/src/modules/validation.ts +87 -28
- package/src/store/block_store.ts +41 -13
- package/src/store/contract_class_store.ts +4 -4
- package/src/store/contract_instance_store.ts +24 -17
- package/src/test/fake_l1_state.ts +9 -3
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { compactArray } from '@aztec-labs/foundation/collection';
|
|
2
|
-
import { getAttestationInfoFromPayload } from '@aztec-labs/stdlib/block';
|
|
2
|
+
import { CommitteeAttestation, getAttestationInfoFromPayload } from '@aztec-labs/stdlib/block';
|
|
3
3
|
import { computeQuorum, getEpochAtSlot } from '@aztec-labs/stdlib/epoch-helpers';
|
|
4
4
|
import { ConsensusPayload } from '@aztec-labs/stdlib/p2p';
|
|
5
|
+
import { CheckpointAttestationsDecodeError } from '../errors.js';
|
|
5
6
|
/**
|
|
6
7
|
* Extracts attestation information from a published checkpoint.
|
|
7
8
|
* Returns info for each attestation, preserving array indices.
|
|
@@ -10,11 +11,40 @@ import { ConsensusPayload } from '@aztec-labs/stdlib/p2p';
|
|
|
10
11
|
return getAttestationInfoFromPayload(payload, attestations);
|
|
11
12
|
}
|
|
12
13
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
|
|
14
|
+
* Decodes and validates the attestations of a checkpoint from L1 calldata only, so an invalid checkpoint can be
|
|
15
|
+
* rejected before its blobs are fetched. The tuple is decoded against the epoch's committee size, and not at all
|
|
16
|
+
* during an escape hatch, where the proposer may post an arbitrary tuple.
|
|
17
|
+
*
|
|
18
|
+
* @throws CheckpointAttestationsDecodeError if the tuple does not decode for the epoch committee.
|
|
19
|
+
*/ export async function resolveCheckpointAttestationsFromCalldata(checkpoint, epochCache, constants, signatureContext, logger) {
|
|
20
|
+
const slot = checkpoint.header.slotNumber;
|
|
21
|
+
const epoch = getEpochAtSlot(slot, constants);
|
|
22
|
+
// Read the hatch flag from the same cache entry as the committee, so both come from one snapshot.
|
|
23
|
+
const { committee, seed, isEscapeHatchOpen } = await epochCache.getCommitteeForEpoch(epoch);
|
|
24
|
+
if (isEscapeHatchOpen) {
|
|
25
|
+
logger?.warn(`Escape hatch open for epoch ${epoch} at slot ${slot}, skipping attestations of checkpoint ${checkpoint.checkpointNumber}`);
|
|
26
|
+
return {
|
|
27
|
+
attestations: [],
|
|
28
|
+
validationResult: {
|
|
29
|
+
valid: true
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (!committee || committee.length === 0) {
|
|
34
|
+
logger?.warn(`No committee found for epoch ${epoch} at slot ${slot}. Accepting checkpoint ${checkpoint.checkpointNumber} without validation.`);
|
|
35
|
+
return {
|
|
36
|
+
attestations: [],
|
|
37
|
+
validationResult: {
|
|
38
|
+
valid: true
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
let attestations;
|
|
43
|
+
try {
|
|
44
|
+
attestations = CommitteeAttestation.fromPacked(checkpoint.verbatimAttestations, committee.length);
|
|
45
|
+
} catch (err) {
|
|
46
|
+
throw new CheckpointAttestationsDecodeError(checkpoint.checkpointNumber, epoch, committee.length, err);
|
|
47
|
+
}
|
|
18
48
|
const payload = new ConsensusPayload(checkpoint.header, checkpoint.archiveRoot, checkpoint.feeAssetPriceModifier, signatureContext);
|
|
19
49
|
const checkpointInfo = {
|
|
20
50
|
archive: checkpoint.archiveRoot,
|
|
@@ -23,21 +53,53 @@ import { ConsensusPayload } from '@aztec-labs/stdlib/p2p';
|
|
|
23
53
|
checkpointNumber: checkpoint.checkpointNumber,
|
|
24
54
|
timestamp: checkpoint.header.timestamp
|
|
25
55
|
};
|
|
26
|
-
|
|
56
|
+
const validationResult = validateAttestationsAgainstCommittee(payload, attestations, checkpoint.verbatimAttestations, checkpointInfo, {
|
|
57
|
+
committee,
|
|
58
|
+
seed,
|
|
59
|
+
epoch
|
|
60
|
+
}, logger);
|
|
61
|
+
return {
|
|
62
|
+
attestations,
|
|
63
|
+
validationResult
|
|
64
|
+
};
|
|
27
65
|
}
|
|
28
66
|
/**
|
|
29
67
|
* Core attestation validation over a consensus payload, its attestations, and checkpoint metadata --
|
|
30
68
|
* independent of whether the checkpoint's blocks have been decoded from blobs. Returns true if the
|
|
31
69
|
* attestations are valid and sufficient, false otherwise.
|
|
32
70
|
*/ export async function validateAttestations(payload, attestations, verbatimAttestations, checkpointInfo, epochCache, constants, logger) {
|
|
71
|
+
const slot = payload.header.slotNumber;
|
|
72
|
+
const epoch = getEpochAtSlot(slot, constants);
|
|
73
|
+
const { committee, seed, isEscapeHatchOpen } = await epochCache.getCommitteeForEpoch(epoch);
|
|
74
|
+
if (isEscapeHatchOpen) {
|
|
75
|
+
logger?.warn(`Escape hatch open for epoch ${epoch} at slot ${slot}, skipping checkpoint validation`);
|
|
76
|
+
return {
|
|
77
|
+
valid: true
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (!committee || committee.length === 0) {
|
|
81
|
+
logger?.warn(`No committee found for epoch ${epoch} at slot ${slot}. Accepting checkpoint without validation.`, {
|
|
82
|
+
checkpointNumber: checkpointInfo.checkpointNumber,
|
|
83
|
+
slot,
|
|
84
|
+
epoch
|
|
85
|
+
});
|
|
86
|
+
return {
|
|
87
|
+
valid: true
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return validateAttestationsAgainstCommittee(payload, attestations, verbatimAttestations, checkpointInfo, {
|
|
91
|
+
committee,
|
|
92
|
+
seed,
|
|
93
|
+
epoch
|
|
94
|
+
}, logger);
|
|
95
|
+
}
|
|
96
|
+
/** Validates decoded attestations against a known, non-empty epoch committee. */ function validateAttestationsAgainstCommittee(payload, attestations, verbatimAttestations, checkpointInfo, { committee, seed, epoch }, logger) {
|
|
33
97
|
const attestorInfos = getAttestationInfoFromPayload(payload, attestations);
|
|
34
98
|
const attestors = compactArray(attestorInfos.map((info)=>'address' in info ? info.address : undefined));
|
|
35
99
|
const headerHash = payload.header.hash();
|
|
36
100
|
const archiveRoot = payload.archive.toString();
|
|
37
101
|
const slot = payload.header.slotNumber;
|
|
38
102
|
const checkpointNumber = checkpointInfo.checkpointNumber;
|
|
39
|
-
const epoch = getEpochAtSlot(slot, constants);
|
|
40
|
-
const { committee, seed } = await epochCache.getCommitteeForEpoch(epoch);
|
|
41
103
|
const logData = {
|
|
42
104
|
checkpointNumber,
|
|
43
105
|
slot,
|
|
@@ -46,23 +108,11 @@ import { ConsensusPayload } from '@aztec-labs/stdlib/p2p';
|
|
|
46
108
|
archiveRoot
|
|
47
109
|
};
|
|
48
110
|
logger?.debug(`Validating attestations for checkpoint ${checkpointNumber} at slot ${slot} in epoch ${epoch}`, {
|
|
49
|
-
committee:
|
|
111
|
+
committee: committee.map((member)=>member.toString()),
|
|
50
112
|
recoveredAttestors: attestorInfos,
|
|
51
113
|
postedAttestations: attestations.map((a)=>(a.address.isZero() ? a.signature : a.address).toString()),
|
|
52
114
|
...logData
|
|
53
115
|
});
|
|
54
|
-
if (!committee || committee.length === 0) {
|
|
55
|
-
logger?.warn(`No committee found for epoch ${epoch} at slot ${slot}. Accepting checkpoint without validation.`, logData);
|
|
56
|
-
return {
|
|
57
|
-
valid: true
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
if (await epochCache.isEscapeHatchOpen(epoch)) {
|
|
61
|
-
logger?.warn(`Escape hatch open for epoch ${epoch} at slot ${slot}, skipping checkpoint validation`);
|
|
62
|
-
return {
|
|
63
|
-
valid: true
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
116
|
const requiredAttestationCount = computeQuorum(committee.length);
|
|
67
117
|
const failedValidationResult = (reason)=>({
|
|
68
118
|
valid: false,
|
|
@@ -110,6 +110,7 @@ export declare class BlockStore {
|
|
|
110
110
|
*/
|
|
111
111
|
private validateCheckpointBlocks;
|
|
112
112
|
private addBlockToDatabase;
|
|
113
|
+
private assertTxsNotInAncestors;
|
|
113
114
|
private deleteBlock;
|
|
114
115
|
private deleteTxEffect;
|
|
115
116
|
/**
|
|
@@ -328,4 +329,4 @@ export declare class BlockStore {
|
|
|
328
329
|
private advanceSynchedL1BlockNumber;
|
|
329
330
|
private rejectedCheckpointFromStorage;
|
|
330
331
|
}
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZS9ibG9ja19zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQXlCLFVBQVUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hILE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU16RCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBNkMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsS0FBSyxTQUFTLEVBQ2QsU0FBUyxFQUVULG9CQUFvQixFQUVwQixPQUFPLEVBQ1AsS0FBSyxVQUFVLEVBRWYsS0FBSyx3QkFBd0IsRUFHOUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBRUwsS0FBSyxjQUFjLEVBQ25CLEtBQUssb0JBQW9CLEVBQ3pCLGVBQWUsRUFDZixLQUFLLHNCQUFzQixFQUMzQixLQUFLLHVCQUF1QixFQUM1QixtQkFBbUIsRUFDcEIsTUFBTSwrQkFBK0IsQ0FBQztBQUd2QyxPQUFPLEVBRUwsS0FBSyxlQUFlLEVBRXBCLE1BQU0sRUFHUCxNQUFNLHVCQUF1QixDQUFDO0FBcUIvQixZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RSwyRUFBMkU7QUFDM0UsTUFBTSxNQUFNLFVBQVUsR0FBRztJQUN2QixXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ3pCLFNBQVMsRUFBRSxTQUFTLENBQUM7SUFDckIsY0FBYyxFQUFFLE1BQU0sQ0FBQztDQUN4QixDQUFDO0FBWUYsb0RBQW9EO0FBQ3BELE1BQU0sTUFBTSx3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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../src/store/block_store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAyB,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACxH,OAAO,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAC;AAMzD,OAAO,KAAK,EAAE,iBAAiB,EAA6C,MAAM,sBAAsB,CAAC;AACzG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EACL,KAAK,SAAS,EACd,SAAS,EAET,oBAAoB,EAEpB,OAAO,EACP,KAAK,UAAU,EAEf,KAAK,wBAAwB,EAG9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,mBAAmB,EACpB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAEL,KAAK,eAAe,EAEpB,MAAM,EAGP,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../src/store/block_store.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { Checkpoint, L1PublishedData } from '@aztec-labs/stdlib/checkpoint';
|
|
|
11
11
|
import { CheckpointHeader } from '@aztec-labs/stdlib/rollup';
|
|
12
12
|
import { AppendOnlyTreeSnapshot } from '@aztec-labs/stdlib/trees';
|
|
13
13
|
import { BlockHeader, TxHash, deserializeIndexedTxEffect, serializeIndexedTxEffect } from '@aztec-labs/stdlib/tx';
|
|
14
|
-
import { BlockArchiveNotConsistentError, BlockCheckpointNumberNotSequentialError, BlockIndexNotSequentialError, BlockNotFoundError, BlockNumberNotSequentialError, CannotOverwriteCheckpointedBlockError, CheckpointNotFoundError, CheckpointNumberNotSequentialError, InitialCheckpointNumberNotSequentialError, NoProposedCheckpointToPromoteError, ProposedCheckpointArchiveRootMismatchError, ProposedCheckpointNotSequentialError, ProposedCheckpointPromotionNotSequentialError, UndecodableCheckpointAttestationsError } from '../errors.js';
|
|
14
|
+
import { BlockArchiveNotConsistentError, BlockCheckpointNumberNotSequentialError, BlockIndexNotSequentialError, BlockNotFoundError, BlockNumberNotSequentialError, CannotOverwriteCheckpointedBlockError, CheckpointNotFoundError, CheckpointNumberNotSequentialError, DuplicateTxHashError, InitialCheckpointNumberNotSequentialError, NoProposedCheckpointToPromoteError, ProposedCheckpointArchiveRootMismatchError, ProposedCheckpointNotSequentialError, ProposedCheckpointPromotionNotSequentialError, UndecodableCheckpointAttestationsError } from '../errors.js';
|
|
15
15
|
import { prepareBlockTxEffectsTreeData } from './tx_effect_tree_data.js';
|
|
16
16
|
/**
|
|
17
17
|
* LMDB-based block storage for the archiver.
|
|
@@ -311,6 +311,7 @@ import { prepareBlockTxEffectsTreeData } from './tx_effect_tree_data.js';
|
|
|
311
311
|
checkpointNumber,
|
|
312
312
|
indexWithinCheckpoint
|
|
313
313
|
});
|
|
314
|
+
await this.assertTxsNotInAncestors(block.body.txEffects.map((tx)=>tx.txHash), block.number);
|
|
314
315
|
for(let i = 0; i < block.body.txEffects.length; i++){
|
|
315
316
|
const txEffect = {
|
|
316
317
|
data: block.body.txEffects[i],
|
|
@@ -326,6 +327,26 @@ import { prepareBlockTxEffectsTreeData } from './tx_effect_tree_data.js';
|
|
|
326
327
|
await this.#blockHashIndex.set(blockHash.toString(), block.number);
|
|
327
328
|
await this.#blockArchiveIndex.set(block.archive.root.toString(), block.number);
|
|
328
329
|
}
|
|
330
|
+
/**
|
|
331
|
+
* Throws if any of the txs is already owned by a stored block below `blockNumber`. Stored blocks below the one being
|
|
332
|
+
* inserted are its ancestors (archive chaining is enforced on insert), so the tx would be included twice and the new
|
|
333
|
+
* block would take over the ancestor's tx effect entry. An owner at the same or a higher height is a block being
|
|
334
|
+
* replaced (a losing local proposal, a re-presented checkpoint), so its entry is overwritten. This relies on replaced
|
|
335
|
+
* blocks at lower heights having been removed via deleteBlock first (as the updater does before inserting
|
|
336
|
+
* checkpoints), which also deletes their tx effect entries.
|
|
337
|
+
*/ async assertTxsNotInAncestors(txHashes, blockNumber) {
|
|
338
|
+
const existing = await this.#txEffects.getManyAsync(txHashes.map((txHash)=>txHash.toString()));
|
|
339
|
+
for(let i = 0; i < txHashes.length; i++){
|
|
340
|
+
const stored = existing[i];
|
|
341
|
+
if (stored === undefined) {
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
const owner = readTxLocation(stored).blockNumber;
|
|
345
|
+
if (owner < blockNumber) {
|
|
346
|
+
throw new DuplicateTxHashError(txHashes[i], blockNumber, owner);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
329
350
|
/** Deletes a block and all associated data (tx effects, indices). */ async deleteBlock(blockNumber, blockStorage) {
|
|
330
351
|
// Delete the block from the main blocks map
|
|
331
352
|
await this.#blocks.delete(blockNumber);
|
|
@@ -925,19 +946,7 @@ import { prepareBlockTxEffectsTreeData } from './tx_effect_tree_data.js';
|
|
|
925
946
|
* @returns The owning block hash, block number, and index of the tx.
|
|
926
947
|
*/ async getTxLocation(txHash) {
|
|
927
948
|
const txEffect = await this.#txEffects.getAsync(txHash.toString());
|
|
928
|
-
|
|
929
|
-
return undefined;
|
|
930
|
-
}
|
|
931
|
-
// Read only the IndexedTxEffect header (`blockHash(32) + l2BlockNumber(4) + txIndexInBlock(4)`); the
|
|
932
|
-
// large tail (the full TxEffect with logs etc.) is irrelevant here.
|
|
933
|
-
const view = Buffer.from(txEffect.buffer, txEffect.byteOffset, txEffect.byteLength);
|
|
934
|
-
const l2BlockNumber = view.readUInt32BE(32);
|
|
935
|
-
const txIndexInBlock = view.readUInt32BE(36);
|
|
936
|
-
return {
|
|
937
|
-
blockNumber: BlockNumber(l2BlockNumber),
|
|
938
|
-
blockHash: BlockHash.fromBuffer(view.subarray(0, 32)),
|
|
939
|
-
txIndexInBlock
|
|
940
|
-
};
|
|
949
|
+
return txEffect ? readTxLocation(txEffect) : undefined;
|
|
941
950
|
}
|
|
942
951
|
/**
|
|
943
952
|
* Batched, partial deserializer that fetches `noteHashes` and `nullifiers` (all of them) for the given
|
|
@@ -1314,3 +1323,14 @@ import { prepareBlockTxEffectsTreeData } from './tx_effect_tree_data.js';
|
|
|
1314
1323
|
};
|
|
1315
1324
|
}
|
|
1316
1325
|
}
|
|
1326
|
+
/**
|
|
1327
|
+
* Reads only the header of a serialized IndexedTxEffect (`blockHash(32) + l2BlockNumber(4) + txIndexInBlock(4)`),
|
|
1328
|
+
* skipping the large tail (the full TxEffect with logs etc.).
|
|
1329
|
+
*/ function readTxLocation(txEffect) {
|
|
1330
|
+
const view = Buffer.from(txEffect.buffer, txEffect.byteOffset, txEffect.byteLength);
|
|
1331
|
+
return {
|
|
1332
|
+
blockNumber: BlockNumber(view.readUInt32BE(32)),
|
|
1333
|
+
blockHash: BlockHash.fromBuffer(view.subarray(0, 32)),
|
|
1334
|
+
txIndexInBlock: view.readUInt32BE(36)
|
|
1335
|
+
};
|
|
1336
|
+
}
|
|
@@ -28,4 +28,4 @@ export declare class ContractClassStore {
|
|
|
28
28
|
getBytecodeCommitment(id: Fr): Promise<Fr | undefined>;
|
|
29
29
|
getContractClassIds(): Promise<Fr[]>;
|
|
30
30
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfY2xhc3Nfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZS9jb250cmFjdF9jbGFzc19zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHekQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0sc0JBQXNCLENBQUM7QUFFN0UsT0FBTyxLQUFLLEVBQ1YsbUJBQW1CLEVBRW5CLGlDQUFpQyxFQUNsQyxNQUFNLDZCQUE2QixDQUFDO0FBRXJDOztHQUVHO0FBQ0gscUJBQWEsa0JBQWtCOztJQUlqQixPQUFPLENBQUMsRUFBRTtJQUF0QixZQUFvQixFQUFFLEVBQUUsaUJBQWlCLEVBR3hDO0lBRUQ7Ozs7O09BS0c7SUFDRyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsaUNBQWlDLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHekc7SUFFRDs7Ozs7T0FLRztJQUNHLHFCQUFxQixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUc5RjtJQUVLLGdCQUFnQixDQUNwQixhQUFhLEVBQUUsbUJBQW1CLEVBQ2xDLGtCQUFrQixFQUFFLEVBQUUsRUFDdEIsV0FBVyxFQUFFLE1BQU0sR0FDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQXdCZjtJQUVLLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FhaEc7SUFFSyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsQ0FHdkU7SUFFSyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBRzNEO0lBRUssbUJBQW1CLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBRXpDO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_class_store.d.ts","sourceRoot":"","sources":["../../src/store/contract_class_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAC;AAGzD,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,sBAAsB,CAAC;AAE7E,OAAO,KAAK,EACV,mBAAmB,EAEnB,iCAAiC,EAClC,MAAM,6BAA6B,CAAC;AAErC;;GAEG;AACH,qBAAa,kBAAkB;;IAIjB,OAAO,CAAC,EAAE;IAAtB,YAAoB,EAAE,EAAE,iBAAiB,EAGxC;IAED;;;;;OAKG;IACG,kBAAkB,CAAC,IAAI,EAAE,iCAAiC,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"contract_class_store.d.ts","sourceRoot":"","sources":["../../src/store/contract_class_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAC;AAGzD,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,sBAAsB,CAAC;AAE7E,OAAO,KAAK,EACV,mBAAmB,EAEnB,iCAAiC,EAClC,MAAM,6BAA6B,CAAC;AAErC;;GAEG;AACH,qBAAa,kBAAkB;;IAIjB,OAAO,CAAC,EAAE;IAAtB,YAAoB,EAAE,EAAE,iBAAiB,EAGxC;IAED;;;;;OAKG;IACG,kBAAkB,CAAC,IAAI,EAAE,iCAAiC,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzG;IAED;;;;;OAKG;IACG,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9F;IAEK,gBAAgB,CACpB,aAAa,EAAE,mBAAmB,EAClC,kBAAkB,EAAE,EAAE,EACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAwBf;IAEK,mBAAmB,CAAC,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAahG;IAEK,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAGvE;IAEK,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAG3D;IAEK,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAEzC;CACF"}
|
|
@@ -19,7 +19,8 @@ import { isProtocolContractClass } from '@aztec-labs/protocol-contracts';
|
|
|
19
19
|
* @param blockNumber - L2 block number where the classes were registered.
|
|
20
20
|
* @returns True if every insert succeeded.
|
|
21
21
|
*/ async addContractClasses(data, blockNumber) {
|
|
22
|
-
|
|
22
|
+
await Promise.all(data.map((c)=>this.addContractClass(c, c.publicBytecodeCommitment, blockNumber)));
|
|
23
|
+
return true;
|
|
23
24
|
}
|
|
24
25
|
/**
|
|
25
26
|
* Removes multiple contract classes from the store, but only if they were registered at or after the given block.
|
|
@@ -27,7 +28,8 @@ import { isProtocolContractClass } from '@aztec-labs/protocol-contracts';
|
|
|
27
28
|
* @param blockNumber - Lower bound on the block number at which the classes were registered.
|
|
28
29
|
* @returns True if every delete succeeded.
|
|
29
30
|
*/ async deleteContractClasses(data, blockNumber) {
|
|
30
|
-
|
|
31
|
+
await Promise.all(data.map((c)=>this.deleteContractClass(c, blockNumber)));
|
|
32
|
+
return true;
|
|
31
33
|
}
|
|
32
34
|
async addContractClass(contractClass, bytecodeCommitment, blockNumber) {
|
|
33
35
|
await this.db.transactionAsync(async ()=>{
|
|
@@ -19,11 +19,12 @@ export declare class ContractInstanceStore {
|
|
|
19
19
|
*/
|
|
20
20
|
addContractInstances(data: ContractInstanceWithAddress[], blockNumber: number): Promise<boolean>;
|
|
21
21
|
/**
|
|
22
|
-
* Removes multiple contract instances from the store.
|
|
22
|
+
* Removes multiple contract instances from the store, but only those that were published at the given block.
|
|
23
23
|
* @param data - Contract instances to delete.
|
|
24
|
+
* @param blockNumber - L2 block being unwound, which must be the one that published each deleted instance.
|
|
24
25
|
* @returns True if every delete succeeded.
|
|
25
26
|
*/
|
|
26
|
-
deleteContractInstances(data: ContractInstanceWithAddress[]): Promise<boolean>;
|
|
27
|
+
deleteContractInstances(data: ContractInstanceWithAddress[], blockNumber: number): Promise<boolean>;
|
|
27
28
|
/**
|
|
28
29
|
* Adds multiple contract instance updates to the store.
|
|
29
30
|
* @param data - Contract instance updates to add.
|
|
@@ -41,7 +42,7 @@ export declare class ContractInstanceStore {
|
|
|
41
42
|
*/
|
|
42
43
|
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], timestamp: UInt64, blockNumber: BlockNumber): Promise<boolean>;
|
|
43
44
|
addContractInstance(contractInstance: ContractInstanceWithAddress, blockNumber: number): Promise<void>;
|
|
44
|
-
deleteContractInstance(contractInstance: ContractInstanceWithAddress): Promise<void>;
|
|
45
|
+
deleteContractInstance(contractInstance: ContractInstanceWithAddress, blockNumber: number): Promise<void>;
|
|
45
46
|
private getUpdateRangeKey;
|
|
46
47
|
private getUpdateKey;
|
|
47
48
|
addContractInstanceUpdate(contractInstanceUpdate: ContractInstanceUpdateWithAddress, timestamp: UInt64, blockNumber: BlockNumber, logIndex: number): Promise<void>;
|
|
@@ -50,4 +51,4 @@ export declare class ContractInstanceStore {
|
|
|
50
51
|
getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
51
52
|
getContractInstanceDeploymentBlockNumber(address: AztecAddress): Promise<number | undefined>;
|
|
52
53
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfaW5zdGFuY2Vfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZS9jb250cmFjdF9pbnN0YW5jZV9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsS0FBSyxpQ0FBaUMsRUFDdEMsS0FBSywyQkFBMkIsRUFHakMsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQWN2RDs7R0FFRztBQUNILHFCQUFhLHFCQUFxQjs7SUFLcEIsT0FBTyxDQUFDLEVBQUU7SUFBdEIsWUFBb0IsRUFBRSxFQUFFLGlCQUFpQixFQUl4QztJQUVEOzs7OztPQUtHO0lBQ0csb0JBQW9CLENBQUMsSUFBSSxFQUFFLDJCQUEyQixFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBR3JHO0lBRUQ7Ozs7O09BS0c7SUFDRyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHeEc7SUFFRDs7Ozs7O09BTUc7SUFDRywwQkFBMEIsQ0FDOUIsSUFBSSxFQUFFLGlDQUFpQyxFQUFFLEVBQ3pDLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLFdBQVcsRUFBRSxXQUFXLEdBQ3ZCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FLbEI7SUFFRDs7Ozs7O09BTUc7SUFDRyw2QkFBNkIsQ0FDakMsSUFBSSxFQUFFLGlDQUFpQyxFQUFFLEVBQ3pDLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLFdBQVcsRUFBRSxXQUFXLEdBQ3ZCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FLbEI7SUFFRCxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRSwyQkFBMkIsRUFBRSxXQUFXLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FzQnJHO0lBRUQsc0JBQXNCLENBQUMsZ0JBQWdCLEVBQUUsMkJBQTJCLEVBQUUsV0FBVyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBZ0J4RztJQUVELE9BQU8sQ0FBQyxpQkFBaUI7SUFJekIsT0FBTyxDQUFDLFlBQVk7SUFTcEIseUJBQXlCLENBQ3ZCLHNCQUFzQixFQUFFLGlDQUFpQyxFQUN6RCxTQUFTLEVBQUUsTUFBTSxFQUNqQixXQUFXLEVBQUUsV0FBVyxFQUN4QixRQUFRLEVBQUUsTUFBTSxHQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FLZjtJQUVELDRCQUE0QixDQUMxQixzQkFBc0IsRUFBRSxpQ0FBaUMsRUFDekQsU0FBUyxFQUFFLE1BQU0sRUFDakIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsUUFBUSxFQUFFLE1BQU0sR0FDZixPQUFPLENBQUMsSUFBSSxDQUFDLENBSWY7SUFFSyxpQ0FBaUMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBbUJsSDtJQUVLLG1CQUFtQixDQUN2QixPQUFPLEVBQUUsWUFBWSxFQUNyQixTQUFTLEVBQUUsTUFBTSxHQUNoQixPQUFPLENBQUMsMkJBQTJCLEdBQUcsU0FBUyxDQUFDLENBYWxEO0lBRUQsd0NBQXdDLENBQUMsT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUUzRjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_instance_store.d.ts","sourceRoot":"","sources":["../../src/store/contract_instance_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,sBAAsB,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EACL,KAAK,iCAAiC,EACtC,KAAK,2BAA2B,EAGjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAcvD;;GAEG;AACH,qBAAa,qBAAqB;;IAKpB,OAAO,CAAC,EAAE;IAAtB,YAAoB,EAAE,EAAE,iBAAiB,EAIxC;IAED;;;;;OAKG;IACG,oBAAoB,CAAC,IAAI,EAAE,2BAA2B,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"contract_instance_store.d.ts","sourceRoot":"","sources":["../../src/store/contract_instance_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,sBAAsB,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EACL,KAAK,iCAAiC,EACtC,KAAK,2BAA2B,EAGjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAcvD;;GAEG;AACH,qBAAa,qBAAqB;;IAKpB,OAAO,CAAC,EAAE;IAAtB,YAAoB,EAAE,EAAE,iBAAiB,EAIxC;IAED;;;;;OAKG;IACG,oBAAoB,CAAC,IAAI,EAAE,2BAA2B,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGrG;IAED;;;;;OAKG;IACG,uBAAuB,CAAC,IAAI,EAAE,2BAA2B,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxG;IAED;;;;;;OAMG;IACG,0BAA0B,CAC9B,IAAI,EAAE,iCAAiC,EAAE,EACzC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,OAAO,CAAC,CAKlB;IAED;;;;;;OAMG;IACG,6BAA6B,CACjC,IAAI,EAAE,iCAAiC,EAAE,EACzC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,OAAO,CAAC,CAKlB;IAED,mBAAmB,CAAC,gBAAgB,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBrG;IAED,sBAAsB,CAAC,gBAAgB,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBxG;IAED,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,YAAY;IASpB,yBAAyB,CACvB,sBAAsB,EAAE,iCAAiC,EACzD,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAKf;IAED,4BAA4B,CAC1B,sBAAsB,EAAE,iCAAiC,EACzD,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAIf;IAEK,iCAAiC,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAmBlH;IAEK,mBAAmB,CACvB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAalD;IAED,wCAAwC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE3F;CACF"}
|
|
@@ -27,14 +27,17 @@ import { SerializableContractInstance, SerializableContractInstanceUpdate } from
|
|
|
27
27
|
* @param blockNumber - L2 block number where the instances were deployed.
|
|
28
28
|
* @returns True if every insert succeeded.
|
|
29
29
|
*/ async addContractInstances(data, blockNumber) {
|
|
30
|
-
|
|
30
|
+
await Promise.all(data.map((c)=>this.addContractInstance(c, blockNumber)));
|
|
31
|
+
return true;
|
|
31
32
|
}
|
|
32
33
|
/**
|
|
33
|
-
* Removes multiple contract instances from the store.
|
|
34
|
+
* Removes multiple contract instances from the store, but only those that were published at the given block.
|
|
34
35
|
* @param data - Contract instances to delete.
|
|
36
|
+
* @param blockNumber - L2 block being unwound, which must be the one that published each deleted instance.
|
|
35
37
|
* @returns True if every delete succeeded.
|
|
36
|
-
*/ async deleteContractInstances(data) {
|
|
37
|
-
|
|
38
|
+
*/ async deleteContractInstances(data, blockNumber) {
|
|
39
|
+
await Promise.all(data.map((c)=>this.deleteContractInstance(c, blockNumber)));
|
|
40
|
+
return true;
|
|
38
41
|
}
|
|
39
42
|
/**
|
|
40
43
|
* Adds multiple contract instance updates to the store.
|
|
@@ -43,7 +46,8 @@ import { SerializableContractInstance, SerializableContractInstanceUpdate } from
|
|
|
43
46
|
* @param blockNumber - L2 block that carried the updates.
|
|
44
47
|
* @returns True if every insert succeeded.
|
|
45
48
|
*/ async addContractInstanceUpdates(data, timestamp, blockNumber) {
|
|
46
|
-
|
|
49
|
+
await Promise.all(data.map((update, logIndex)=>this.addContractInstanceUpdate(update, timestamp, blockNumber, logIndex)));
|
|
50
|
+
return true;
|
|
47
51
|
}
|
|
48
52
|
/**
|
|
49
53
|
* Removes multiple contract instance updates from the store.
|
|
@@ -52,7 +56,8 @@ import { SerializableContractInstance, SerializableContractInstanceUpdate } from
|
|
|
52
56
|
* @param blockNumber - L2 block that carried the updates.
|
|
53
57
|
* @returns True if every delete succeeded.
|
|
54
58
|
*/ async deleteContractInstanceUpdates(data, timestamp, blockNumber) {
|
|
55
|
-
|
|
59
|
+
await Promise.all(data.map((update, logIndex)=>this.deleteContractInstanceUpdate(update, timestamp, blockNumber, logIndex)));
|
|
60
|
+
return true;
|
|
56
61
|
}
|
|
57
62
|
addContractInstance(contractInstance, blockNumber) {
|
|
58
63
|
return this.db.transactionAsync(async ()=>{
|
|
@@ -75,15 +80,21 @@ import { SerializableContractInstance, SerializableContractInstanceUpdate } from
|
|
|
75
80
|
await this.#contractInstancePublishedAt.set(key, blockNumber);
|
|
76
81
|
});
|
|
77
82
|
}
|
|
78
|
-
deleteContractInstance(contractInstance) {
|
|
83
|
+
deleteContractInstance(contractInstance, blockNumber) {
|
|
79
84
|
// Protocol contracts are preloaded at block 0 and must never be deleted, even when the block that
|
|
80
85
|
// (re-)published them on-chain is unwound by a reorg.
|
|
81
86
|
if (isProtocolContract(contractInstance.address)) {
|
|
82
87
|
return Promise.resolve();
|
|
83
88
|
}
|
|
84
89
|
return this.db.transactionAsync(async ()=>{
|
|
85
|
-
|
|
86
|
-
|
|
90
|
+
const key = contractInstance.address.toString();
|
|
91
|
+
// An unwound block can carry a log naming an address first published by a surviving block (a forged log in an
|
|
92
|
+
// unexecuted checkpoint, which the store path skipped). Deleting by address alone would erase that instance.
|
|
93
|
+
if (await this.#contractInstancePublishedAt.getAsync(key) !== blockNumber) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
await this.#contractInstances.delete(key);
|
|
97
|
+
await this.#contractInstancePublishedAt.delete(key);
|
|
87
98
|
});
|
|
88
99
|
}
|
|
89
100
|
getUpdateRangeKey(contractAddress, timestamp) {
|
|
@@ -59,6 +59,8 @@ type AddCheckpointOptions = {
|
|
|
59
59
|
* `attestationsHash` the rollup stores at propose time covers.
|
|
60
60
|
*/
|
|
61
61
|
spareAttestationsBitmapBit?: boolean;
|
|
62
|
+
/** Overrides the posted attestations tuple, e.g. to model an escape-hatch proposer's arbitrary tuple. */
|
|
63
|
+
verbatimAttestations?: ViemCommitteeAttestations;
|
|
62
64
|
};
|
|
63
65
|
/** Result from adding a checkpoint. */
|
|
64
66
|
type AddCheckpointResult = {
|
|
@@ -244,4 +246,4 @@ export declare class FakeL1State {
|
|
|
244
246
|
private makeBlobsFromCheckpoint;
|
|
245
247
|
}
|
|
246
248
|
export {};
|
|
247
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZV9sMV9zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvZmFrZV9sMV9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxLQUFLLElBQUksRUFBcUQsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRyxPQUFPLEtBQUssRUFFVixhQUFhLEVBRWIsY0FBYyxFQUNkLHlCQUF5QixFQUMxQixNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSxVQUFVLEVBQWlCLE1BQU0sc0NBQXNDLENBQUM7QUFDckgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNqRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR2hFLE9BQU8sRUFBeUQsT0FBTyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTNELE9BQU8sRUFDTCxxQkFBcUIsRUFHdEIsTUFBTSw4QkFBOEIsQ0FBQztBQUd0QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQVEsTUFBTSxvQkFBb0IsQ0FBQztBQUcxRCwyQ0FBMkM7QUFDM0MsTUFBTSxNQUFNLGlCQUFpQixHQUFHO0lBQzlCLDRCQUE0QjtJQUM1QixrQkFBa0IsRUFBRSxFQUFFLENBQUM7SUFDdkIsNkJBQTZCO0lBQzdC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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake_l1_state.d.ts","sourceRoot":"","sources":["../../src/test/fake_l1_state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,KAAK,IAAI,EAAqD,MAAM,sBAAsB,CAAC;AACpG,OAAO,KAAK,EAEV,aAAa,EAEb,cAAc,EACd,yBAAyB,EAC1B,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAoB,gBAAgB,EAAE,UAAU,EAAiB,MAAM,sCAAsC,CAAC;AACrH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAGhE,OAAO,EAAyD,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EACL,qBAAqB,EAGtB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,KAAK,SAAS,EAAQ,MAAM,oBAAoB,CAAC;AAG1D,2CAA2C;AAC3C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4BAA4B;IAC5B,kBAAkB,EAAE,EAAE,CAAC;IACvB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,yCAAyC;IACzC,aAAa,EAAE,UAAU,CAAC;IAC1B,wCAAwC;IACxC,YAAY,EAAE,UAAU,CAAC;IACzB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,uCAAuC;AACvC,KAAK,oBAAoB,GAAG;IAC1B,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,4BAA4B;IAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iCAAiC;IACjC,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2EAA2E;IAC3E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"fake_l1_state.d.ts","sourceRoot":"","sources":["../../src/test/fake_l1_state.ts"],"names":[],"mappings":"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"}
|
|
@@ -144,7 +144,7 @@ import { encodeFunctionData, multicall3Abi, toHex } from 'viem';
|
|
|
144
144
|
// Store the messages internally so they match the checkpoint's inHash
|
|
145
145
|
this.addMessages(checkpointNumber, messagesL1BlockNumber, messages);
|
|
146
146
|
// Create the transaction, blobs, and event hashes
|
|
147
|
-
const { tx, attestationsHash, payloadDigest, verbatimAttestations } = await this.makeRollupTx(checkpoint, signers, options.spareAttestationsBitmapBit ?? false);
|
|
147
|
+
const { tx, attestationsHash, payloadDigest, verbatimAttestations } = await this.makeRollupTx(checkpoint, signers, options.spareAttestationsBitmapBit ?? false, options.verbatimAttestations);
|
|
148
148
|
const blobHashes = await this.makeVersionedBlobHashes(checkpoint);
|
|
149
149
|
const blobs = await this.makeBlobsFromCheckpoint(checkpoint);
|
|
150
150
|
// Store the checkpoint data
|
|
@@ -525,7 +525,7 @@ import { encodeFunctionData, multicall3Abi, toHex } from 'viem';
|
|
|
525
525
|
index
|
|
526
526
|
};
|
|
527
527
|
}
|
|
528
|
-
async makeRollupTx(checkpoint, signers, spareAttestationsBitmapBit) {
|
|
528
|
+
async makeRollupTx(checkpoint, signers, spareAttestationsBitmapBit, verbatimAttestationsOverride) {
|
|
529
529
|
const signatureContext = this.getSignatureContext();
|
|
530
530
|
const consensusPayload = ConsensusPayload.fromCheckpoint(checkpoint, signatureContext);
|
|
531
531
|
const attestationDigest = getHashedSignaturePayloadTypedData(consensusPayload);
|
|
@@ -540,10 +540,10 @@ import { encodeFunctionData, multicall3Abi, toHex } from 'viem';
|
|
|
540
540
|
const proposerSigner = signers[0] ?? Secp256k1Signer.random();
|
|
541
541
|
const attestationsAndSignersSignature = proposerSigner.sign(getHashedSignaturePayloadTypedData(attestationsAndSigners));
|
|
542
542
|
const packedAttestations = attestationsAndSigners.getPackedAttestations();
|
|
543
|
-
const verbatimAttestations = spareAttestationsBitmapBit ? {
|
|
543
|
+
const verbatimAttestations = verbatimAttestationsOverride ?? (spareAttestationsBitmapBit ? {
|
|
544
544
|
...packedAttestations,
|
|
545
545
|
signatureIndices: setLastBitmapBit(packedAttestations.signatureIndices)
|
|
546
|
-
} : packedAttestations;
|
|
546
|
+
} : packedAttestations);
|
|
547
547
|
const rollupInput = encodeFunctionData({
|
|
548
548
|
abi: RollupAbi,
|
|
549
549
|
functionName: 'propose',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec-labs/archiver",
|
|
3
|
-
"version": "6.0.0-rc.
|
|
3
|
+
"version": "6.0.0-rc.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -65,18 +65,18 @@
|
|
|
65
65
|
]
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@aztec-foundation/l1-artifacts": "6.0.0-rc.
|
|
69
|
-
"@aztec-labs/blob-client": "6.0.0-rc.
|
|
70
|
-
"@aztec-labs/blob-lib": "6.0.0-rc.
|
|
71
|
-
"@aztec-labs/constants": "6.0.0-rc.
|
|
72
|
-
"@aztec-labs/epoch-cache": "6.0.0-rc.
|
|
73
|
-
"@aztec-labs/ethereum": "6.0.0-rc.
|
|
74
|
-
"@aztec-labs/foundation": "6.0.0-rc.
|
|
75
|
-
"@aztec-labs/kv-store": "6.0.0-rc.
|
|
76
|
-
"@aztec-labs/protocol-contracts": "6.0.0-rc.
|
|
77
|
-
"@aztec-labs/standard-contracts": "6.0.0-rc.
|
|
78
|
-
"@aztec-labs/stdlib": "6.0.0-rc.
|
|
79
|
-
"@aztec-labs/telemetry-client": "6.0.0-rc.
|
|
68
|
+
"@aztec-foundation/l1-artifacts": "6.0.0-rc.5",
|
|
69
|
+
"@aztec-labs/blob-client": "6.0.0-rc.2",
|
|
70
|
+
"@aztec-labs/blob-lib": "6.0.0-rc.2",
|
|
71
|
+
"@aztec-labs/constants": "6.0.0-rc.2",
|
|
72
|
+
"@aztec-labs/epoch-cache": "6.0.0-rc.2",
|
|
73
|
+
"@aztec-labs/ethereum": "6.0.0-rc.2",
|
|
74
|
+
"@aztec-labs/foundation": "6.0.0-rc.2",
|
|
75
|
+
"@aztec-labs/kv-store": "6.0.0-rc.2",
|
|
76
|
+
"@aztec-labs/protocol-contracts": "6.0.0-rc.2",
|
|
77
|
+
"@aztec-labs/standard-contracts": "6.0.0-rc.2",
|
|
78
|
+
"@aztec-labs/stdlib": "6.0.0-rc.2",
|
|
79
|
+
"@aztec-labs/telemetry-client": "6.0.0-rc.2",
|
|
80
80
|
"lodash.groupby": "^4.6.0",
|
|
81
81
|
"lodash.omit": "^4.5.0",
|
|
82
82
|
"tslib": "^2.5.0",
|