@aztec/archiver 1.0.0-staging.3 → 1.0.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 +2 -3
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +9 -19
- package/dest/archiver/archiver_store.d.ts +6 -8
- 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 +13 -14
- package/dest/archiver/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/data_retrieval.js +7 -9
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +6 -7
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_instance_store.js +14 -14
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +4 -5
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +8 -10
- package/dest/test/mock_l2_block_source.d.ts +1 -2
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +1 -1
- package/package.json +12 -12
- package/src/archiver/archiver.ts +9 -29
- package/src/archiver/archiver_store.ts +6 -8
- package/src/archiver/archiver_store_test_suite.ts +13 -14
- package/src/archiver/data_retrieval.ts +7 -17
- package/src/archiver/kv_archiver_store/contract_instance_store.ts +21 -16
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +11 -11
- package/src/test/mock_l2_block_source.ts +1 -2
|
@@ -15,7 +15,6 @@ import type { L2LogsSource } from '@aztec/stdlib/interfaces/server';
|
|
|
15
15
|
import { type LogFilter, type PrivateLog, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
16
16
|
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
17
17
|
import { type BlockHeader, type IndexedTxEffect, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
18
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
19
18
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
20
19
|
import type { ArchiverDataStore, ArchiverL1SynchPoint } from './archiver_store.js';
|
|
21
20
|
import type { ArchiverConfig } from './config.js';
|
|
@@ -180,7 +179,7 @@ export declare class Archiver extends Archiver_base implements ArchiveSource, Tr
|
|
|
180
179
|
setProvenBlockNumber(blockNumber: number): Promise<void>;
|
|
181
180
|
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
182
181
|
getBytecodeCommitment(id: Fr): Promise<Fr | undefined>;
|
|
183
|
-
getContract(address: AztecAddress,
|
|
182
|
+
getContract(address: AztecAddress, blockNumber?: number): Promise<ContractInstanceWithAddress | undefined>;
|
|
184
183
|
/**
|
|
185
184
|
* Gets L1 to L2 message (to be) included in a given block.
|
|
186
185
|
* @param blockNumber - L2 block number to get messages for.
|
|
@@ -231,7 +230,7 @@ export declare class ArchiverStoreHelper implements Omit<ArchiverDataStore, 'add
|
|
|
231
230
|
getSynchPoint(): Promise<ArchiverL1SynchPoint>;
|
|
232
231
|
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
233
232
|
getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined>;
|
|
234
|
-
getContractInstance(address: AztecAddress,
|
|
233
|
+
getContractInstance(address: AztecAddress, blockNumber: number): Promise<ContractInstanceWithAddress | undefined>;
|
|
235
234
|
getContractClassIds(): Promise<Fr[]>;
|
|
236
235
|
registerContractFunctionSignatures(signatures: string[]): Promise<void>;
|
|
237
236
|
getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAY,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAKlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAWnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,OAAO,EAEZ,KAAK,aAAa,EAElB,KAAK,MAAM,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAMjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,iBAAiB,EAMvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,UAAU,EAAkB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,
|
|
1
|
+
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"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"}
|
|
@@ -842,16 +842,8 @@ import { ArchiverInstrumentation } from './instrumentation.js';
|
|
|
842
842
|
getBytecodeCommitment(id) {
|
|
843
843
|
return this.store.getBytecodeCommitment(id);
|
|
844
844
|
}
|
|
845
|
-
async getContract(address,
|
|
846
|
-
|
|
847
|
-
if (maybeTimestamp === undefined) {
|
|
848
|
-
const latestBlockHeader = await this.getBlockHeader('latest');
|
|
849
|
-
// If we get undefined block header, it means that the archiver has not yet synced any block so we default to 0.
|
|
850
|
-
timestamp = latestBlockHeader ? latestBlockHeader.globalVariables.timestamp : 0n;
|
|
851
|
-
} else {
|
|
852
|
-
timestamp = maybeTimestamp;
|
|
853
|
-
}
|
|
854
|
-
return this.store.getContractInstance(address, timestamp);
|
|
845
|
+
async getContract(address, blockNumber) {
|
|
846
|
+
return this.store.getContractInstance(address, blockNumber ?? await this.getBlockNumber());
|
|
855
847
|
}
|
|
856
848
|
/**
|
|
857
849
|
* Gets L1 to L2 message (to be) included in a given block.
|
|
@@ -1011,16 +1003,14 @@ var Operation = /*#__PURE__*/ function(Operation) {
|
|
|
1011
1003
|
/**
|
|
1012
1004
|
* Extracts and stores contract instances out of ContractInstanceDeployed events emitted by the canonical deployer contract.
|
|
1013
1005
|
* @param allLogs - All logs emitted in a bunch of blocks.
|
|
1014
|
-
|
|
1015
|
-
* @param operation - The operation to perform on the contract instance updates (Store or Delete).
|
|
1016
|
-
*/ async #updateUpdatedContractInstances(allLogs, timestamp, operation) {
|
|
1006
|
+
*/ async #updateUpdatedContractInstances(allLogs, blockNum, operation) {
|
|
1017
1007
|
const contractUpdates = allLogs.filter((log)=>ContractInstanceUpdatedEvent.isContractInstanceUpdatedEvent(log)).map((log)=>ContractInstanceUpdatedEvent.fromLog(log)).map((e)=>e.toContractInstanceUpdate());
|
|
1018
1008
|
if (contractUpdates.length > 0) {
|
|
1019
1009
|
contractUpdates.forEach((c)=>this.#log.verbose(`${Operation[operation]} contract instance update at ${c.address.toString()}`));
|
|
1020
1010
|
if (operation == 0) {
|
|
1021
|
-
return await this.store.addContractInstanceUpdates(contractUpdates,
|
|
1011
|
+
return await this.store.addContractInstanceUpdates(contractUpdates, blockNum);
|
|
1022
1012
|
} else if (operation == 1) {
|
|
1023
|
-
return await this.store.deleteContractInstanceUpdates(contractUpdates,
|
|
1013
|
+
return await this.store.deleteContractInstanceUpdates(contractUpdates, blockNum);
|
|
1024
1014
|
}
|
|
1025
1015
|
}
|
|
1026
1016
|
return true;
|
|
@@ -1091,7 +1081,7 @@ var Operation = /*#__PURE__*/ function(Operation) {
|
|
|
1091
1081
|
return (await Promise.all([
|
|
1092
1082
|
this.#updateRegisteredContractClasses(contractClassLogs, block.block.number, 0),
|
|
1093
1083
|
this.#updateDeployedContractInstances(privateLogs, block.block.number, 0),
|
|
1094
|
-
this.#updateUpdatedContractInstances(publicLogs, block.block.
|
|
1084
|
+
this.#updateUpdatedContractInstances(publicLogs, block.block.number, 0),
|
|
1095
1085
|
this.#storeBroadcastedIndividualFunctions(contractClassLogs, block.block.number)
|
|
1096
1086
|
])).every(Boolean);
|
|
1097
1087
|
})
|
|
@@ -1119,7 +1109,7 @@ var Operation = /*#__PURE__*/ function(Operation) {
|
|
|
1119
1109
|
return (await Promise.all([
|
|
1120
1110
|
this.#updateRegisteredContractClasses(contractClassLogs, block.block.number, 1),
|
|
1121
1111
|
this.#updateDeployedContractInstances(privateLogs, block.block.number, 1),
|
|
1122
|
-
this.#updateUpdatedContractInstances(publicLogs, block.block.
|
|
1112
|
+
this.#updateUpdatedContractInstances(publicLogs, block.block.number, 1)
|
|
1123
1113
|
])).every(Boolean);
|
|
1124
1114
|
}),
|
|
1125
1115
|
this.store.deleteLogs(blocks.map((b)=>b.block)),
|
|
@@ -1187,8 +1177,8 @@ var Operation = /*#__PURE__*/ function(Operation) {
|
|
|
1187
1177
|
getBytecodeCommitment(contractClassId) {
|
|
1188
1178
|
return this.store.getBytecodeCommitment(contractClassId);
|
|
1189
1179
|
}
|
|
1190
|
-
getContractInstance(address,
|
|
1191
|
-
return this.store.getContractInstance(address,
|
|
1180
|
+
getContractInstance(address, blockNumber) {
|
|
1181
|
+
return this.store.getContractInstance(address, blockNumber);
|
|
1192
1182
|
}
|
|
1193
1183
|
getContractClassIds() {
|
|
1194
1184
|
return this.store.getContractClassIds();
|
|
@@ -8,7 +8,6 @@ import type { ContractClassPublic, ContractInstanceUpdateWithAddress, ContractIn
|
|
|
8
8
|
import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
9
9
|
import type { LogFilter, PrivateLog, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
10
10
|
import { BlockHeader, type IndexedTxEffect, type TxHash, type TxReceipt } from '@aztec/stdlib/tx';
|
|
11
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
12
11
|
import type { InboxMessage } from './structs/inbox_message.js';
|
|
13
12
|
import type { PublishedL2Block } from './structs/published.js';
|
|
14
13
|
/**
|
|
@@ -186,22 +185,21 @@ export interface ArchiverDataStore {
|
|
|
186
185
|
/**
|
|
187
186
|
* Add new contract instance updates
|
|
188
187
|
* @param data - List of contract updates to be added.
|
|
189
|
-
* @param
|
|
188
|
+
* @param blockNumber - Number of the L2 block the updates were scheduled in.
|
|
190
189
|
* @returns True if the operation is successful.
|
|
191
190
|
*/
|
|
192
|
-
addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
193
|
-
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
191
|
+
addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], blockNumber: number): Promise<boolean>;
|
|
192
|
+
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], blockNumber: number): Promise<boolean>;
|
|
194
193
|
/**
|
|
195
194
|
* Adds private functions to a contract class.
|
|
196
195
|
*/
|
|
197
196
|
addFunctions(contractClassId: Fr, privateFunctions: ExecutablePrivateFunctionWithMembershipProof[], utilityFunctions: UtilityFunctionWithMembershipProof[]): Promise<boolean>;
|
|
198
197
|
/**
|
|
199
|
-
* Returns a contract instance given its address and the given
|
|
198
|
+
* Returns a contract instance given its address and the given block number, or undefined if not exists.
|
|
200
199
|
* @param address - Address of the contract.
|
|
201
|
-
* @param
|
|
202
|
-
* @returns The contract instance or undefined if not found.
|
|
200
|
+
* @param blockNumber - Block number to get the contract instance at. Contract updates might change the instance at a given block.
|
|
203
201
|
*/
|
|
204
|
-
getContractInstance(address: AztecAddress,
|
|
202
|
+
getContractInstance(address: AztecAddress, blockNumber: number): Promise<ContractInstanceWithAddress | undefined>;
|
|
205
203
|
/** Returns the list of all class ids known by the archiver. */
|
|
206
204
|
getContractClassIds(): Promise<Fr[]>;
|
|
207
205
|
/** Register a public function signature, so it can be looked up by selector. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver_store.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EACV,mBAAmB,EACnB,iCAAiC,EACjC,2BAA2B,EAC3B,4CAA4C,EAC5C,kCAAkC,EACnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"archiver_store.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver_store_test_suite.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store_test_suite.ts"],"names":[],"mappings":"AA4BA,OAAO,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAC;AAMnF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"archiver_store_test_suite.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store_test_suite.ts"],"names":[],"mappings":"AA4BA,OAAO,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAC;AAMnF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAs/B/D"}
|
|
@@ -574,7 +574,6 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
574
574
|
describe('contractInstances', ()=>{
|
|
575
575
|
let contractInstance;
|
|
576
576
|
const blockNum = 10;
|
|
577
|
-
const timestamp = 3600n;
|
|
578
577
|
beforeEach(async ()=>{
|
|
579
578
|
const classId = Fr.random();
|
|
580
579
|
const randomInstance = await SerializableContractInstance.random({
|
|
@@ -590,23 +589,23 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
590
589
|
], blockNum);
|
|
591
590
|
});
|
|
592
591
|
it('returns previously stored contract instances', async ()=>{
|
|
593
|
-
await expect(store.getContractInstance(contractInstance.address,
|
|
592
|
+
await expect(store.getContractInstance(contractInstance.address, blockNum)).resolves.toMatchObject(contractInstance);
|
|
594
593
|
});
|
|
595
594
|
it('returns undefined if contract instance is not found', async ()=>{
|
|
596
|
-
await expect(store.getContractInstance(await AztecAddress.random(),
|
|
595
|
+
await expect(store.getContractInstance(await AztecAddress.random(), blockNum)).resolves.toBeUndefined();
|
|
597
596
|
});
|
|
598
597
|
it('returns undefined if previously stored contract instances was deleted', async ()=>{
|
|
599
598
|
await store.deleteContractInstances([
|
|
600
599
|
contractInstance
|
|
601
600
|
], blockNum);
|
|
602
|
-
await expect(store.getContractInstance(contractInstance.address,
|
|
601
|
+
await expect(store.getContractInstance(contractInstance.address, blockNum)).resolves.toBeUndefined();
|
|
603
602
|
});
|
|
604
603
|
});
|
|
605
604
|
describe('contractInstanceUpdates', ()=>{
|
|
606
605
|
let contractInstance;
|
|
607
606
|
let classId;
|
|
608
607
|
let nextClassId;
|
|
609
|
-
const
|
|
608
|
+
const blockOfChange = 10;
|
|
610
609
|
beforeEach(async ()=>{
|
|
611
610
|
classId = Fr.random();
|
|
612
611
|
nextClassId = Fr.random();
|
|
@@ -625,23 +624,23 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
625
624
|
{
|
|
626
625
|
prevContractClassId: classId,
|
|
627
626
|
newContractClassId: nextClassId,
|
|
628
|
-
|
|
627
|
+
blockOfChange,
|
|
629
628
|
address: contractInstance.address
|
|
630
629
|
}
|
|
631
|
-
],
|
|
630
|
+
], blockOfChange - 1);
|
|
632
631
|
});
|
|
633
632
|
it('gets the correct current class id for a contract not updated yet', async ()=>{
|
|
634
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
633
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, blockOfChange - 1);
|
|
635
634
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
636
635
|
expect(fetchedInstance?.currentContractClassId).toEqual(classId);
|
|
637
636
|
});
|
|
638
637
|
it('gets the correct current class id for a contract that has just been updated', async ()=>{
|
|
639
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
638
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, blockOfChange);
|
|
640
639
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
641
640
|
expect(fetchedInstance?.currentContractClassId).toEqual(nextClassId);
|
|
642
641
|
});
|
|
643
642
|
it('gets the correct current class id for a contract that was updated in the past', async ()=>{
|
|
644
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
643
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, blockOfChange + 1);
|
|
645
644
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
646
645
|
expect(fetchedInstance?.currentContractClassId).toEqual(nextClassId);
|
|
647
646
|
});
|
|
@@ -658,7 +657,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
658
657
|
await store.addContractInstances([
|
|
659
658
|
otherContractInstance
|
|
660
659
|
], 1);
|
|
661
|
-
const fetchedInstance = await store.getContractInstance(otherContractInstance.address,
|
|
660
|
+
const fetchedInstance = await store.getContractInstance(otherContractInstance.address, blockOfChange + 1);
|
|
662
661
|
expect(fetchedInstance?.originalContractClassId).toEqual(otherClassId);
|
|
663
662
|
expect(fetchedInstance?.currentContractClassId).toEqual(otherClassId);
|
|
664
663
|
});
|
|
@@ -680,11 +679,11 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
680
679
|
{
|
|
681
680
|
prevContractClassId: otherClassId,
|
|
682
681
|
newContractClassId: otherNextClassId,
|
|
683
|
-
|
|
682
|
+
blockOfChange,
|
|
684
683
|
address: otherContractInstance.address
|
|
685
684
|
}
|
|
686
|
-
],
|
|
687
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
685
|
+
], blockOfChange - 1);
|
|
686
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, blockOfChange + 1);
|
|
688
687
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
689
688
|
expect(fetchedInstance?.currentContractClassId).toEqual(nextClassId);
|
|
690
689
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAEV,UAAU,EAGV,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,KAAK,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAW,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,OAAO,EAAgC,mBAAmB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErG,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,GAAG,EAKT,MAAM,MAAM,CAAC;AAGd,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,EAAE,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,eAAe,CAAC;IACpB,OAAO,EAAE,EAAE,CAAC;IACZ,OAAO,EAAE,EAAE,CAAC;IACZ,YAAY,EAAE,oBAAoB,EAAE,CAAC;CACtC,CAAC;AAEF,wBAAgB,gCAAgC,CAAC,cAAc,EAAE,gBAAgB,GAAG,gBAAgB,CA6CnG;AAED;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,qBAAqB,CAAC,OAAO,SAAS,EAAE,gBAAgB,CAAC,EACjE,YAAY,EAAE,gBAAgB,EAC9B,cAAc,EAAE,uBAAuB,EACvC,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,MAAiC,GACxC,OAAO,CAAC,gBAAgB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,15 +63,13 @@ export function retrievedBlockToPublishedL2Block(retrievedBlock) {
|
|
|
63
63
|
const lastLog = l2BlockProposedLogs[l2BlockProposedLogs.length - 1];
|
|
64
64
|
logger.debug(`Got ${l2BlockProposedLogs.length} L2 block processed logs for L2 blocks ${l2BlockProposedLogs[0].args.blockNumber}-${lastLog.args.blockNumber} between L1 blocks ${searchStartBlock}-${searchEndBlock}`);
|
|
65
65
|
if (rollupConstants === undefined) {
|
|
66
|
-
const [chainId, version
|
|
66
|
+
const [chainId, version] = await Promise.all([
|
|
67
67
|
publicClient.getChainId(),
|
|
68
|
-
rollup.read.getVersion()
|
|
69
|
-
rollup.read.getTargetCommitteeSize()
|
|
68
|
+
rollup.read.getVersion()
|
|
70
69
|
]);
|
|
71
70
|
rollupConstants = {
|
|
72
71
|
chainId: new Fr(chainId),
|
|
73
|
-
version: new Fr(version)
|
|
74
|
-
targetCommitteeSize: Number(targetCommitteeSize)
|
|
72
|
+
version: new Fr(version)
|
|
75
73
|
};
|
|
76
74
|
}
|
|
77
75
|
const newBlocks = await processL2BlockProposedLogs(rollup, publicClient, blobSinkClient, l2BlockProposedLogs, rollupConstants, logger);
|
|
@@ -87,7 +85,7 @@ export function retrievedBlockToPublishedL2Block(retrievedBlock) {
|
|
|
87
85
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
88
86
|
* @param logs - L2BlockProposed logs.
|
|
89
87
|
* @returns - An array blocks.
|
|
90
|
-
*/ async function processL2BlockProposedLogs(rollup, publicClient, blobSinkClient, logs, { chainId, version
|
|
88
|
+
*/ async function processL2BlockProposedLogs(rollup, publicClient, blobSinkClient, logs, { chainId, version }, logger) {
|
|
91
89
|
const retrievedBlocks = [];
|
|
92
90
|
await asyncPool(10, logs, async (log)=>{
|
|
93
91
|
const l2BlockNumber = Number(log.args.blockNumber);
|
|
@@ -98,7 +96,7 @@ export function retrievedBlockToPublishedL2Block(retrievedBlock) {
|
|
|
98
96
|
const blobHashes = log.args.versionedBlobHashes.map((blobHash)=>Buffer.from(blobHash.slice(2), 'hex'));
|
|
99
97
|
// The value from the event and contract will match only if the block is in the chain.
|
|
100
98
|
if (archive === archiveFromChain) {
|
|
101
|
-
const block = await getBlockFromRollupTx(publicClient, blobSinkClient, log.transactionHash, blobHashes, l2BlockNumber, rollup.address,
|
|
99
|
+
const block = await getBlockFromRollupTx(publicClient, blobSinkClient, log.transactionHash, blobHashes, l2BlockNumber, rollup.address, logger);
|
|
102
100
|
const l1 = {
|
|
103
101
|
blockNumber: log.blockNumber,
|
|
104
102
|
blockHash: log.blockHash,
|
|
@@ -179,7 +177,7 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
179
177
|
* @param txHash - Hash of the tx that published it.
|
|
180
178
|
* @param l2BlockNumber - L2 block number.
|
|
181
179
|
* @returns L2 block from the calldata, deserialized
|
|
182
|
-
*/ async function getBlockFromRollupTx(publicClient, blobSinkClient, txHash, blobHashes, l2BlockNumber, rollupAddress,
|
|
180
|
+
*/ async function getBlockFromRollupTx(publicClient, blobSinkClient, txHash, blobHashes, l2BlockNumber, rollupAddress, logger) {
|
|
183
181
|
const { input: forwarderData, blockHash } = await publicClient.getTransaction({
|
|
184
182
|
hash: txHash
|
|
185
183
|
});
|
|
@@ -220,7 +218,7 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
220
218
|
stateReference,
|
|
221
219
|
header,
|
|
222
220
|
body,
|
|
223
|
-
attestations: CommitteeAttestation.
|
|
221
|
+
attestations: attestations.map(CommitteeAttestation.fromViem)
|
|
224
222
|
};
|
|
225
223
|
}
|
|
226
224
|
/** Given an L1 to L2 message, retrieves its corresponding event from the Inbox within a specific block range. */ export async function retrieveL1ToL2Message(inbox, leaf, fromBlock, toBlock) {
|
|
@@ -2,8 +2,7 @@ import type { Fr } from '@aztec/foundation/fields';
|
|
|
2
2
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import { type ContractInstanceUpdateWithAddress, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
5
|
-
|
|
6
|
-
type ContractInstanceUpdateKey = [string, string] | [string, string, number];
|
|
5
|
+
type ContractInstanceUpdateKey = [string, number] | [string, number, number];
|
|
7
6
|
/**
|
|
8
7
|
* LMDB implementation of the ArchiverDataStore interface.
|
|
9
8
|
*/
|
|
@@ -13,11 +12,11 @@ export declare class ContractInstanceStore {
|
|
|
13
12
|
constructor(db: AztecAsyncKVStore);
|
|
14
13
|
addContractInstance(contractInstance: ContractInstanceWithAddress, blockNumber: number): Promise<void>;
|
|
15
14
|
deleteContractInstance(contractInstance: ContractInstanceWithAddress): Promise<void>;
|
|
16
|
-
getUpdateKey(contractAddress: AztecAddress,
|
|
17
|
-
addContractInstanceUpdate(contractInstanceUpdate: ContractInstanceUpdateWithAddress,
|
|
18
|
-
deleteContractInstanceUpdate(contractInstanceUpdate: ContractInstanceUpdateWithAddress,
|
|
19
|
-
getCurrentContractInstanceClassId(address: AztecAddress,
|
|
20
|
-
getContractInstance(address: AztecAddress,
|
|
15
|
+
getUpdateKey(contractAddress: AztecAddress, blockNumber: number, logIndex?: number): ContractInstanceUpdateKey;
|
|
16
|
+
addContractInstanceUpdate(contractInstanceUpdate: ContractInstanceUpdateWithAddress, blockNumber: number, logIndex: number): Promise<void>;
|
|
17
|
+
deleteContractInstanceUpdate(contractInstanceUpdate: ContractInstanceUpdateWithAddress, blockNumber: number, logIndex: number): Promise<void>;
|
|
18
|
+
getCurrentContractInstanceClassId(address: AztecAddress, blockNumber: number, originalClassId: Fr): Promise<Fr>;
|
|
19
|
+
getContractInstance(address: AztecAddress, blockNumber: number): Promise<ContractInstanceWithAddress | undefined>;
|
|
21
20
|
getContractInstanceDeploymentBlockNumber(address: AztecAddress): Promise<number | undefined>;
|
|
22
21
|
}
|
|
23
22
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_instance_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/contract_instance_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,iCAAiC,EACtC,KAAK,2BAA2B,EAGjC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"contract_instance_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/contract_instance_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,iCAAiC,EACtC,KAAK,2BAA2B,EAGjC,MAAM,wBAAwB,CAAC;AAEhC,KAAK,yBAAyB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7E;;GAEG;AACH,qBAAa,qBAAqB;;IAKpB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,iBAAiB;IAMzC,mBAAmB,CAAC,gBAAgB,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtG,sBAAsB,CAAC,gBAAgB,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpF,YAAY,CAAC,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,yBAAyB;IAQ9G,yBAAyB,CACvB,sBAAsB,EAAE,iCAAiC,EACzD,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAOhB,4BAA4B,CAC1B,sBAAsB,EAAE,iCAAiC,EACzD,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAMV,iCAAiC,CACrC,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,EAAE,GAClB,OAAO,CAAC,EAAE,CAAC;IAsBR,mBAAmB,CACvB,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAenD,wCAAwC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAG7F"}
|
|
@@ -24,32 +24,32 @@ import { SerializableContractInstance, SerializableContractInstanceUpdate } from
|
|
|
24
24
|
await this.#contractInstanceDeployedAt.delete(contractInstance.address.toString());
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
-
getUpdateKey(contractAddress,
|
|
27
|
+
getUpdateKey(contractAddress, blockNumber, logIndex) {
|
|
28
28
|
if (logIndex === undefined) {
|
|
29
29
|
return [
|
|
30
30
|
contractAddress.toString(),
|
|
31
|
-
|
|
31
|
+
blockNumber
|
|
32
32
|
];
|
|
33
33
|
} else {
|
|
34
34
|
return [
|
|
35
35
|
contractAddress.toString(),
|
|
36
|
-
|
|
36
|
+
blockNumber,
|
|
37
37
|
logIndex
|
|
38
38
|
];
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
addContractInstanceUpdate(contractInstanceUpdate,
|
|
42
|
-
return this.#contractInstanceUpdates.set(this.getUpdateKey(contractInstanceUpdate.address,
|
|
41
|
+
addContractInstanceUpdate(contractInstanceUpdate, blockNumber, logIndex) {
|
|
42
|
+
return this.#contractInstanceUpdates.set(this.getUpdateKey(contractInstanceUpdate.address, blockNumber, logIndex), new SerializableContractInstanceUpdate(contractInstanceUpdate).toBuffer());
|
|
43
43
|
}
|
|
44
|
-
deleteContractInstanceUpdate(contractInstanceUpdate,
|
|
45
|
-
return this.#contractInstanceUpdates.delete(this.getUpdateKey(contractInstanceUpdate.address,
|
|
44
|
+
deleteContractInstanceUpdate(contractInstanceUpdate, blockNumber, logIndex) {
|
|
45
|
+
return this.#contractInstanceUpdates.delete(this.getUpdateKey(contractInstanceUpdate.address, blockNumber, logIndex));
|
|
46
46
|
}
|
|
47
|
-
async getCurrentContractInstanceClassId(address,
|
|
48
|
-
// We need to find the last update before the given
|
|
47
|
+
async getCurrentContractInstanceClassId(address, blockNumber, originalClassId) {
|
|
48
|
+
// We need to find the last update before the given block number
|
|
49
49
|
const queryResult = await this.#contractInstanceUpdates.valuesAsync({
|
|
50
50
|
reverse: true,
|
|
51
|
-
start: this.getUpdateKey(address,
|
|
52
|
-
end: this.getUpdateKey(address,
|
|
51
|
+
start: this.getUpdateKey(address, 0),
|
|
52
|
+
end: this.getUpdateKey(address, blockNumber + 1),
|
|
53
53
|
limit: 1
|
|
54
54
|
}).next();
|
|
55
55
|
if (queryResult.done) {
|
|
@@ -57,18 +57,18 @@ import { SerializableContractInstance, SerializableContractInstanceUpdate } from
|
|
|
57
57
|
}
|
|
58
58
|
const serializedUpdate = queryResult.value;
|
|
59
59
|
const update = SerializableContractInstanceUpdate.fromBuffer(serializedUpdate);
|
|
60
|
-
if (
|
|
60
|
+
if (blockNumber < update.blockOfChange) {
|
|
61
61
|
return update.prevContractClassId.isZero() ? originalClassId : update.prevContractClassId;
|
|
62
62
|
}
|
|
63
63
|
return update.newContractClassId;
|
|
64
64
|
}
|
|
65
|
-
async getContractInstance(address,
|
|
65
|
+
async getContractInstance(address, blockNumber) {
|
|
66
66
|
const contractInstance = await this.#contractInstances.getAsync(address.toString());
|
|
67
67
|
if (!contractInstance) {
|
|
68
68
|
return undefined;
|
|
69
69
|
}
|
|
70
70
|
const instance = SerializableContractInstance.fromBuffer(contractInstance).withAddress(address);
|
|
71
|
-
instance.currentContractClassId = await this.getCurrentContractInstanceClassId(address,
|
|
71
|
+
instance.currentContractClassId = await this.getCurrentContractInstanceClassId(address, blockNumber, instance.originalContractClassId);
|
|
72
72
|
return instance;
|
|
73
73
|
}
|
|
74
74
|
getContractInstanceDeploymentBlockNumber(address) {
|
|
@@ -8,7 +8,6 @@ import type { ContractClassPublic, ContractDataSource, ContractInstanceUpdateWit
|
|
|
8
8
|
import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
9
9
|
import { type LogFilter, PrivateLog, type TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
10
10
|
import type { BlockHeader, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
11
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
12
11
|
import type { ArchiverDataStore, ArchiverL1SynchPoint } from '../archiver_store.js';
|
|
13
12
|
import type { InboxMessage } from '../structs/inbox_message.js';
|
|
14
13
|
import type { PublishedL2Block } from '../structs/published.js';
|
|
@@ -26,14 +25,14 @@ export declare class KVArchiverDataStore implements ArchiverDataStore, ContractD
|
|
|
26
25
|
constructor(db: AztecAsyncKVStore, logsMaxPageSize?: number);
|
|
27
26
|
transactionAsync<T>(callback: () => Promise<T>): Promise<T>;
|
|
28
27
|
getBlockNumber(): Promise<number>;
|
|
29
|
-
getContract(address: AztecAddress,
|
|
28
|
+
getContract(address: AztecAddress, blockNumber?: number): Promise<ContractInstanceWithAddress | undefined>;
|
|
30
29
|
backupTo(path: string, compress?: boolean): Promise<string>;
|
|
31
30
|
close(): Promise<void>;
|
|
32
31
|
getDebugFunctionName(_address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
33
32
|
registerContractFunctionSignatures(signatures: string[]): Promise<void>;
|
|
34
33
|
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
35
34
|
getContractClassIds(): Promise<Fr[]>;
|
|
36
|
-
getContractInstance(address: AztecAddress,
|
|
35
|
+
getContractInstance(address: AztecAddress, blockNumber: number): Promise<ContractInstanceWithAddress | undefined>;
|
|
37
36
|
getContractInstanceDeploymentBlockNumber(address: AztecAddress): Promise<number | undefined>;
|
|
38
37
|
addContractClasses(data: ContractClassPublic[], bytecodeCommitments: Fr[], blockNumber: number): Promise<boolean>;
|
|
39
38
|
deleteContractClasses(data: ContractClassPublic[], blockNumber: number): Promise<boolean>;
|
|
@@ -41,8 +40,8 @@ export declare class KVArchiverDataStore implements ArchiverDataStore, ContractD
|
|
|
41
40
|
addFunctions(contractClassId: Fr, privateFunctions: ExecutablePrivateFunctionWithMembershipProof[], utilityFunctions: UtilityFunctionWithMembershipProof[]): Promise<boolean>;
|
|
42
41
|
addContractInstances(data: ContractInstanceWithAddress[], blockNumber: number): Promise<boolean>;
|
|
43
42
|
deleteContractInstances(data: ContractInstanceWithAddress[], _blockNumber: number): Promise<boolean>;
|
|
44
|
-
addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
45
|
-
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
43
|
+
addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], blockNumber: number): Promise<boolean>;
|
|
44
|
+
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], blockNumber: number): Promise<boolean>;
|
|
46
45
|
/**
|
|
47
46
|
* Append new blocks to the store's list.
|
|
48
47
|
* @param blocks - The L2 blocks to be added to the store and the last processed L1 block.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kv_archiver_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/kv_archiver_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,iCAAiC,EACjC,2BAA2B,EAC3B,4CAA4C,EAC5C,kCAAkC,EACnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,EAAE,KAAK,SAAS,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"kv_archiver_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/kv_archiver_store.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,10 +38,8 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
38
38
|
getBlockNumber() {
|
|
39
39
|
return this.getSynchedL2BlockNumber();
|
|
40
40
|
}
|
|
41
|
-
async getContract(address,
|
|
42
|
-
|
|
43
|
-
const timestamp = maybeTimestamp ?? header.globalVariables.timestamp;
|
|
44
|
-
return this.getContractInstance(address, timestamp);
|
|
41
|
+
async getContract(address, blockNumber) {
|
|
42
|
+
return this.getContractInstance(address, blockNumber ?? await this.getBlockNumber());
|
|
45
43
|
}
|
|
46
44
|
async backupTo(path, compress = true) {
|
|
47
45
|
await this.db.backupTo(path, compress);
|
|
@@ -72,8 +70,8 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
72
70
|
getContractClassIds() {
|
|
73
71
|
return this.#contractClassStore.getContractClassIds();
|
|
74
72
|
}
|
|
75
|
-
getContractInstance(address,
|
|
76
|
-
return this.#contractInstanceStore.getContractInstance(address,
|
|
73
|
+
getContractInstance(address, blockNumber) {
|
|
74
|
+
return this.#contractInstanceStore.getContractInstance(address, blockNumber);
|
|
77
75
|
}
|
|
78
76
|
getContractInstanceDeploymentBlockNumber(address) {
|
|
79
77
|
return this.#contractInstanceStore.getContractInstanceDeploymentBlockNumber(address);
|
|
@@ -96,11 +94,11 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
96
94
|
async deleteContractInstances(data, _blockNumber) {
|
|
97
95
|
return (await Promise.all(data.map((c)=>this.#contractInstanceStore.deleteContractInstance(c)))).every(Boolean);
|
|
98
96
|
}
|
|
99
|
-
async addContractInstanceUpdates(data,
|
|
100
|
-
return (await Promise.all(data.map((update, logIndex)=>this.#contractInstanceStore.addContractInstanceUpdate(update,
|
|
97
|
+
async addContractInstanceUpdates(data, blockNumber) {
|
|
98
|
+
return (await Promise.all(data.map((update, logIndex)=>this.#contractInstanceStore.addContractInstanceUpdate(update, blockNumber, logIndex)))).every(Boolean);
|
|
101
99
|
}
|
|
102
|
-
async deleteContractInstanceUpdates(data,
|
|
103
|
-
return (await Promise.all(data.map((update, logIndex)=>this.#contractInstanceStore.deleteContractInstanceUpdate(update,
|
|
100
|
+
async deleteContractInstanceUpdates(data, blockNumber) {
|
|
101
|
+
return (await Promise.all(data.map((update, logIndex)=>this.#contractInstanceStore.deleteContractInstanceUpdate(update, blockNumber, logIndex)))).every(Boolean);
|
|
104
102
|
}
|
|
105
103
|
/**
|
|
106
104
|
* Append new blocks to the store's list.
|
|
@@ -6,7 +6,6 @@ import { L2Block, L2BlockHash, type L2BlockSource, type L2Tips } from '@aztec/st
|
|
|
6
6
|
import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
7
7
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
8
8
|
import { type BlockHeader, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
9
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
10
9
|
/**
|
|
11
10
|
* A mocked implementation of L2BlockSource to be used in tests.
|
|
12
11
|
*/
|
|
@@ -96,7 +95,7 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
|
|
|
96
95
|
stop(): Promise<void>;
|
|
97
96
|
getContractClass(_id: Fr): Promise<ContractClassPublic | undefined>;
|
|
98
97
|
getBytecodeCommitment(_id: Fr): Promise<Fr | undefined>;
|
|
99
|
-
getContract(_address: AztecAddress,
|
|
98
|
+
getContract(_address: AztecAddress, _blockNumber?: number): Promise<ContractInstanceWithAddress | undefined>;
|
|
100
99
|
getContractClassIds(): Promise<Fr[]>;
|
|
101
100
|
getDebugFunctionName(_address: AztecAddress, _selector: FunctionSelector): Promise<string | undefined>;
|
|
102
101
|
registerContractFunctionSignatures(_signatures: string[]): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACnH,OAAO,EAAE,KAAK,iBAAiB,EAAwB,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,SAAS,EAAY,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"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"}
|
|
@@ -195,7 +195,7 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
|
195
195
|
getBytecodeCommitment(_id) {
|
|
196
196
|
return Promise.resolve(undefined);
|
|
197
197
|
}
|
|
198
|
-
getContract(_address,
|
|
198
|
+
getContract(_address, _blockNumber) {
|
|
199
199
|
return Promise.resolve(undefined);
|
|
200
200
|
}
|
|
201
201
|
getContractClassIds() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/archiver",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -66,17 +66,17 @@
|
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@aztec/blob-lib": "1.0.0
|
|
70
|
-
"@aztec/blob-sink": "1.0.0
|
|
71
|
-
"@aztec/constants": "1.0.0
|
|
72
|
-
"@aztec/ethereum": "1.0.0
|
|
73
|
-
"@aztec/foundation": "1.0.0
|
|
74
|
-
"@aztec/kv-store": "1.0.0
|
|
75
|
-
"@aztec/l1-artifacts": "1.0.0
|
|
76
|
-
"@aztec/noir-protocol-circuits-types": "1.0.0
|
|
77
|
-
"@aztec/protocol-contracts": "1.0.0
|
|
78
|
-
"@aztec/stdlib": "1.0.0
|
|
79
|
-
"@aztec/telemetry-client": "1.0.0
|
|
69
|
+
"@aztec/blob-lib": "1.0.0",
|
|
70
|
+
"@aztec/blob-sink": "1.0.0",
|
|
71
|
+
"@aztec/constants": "1.0.0",
|
|
72
|
+
"@aztec/ethereum": "1.0.0",
|
|
73
|
+
"@aztec/foundation": "1.0.0",
|
|
74
|
+
"@aztec/kv-store": "1.0.0",
|
|
75
|
+
"@aztec/l1-artifacts": "1.0.0",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "1.0.0",
|
|
77
|
+
"@aztec/protocol-contracts": "1.0.0",
|
|
78
|
+
"@aztec/stdlib": "1.0.0",
|
|
79
|
+
"@aztec/telemetry-client": "1.0.0",
|
|
80
80
|
"lodash.groupby": "^4.6.0",
|
|
81
81
|
"lodash.omit": "^4.5.0",
|
|
82
82
|
"tsc-watch": "^6.0.0",
|
package/src/archiver/archiver.ts
CHANGED
|
@@ -60,7 +60,6 @@ import type { L2LogsSource } from '@aztec/stdlib/interfaces/server';
|
|
|
60
60
|
import { ContractClassLog, type LogFilter, type PrivateLog, type PublicLog, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
61
61
|
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
62
62
|
import { type BlockHeader, type IndexedTxEffect, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
63
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
64
63
|
import { Attributes, type TelemetryClient, type Traceable, type Tracer, trackSpan } from '@aztec/telemetry-client';
|
|
65
64
|
|
|
66
65
|
import { EventEmitter } from 'events';
|
|
@@ -1116,18 +1115,9 @@ export class Archiver extends (EventEmitter as new () => ArchiverEmitter) implem
|
|
|
1116
1115
|
|
|
1117
1116
|
public async getContract(
|
|
1118
1117
|
address: AztecAddress,
|
|
1119
|
-
|
|
1118
|
+
blockNumber?: number,
|
|
1120
1119
|
): Promise<ContractInstanceWithAddress | undefined> {
|
|
1121
|
-
|
|
1122
|
-
if (maybeTimestamp === undefined) {
|
|
1123
|
-
const latestBlockHeader = await this.getBlockHeader('latest');
|
|
1124
|
-
// If we get undefined block header, it means that the archiver has not yet synced any block so we default to 0.
|
|
1125
|
-
timestamp = latestBlockHeader ? latestBlockHeader.globalVariables.timestamp : 0n;
|
|
1126
|
-
} else {
|
|
1127
|
-
timestamp = maybeTimestamp;
|
|
1128
|
-
}
|
|
1129
|
-
|
|
1130
|
-
return this.store.getContractInstance(address, timestamp);
|
|
1120
|
+
return this.store.getContractInstance(address, blockNumber ?? (await this.getBlockNumber()));
|
|
1131
1121
|
}
|
|
1132
1122
|
|
|
1133
1123
|
/**
|
|
@@ -1331,10 +1321,8 @@ export class ArchiverStoreHelper
|
|
|
1331
1321
|
/**
|
|
1332
1322
|
* Extracts and stores contract instances out of ContractInstanceDeployed events emitted by the canonical deployer contract.
|
|
1333
1323
|
* @param allLogs - All logs emitted in a bunch of blocks.
|
|
1334
|
-
* @param timestamp - Timestamp at which the updates were scheduled.
|
|
1335
|
-
* @param operation - The operation to perform on the contract instance updates (Store or Delete).
|
|
1336
1324
|
*/
|
|
1337
|
-
async #updateUpdatedContractInstances(allLogs: PublicLog[],
|
|
1325
|
+
async #updateUpdatedContractInstances(allLogs: PublicLog[], blockNum: number, operation: Operation) {
|
|
1338
1326
|
const contractUpdates = allLogs
|
|
1339
1327
|
.filter(log => ContractInstanceUpdatedEvent.isContractInstanceUpdatedEvent(log))
|
|
1340
1328
|
.map(log => ContractInstanceUpdatedEvent.fromLog(log))
|
|
@@ -1345,9 +1333,9 @@ export class ArchiverStoreHelper
|
|
|
1345
1333
|
this.#log.verbose(`${Operation[operation]} contract instance update at ${c.address.toString()}`),
|
|
1346
1334
|
);
|
|
1347
1335
|
if (operation == Operation.Store) {
|
|
1348
|
-
return await this.store.addContractInstanceUpdates(contractUpdates,
|
|
1336
|
+
return await this.store.addContractInstanceUpdates(contractUpdates, blockNum);
|
|
1349
1337
|
} else if (operation == Operation.Delete) {
|
|
1350
|
-
return await this.store.deleteContractInstanceUpdates(contractUpdates,
|
|
1338
|
+
return await this.store.deleteContractInstanceUpdates(contractUpdates, blockNum);
|
|
1351
1339
|
}
|
|
1352
1340
|
}
|
|
1353
1341
|
return true;
|
|
@@ -1435,11 +1423,7 @@ export class ArchiverStoreHelper
|
|
|
1435
1423
|
await Promise.all([
|
|
1436
1424
|
this.#updateRegisteredContractClasses(contractClassLogs, block.block.number, Operation.Store),
|
|
1437
1425
|
this.#updateDeployedContractInstances(privateLogs, block.block.number, Operation.Store),
|
|
1438
|
-
this.#updateUpdatedContractInstances(
|
|
1439
|
-
publicLogs,
|
|
1440
|
-
block.block.header.globalVariables.timestamp,
|
|
1441
|
-
Operation.Store,
|
|
1442
|
-
),
|
|
1426
|
+
this.#updateUpdatedContractInstances(publicLogs, block.block.number, Operation.Store),
|
|
1443
1427
|
this.#storeBroadcastedIndividualFunctions(contractClassLogs, block.block.number),
|
|
1444
1428
|
])
|
|
1445
1429
|
).every(Boolean);
|
|
@@ -1474,11 +1458,7 @@ export class ArchiverStoreHelper
|
|
|
1474
1458
|
await Promise.all([
|
|
1475
1459
|
this.#updateRegisteredContractClasses(contractClassLogs, block.block.number, Operation.Delete),
|
|
1476
1460
|
this.#updateDeployedContractInstances(privateLogs, block.block.number, Operation.Delete),
|
|
1477
|
-
this.#updateUpdatedContractInstances(
|
|
1478
|
-
publicLogs,
|
|
1479
|
-
block.block.header.globalVariables.timestamp,
|
|
1480
|
-
Operation.Delete,
|
|
1481
|
-
),
|
|
1461
|
+
this.#updateUpdatedContractInstances(publicLogs, block.block.number, Operation.Delete),
|
|
1482
1462
|
])
|
|
1483
1463
|
).every(Boolean);
|
|
1484
1464
|
}),
|
|
@@ -1550,8 +1530,8 @@ export class ArchiverStoreHelper
|
|
|
1550
1530
|
getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined> {
|
|
1551
1531
|
return this.store.getBytecodeCommitment(contractClassId);
|
|
1552
1532
|
}
|
|
1553
|
-
getContractInstance(address: AztecAddress,
|
|
1554
|
-
return this.store.getContractInstance(address,
|
|
1533
|
+
getContractInstance(address: AztecAddress, blockNumber: number): Promise<ContractInstanceWithAddress | undefined> {
|
|
1534
|
+
return this.store.getContractInstance(address, blockNumber);
|
|
1555
1535
|
}
|
|
1556
1536
|
getContractClassIds(): Promise<Fr[]> {
|
|
1557
1537
|
return this.store.getContractClassIds();
|
|
@@ -14,7 +14,6 @@ import type {
|
|
|
14
14
|
import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
15
15
|
import type { LogFilter, PrivateLog, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
16
16
|
import { BlockHeader, type IndexedTxEffect, type TxHash, type TxReceipt } from '@aztec/stdlib/tx';
|
|
17
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
18
17
|
|
|
19
18
|
import type { InboxMessage } from './structs/inbox_message.js';
|
|
20
19
|
import type { PublishedL2Block } from './structs/published.js';
|
|
@@ -221,11 +220,11 @@ export interface ArchiverDataStore {
|
|
|
221
220
|
/**
|
|
222
221
|
* Add new contract instance updates
|
|
223
222
|
* @param data - List of contract updates to be added.
|
|
224
|
-
* @param
|
|
223
|
+
* @param blockNumber - Number of the L2 block the updates were scheduled in.
|
|
225
224
|
* @returns True if the operation is successful.
|
|
226
225
|
*/
|
|
227
|
-
addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
228
|
-
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
226
|
+
addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], blockNumber: number): Promise<boolean>;
|
|
227
|
+
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], blockNumber: number): Promise<boolean>;
|
|
229
228
|
/**
|
|
230
229
|
* Adds private functions to a contract class.
|
|
231
230
|
*/
|
|
@@ -236,12 +235,11 @@ export interface ArchiverDataStore {
|
|
|
236
235
|
): Promise<boolean>;
|
|
237
236
|
|
|
238
237
|
/**
|
|
239
|
-
* Returns a contract instance given its address and the given
|
|
238
|
+
* Returns a contract instance given its address and the given block number, or undefined if not exists.
|
|
240
239
|
* @param address - Address of the contract.
|
|
241
|
-
* @param
|
|
242
|
-
* @returns The contract instance or undefined if not found.
|
|
240
|
+
* @param blockNumber - Block number to get the contract instance at. Contract updates might change the instance at a given block.
|
|
243
241
|
*/
|
|
244
|
-
getContractInstance(address: AztecAddress,
|
|
242
|
+
getContractInstance(address: AztecAddress, blockNumber: number): Promise<ContractInstanceWithAddress | undefined>;
|
|
245
243
|
|
|
246
244
|
/** Returns the list of all class ids known by the archiver. */
|
|
247
245
|
getContractClassIds(): Promise<Fr[]>;
|
|
@@ -518,7 +518,6 @@ export function describeArchiverDataStore(
|
|
|
518
518
|
describe('contractInstances', () => {
|
|
519
519
|
let contractInstance: ContractInstanceWithAddress;
|
|
520
520
|
const blockNum = 10;
|
|
521
|
-
const timestamp = 3600n;
|
|
522
521
|
|
|
523
522
|
beforeEach(async () => {
|
|
524
523
|
const classId = Fr.random();
|
|
@@ -531,18 +530,18 @@ export function describeArchiverDataStore(
|
|
|
531
530
|
});
|
|
532
531
|
|
|
533
532
|
it('returns previously stored contract instances', async () => {
|
|
534
|
-
await expect(store.getContractInstance(contractInstance.address,
|
|
533
|
+
await expect(store.getContractInstance(contractInstance.address, blockNum)).resolves.toMatchObject(
|
|
535
534
|
contractInstance,
|
|
536
535
|
);
|
|
537
536
|
});
|
|
538
537
|
|
|
539
538
|
it('returns undefined if contract instance is not found', async () => {
|
|
540
|
-
await expect(store.getContractInstance(await AztecAddress.random(),
|
|
539
|
+
await expect(store.getContractInstance(await AztecAddress.random(), blockNum)).resolves.toBeUndefined();
|
|
541
540
|
});
|
|
542
541
|
|
|
543
542
|
it('returns undefined if previously stored contract instances was deleted', async () => {
|
|
544
543
|
await store.deleteContractInstances([contractInstance], blockNum);
|
|
545
|
-
await expect(store.getContractInstance(contractInstance.address,
|
|
544
|
+
await expect(store.getContractInstance(contractInstance.address, blockNum)).resolves.toBeUndefined();
|
|
546
545
|
});
|
|
547
546
|
});
|
|
548
547
|
|
|
@@ -550,7 +549,7 @@ export function describeArchiverDataStore(
|
|
|
550
549
|
let contractInstance: ContractInstanceWithAddress;
|
|
551
550
|
let classId: Fr;
|
|
552
551
|
let nextClassId: Fr;
|
|
553
|
-
const
|
|
552
|
+
const blockOfChange = 10;
|
|
554
553
|
|
|
555
554
|
beforeEach(async () => {
|
|
556
555
|
classId = Fr.random();
|
|
@@ -566,28 +565,28 @@ export function describeArchiverDataStore(
|
|
|
566
565
|
{
|
|
567
566
|
prevContractClassId: classId,
|
|
568
567
|
newContractClassId: nextClassId,
|
|
569
|
-
|
|
568
|
+
blockOfChange,
|
|
570
569
|
address: contractInstance.address,
|
|
571
570
|
},
|
|
572
571
|
],
|
|
573
|
-
|
|
572
|
+
blockOfChange - 1,
|
|
574
573
|
);
|
|
575
574
|
});
|
|
576
575
|
|
|
577
576
|
it('gets the correct current class id for a contract not updated yet', async () => {
|
|
578
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
577
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, blockOfChange - 1);
|
|
579
578
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
580
579
|
expect(fetchedInstance?.currentContractClassId).toEqual(classId);
|
|
581
580
|
});
|
|
582
581
|
|
|
583
582
|
it('gets the correct current class id for a contract that has just been updated', async () => {
|
|
584
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
583
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, blockOfChange);
|
|
585
584
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
586
585
|
expect(fetchedInstance?.currentContractClassId).toEqual(nextClassId);
|
|
587
586
|
});
|
|
588
587
|
|
|
589
588
|
it('gets the correct current class id for a contract that was updated in the past', async () => {
|
|
590
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
589
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, blockOfChange + 1);
|
|
591
590
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
592
591
|
expect(fetchedInstance?.currentContractClassId).toEqual(nextClassId);
|
|
593
592
|
});
|
|
@@ -604,7 +603,7 @@ export function describeArchiverDataStore(
|
|
|
604
603
|
};
|
|
605
604
|
await store.addContractInstances([otherContractInstance], 1);
|
|
606
605
|
|
|
607
|
-
const fetchedInstance = await store.getContractInstance(otherContractInstance.address,
|
|
606
|
+
const fetchedInstance = await store.getContractInstance(otherContractInstance.address, blockOfChange + 1);
|
|
608
607
|
expect(fetchedInstance?.originalContractClassId).toEqual(otherClassId);
|
|
609
608
|
expect(fetchedInstance?.currentContractClassId).toEqual(otherClassId);
|
|
610
609
|
});
|
|
@@ -626,14 +625,14 @@ export function describeArchiverDataStore(
|
|
|
626
625
|
{
|
|
627
626
|
prevContractClassId: otherClassId,
|
|
628
627
|
newContractClassId: otherNextClassId,
|
|
629
|
-
|
|
628
|
+
blockOfChange,
|
|
630
629
|
address: otherContractInstance.address,
|
|
631
630
|
},
|
|
632
631
|
],
|
|
633
|
-
|
|
632
|
+
blockOfChange - 1,
|
|
634
633
|
);
|
|
635
634
|
|
|
636
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
635
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, blockOfChange + 1);
|
|
637
636
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
638
637
|
expect(fetchedInstance?.currentContractClassId).toEqual(nextClassId);
|
|
639
638
|
});
|
|
@@ -3,7 +3,7 @@ import type { BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
|
3
3
|
import type {
|
|
4
4
|
EpochProofPublicInputArgs,
|
|
5
5
|
ViemClient,
|
|
6
|
-
|
|
6
|
+
ViemCommitteeAttestation,
|
|
7
7
|
ViemHeader,
|
|
8
8
|
ViemPublicClient,
|
|
9
9
|
ViemStateReference,
|
|
@@ -112,7 +112,7 @@ export async function retrieveBlocksFromRollup(
|
|
|
112
112
|
): Promise<RetrievedL2Block[]> {
|
|
113
113
|
const retrievedBlocks: RetrievedL2Block[] = [];
|
|
114
114
|
|
|
115
|
-
let rollupConstants: { chainId: Fr; version: Fr
|
|
115
|
+
let rollupConstants: { chainId: Fr; version: Fr } | undefined;
|
|
116
116
|
|
|
117
117
|
do {
|
|
118
118
|
if (searchStartBlock > searchEndBlock) {
|
|
@@ -138,16 +138,8 @@ export async function retrieveBlocksFromRollup(
|
|
|
138
138
|
);
|
|
139
139
|
|
|
140
140
|
if (rollupConstants === undefined) {
|
|
141
|
-
const [chainId, version
|
|
142
|
-
|
|
143
|
-
rollup.read.getVersion(),
|
|
144
|
-
rollup.read.getTargetCommitteeSize(),
|
|
145
|
-
]);
|
|
146
|
-
rollupConstants = {
|
|
147
|
-
chainId: new Fr(chainId),
|
|
148
|
-
version: new Fr(version),
|
|
149
|
-
targetCommitteeSize: Number(targetCommitteeSize),
|
|
150
|
-
};
|
|
141
|
+
const [chainId, version] = await Promise.all([publicClient.getChainId(), rollup.read.getVersion()]);
|
|
142
|
+
rollupConstants = { chainId: new Fr(chainId), version: new Fr(version) };
|
|
151
143
|
}
|
|
152
144
|
|
|
153
145
|
const newBlocks = await processL2BlockProposedLogs(
|
|
@@ -178,7 +170,7 @@ async function processL2BlockProposedLogs(
|
|
|
178
170
|
publicClient: ViemPublicClient,
|
|
179
171
|
blobSinkClient: BlobSinkClientInterface,
|
|
180
172
|
logs: GetContractEventsReturnType<typeof RollupAbi, 'L2BlockProposed'>,
|
|
181
|
-
{ chainId, version
|
|
173
|
+
{ chainId, version }: { chainId: Fr; version: Fr },
|
|
182
174
|
logger: Logger,
|
|
183
175
|
): Promise<RetrievedL2Block[]> {
|
|
184
176
|
const retrievedBlocks: RetrievedL2Block[] = [];
|
|
@@ -197,7 +189,6 @@ async function processL2BlockProposedLogs(
|
|
|
197
189
|
blobHashes,
|
|
198
190
|
l2BlockNumber,
|
|
199
191
|
rollup.address,
|
|
200
|
-
targetCommitteeSize,
|
|
201
192
|
logger,
|
|
202
193
|
);
|
|
203
194
|
|
|
@@ -296,7 +287,6 @@ async function getBlockFromRollupTx(
|
|
|
296
287
|
blobHashes: Buffer[], // TODO(md): buffer32?
|
|
297
288
|
l2BlockNumber: number,
|
|
298
289
|
rollupAddress: Hex,
|
|
299
|
-
targetCommitteeSize: number,
|
|
300
290
|
logger: Logger,
|
|
301
291
|
): Promise<Omit<RetrievedL2Block, 'l1' | 'chainId' | 'version'>> {
|
|
302
292
|
const { input: forwarderData, blockHash } = await publicClient.getTransaction({ hash: txHash });
|
|
@@ -321,7 +311,7 @@ async function getBlockFromRollupTx(
|
|
|
321
311
|
header: ViemHeader;
|
|
322
312
|
txHashes: readonly Hex[];
|
|
323
313
|
},
|
|
324
|
-
|
|
314
|
+
ViemCommitteeAttestation[],
|
|
325
315
|
Hex,
|
|
326
316
|
];
|
|
327
317
|
|
|
@@ -358,7 +348,7 @@ async function getBlockFromRollupTx(
|
|
|
358
348
|
stateReference,
|
|
359
349
|
header,
|
|
360
350
|
body,
|
|
361
|
-
attestations: CommitteeAttestation.
|
|
351
|
+
attestations: attestations.map(CommitteeAttestation.fromViem),
|
|
362
352
|
};
|
|
363
353
|
}
|
|
364
354
|
|
|
@@ -7,9 +7,8 @@ import {
|
|
|
7
7
|
SerializableContractInstance,
|
|
8
8
|
SerializableContractInstanceUpdate,
|
|
9
9
|
} from '@aztec/stdlib/contract';
|
|
10
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
11
10
|
|
|
12
|
-
type ContractInstanceUpdateKey = [string,
|
|
11
|
+
type ContractInstanceUpdateKey = [string, number] | [string, number, number];
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* LMDB implementation of the ArchiverDataStore interface.
|
|
@@ -42,40 +41,46 @@ export class ContractInstanceStore {
|
|
|
42
41
|
});
|
|
43
42
|
}
|
|
44
43
|
|
|
45
|
-
getUpdateKey(contractAddress: AztecAddress,
|
|
44
|
+
getUpdateKey(contractAddress: AztecAddress, blockNumber: number, logIndex?: number): ContractInstanceUpdateKey {
|
|
46
45
|
if (logIndex === undefined) {
|
|
47
|
-
return [contractAddress.toString(),
|
|
46
|
+
return [contractAddress.toString(), blockNumber];
|
|
48
47
|
} else {
|
|
49
|
-
return [contractAddress.toString(),
|
|
48
|
+
return [contractAddress.toString(), blockNumber, logIndex];
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
51
|
|
|
53
52
|
addContractInstanceUpdate(
|
|
54
53
|
contractInstanceUpdate: ContractInstanceUpdateWithAddress,
|
|
55
|
-
|
|
54
|
+
blockNumber: number,
|
|
56
55
|
logIndex: number,
|
|
57
56
|
): Promise<void> {
|
|
58
57
|
return this.#contractInstanceUpdates.set(
|
|
59
|
-
this.getUpdateKey(contractInstanceUpdate.address,
|
|
58
|
+
this.getUpdateKey(contractInstanceUpdate.address, blockNumber, logIndex),
|
|
60
59
|
new SerializableContractInstanceUpdate(contractInstanceUpdate).toBuffer(),
|
|
61
60
|
);
|
|
62
61
|
}
|
|
63
62
|
|
|
64
63
|
deleteContractInstanceUpdate(
|
|
65
64
|
contractInstanceUpdate: ContractInstanceUpdateWithAddress,
|
|
66
|
-
|
|
65
|
+
blockNumber: number,
|
|
67
66
|
logIndex: number,
|
|
68
67
|
): Promise<void> {
|
|
69
|
-
return this.#contractInstanceUpdates.delete(
|
|
68
|
+
return this.#contractInstanceUpdates.delete(
|
|
69
|
+
this.getUpdateKey(contractInstanceUpdate.address, blockNumber, logIndex),
|
|
70
|
+
);
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
async getCurrentContractInstanceClassId(
|
|
73
|
-
|
|
73
|
+
async getCurrentContractInstanceClassId(
|
|
74
|
+
address: AztecAddress,
|
|
75
|
+
blockNumber: number,
|
|
76
|
+
originalClassId: Fr,
|
|
77
|
+
): Promise<Fr> {
|
|
78
|
+
// We need to find the last update before the given block number
|
|
74
79
|
const queryResult = await this.#contractInstanceUpdates
|
|
75
80
|
.valuesAsync({
|
|
76
81
|
reverse: true,
|
|
77
|
-
start: this.getUpdateKey(address,
|
|
78
|
-
end: this.getUpdateKey(address,
|
|
82
|
+
start: this.getUpdateKey(address, 0), // Make sure we only look at updates for this contract
|
|
83
|
+
end: this.getUpdateKey(address, blockNumber + 1), // No update can match this key since it doesn't have a log index. We want the highest key <= blockNumber
|
|
79
84
|
limit: 1,
|
|
80
85
|
})
|
|
81
86
|
.next();
|
|
@@ -85,7 +90,7 @@ export class ContractInstanceStore {
|
|
|
85
90
|
|
|
86
91
|
const serializedUpdate = queryResult.value;
|
|
87
92
|
const update = SerializableContractInstanceUpdate.fromBuffer(serializedUpdate);
|
|
88
|
-
if (
|
|
93
|
+
if (blockNumber < update.blockOfChange) {
|
|
89
94
|
return update.prevContractClassId.isZero() ? originalClassId : update.prevContractClassId;
|
|
90
95
|
}
|
|
91
96
|
return update.newContractClassId;
|
|
@@ -93,7 +98,7 @@ export class ContractInstanceStore {
|
|
|
93
98
|
|
|
94
99
|
async getContractInstance(
|
|
95
100
|
address: AztecAddress,
|
|
96
|
-
|
|
101
|
+
blockNumber: number,
|
|
97
102
|
): Promise<ContractInstanceWithAddress | undefined> {
|
|
98
103
|
const contractInstance = await this.#contractInstances.getAsync(address.toString());
|
|
99
104
|
if (!contractInstance) {
|
|
@@ -103,7 +108,7 @@ export class ContractInstanceStore {
|
|
|
103
108
|
const instance = SerializableContractInstance.fromBuffer(contractInstance).withAddress(address);
|
|
104
109
|
instance.currentContractClassId = await this.getCurrentContractInstanceClassId(
|
|
105
110
|
address,
|
|
106
|
-
|
|
111
|
+
blockNumber,
|
|
107
112
|
instance.originalContractClassId,
|
|
108
113
|
);
|
|
109
114
|
return instance;
|
|
@@ -17,7 +17,6 @@ import type {
|
|
|
17
17
|
import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
18
18
|
import { type LogFilter, PrivateLog, type TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
19
19
|
import type { BlockHeader, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
20
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
21
20
|
|
|
22
21
|
import { join } from 'path';
|
|
23
22
|
|
|
@@ -71,11 +70,9 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
|
|
|
71
70
|
|
|
72
71
|
public async getContract(
|
|
73
72
|
address: AztecAddress,
|
|
74
|
-
|
|
73
|
+
blockNumber?: number,
|
|
75
74
|
): Promise<ContractInstanceWithAddress | undefined> {
|
|
76
|
-
|
|
77
|
-
const timestamp = maybeTimestamp ?? header!.globalVariables.timestamp;
|
|
78
|
-
return this.getContractInstance(address, timestamp);
|
|
75
|
+
return this.getContractInstance(address, blockNumber ?? (await this.getBlockNumber()));
|
|
79
76
|
}
|
|
80
77
|
|
|
81
78
|
public async backupTo(path: string, compress = true): Promise<string> {
|
|
@@ -113,8 +110,8 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
|
|
|
113
110
|
return this.#contractClassStore.getContractClassIds();
|
|
114
111
|
}
|
|
115
112
|
|
|
116
|
-
getContractInstance(address: AztecAddress,
|
|
117
|
-
return this.#contractInstanceStore.getContractInstance(address,
|
|
113
|
+
getContractInstance(address: AztecAddress, blockNumber: number): Promise<ContractInstanceWithAddress | undefined> {
|
|
114
|
+
return this.#contractInstanceStore.getContractInstance(address, blockNumber);
|
|
118
115
|
}
|
|
119
116
|
|
|
120
117
|
getContractInstanceDeploymentBlockNumber(address: AztecAddress): Promise<number | undefined> {
|
|
@@ -161,20 +158,23 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
|
|
|
161
158
|
return (await Promise.all(data.map(c => this.#contractInstanceStore.deleteContractInstance(c)))).every(Boolean);
|
|
162
159
|
}
|
|
163
160
|
|
|
164
|
-
async addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
161
|
+
async addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], blockNumber: number): Promise<boolean> {
|
|
165
162
|
return (
|
|
166
163
|
await Promise.all(
|
|
167
164
|
data.map((update, logIndex) =>
|
|
168
|
-
this.#contractInstanceStore.addContractInstanceUpdate(update,
|
|
165
|
+
this.#contractInstanceStore.addContractInstanceUpdate(update, blockNumber, logIndex),
|
|
169
166
|
),
|
|
170
167
|
)
|
|
171
168
|
).every(Boolean);
|
|
172
169
|
}
|
|
173
|
-
async deleteContractInstanceUpdates(
|
|
170
|
+
async deleteContractInstanceUpdates(
|
|
171
|
+
data: ContractInstanceUpdateWithAddress[],
|
|
172
|
+
blockNumber: number,
|
|
173
|
+
): Promise<boolean> {
|
|
174
174
|
return (
|
|
175
175
|
await Promise.all(
|
|
176
176
|
data.map((update, logIndex) =>
|
|
177
|
-
this.#contractInstanceStore.deleteContractInstanceUpdate(update,
|
|
177
|
+
this.#contractInstanceStore.deleteContractInstanceUpdate(update, blockNumber, logIndex),
|
|
178
178
|
),
|
|
179
179
|
)
|
|
180
180
|
).every(Boolean);
|
|
@@ -9,7 +9,6 @@ import { L2Block, L2BlockHash, type L2BlockSource, type L2Tips } from '@aztec/st
|
|
|
9
9
|
import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
10
10
|
import { type L1RollupConstants, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
|
|
11
11
|
import { type BlockHeader, TxHash, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
12
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* A mocked implementation of L2BlockSource to be used in tests.
|
|
@@ -252,7 +251,7 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
252
251
|
return Promise.resolve(undefined);
|
|
253
252
|
}
|
|
254
253
|
|
|
255
|
-
getContract(_address: AztecAddress,
|
|
254
|
+
getContract(_address: AztecAddress, _blockNumber?: number): Promise<ContractInstanceWithAddress | undefined> {
|
|
256
255
|
return Promise.resolve(undefined);
|
|
257
256
|
}
|
|
258
257
|
|