@aztec/archiver 1.0.0 → 1.1.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 +3 -2
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +19 -9
- package/dest/archiver/archiver_store.d.ts +8 -6
- 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 +14 -13
- package/dest/archiver/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/data_retrieval.js +9 -7
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +7 -6
- 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 +5 -4
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +10 -8
- package/dest/test/mock_l2_block_source.d.ts +2 -1
- 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 +29 -9
- package/src/archiver/archiver_store.ts +8 -6
- package/src/archiver/archiver_store_test_suite.ts +14 -13
- package/src/archiver/data_retrieval.ts +17 -7
- package/src/archiver/kv_archiver_store/contract_instance_store.ts +16 -21
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +11 -11
- package/src/test/mock_l2_block_source.ts +2 -1
|
@@ -15,6 +15,7 @@ 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';
|
|
18
19
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
19
20
|
import type { ArchiverDataStore, ArchiverL1SynchPoint } from './archiver_store.js';
|
|
20
21
|
import type { ArchiverConfig } from './config.js';
|
|
@@ -179,7 +180,7 @@ export declare class Archiver extends Archiver_base implements ArchiveSource, Tr
|
|
|
179
180
|
setProvenBlockNumber(blockNumber: number): Promise<void>;
|
|
180
181
|
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
181
182
|
getBytecodeCommitment(id: Fr): Promise<Fr | undefined>;
|
|
182
|
-
getContract(address: AztecAddress,
|
|
183
|
+
getContract(address: AztecAddress, maybeTimestamp?: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
183
184
|
/**
|
|
184
185
|
* Gets L1 to L2 message (to be) included in a given block.
|
|
185
186
|
* @param blockNumber - L2 block number to get messages for.
|
|
@@ -230,7 +231,7 @@ export declare class ArchiverStoreHelper implements Omit<ArchiverDataStore, 'add
|
|
|
230
231
|
getSynchPoint(): Promise<ArchiverL1SynchPoint>;
|
|
231
232
|
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
232
233
|
getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined>;
|
|
233
|
-
getContractInstance(address: AztecAddress,
|
|
234
|
+
getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
234
235
|
getContractClassIds(): Promise<Fr[]>;
|
|
235
236
|
registerContractFunctionSignatures(signatures: string[]): Promise<void>;
|
|
236
237
|
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":"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
|
|
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,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AAMnH,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQlD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,YAAY,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;6BAOrD,UAAU,eAAe;AALxE;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,aAA4C,YAAW,aAAa,EAAE,SAAS;IA4BzG,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,QAAQ,CAAC,SAAS,EAAE,iBAAiB;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAlCtB;;OAEG;IACH,OAAO,CAAC,cAAc,CAAC,CAAiB;IAExC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAAgB;IAE7B,OAAO,CAAC,KAAK,CAAsB;IAEnC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,mBAAmB,CAAkB;IAE7C,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;OASG;gBAEgB,YAAY,EAAE,gBAAgB,EAC9B,WAAW,EAAE;QAAE,aAAa,EAAE,UAAU,CAAC;QAAC,YAAY,EAAE,UAAU,CAAC;QAAC,eAAe,EAAE,UAAU,CAAA;KAAE,EACzG,SAAS,EAAE,iBAAiB,EACpB,MAAM,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EACxD,cAAc,EAAE,uBAAuB,EACvC,eAAe,EAAE,uBAAuB,EACxC,WAAW,EAAE,iBAAiB,GAAG;QAAE,gBAAgB,EAAE,QAAQ,CAAA;KAAE,EAC/D,GAAG,GAAE,MAAiC;IAWzD;;;;;;OAMG;WACiB,aAAa,CAC/B,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE,iBAAiB,EAChC,IAAI,EAAE;QAAE,SAAS,EAAE,eAAe,CAAC;QAAC,cAAc,EAAE,uBAAuB,CAAA;KAAE,EAC7E,gBAAgB,UAAO,GACtB,OAAO,CAAC,QAAQ,CAAC;IAkDpB;;;OAGG;IACU,KAAK,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BrD,aAAa;YAON,QAAQ;IAgBtB;;OAEG;YAEW,IAAI;IAmGlB,qGAAqG;YACvF,QAAQ;IAatB,wFAAwF;YAC1E,gBAAgB;IA8C9B,OAAO,CAAC,SAAS;YAUH,oBAAoB;YA8FpB,qBAAqB;YAkBrB,sBAAsB;YAsCtB,cAAc;YAQd,cAAc;YAwOd,kCAAkC;IA6ChD,yCAAyC;IAClC,MAAM;IAWb;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIvC,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIzC,gBAAgB,IAAI,MAAM;IAQ1B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ3B,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAkB1D,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAkBpE,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BnE,mFAAmF;IAC5E,qBAAqB,IAAI,OAAO;IAIvC;;;;;;OAMG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAInF,yDAAyD;IAC5C,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAO3G;;;;OAIG;IACU,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAYtD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAWjF,WAAW,CAAC,MAAM,EAAE,MAAM;IAI1B,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAI1E;;;;;OAKG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIzE;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;IAIrD;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhE;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAI9E;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9C,wEAAwE;IACjE,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAIlE,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIhD,WAAW,CACtB,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAanD;;;;OAIG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAIrD;;;;OAIG;IACH,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrE,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIpC,kCAAkC,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI9F,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAqDrB,UAAU,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiCpE;AAOD;;;;;GAKG;AACH,qBAAa,mBACX,YACE,IAAI,CACF,iBAAiB,EACf,SAAS,GACT,YAAY,GACZ,oBAAoB,GACpB,uBAAuB,GACvB,sBAAsB,GACtB,yBAAyB,GACzB,4BAA4B,GAC5B,+BAA+B,GAC/B,cAAc,GACd,UAAU,GACV,OAAO,GACP,kBAAkB,CACrB;;IAIS,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB;gBAAxB,KAAK,EAAE,iBAAiB;IA0IhD,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAiCjD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwCjF,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAG5E,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAGxE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAGpE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAGjE,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAGnE,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAG1D,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAGrD,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAGrE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAGlE,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;IAG1E,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAGhE,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAG9E,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAG1C,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAGzC,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAG5D,4BAA4B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGlE,wBAAwB,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAG3D,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAG9C,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAGlE,qBAAqB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAGnE,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAG/G,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAGpC,kCAAkC,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAGvE,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAGpG,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC;IAG7C,YAAY,IAAI,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAGhH,+BAA+B,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGzE,qBAAqB,CAAC,KAAK,GAAE,WAAW,CAAC,MAAM,CAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC;IAG3F,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGvD,oBAAoB,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAG1D"}
|
|
@@ -842,8 +842,16 @@ import { ArchiverInstrumentation } from './instrumentation.js';
|
|
|
842
842
|
getBytecodeCommitment(id) {
|
|
843
843
|
return this.store.getBytecodeCommitment(id);
|
|
844
844
|
}
|
|
845
|
-
async getContract(address,
|
|
846
|
-
|
|
845
|
+
async getContract(address, maybeTimestamp) {
|
|
846
|
+
let timestamp;
|
|
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);
|
|
847
855
|
}
|
|
848
856
|
/**
|
|
849
857
|
* Gets L1 to L2 message (to be) included in a given block.
|
|
@@ -1003,14 +1011,16 @@ var Operation = /*#__PURE__*/ function(Operation) {
|
|
|
1003
1011
|
/**
|
|
1004
1012
|
* Extracts and stores contract instances out of ContractInstanceDeployed events emitted by the canonical deployer contract.
|
|
1005
1013
|
* @param allLogs - All logs emitted in a bunch of blocks.
|
|
1006
|
-
|
|
1014
|
+
* @param timestamp - Timestamp at which the updates were scheduled.
|
|
1015
|
+
* @param operation - The operation to perform on the contract instance updates (Store or Delete).
|
|
1016
|
+
*/ async #updateUpdatedContractInstances(allLogs, timestamp, operation) {
|
|
1007
1017
|
const contractUpdates = allLogs.filter((log)=>ContractInstanceUpdatedEvent.isContractInstanceUpdatedEvent(log)).map((log)=>ContractInstanceUpdatedEvent.fromLog(log)).map((e)=>e.toContractInstanceUpdate());
|
|
1008
1018
|
if (contractUpdates.length > 0) {
|
|
1009
1019
|
contractUpdates.forEach((c)=>this.#log.verbose(`${Operation[operation]} contract instance update at ${c.address.toString()}`));
|
|
1010
1020
|
if (operation == 0) {
|
|
1011
|
-
return await this.store.addContractInstanceUpdates(contractUpdates,
|
|
1021
|
+
return await this.store.addContractInstanceUpdates(contractUpdates, timestamp);
|
|
1012
1022
|
} else if (operation == 1) {
|
|
1013
|
-
return await this.store.deleteContractInstanceUpdates(contractUpdates,
|
|
1023
|
+
return await this.store.deleteContractInstanceUpdates(contractUpdates, timestamp);
|
|
1014
1024
|
}
|
|
1015
1025
|
}
|
|
1016
1026
|
return true;
|
|
@@ -1081,7 +1091,7 @@ var Operation = /*#__PURE__*/ function(Operation) {
|
|
|
1081
1091
|
return (await Promise.all([
|
|
1082
1092
|
this.#updateRegisteredContractClasses(contractClassLogs, block.block.number, 0),
|
|
1083
1093
|
this.#updateDeployedContractInstances(privateLogs, block.block.number, 0),
|
|
1084
|
-
this.#updateUpdatedContractInstances(publicLogs, block.block.
|
|
1094
|
+
this.#updateUpdatedContractInstances(publicLogs, block.block.header.globalVariables.timestamp, 0),
|
|
1085
1095
|
this.#storeBroadcastedIndividualFunctions(contractClassLogs, block.block.number)
|
|
1086
1096
|
])).every(Boolean);
|
|
1087
1097
|
})
|
|
@@ -1109,7 +1119,7 @@ var Operation = /*#__PURE__*/ function(Operation) {
|
|
|
1109
1119
|
return (await Promise.all([
|
|
1110
1120
|
this.#updateRegisteredContractClasses(contractClassLogs, block.block.number, 1),
|
|
1111
1121
|
this.#updateDeployedContractInstances(privateLogs, block.block.number, 1),
|
|
1112
|
-
this.#updateUpdatedContractInstances(publicLogs, block.block.
|
|
1122
|
+
this.#updateUpdatedContractInstances(publicLogs, block.block.header.globalVariables.timestamp, 1)
|
|
1113
1123
|
])).every(Boolean);
|
|
1114
1124
|
}),
|
|
1115
1125
|
this.store.deleteLogs(blocks.map((b)=>b.block)),
|
|
@@ -1177,8 +1187,8 @@ var Operation = /*#__PURE__*/ function(Operation) {
|
|
|
1177
1187
|
getBytecodeCommitment(contractClassId) {
|
|
1178
1188
|
return this.store.getBytecodeCommitment(contractClassId);
|
|
1179
1189
|
}
|
|
1180
|
-
getContractInstance(address,
|
|
1181
|
-
return this.store.getContractInstance(address,
|
|
1190
|
+
getContractInstance(address, timestamp) {
|
|
1191
|
+
return this.store.getContractInstance(address, timestamp);
|
|
1182
1192
|
}
|
|
1183
1193
|
getContractClassIds() {
|
|
1184
1194
|
return this.store.getContractClassIds();
|
|
@@ -8,6 +8,7 @@ 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';
|
|
11
12
|
import type { InboxMessage } from './structs/inbox_message.js';
|
|
12
13
|
import type { PublishedL2Block } from './structs/published.js';
|
|
13
14
|
/**
|
|
@@ -185,21 +186,22 @@ export interface ArchiverDataStore {
|
|
|
185
186
|
/**
|
|
186
187
|
* Add new contract instance updates
|
|
187
188
|
* @param data - List of contract updates to be added.
|
|
188
|
-
* @param
|
|
189
|
+
* @param timestamp - Timestamp at which the updates were scheduled.
|
|
189
190
|
* @returns True if the operation is successful.
|
|
190
191
|
*/
|
|
191
|
-
addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
192
|
-
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
192
|
+
addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], timestamp: UInt64): Promise<boolean>;
|
|
193
|
+
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], timestamp: UInt64): Promise<boolean>;
|
|
193
194
|
/**
|
|
194
195
|
* Adds private functions to a contract class.
|
|
195
196
|
*/
|
|
196
197
|
addFunctions(contractClassId: Fr, privateFunctions: ExecutablePrivateFunctionWithMembershipProof[], utilityFunctions: UtilityFunctionWithMembershipProof[]): Promise<boolean>;
|
|
197
198
|
/**
|
|
198
|
-
* Returns a contract instance given its address and the given
|
|
199
|
+
* Returns a contract instance given its address and the given timestamp, or undefined if not exists.
|
|
199
200
|
* @param address - Address of the contract.
|
|
200
|
-
* @param
|
|
201
|
+
* @param timestamp - Timestamp to get the contract instance at. Contract updates might change the instance.
|
|
202
|
+
* @returns The contract instance or undefined if not found.
|
|
201
203
|
*/
|
|
202
|
-
getContractInstance(address: AztecAddress,
|
|
204
|
+
getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
203
205
|
/** Returns the list of all class ids known by the archiver. */
|
|
204
206
|
getContractClassIds(): Promise<Fr[]>;
|
|
205
207
|
/** 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,QAu/B/D"}
|
|
@@ -574,6 +574,7 @@ 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;
|
|
577
578
|
beforeEach(async ()=>{
|
|
578
579
|
const classId = Fr.random();
|
|
579
580
|
const randomInstance = await SerializableContractInstance.random({
|
|
@@ -589,23 +590,23 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
589
590
|
], blockNum);
|
|
590
591
|
});
|
|
591
592
|
it('returns previously stored contract instances', async ()=>{
|
|
592
|
-
await expect(store.getContractInstance(contractInstance.address,
|
|
593
|
+
await expect(store.getContractInstance(contractInstance.address, timestamp)).resolves.toMatchObject(contractInstance);
|
|
593
594
|
});
|
|
594
595
|
it('returns undefined if contract instance is not found', async ()=>{
|
|
595
|
-
await expect(store.getContractInstance(await AztecAddress.random(),
|
|
596
|
+
await expect(store.getContractInstance(await AztecAddress.random(), timestamp)).resolves.toBeUndefined();
|
|
596
597
|
});
|
|
597
598
|
it('returns undefined if previously stored contract instances was deleted', async ()=>{
|
|
598
599
|
await store.deleteContractInstances([
|
|
599
600
|
contractInstance
|
|
600
601
|
], blockNum);
|
|
601
|
-
await expect(store.getContractInstance(contractInstance.address,
|
|
602
|
+
await expect(store.getContractInstance(contractInstance.address, timestamp)).resolves.toBeUndefined();
|
|
602
603
|
});
|
|
603
604
|
});
|
|
604
605
|
describe('contractInstanceUpdates', ()=>{
|
|
605
606
|
let contractInstance;
|
|
606
607
|
let classId;
|
|
607
608
|
let nextClassId;
|
|
608
|
-
const
|
|
609
|
+
const timestampOfChange = 3600n;
|
|
609
610
|
beforeEach(async ()=>{
|
|
610
611
|
classId = Fr.random();
|
|
611
612
|
nextClassId = Fr.random();
|
|
@@ -624,23 +625,23 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
624
625
|
{
|
|
625
626
|
prevContractClassId: classId,
|
|
626
627
|
newContractClassId: nextClassId,
|
|
627
|
-
|
|
628
|
+
timestampOfChange,
|
|
628
629
|
address: contractInstance.address
|
|
629
630
|
}
|
|
630
|
-
],
|
|
631
|
+
], timestampOfChange - 1n);
|
|
631
632
|
});
|
|
632
633
|
it('gets the correct current class id for a contract not updated yet', async ()=>{
|
|
633
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
634
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, timestampOfChange - 1n);
|
|
634
635
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
635
636
|
expect(fetchedInstance?.currentContractClassId).toEqual(classId);
|
|
636
637
|
});
|
|
637
638
|
it('gets the correct current class id for a contract that has just been updated', async ()=>{
|
|
638
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
639
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, timestampOfChange);
|
|
639
640
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
640
641
|
expect(fetchedInstance?.currentContractClassId).toEqual(nextClassId);
|
|
641
642
|
});
|
|
642
643
|
it('gets the correct current class id for a contract that was updated in the past', async ()=>{
|
|
643
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
644
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, timestampOfChange + 1n);
|
|
644
645
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
645
646
|
expect(fetchedInstance?.currentContractClassId).toEqual(nextClassId);
|
|
646
647
|
});
|
|
@@ -657,7 +658,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
657
658
|
await store.addContractInstances([
|
|
658
659
|
otherContractInstance
|
|
659
660
|
], 1);
|
|
660
|
-
const fetchedInstance = await store.getContractInstance(otherContractInstance.address,
|
|
661
|
+
const fetchedInstance = await store.getContractInstance(otherContractInstance.address, timestampOfChange + 1n);
|
|
661
662
|
expect(fetchedInstance?.originalContractClassId).toEqual(otherClassId);
|
|
662
663
|
expect(fetchedInstance?.currentContractClassId).toEqual(otherClassId);
|
|
663
664
|
});
|
|
@@ -679,11 +680,11 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
679
680
|
{
|
|
680
681
|
prevContractClassId: otherClassId,
|
|
681
682
|
newContractClassId: otherNextClassId,
|
|
682
|
-
|
|
683
|
+
timestampOfChange,
|
|
683
684
|
address: otherContractInstance.address
|
|
684
685
|
}
|
|
685
|
-
],
|
|
686
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
686
|
+
], timestampOfChange - 1n);
|
|
687
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, timestampOfChange + 1n);
|
|
687
688
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
688
689
|
expect(fetchedInstance?.currentContractClassId).toEqual(nextClassId);
|
|
689
690
|
});
|
|
@@ -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,13 +63,15 @@ 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] = await Promise.all([
|
|
66
|
+
const [chainId, version, targetCommitteeSize] = await Promise.all([
|
|
67
67
|
publicClient.getChainId(),
|
|
68
|
-
rollup.read.getVersion()
|
|
68
|
+
rollup.read.getVersion(),
|
|
69
|
+
rollup.read.getTargetCommitteeSize()
|
|
69
70
|
]);
|
|
70
71
|
rollupConstants = {
|
|
71
72
|
chainId: new Fr(chainId),
|
|
72
|
-
version: new Fr(version)
|
|
73
|
+
version: new Fr(version),
|
|
74
|
+
targetCommitteeSize: Number(targetCommitteeSize)
|
|
73
75
|
};
|
|
74
76
|
}
|
|
75
77
|
const newBlocks = await processL2BlockProposedLogs(rollup, publicClient, blobSinkClient, l2BlockProposedLogs, rollupConstants, logger);
|
|
@@ -85,7 +87,7 @@ export function retrievedBlockToPublishedL2Block(retrievedBlock) {
|
|
|
85
87
|
* @param publicClient - The viem public client to use for transaction retrieval.
|
|
86
88
|
* @param logs - L2BlockProposed logs.
|
|
87
89
|
* @returns - An array blocks.
|
|
88
|
-
*/ async function processL2BlockProposedLogs(rollup, publicClient, blobSinkClient, logs, { chainId, version }, logger) {
|
|
90
|
+
*/ async function processL2BlockProposedLogs(rollup, publicClient, blobSinkClient, logs, { chainId, version, targetCommitteeSize }, logger) {
|
|
89
91
|
const retrievedBlocks = [];
|
|
90
92
|
await asyncPool(10, logs, async (log)=>{
|
|
91
93
|
const l2BlockNumber = Number(log.args.blockNumber);
|
|
@@ -96,7 +98,7 @@ export function retrievedBlockToPublishedL2Block(retrievedBlock) {
|
|
|
96
98
|
const blobHashes = log.args.versionedBlobHashes.map((blobHash)=>Buffer.from(blobHash.slice(2), 'hex'));
|
|
97
99
|
// The value from the event and contract will match only if the block is in the chain.
|
|
98
100
|
if (archive === archiveFromChain) {
|
|
99
|
-
const block = await getBlockFromRollupTx(publicClient, blobSinkClient, log.transactionHash, blobHashes, l2BlockNumber, rollup.address, logger);
|
|
101
|
+
const block = await getBlockFromRollupTx(publicClient, blobSinkClient, log.transactionHash, blobHashes, l2BlockNumber, rollup.address, targetCommitteeSize, logger);
|
|
100
102
|
const l1 = {
|
|
101
103
|
blockNumber: log.blockNumber,
|
|
102
104
|
blockHash: log.blockHash,
|
|
@@ -177,7 +179,7 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
177
179
|
* @param txHash - Hash of the tx that published it.
|
|
178
180
|
* @param l2BlockNumber - L2 block number.
|
|
179
181
|
* @returns L2 block from the calldata, deserialized
|
|
180
|
-
*/ async function getBlockFromRollupTx(publicClient, blobSinkClient, txHash, blobHashes, l2BlockNumber, rollupAddress, logger) {
|
|
182
|
+
*/ async function getBlockFromRollupTx(publicClient, blobSinkClient, txHash, blobHashes, l2BlockNumber, rollupAddress, targetCommitteeSize, logger) {
|
|
181
183
|
const { input: forwarderData, blockHash } = await publicClient.getTransaction({
|
|
182
184
|
hash: txHash
|
|
183
185
|
});
|
|
@@ -218,7 +220,7 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
218
220
|
stateReference,
|
|
219
221
|
header,
|
|
220
222
|
body,
|
|
221
|
-
attestations:
|
|
223
|
+
attestations: CommitteeAttestation.fromPacked(attestations, targetCommitteeSize)
|
|
222
224
|
};
|
|
223
225
|
}
|
|
224
226
|
/** 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,7 +2,8 @@ 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
|
-
type
|
|
5
|
+
import type { UInt64 } from '@aztec/stdlib/types';
|
|
6
|
+
type ContractInstanceUpdateKey = [string, string] | [string, string, number];
|
|
6
7
|
/**
|
|
7
8
|
* LMDB implementation of the ArchiverDataStore interface.
|
|
8
9
|
*/
|
|
@@ -12,11 +13,11 @@ export declare class ContractInstanceStore {
|
|
|
12
13
|
constructor(db: AztecAsyncKVStore);
|
|
13
14
|
addContractInstance(contractInstance: ContractInstanceWithAddress, blockNumber: number): Promise<void>;
|
|
14
15
|
deleteContractInstance(contractInstance: ContractInstanceWithAddress): Promise<void>;
|
|
15
|
-
getUpdateKey(contractAddress: AztecAddress,
|
|
16
|
-
addContractInstanceUpdate(contractInstanceUpdate: ContractInstanceUpdateWithAddress,
|
|
17
|
-
deleteContractInstanceUpdate(contractInstanceUpdate: ContractInstanceUpdateWithAddress,
|
|
18
|
-
getCurrentContractInstanceClassId(address: AztecAddress,
|
|
19
|
-
getContractInstance(address: AztecAddress,
|
|
16
|
+
getUpdateKey(contractAddress: AztecAddress, timestamp: UInt64, logIndex?: number): ContractInstanceUpdateKey;
|
|
17
|
+
addContractInstanceUpdate(contractInstanceUpdate: ContractInstanceUpdateWithAddress, timestamp: UInt64, logIndex: number): Promise<void>;
|
|
18
|
+
deleteContractInstanceUpdate(contractInstanceUpdate: ContractInstanceUpdateWithAddress, timestamp: UInt64, logIndex: number): Promise<void>;
|
|
19
|
+
getCurrentContractInstanceClassId(address: AztecAddress, timestamp: UInt64, originalClassId: Fr): Promise<Fr>;
|
|
20
|
+
getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
20
21
|
getContractInstanceDeploymentBlockNumber(address: AztecAddress): Promise<number | undefined>;
|
|
21
22
|
}
|
|
22
23
|
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;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,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,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,yBAAyB;IAQ5G,yBAAyB,CACvB,sBAAsB,EAAE,iCAAiC,EACzD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAOhB,4BAA4B,CAC1B,sBAAsB,EAAE,iCAAiC,EACzD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAIV,iCAAiC,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAsB7G,mBAAmB,CACvB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,GAChB,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, timestamp, logIndex) {
|
|
28
28
|
if (logIndex === undefined) {
|
|
29
29
|
return [
|
|
30
30
|
contractAddress.toString(),
|
|
31
|
-
|
|
31
|
+
timestamp.toString()
|
|
32
32
|
];
|
|
33
33
|
} else {
|
|
34
34
|
return [
|
|
35
35
|
contractAddress.toString(),
|
|
36
|
-
|
|
36
|
+
timestamp.toString(),
|
|
37
37
|
logIndex
|
|
38
38
|
];
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
addContractInstanceUpdate(contractInstanceUpdate,
|
|
42
|
-
return this.#contractInstanceUpdates.set(this.getUpdateKey(contractInstanceUpdate.address,
|
|
41
|
+
addContractInstanceUpdate(contractInstanceUpdate, timestamp, logIndex) {
|
|
42
|
+
return this.#contractInstanceUpdates.set(this.getUpdateKey(contractInstanceUpdate.address, timestamp, logIndex), new SerializableContractInstanceUpdate(contractInstanceUpdate).toBuffer());
|
|
43
43
|
}
|
|
44
|
-
deleteContractInstanceUpdate(contractInstanceUpdate,
|
|
45
|
-
return this.#contractInstanceUpdates.delete(this.getUpdateKey(contractInstanceUpdate.address,
|
|
44
|
+
deleteContractInstanceUpdate(contractInstanceUpdate, timestamp, logIndex) {
|
|
45
|
+
return this.#contractInstanceUpdates.delete(this.getUpdateKey(contractInstanceUpdate.address, timestamp, logIndex));
|
|
46
46
|
}
|
|
47
|
-
async getCurrentContractInstanceClassId(address,
|
|
48
|
-
// We need to find the last update before the given
|
|
47
|
+
async getCurrentContractInstanceClassId(address, timestamp, originalClassId) {
|
|
48
|
+
// We need to find the last update before the given timestamp
|
|
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, 0n),
|
|
52
|
+
end: this.getUpdateKey(address, timestamp + 1n),
|
|
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 (timestamp < update.timestampOfChange) {
|
|
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, timestamp) {
|
|
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, timestamp, instance.originalContractClassId);
|
|
72
72
|
return instance;
|
|
73
73
|
}
|
|
74
74
|
getContractInstanceDeploymentBlockNumber(address) {
|
|
@@ -8,6 +8,7 @@ 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';
|
|
11
12
|
import type { ArchiverDataStore, ArchiverL1SynchPoint } from '../archiver_store.js';
|
|
12
13
|
import type { InboxMessage } from '../structs/inbox_message.js';
|
|
13
14
|
import type { PublishedL2Block } from '../structs/published.js';
|
|
@@ -25,14 +26,14 @@ export declare class KVArchiverDataStore implements ArchiverDataStore, ContractD
|
|
|
25
26
|
constructor(db: AztecAsyncKVStore, logsMaxPageSize?: number);
|
|
26
27
|
transactionAsync<T>(callback: () => Promise<T>): Promise<T>;
|
|
27
28
|
getBlockNumber(): Promise<number>;
|
|
28
|
-
getContract(address: AztecAddress,
|
|
29
|
+
getContract(address: AztecAddress, maybeTimestamp?: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
29
30
|
backupTo(path: string, compress?: boolean): Promise<string>;
|
|
30
31
|
close(): Promise<void>;
|
|
31
32
|
getDebugFunctionName(_address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
32
33
|
registerContractFunctionSignatures(signatures: string[]): Promise<void>;
|
|
33
34
|
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
34
35
|
getContractClassIds(): Promise<Fr[]>;
|
|
35
|
-
getContractInstance(address: AztecAddress,
|
|
36
|
+
getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
36
37
|
getContractInstanceDeploymentBlockNumber(address: AztecAddress): Promise<number | undefined>;
|
|
37
38
|
addContractClasses(data: ContractClassPublic[], bytecodeCommitments: Fr[], blockNumber: number): Promise<boolean>;
|
|
38
39
|
deleteContractClasses(data: ContractClassPublic[], blockNumber: number): Promise<boolean>;
|
|
@@ -40,8 +41,8 @@ export declare class KVArchiverDataStore implements ArchiverDataStore, ContractD
|
|
|
40
41
|
addFunctions(contractClassId: Fr, privateFunctions: ExecutablePrivateFunctionWithMembershipProof[], utilityFunctions: UtilityFunctionWithMembershipProof[]): Promise<boolean>;
|
|
41
42
|
addContractInstances(data: ContractInstanceWithAddress[], blockNumber: number): Promise<boolean>;
|
|
42
43
|
deleteContractInstances(data: ContractInstanceWithAddress[], _blockNumber: number): Promise<boolean>;
|
|
43
|
-
addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
44
|
-
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
44
|
+
addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], timestamp: UInt64): Promise<boolean>;
|
|
45
|
+
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], timestamp: UInt64): Promise<boolean>;
|
|
45
46
|
/**
|
|
46
47
|
* Append new blocks to the store's list.
|
|
47
48
|
* @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,8 +38,10 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
38
38
|
getBlockNumber() {
|
|
39
39
|
return this.getSynchedL2BlockNumber();
|
|
40
40
|
}
|
|
41
|
-
async getContract(address,
|
|
42
|
-
|
|
41
|
+
async getContract(address, maybeTimestamp) {
|
|
42
|
+
const [header] = await this.getBlockHeaders(await this.getBlockNumber(), 1);
|
|
43
|
+
const timestamp = maybeTimestamp ?? header.globalVariables.timestamp;
|
|
44
|
+
return this.getContractInstance(address, timestamp);
|
|
43
45
|
}
|
|
44
46
|
async backupTo(path, compress = true) {
|
|
45
47
|
await this.db.backupTo(path, compress);
|
|
@@ -70,8 +72,8 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
70
72
|
getContractClassIds() {
|
|
71
73
|
return this.#contractClassStore.getContractClassIds();
|
|
72
74
|
}
|
|
73
|
-
getContractInstance(address,
|
|
74
|
-
return this.#contractInstanceStore.getContractInstance(address,
|
|
75
|
+
getContractInstance(address, timestamp) {
|
|
76
|
+
return this.#contractInstanceStore.getContractInstance(address, timestamp);
|
|
75
77
|
}
|
|
76
78
|
getContractInstanceDeploymentBlockNumber(address) {
|
|
77
79
|
return this.#contractInstanceStore.getContractInstanceDeploymentBlockNumber(address);
|
|
@@ -94,11 +96,11 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
94
96
|
async deleteContractInstances(data, _blockNumber) {
|
|
95
97
|
return (await Promise.all(data.map((c)=>this.#contractInstanceStore.deleteContractInstance(c)))).every(Boolean);
|
|
96
98
|
}
|
|
97
|
-
async addContractInstanceUpdates(data,
|
|
98
|
-
return (await Promise.all(data.map((update, logIndex)=>this.#contractInstanceStore.addContractInstanceUpdate(update,
|
|
99
|
+
async addContractInstanceUpdates(data, timestamp) {
|
|
100
|
+
return (await Promise.all(data.map((update, logIndex)=>this.#contractInstanceStore.addContractInstanceUpdate(update, timestamp, logIndex)))).every(Boolean);
|
|
99
101
|
}
|
|
100
|
-
async deleteContractInstanceUpdates(data,
|
|
101
|
-
return (await Promise.all(data.map((update, logIndex)=>this.#contractInstanceStore.deleteContractInstanceUpdate(update,
|
|
102
|
+
async deleteContractInstanceUpdates(data, timestamp) {
|
|
103
|
+
return (await Promise.all(data.map((update, logIndex)=>this.#contractInstanceStore.deleteContractInstanceUpdate(update, timestamp, logIndex)))).every(Boolean);
|
|
102
104
|
}
|
|
103
105
|
/**
|
|
104
106
|
* Append new blocks to the store's list.
|
|
@@ -6,6 +6,7 @@ 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';
|
|
9
10
|
/**
|
|
10
11
|
* A mocked implementation of L2BlockSource to be used in tests.
|
|
11
12
|
*/
|
|
@@ -95,7 +96,7 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
|
|
|
95
96
|
stop(): Promise<void>;
|
|
96
97
|
getContractClass(_id: Fr): Promise<ContractClassPublic | undefined>;
|
|
97
98
|
getBytecodeCommitment(_id: Fr): Promise<Fr | undefined>;
|
|
98
|
-
getContract(_address: AztecAddress,
|
|
99
|
+
getContract(_address: AztecAddress, _timestamp?: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
99
100
|
getContractClassIds(): Promise<Fr[]>;
|
|
100
101
|
getDebugFunctionName(_address: AztecAddress, _selector: FunctionSelector): Promise<string | undefined>;
|
|
101
102
|
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, _timestamp) {
|
|
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.
|
|
3
|
+
"version": "1.1.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.
|
|
70
|
-
"@aztec/blob-sink": "1.
|
|
71
|
-
"@aztec/constants": "1.
|
|
72
|
-
"@aztec/ethereum": "1.
|
|
73
|
-
"@aztec/foundation": "1.
|
|
74
|
-
"@aztec/kv-store": "1.
|
|
75
|
-
"@aztec/l1-artifacts": "1.
|
|
76
|
-
"@aztec/noir-protocol-circuits-types": "1.
|
|
77
|
-
"@aztec/protocol-contracts": "1.
|
|
78
|
-
"@aztec/stdlib": "1.
|
|
79
|
-
"@aztec/telemetry-client": "1.
|
|
69
|
+
"@aztec/blob-lib": "1.1.0",
|
|
70
|
+
"@aztec/blob-sink": "1.1.0",
|
|
71
|
+
"@aztec/constants": "1.1.0",
|
|
72
|
+
"@aztec/ethereum": "1.1.0",
|
|
73
|
+
"@aztec/foundation": "1.1.0",
|
|
74
|
+
"@aztec/kv-store": "1.1.0",
|
|
75
|
+
"@aztec/l1-artifacts": "1.1.0",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "1.1.0",
|
|
77
|
+
"@aztec/protocol-contracts": "1.1.0",
|
|
78
|
+
"@aztec/stdlib": "1.1.0",
|
|
79
|
+
"@aztec/telemetry-client": "1.1.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,6 +60,7 @@ 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';
|
|
63
64
|
import { Attributes, type TelemetryClient, type Traceable, type Tracer, trackSpan } from '@aztec/telemetry-client';
|
|
64
65
|
|
|
65
66
|
import { EventEmitter } from 'events';
|
|
@@ -1115,9 +1116,18 @@ export class Archiver extends (EventEmitter as new () => ArchiverEmitter) implem
|
|
|
1115
1116
|
|
|
1116
1117
|
public async getContract(
|
|
1117
1118
|
address: AztecAddress,
|
|
1118
|
-
|
|
1119
|
+
maybeTimestamp?: UInt64,
|
|
1119
1120
|
): Promise<ContractInstanceWithAddress | undefined> {
|
|
1120
|
-
|
|
1121
|
+
let timestamp;
|
|
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);
|
|
1121
1131
|
}
|
|
1122
1132
|
|
|
1123
1133
|
/**
|
|
@@ -1321,8 +1331,10 @@ export class ArchiverStoreHelper
|
|
|
1321
1331
|
/**
|
|
1322
1332
|
* Extracts and stores contract instances out of ContractInstanceDeployed events emitted by the canonical deployer contract.
|
|
1323
1333
|
* @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).
|
|
1324
1336
|
*/
|
|
1325
|
-
async #updateUpdatedContractInstances(allLogs: PublicLog[],
|
|
1337
|
+
async #updateUpdatedContractInstances(allLogs: PublicLog[], timestamp: UInt64, operation: Operation) {
|
|
1326
1338
|
const contractUpdates = allLogs
|
|
1327
1339
|
.filter(log => ContractInstanceUpdatedEvent.isContractInstanceUpdatedEvent(log))
|
|
1328
1340
|
.map(log => ContractInstanceUpdatedEvent.fromLog(log))
|
|
@@ -1333,9 +1345,9 @@ export class ArchiverStoreHelper
|
|
|
1333
1345
|
this.#log.verbose(`${Operation[operation]} contract instance update at ${c.address.toString()}`),
|
|
1334
1346
|
);
|
|
1335
1347
|
if (operation == Operation.Store) {
|
|
1336
|
-
return await this.store.addContractInstanceUpdates(contractUpdates,
|
|
1348
|
+
return await this.store.addContractInstanceUpdates(contractUpdates, timestamp);
|
|
1337
1349
|
} else if (operation == Operation.Delete) {
|
|
1338
|
-
return await this.store.deleteContractInstanceUpdates(contractUpdates,
|
|
1350
|
+
return await this.store.deleteContractInstanceUpdates(contractUpdates, timestamp);
|
|
1339
1351
|
}
|
|
1340
1352
|
}
|
|
1341
1353
|
return true;
|
|
@@ -1423,7 +1435,11 @@ export class ArchiverStoreHelper
|
|
|
1423
1435
|
await Promise.all([
|
|
1424
1436
|
this.#updateRegisteredContractClasses(contractClassLogs, block.block.number, Operation.Store),
|
|
1425
1437
|
this.#updateDeployedContractInstances(privateLogs, block.block.number, Operation.Store),
|
|
1426
|
-
this.#updateUpdatedContractInstances(
|
|
1438
|
+
this.#updateUpdatedContractInstances(
|
|
1439
|
+
publicLogs,
|
|
1440
|
+
block.block.header.globalVariables.timestamp,
|
|
1441
|
+
Operation.Store,
|
|
1442
|
+
),
|
|
1427
1443
|
this.#storeBroadcastedIndividualFunctions(contractClassLogs, block.block.number),
|
|
1428
1444
|
])
|
|
1429
1445
|
).every(Boolean);
|
|
@@ -1458,7 +1474,11 @@ export class ArchiverStoreHelper
|
|
|
1458
1474
|
await Promise.all([
|
|
1459
1475
|
this.#updateRegisteredContractClasses(contractClassLogs, block.block.number, Operation.Delete),
|
|
1460
1476
|
this.#updateDeployedContractInstances(privateLogs, block.block.number, Operation.Delete),
|
|
1461
|
-
this.#updateUpdatedContractInstances(
|
|
1477
|
+
this.#updateUpdatedContractInstances(
|
|
1478
|
+
publicLogs,
|
|
1479
|
+
block.block.header.globalVariables.timestamp,
|
|
1480
|
+
Operation.Delete,
|
|
1481
|
+
),
|
|
1462
1482
|
])
|
|
1463
1483
|
).every(Boolean);
|
|
1464
1484
|
}),
|
|
@@ -1530,8 +1550,8 @@ export class ArchiverStoreHelper
|
|
|
1530
1550
|
getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined> {
|
|
1531
1551
|
return this.store.getBytecodeCommitment(contractClassId);
|
|
1532
1552
|
}
|
|
1533
|
-
getContractInstance(address: AztecAddress,
|
|
1534
|
-
return this.store.getContractInstance(address,
|
|
1553
|
+
getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined> {
|
|
1554
|
+
return this.store.getContractInstance(address, timestamp);
|
|
1535
1555
|
}
|
|
1536
1556
|
getContractClassIds(): Promise<Fr[]> {
|
|
1537
1557
|
return this.store.getContractClassIds();
|
|
@@ -14,6 +14,7 @@ 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';
|
|
17
18
|
|
|
18
19
|
import type { InboxMessage } from './structs/inbox_message.js';
|
|
19
20
|
import type { PublishedL2Block } from './structs/published.js';
|
|
@@ -220,11 +221,11 @@ export interface ArchiverDataStore {
|
|
|
220
221
|
/**
|
|
221
222
|
* Add new contract instance updates
|
|
222
223
|
* @param data - List of contract updates to be added.
|
|
223
|
-
* @param
|
|
224
|
+
* @param timestamp - Timestamp at which the updates were scheduled.
|
|
224
225
|
* @returns True if the operation is successful.
|
|
225
226
|
*/
|
|
226
|
-
addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
227
|
-
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
227
|
+
addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], timestamp: UInt64): Promise<boolean>;
|
|
228
|
+
deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], timestamp: UInt64): Promise<boolean>;
|
|
228
229
|
/**
|
|
229
230
|
* Adds private functions to a contract class.
|
|
230
231
|
*/
|
|
@@ -235,11 +236,12 @@ export interface ArchiverDataStore {
|
|
|
235
236
|
): Promise<boolean>;
|
|
236
237
|
|
|
237
238
|
/**
|
|
238
|
-
* Returns a contract instance given its address and the given
|
|
239
|
+
* Returns a contract instance given its address and the given timestamp, or undefined if not exists.
|
|
239
240
|
* @param address - Address of the contract.
|
|
240
|
-
* @param
|
|
241
|
+
* @param timestamp - Timestamp to get the contract instance at. Contract updates might change the instance.
|
|
242
|
+
* @returns The contract instance or undefined if not found.
|
|
241
243
|
*/
|
|
242
|
-
getContractInstance(address: AztecAddress,
|
|
244
|
+
getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
243
245
|
|
|
244
246
|
/** Returns the list of all class ids known by the archiver. */
|
|
245
247
|
getContractClassIds(): Promise<Fr[]>;
|
|
@@ -518,6 +518,7 @@ export function describeArchiverDataStore(
|
|
|
518
518
|
describe('contractInstances', () => {
|
|
519
519
|
let contractInstance: ContractInstanceWithAddress;
|
|
520
520
|
const blockNum = 10;
|
|
521
|
+
const timestamp = 3600n;
|
|
521
522
|
|
|
522
523
|
beforeEach(async () => {
|
|
523
524
|
const classId = Fr.random();
|
|
@@ -530,18 +531,18 @@ export function describeArchiverDataStore(
|
|
|
530
531
|
});
|
|
531
532
|
|
|
532
533
|
it('returns previously stored contract instances', async () => {
|
|
533
|
-
await expect(store.getContractInstance(contractInstance.address,
|
|
534
|
+
await expect(store.getContractInstance(contractInstance.address, timestamp)).resolves.toMatchObject(
|
|
534
535
|
contractInstance,
|
|
535
536
|
);
|
|
536
537
|
});
|
|
537
538
|
|
|
538
539
|
it('returns undefined if contract instance is not found', async () => {
|
|
539
|
-
await expect(store.getContractInstance(await AztecAddress.random(),
|
|
540
|
+
await expect(store.getContractInstance(await AztecAddress.random(), timestamp)).resolves.toBeUndefined();
|
|
540
541
|
});
|
|
541
542
|
|
|
542
543
|
it('returns undefined if previously stored contract instances was deleted', async () => {
|
|
543
544
|
await store.deleteContractInstances([contractInstance], blockNum);
|
|
544
|
-
await expect(store.getContractInstance(contractInstance.address,
|
|
545
|
+
await expect(store.getContractInstance(contractInstance.address, timestamp)).resolves.toBeUndefined();
|
|
545
546
|
});
|
|
546
547
|
});
|
|
547
548
|
|
|
@@ -549,7 +550,7 @@ export function describeArchiverDataStore(
|
|
|
549
550
|
let contractInstance: ContractInstanceWithAddress;
|
|
550
551
|
let classId: Fr;
|
|
551
552
|
let nextClassId: Fr;
|
|
552
|
-
const
|
|
553
|
+
const timestampOfChange = 3600n;
|
|
553
554
|
|
|
554
555
|
beforeEach(async () => {
|
|
555
556
|
classId = Fr.random();
|
|
@@ -565,28 +566,28 @@ export function describeArchiverDataStore(
|
|
|
565
566
|
{
|
|
566
567
|
prevContractClassId: classId,
|
|
567
568
|
newContractClassId: nextClassId,
|
|
568
|
-
|
|
569
|
+
timestampOfChange,
|
|
569
570
|
address: contractInstance.address,
|
|
570
571
|
},
|
|
571
572
|
],
|
|
572
|
-
|
|
573
|
+
timestampOfChange - 1n,
|
|
573
574
|
);
|
|
574
575
|
});
|
|
575
576
|
|
|
576
577
|
it('gets the correct current class id for a contract not updated yet', async () => {
|
|
577
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
578
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, timestampOfChange - 1n);
|
|
578
579
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
579
580
|
expect(fetchedInstance?.currentContractClassId).toEqual(classId);
|
|
580
581
|
});
|
|
581
582
|
|
|
582
583
|
it('gets the correct current class id for a contract that has just been updated', async () => {
|
|
583
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
584
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, timestampOfChange);
|
|
584
585
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
585
586
|
expect(fetchedInstance?.currentContractClassId).toEqual(nextClassId);
|
|
586
587
|
});
|
|
587
588
|
|
|
588
589
|
it('gets the correct current class id for a contract that was updated in the past', async () => {
|
|
589
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
590
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, timestampOfChange + 1n);
|
|
590
591
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
591
592
|
expect(fetchedInstance?.currentContractClassId).toEqual(nextClassId);
|
|
592
593
|
});
|
|
@@ -603,7 +604,7 @@ export function describeArchiverDataStore(
|
|
|
603
604
|
};
|
|
604
605
|
await store.addContractInstances([otherContractInstance], 1);
|
|
605
606
|
|
|
606
|
-
const fetchedInstance = await store.getContractInstance(otherContractInstance.address,
|
|
607
|
+
const fetchedInstance = await store.getContractInstance(otherContractInstance.address, timestampOfChange + 1n);
|
|
607
608
|
expect(fetchedInstance?.originalContractClassId).toEqual(otherClassId);
|
|
608
609
|
expect(fetchedInstance?.currentContractClassId).toEqual(otherClassId);
|
|
609
610
|
});
|
|
@@ -625,14 +626,14 @@ export function describeArchiverDataStore(
|
|
|
625
626
|
{
|
|
626
627
|
prevContractClassId: otherClassId,
|
|
627
628
|
newContractClassId: otherNextClassId,
|
|
628
|
-
|
|
629
|
+
timestampOfChange,
|
|
629
630
|
address: otherContractInstance.address,
|
|
630
631
|
},
|
|
631
632
|
],
|
|
632
|
-
|
|
633
|
+
timestampOfChange - 1n,
|
|
633
634
|
);
|
|
634
635
|
|
|
635
|
-
const fetchedInstance = await store.getContractInstance(contractInstance.address,
|
|
636
|
+
const fetchedInstance = await store.getContractInstance(contractInstance.address, timestampOfChange + 1n);
|
|
636
637
|
expect(fetchedInstance?.originalContractClassId).toEqual(classId);
|
|
637
638
|
expect(fetchedInstance?.currentContractClassId).toEqual(nextClassId);
|
|
638
639
|
});
|
|
@@ -3,7 +3,7 @@ import type { BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
|
3
3
|
import type {
|
|
4
4
|
EpochProofPublicInputArgs,
|
|
5
5
|
ViemClient,
|
|
6
|
-
|
|
6
|
+
ViemCommitteeAttestations,
|
|
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 } | undefined;
|
|
115
|
+
let rollupConstants: { chainId: Fr; version: Fr; targetCommitteeSize: number } | undefined;
|
|
116
116
|
|
|
117
117
|
do {
|
|
118
118
|
if (searchStartBlock > searchEndBlock) {
|
|
@@ -138,8 +138,16 @@ export async function retrieveBlocksFromRollup(
|
|
|
138
138
|
);
|
|
139
139
|
|
|
140
140
|
if (rollupConstants === undefined) {
|
|
141
|
-
const [chainId, version] = await Promise.all([
|
|
142
|
-
|
|
141
|
+
const [chainId, version, targetCommitteeSize] = await Promise.all([
|
|
142
|
+
publicClient.getChainId(),
|
|
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
|
+
};
|
|
143
151
|
}
|
|
144
152
|
|
|
145
153
|
const newBlocks = await processL2BlockProposedLogs(
|
|
@@ -170,7 +178,7 @@ async function processL2BlockProposedLogs(
|
|
|
170
178
|
publicClient: ViemPublicClient,
|
|
171
179
|
blobSinkClient: BlobSinkClientInterface,
|
|
172
180
|
logs: GetContractEventsReturnType<typeof RollupAbi, 'L2BlockProposed'>,
|
|
173
|
-
{ chainId, version }: { chainId: Fr; version: Fr },
|
|
181
|
+
{ chainId, version, targetCommitteeSize }: { chainId: Fr; version: Fr; targetCommitteeSize: number },
|
|
174
182
|
logger: Logger,
|
|
175
183
|
): Promise<RetrievedL2Block[]> {
|
|
176
184
|
const retrievedBlocks: RetrievedL2Block[] = [];
|
|
@@ -189,6 +197,7 @@ async function processL2BlockProposedLogs(
|
|
|
189
197
|
blobHashes,
|
|
190
198
|
l2BlockNumber,
|
|
191
199
|
rollup.address,
|
|
200
|
+
targetCommitteeSize,
|
|
192
201
|
logger,
|
|
193
202
|
);
|
|
194
203
|
|
|
@@ -287,6 +296,7 @@ async function getBlockFromRollupTx(
|
|
|
287
296
|
blobHashes: Buffer[], // TODO(md): buffer32?
|
|
288
297
|
l2BlockNumber: number,
|
|
289
298
|
rollupAddress: Hex,
|
|
299
|
+
targetCommitteeSize: number,
|
|
290
300
|
logger: Logger,
|
|
291
301
|
): Promise<Omit<RetrievedL2Block, 'l1' | 'chainId' | 'version'>> {
|
|
292
302
|
const { input: forwarderData, blockHash } = await publicClient.getTransaction({ hash: txHash });
|
|
@@ -311,7 +321,7 @@ async function getBlockFromRollupTx(
|
|
|
311
321
|
header: ViemHeader;
|
|
312
322
|
txHashes: readonly Hex[];
|
|
313
323
|
},
|
|
314
|
-
|
|
324
|
+
ViemCommitteeAttestations,
|
|
315
325
|
Hex,
|
|
316
326
|
];
|
|
317
327
|
|
|
@@ -348,7 +358,7 @@ async function getBlockFromRollupTx(
|
|
|
348
358
|
stateReference,
|
|
349
359
|
header,
|
|
350
360
|
body,
|
|
351
|
-
attestations:
|
|
361
|
+
attestations: CommitteeAttestation.fromPacked(attestations, targetCommitteeSize),
|
|
352
362
|
};
|
|
353
363
|
}
|
|
354
364
|
|
|
@@ -7,8 +7,9 @@ import {
|
|
|
7
7
|
SerializableContractInstance,
|
|
8
8
|
SerializableContractInstanceUpdate,
|
|
9
9
|
} from '@aztec/stdlib/contract';
|
|
10
|
+
import type { UInt64 } from '@aztec/stdlib/types';
|
|
10
11
|
|
|
11
|
-
type ContractInstanceUpdateKey = [string,
|
|
12
|
+
type ContractInstanceUpdateKey = [string, string] | [string, string, number];
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* LMDB implementation of the ArchiverDataStore interface.
|
|
@@ -41,46 +42,40 @@ export class ContractInstanceStore {
|
|
|
41
42
|
});
|
|
42
43
|
}
|
|
43
44
|
|
|
44
|
-
getUpdateKey(contractAddress: AztecAddress,
|
|
45
|
+
getUpdateKey(contractAddress: AztecAddress, timestamp: UInt64, logIndex?: number): ContractInstanceUpdateKey {
|
|
45
46
|
if (logIndex === undefined) {
|
|
46
|
-
return [contractAddress.toString(),
|
|
47
|
+
return [contractAddress.toString(), timestamp.toString()];
|
|
47
48
|
} else {
|
|
48
|
-
return [contractAddress.toString(),
|
|
49
|
+
return [contractAddress.toString(), timestamp.toString(), logIndex];
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
addContractInstanceUpdate(
|
|
53
54
|
contractInstanceUpdate: ContractInstanceUpdateWithAddress,
|
|
54
|
-
|
|
55
|
+
timestamp: UInt64,
|
|
55
56
|
logIndex: number,
|
|
56
57
|
): Promise<void> {
|
|
57
58
|
return this.#contractInstanceUpdates.set(
|
|
58
|
-
this.getUpdateKey(contractInstanceUpdate.address,
|
|
59
|
+
this.getUpdateKey(contractInstanceUpdate.address, timestamp, logIndex),
|
|
59
60
|
new SerializableContractInstanceUpdate(contractInstanceUpdate).toBuffer(),
|
|
60
61
|
);
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
deleteContractInstanceUpdate(
|
|
64
65
|
contractInstanceUpdate: ContractInstanceUpdateWithAddress,
|
|
65
|
-
|
|
66
|
+
timestamp: UInt64,
|
|
66
67
|
logIndex: number,
|
|
67
68
|
): Promise<void> {
|
|
68
|
-
return this.#contractInstanceUpdates.delete(
|
|
69
|
-
this.getUpdateKey(contractInstanceUpdate.address, blockNumber, logIndex),
|
|
70
|
-
);
|
|
69
|
+
return this.#contractInstanceUpdates.delete(this.getUpdateKey(contractInstanceUpdate.address, timestamp, logIndex));
|
|
71
70
|
}
|
|
72
71
|
|
|
73
|
-
async getCurrentContractInstanceClassId(
|
|
74
|
-
|
|
75
|
-
blockNumber: number,
|
|
76
|
-
originalClassId: Fr,
|
|
77
|
-
): Promise<Fr> {
|
|
78
|
-
// We need to find the last update before the given block number
|
|
72
|
+
async getCurrentContractInstanceClassId(address: AztecAddress, timestamp: UInt64, originalClassId: Fr): Promise<Fr> {
|
|
73
|
+
// We need to find the last update before the given timestamp
|
|
79
74
|
const queryResult = await this.#contractInstanceUpdates
|
|
80
75
|
.valuesAsync({
|
|
81
76
|
reverse: true,
|
|
82
|
-
start: this.getUpdateKey(address,
|
|
83
|
-
end: this.getUpdateKey(address,
|
|
77
|
+
start: this.getUpdateKey(address, 0n), // Make sure we only look at updates for this contract
|
|
78
|
+
end: this.getUpdateKey(address, timestamp + 1n), // No update can match this key since it doesn't have a log index. We want the highest key <= timestamp
|
|
84
79
|
limit: 1,
|
|
85
80
|
})
|
|
86
81
|
.next();
|
|
@@ -90,7 +85,7 @@ export class ContractInstanceStore {
|
|
|
90
85
|
|
|
91
86
|
const serializedUpdate = queryResult.value;
|
|
92
87
|
const update = SerializableContractInstanceUpdate.fromBuffer(serializedUpdate);
|
|
93
|
-
if (
|
|
88
|
+
if (timestamp < update.timestampOfChange) {
|
|
94
89
|
return update.prevContractClassId.isZero() ? originalClassId : update.prevContractClassId;
|
|
95
90
|
}
|
|
96
91
|
return update.newContractClassId;
|
|
@@ -98,7 +93,7 @@ export class ContractInstanceStore {
|
|
|
98
93
|
|
|
99
94
|
async getContractInstance(
|
|
100
95
|
address: AztecAddress,
|
|
101
|
-
|
|
96
|
+
timestamp: UInt64,
|
|
102
97
|
): Promise<ContractInstanceWithAddress | undefined> {
|
|
103
98
|
const contractInstance = await this.#contractInstances.getAsync(address.toString());
|
|
104
99
|
if (!contractInstance) {
|
|
@@ -108,7 +103,7 @@ export class ContractInstanceStore {
|
|
|
108
103
|
const instance = SerializableContractInstance.fromBuffer(contractInstance).withAddress(address);
|
|
109
104
|
instance.currentContractClassId = await this.getCurrentContractInstanceClassId(
|
|
110
105
|
address,
|
|
111
|
-
|
|
106
|
+
timestamp,
|
|
112
107
|
instance.originalContractClassId,
|
|
113
108
|
);
|
|
114
109
|
return instance;
|
|
@@ -17,6 +17,7 @@ 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';
|
|
20
21
|
|
|
21
22
|
import { join } from 'path';
|
|
22
23
|
|
|
@@ -70,9 +71,11 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
|
|
|
70
71
|
|
|
71
72
|
public async getContract(
|
|
72
73
|
address: AztecAddress,
|
|
73
|
-
|
|
74
|
+
maybeTimestamp?: UInt64,
|
|
74
75
|
): Promise<ContractInstanceWithAddress | undefined> {
|
|
75
|
-
|
|
76
|
+
const [header] = await this.getBlockHeaders(await this.getBlockNumber(), 1);
|
|
77
|
+
const timestamp = maybeTimestamp ?? header!.globalVariables.timestamp;
|
|
78
|
+
return this.getContractInstance(address, timestamp);
|
|
76
79
|
}
|
|
77
80
|
|
|
78
81
|
public async backupTo(path: string, compress = true): Promise<string> {
|
|
@@ -110,8 +113,8 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
|
|
|
110
113
|
return this.#contractClassStore.getContractClassIds();
|
|
111
114
|
}
|
|
112
115
|
|
|
113
|
-
getContractInstance(address: AztecAddress,
|
|
114
|
-
return this.#contractInstanceStore.getContractInstance(address,
|
|
116
|
+
getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined> {
|
|
117
|
+
return this.#contractInstanceStore.getContractInstance(address, timestamp);
|
|
115
118
|
}
|
|
116
119
|
|
|
117
120
|
getContractInstanceDeploymentBlockNumber(address: AztecAddress): Promise<number | undefined> {
|
|
@@ -158,23 +161,20 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
|
|
|
158
161
|
return (await Promise.all(data.map(c => this.#contractInstanceStore.deleteContractInstance(c)))).every(Boolean);
|
|
159
162
|
}
|
|
160
163
|
|
|
161
|
-
async addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[],
|
|
164
|
+
async addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], timestamp: UInt64): Promise<boolean> {
|
|
162
165
|
return (
|
|
163
166
|
await Promise.all(
|
|
164
167
|
data.map((update, logIndex) =>
|
|
165
|
-
this.#contractInstanceStore.addContractInstanceUpdate(update,
|
|
168
|
+
this.#contractInstanceStore.addContractInstanceUpdate(update, timestamp, logIndex),
|
|
166
169
|
),
|
|
167
170
|
)
|
|
168
171
|
).every(Boolean);
|
|
169
172
|
}
|
|
170
|
-
async deleteContractInstanceUpdates(
|
|
171
|
-
data: ContractInstanceUpdateWithAddress[],
|
|
172
|
-
blockNumber: number,
|
|
173
|
-
): Promise<boolean> {
|
|
173
|
+
async deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], timestamp: UInt64): 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, timestamp, logIndex),
|
|
178
178
|
),
|
|
179
179
|
)
|
|
180
180
|
).every(Boolean);
|
|
@@ -9,6 +9,7 @@ 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';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* A mocked implementation of L2BlockSource to be used in tests.
|
|
@@ -251,7 +252,7 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
251
252
|
return Promise.resolve(undefined);
|
|
252
253
|
}
|
|
253
254
|
|
|
254
|
-
getContract(_address: AztecAddress,
|
|
255
|
+
getContract(_address: AztecAddress, _timestamp?: UInt64): Promise<ContractInstanceWithAddress | undefined> {
|
|
255
256
|
return Promise.resolve(undefined);
|
|
256
257
|
}
|
|
257
258
|
|