@aztec/archiver 3.0.0-nightly.20251213 → 3.0.0-nightly.20251216

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.
@@ -84,4 +84,4 @@ export type SubmitEpochProof = {
84
84
  * @returns Epoch proof metadata from the calldata, deserialized.
85
85
  */
86
86
  export declare function getProofFromSubmitProofTx(publicClient: ViemPublicClient, txHash: `0x${string}`, expectedProverId: Fr): Promise<SubmitEpochProof>;
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9yZXRyaWV2YWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcmNoaXZlci9sMS9kYXRhX3JldHJpZXZhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXZFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWpHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQVEsb0JBQW9CLEVBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQWMsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJeEQsT0FBTyxFQUVMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssR0FBRyxFQUlULE1BQU0sTUFBTSxDQUFDO0FBR2QsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEtB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
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9yZXRyaWV2YWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcmNoaXZlci9sMS9kYXRhX3JldHJpZXZhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXZFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWpHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQVEsb0JBQW9CLEVBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQWMsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJeEQsT0FBTyxFQUVMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssR0FBRyxFQUlULE1BQU0sTUFBTSxDQUFDO0FBR2QsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEtB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
@@ -1 +1 @@
1
- {"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../../src/archiver/l1/data_retrieval.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EAIxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,KAAK,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAQ,oBAAoB,EAAc,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAc,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,GAAG,EAIT,MAAM,MAAM,CAAC;AAGd,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,MAAM,MAAM,mBAAmB,GAAG;IAChC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,EAAE,EAAE,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,EAAE,EAAE,eAAe,CAAC;IACpB,OAAO,EAAE,EAAE,CAAC;IACZ,OAAO,EAAE,EAAE,CAAC;IACZ,YAAY,EAAE,oBAAoB,EAAE,CAAC;CACtC,CAAC;AAEF,wBAAsB,8BAA8B,CAAC,EACnD,gBAAgB,EAChB,WAAW,EACX,MAAM,EAAE,gBAAgB,EACxB,kBAAkB,EAClB,EAAE,EACF,OAAO,EACP,OAAO,EACP,YAAY,EACb,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA4EpD;AAED;;;;;;;;;GASG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,qBAAqB,CAAC,OAAO,SAAS,EAAE,gBAAgB,CAAC,EACjE,YAAY,EAAE,gBAAgB,EAC9B,WAAW,EAAE,qBAAqB,EAClC,cAAc,EAAE,uBAAuB,EACvC,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE;IACjB,yBAAyB,EAAE,UAAU,CAAC;IACtC,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,uBAAuB,EAAE,UAAU,CAAC;CACrC,EACD,eAAe,EAAE,uBAAuB,EACxC,MAAM,GAAE,MAAiC,GACxC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA0DhC;AAgFD,wBAAsB,cAAc,CAAC,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGzG;AAED,wBAAsB,8BAA8B,CAClD,cAAc,EAAE,uBAAuB,EACvC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,EACrC,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CAqB7B;AAED,iHAAiH;AACjH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,qBAAqB,CAAC,OAAO,QAAQ,EAAE,UAAU,CAAC,EACzD,IAAI,EAAE,EAAE,EACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAKnC;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,qBAAqB,CAAC,OAAO,QAAQ,EAAE,UAAU,CAAC,EACzD,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,YAAY,EAAE,CAAC,CAgBzB;AAgBD,iEAAiE;AACjE,wBAAsB,6BAA6B,CACjD,YAAY,EAAE,gBAAgB,EAC9B,aAAa,EAAE,UAAU,EACzB,gBAAgB,EAAE,MAAM,EACxB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,EAAE,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,EAAE,CAAC,CAerG;AAED,yDAAyD;AACzD,wBAAsB,0BAA0B,CAC9C,YAAY,EAAE,gBAAgB,EAC9B,aAAa,EAAE,UAAU,EACzB,gBAAgB,EAAE,MAAM,EACxB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,aAAa,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,EAAE,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;CAAE,CAAC,CAAC,CAazG;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,EAAE,CAAC;IAChB,QAAQ,EAAE,EAAE,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,gBAAgB,EAC9B,MAAM,EAAE,KAAK,MAAM,EAAE,EACrB,gBAAgB,EAAE,EAAE,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAmC3B"}
1
+ {"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../../src/archiver/l1/data_retrieval.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EAIxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,KAAK,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAQ,oBAAoB,EAAc,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAc,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,GAAG,EAIT,MAAM,MAAM,CAAC;AAGd,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,MAAM,MAAM,mBAAmB,GAAG;IAChC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,EAAE,EAAE,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,EAAE,EAAE,eAAe,CAAC;IACpB,OAAO,EAAE,EAAE,CAAC;IACZ,OAAO,EAAE,EAAE,CAAC;IACZ,YAAY,EAAE,oBAAoB,EAAE,CAAC;CACtC,CAAC;AAEF,wBAAsB,8BAA8B,CAAC,EACnD,gBAAgB,EAChB,WAAW,EACX,MAAM,EAAE,gBAAgB,EACxB,kBAAkB,EAClB,EAAE,EACF,OAAO,EACP,OAAO,EACP,YAAY,EACb,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA4EpD;AAED;;;;;;;;;GASG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,qBAAqB,CAAC,OAAO,SAAS,EAAE,gBAAgB,CAAC,EACjE,YAAY,EAAE,gBAAgB,EAC9B,WAAW,EAAE,qBAAqB,EAClC,cAAc,EAAE,uBAAuB,EACvC,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE;IACjB,yBAAyB,EAAE,UAAU,CAAC;IACtC,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,uBAAuB,EAAE,UAAU,CAAC;CACrC,EACD,eAAe,EAAE,uBAAuB,EACxC,MAAM,GAAE,MAAiC,GACxC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA0DhC;AAuFD,wBAAsB,cAAc,CAAC,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGzG;AAED,wBAAsB,8BAA8B,CAClD,cAAc,EAAE,uBAAuB,EACvC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,EACrC,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CAqB7B;AAED,iHAAiH;AACjH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,qBAAqB,CAAC,OAAO,QAAQ,EAAE,UAAU,CAAC,EACzD,IAAI,EAAE,EAAE,EACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAKnC;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,qBAAqB,CAAC,OAAO,QAAQ,EAAE,UAAU,CAAC,EACzD,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,YAAY,EAAE,CAAC,CAgBzB;AAgBD,iEAAiE;AACjE,wBAAsB,6BAA6B,CACjD,YAAY,EAAE,gBAAgB,EAC9B,aAAa,EAAE,UAAU,EACzB,gBAAgB,EAAE,MAAM,EACxB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,EAAE,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,EAAE,CAAC,CAerG;AAED,yDAAyD;AACzD,wBAAsB,0BAA0B,CAC9C,YAAY,EAAE,gBAAgB,EAC9B,aAAa,EAAE,UAAU,EACzB,gBAAgB,EAAE,MAAM,EACxB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,aAAa,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,EAAE,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;CAAE,CAAC,CAAC,CAazG;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,EAAE,CAAC;IAChB,QAAQ,EAAE,EAAE,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,gBAAgB,EAC9B,MAAM,EAAE,KAAK,MAAM,EAAE,EACrB,gBAAgB,EAAE,EAAE,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAmC3B"}
@@ -142,7 +142,12 @@ export async function retrievedToPublishedCheckpoint({ checkpointNumber, archive
142
142
  const blobHashes = log.args.versionedBlobHashes.map((blobHash)=>Buffer.from(blobHash.slice(2), 'hex'));
143
143
  // The value from the event and contract will match only if the checkpoint is in the chain.
144
144
  if (archive === archiveFromChain) {
145
- const checkpoint = await calldataRetriever.getCheckpointFromRollupTx(log.transactionHash, blobHashes, checkpointNumber);
145
+ // Build expected hashes object (fields may be undefined for backwards compatibility with older events)
146
+ const expectedHashes = {
147
+ attestationsHash: log.args.attestationsHash,
148
+ payloadDigest: log.args.payloadDigest
149
+ };
150
+ const checkpoint = await calldataRetriever.getCheckpointFromRollupTx(log.transactionHash, blobHashes, checkpointNumber, expectedHashes);
146
151
  const checkpointBlobData = await getCheckpointBlobDataFromBlobs(blobSinkClient, checkpoint.blockHash, blobHashes, checkpointNumber, logger);
147
152
  const l1 = {
148
153
  blockNumber: log.blockNumber,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/archiver",
3
- "version": "3.0.0-nightly.20251213",
3
+ "version": "3.0.0-nightly.20251216",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -66,18 +66,18 @@
66
66
  ]
67
67
  },
68
68
  "dependencies": {
69
- "@aztec/blob-lib": "3.0.0-nightly.20251213",
70
- "@aztec/blob-sink": "3.0.0-nightly.20251213",
71
- "@aztec/constants": "3.0.0-nightly.20251213",
72
- "@aztec/epoch-cache": "3.0.0-nightly.20251213",
73
- "@aztec/ethereum": "3.0.0-nightly.20251213",
74
- "@aztec/foundation": "3.0.0-nightly.20251213",
75
- "@aztec/kv-store": "3.0.0-nightly.20251213",
76
- "@aztec/l1-artifacts": "3.0.0-nightly.20251213",
77
- "@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251213",
78
- "@aztec/protocol-contracts": "3.0.0-nightly.20251213",
79
- "@aztec/stdlib": "3.0.0-nightly.20251213",
80
- "@aztec/telemetry-client": "3.0.0-nightly.20251213",
69
+ "@aztec/blob-lib": "3.0.0-nightly.20251216",
70
+ "@aztec/blob-sink": "3.0.0-nightly.20251216",
71
+ "@aztec/constants": "3.0.0-nightly.20251216",
72
+ "@aztec/epoch-cache": "3.0.0-nightly.20251216",
73
+ "@aztec/ethereum": "3.0.0-nightly.20251216",
74
+ "@aztec/foundation": "3.0.0-nightly.20251216",
75
+ "@aztec/kv-store": "3.0.0-nightly.20251216",
76
+ "@aztec/l1-artifacts": "3.0.0-nightly.20251216",
77
+ "@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251216",
78
+ "@aztec/protocol-contracts": "3.0.0-nightly.20251216",
79
+ "@aztec/stdlib": "3.0.0-nightly.20251216",
80
+ "@aztec/telemetry-client": "3.0.0-nightly.20251216",
81
81
  "lodash.groupby": "^4.6.0",
82
82
  "lodash.omit": "^4.5.0",
83
83
  "tslib": "^2.5.0",
@@ -28,7 +28,7 @@ import {
28
28
  SerializableContractInstance,
29
29
  computePublicBytecodeCommitment,
30
30
  } from '@aztec/stdlib/contract';
31
- import { LogId, PrivateLog, PublicLog } from '@aztec/stdlib/logs';
31
+ import { ContractClassLog, LogId, PrivateLog, PublicLog } from '@aztec/stdlib/logs';
32
32
  import { InboxLeaf } from '@aztec/stdlib/messaging';
33
33
  import {
34
34
  makeContractClassPublic,
@@ -905,6 +905,7 @@ export function describeArchiverDataStore(
905
905
  [
906
906
  expect.objectContaining({
907
907
  blockNumber: 2,
908
+ blockHash: L2BlockHash.fromField(await blocks[2 - 1].block.hash()),
908
909
  log: makePrivateLog(tags[0]),
909
910
  isFromPublic: false,
910
911
  }),
@@ -912,6 +913,7 @@ export function describeArchiverDataStore(
912
913
  [
913
914
  expect.objectContaining({
914
915
  blockNumber: 1,
916
+ blockHash: L2BlockHash.fromField(await blocks[1 - 1].block.hash()),
915
917
  log: makePrivateLog(tags[1]),
916
918
  isFromPublic: false,
917
919
  }),
@@ -929,11 +931,13 @@ export function describeArchiverDataStore(
929
931
  [
930
932
  expect.objectContaining({
931
933
  blockNumber: 1,
934
+ blockHash: L2BlockHash.fromField(await blocks[1 - 1].block.hash()),
932
935
  log: makePrivateLog(tags[0]),
933
936
  isFromPublic: false,
934
937
  }),
935
938
  expect.objectContaining({
936
939
  blockNumber: 1,
940
+ blockHash: L2BlockHash.fromField(await blocks[1 - 1].block.hash()),
937
941
  log: makePublicLog(tags[0]),
938
942
  isFromPublic: true,
939
943
  }),
@@ -959,11 +963,13 @@ export function describeArchiverDataStore(
959
963
  [
960
964
  expect.objectContaining({
961
965
  blockNumber: 1,
966
+ blockHash: L2BlockHash.fromField(await blocks[1 - 1].block.hash()),
962
967
  log: makePrivateLog(tags[0]),
963
968
  isFromPublic: false,
964
969
  }),
965
970
  expect.objectContaining({
966
971
  blockNumber: newBlockNumber,
972
+ blockHash: L2BlockHash.fromField(await blocks[newBlockNumber - 1].block.hash()),
967
973
  log: newLog,
968
974
  isFromPublic: false,
969
975
  }),
@@ -983,6 +989,7 @@ export function describeArchiverDataStore(
983
989
  [
984
990
  expect.objectContaining({
985
991
  blockNumber: 1,
992
+ blockHash: L2BlockHash.fromField(await blocks[1 - 1].block.hash()),
986
993
  log: makePrivateLog(tags[1]),
987
994
  isFromPublic: false,
988
995
  }),
@@ -1050,6 +1057,17 @@ export function describeArchiverDataStore(
1050
1057
  }
1051
1058
  });
1052
1059
 
1060
+ it('returns block hash on public log ids', async () => {
1061
+ const targetBlock = blocks[0].block;
1062
+ const expectedBlockHash = L2BlockHash.fromField(await targetBlock.hash());
1063
+
1064
+ const logs = (await store.getPublicLogs({ fromBlock: targetBlock.number, toBlock: targetBlock.number + 1 }))
1065
+ .logs;
1066
+
1067
+ expect(logs.length).toBeGreaterThan(0);
1068
+ expect(logs.every(log => log.id.blockHash.equals(expectedBlockHash))).toBe(true);
1069
+ });
1070
+
1053
1071
  it('"fromBlock" and "toBlock" filter params are respected', async () => {
1054
1072
  // Set "fromBlock" and "toBlock"
1055
1073
  const fromBlock = 3;
@@ -1092,8 +1110,14 @@ export function describeArchiverDataStore(
1092
1110
  const targetBlockIndex = randomInt(numBlocks);
1093
1111
  const targetTxIndex = randomInt(txsPerBlock);
1094
1112
  const targetLogIndex = randomInt(numPublicLogs);
1113
+ const targetBlockHash = L2BlockHash.fromField(await blocks[targetBlockIndex].block.hash());
1095
1114
 
1096
- const afterLog = new LogId(BlockNumber(targetBlockIndex + INITIAL_L2_BLOCK_NUM), targetTxIndex, targetLogIndex);
1115
+ const afterLog = new LogId(
1116
+ BlockNumber(targetBlockIndex + INITIAL_L2_BLOCK_NUM),
1117
+ targetBlockHash,
1118
+ targetTxIndex,
1119
+ targetLogIndex,
1120
+ );
1097
1121
 
1098
1122
  const response = await store.getPublicLogs({ afterLog });
1099
1123
  const logs = response.logs;
@@ -1115,7 +1139,7 @@ export function describeArchiverDataStore(
1115
1139
  it('"txHash" filter param is ignored when "afterLog" is set', async () => {
1116
1140
  // Get random txHash
1117
1141
  const txHash = TxHash.random();
1118
- const afterLog = new LogId(BlockNumber(1), 0, 0);
1142
+ const afterLog = new LogId(BlockNumber(1), L2BlockHash.random(), 0, 0);
1119
1143
 
1120
1144
  const response = await store.getPublicLogs({ txHash, afterLog });
1121
1145
  expect(response.logs.length).toBeGreaterThan(1);
@@ -1147,20 +1171,25 @@ export function describeArchiverDataStore(
1147
1171
  await store.getPublicLogs({
1148
1172
  fromBlock: BlockNumber(2),
1149
1173
  toBlock: BlockNumber(5),
1150
- afterLog: new LogId(BlockNumber(4), 0, 0),
1174
+ afterLog: new LogId(BlockNumber(4), L2BlockHash.random(), 0, 0),
1151
1175
  })
1152
1176
  ).logs;
1153
1177
  blockNumbers = new Set(logs.map(log => log.id.blockNumber));
1154
1178
  expect(blockNumbers).toEqual(new Set([4]));
1155
1179
 
1156
- logs = (await store.getPublicLogs({ toBlock: BlockNumber(5), afterLog: new LogId(BlockNumber(5), 1, 0) })).logs;
1180
+ logs = (
1181
+ await store.getPublicLogs({
1182
+ toBlock: BlockNumber(5),
1183
+ afterLog: new LogId(BlockNumber(5), L2BlockHash.random(), 1, 0),
1184
+ })
1185
+ ).logs;
1157
1186
  expect(logs.length).toBe(0);
1158
1187
 
1159
1188
  logs = (
1160
1189
  await store.getPublicLogs({
1161
1190
  fromBlock: BlockNumber(2),
1162
1191
  toBlock: BlockNumber(5),
1163
- afterLog: new LogId(BlockNumber(100), 0, 0),
1192
+ afterLog: new LogId(BlockNumber(100), L2BlockHash.random(), 0, 0),
1164
1193
  })
1165
1194
  ).logs;
1166
1195
  expect(logs.length).toBe(0);
@@ -1171,8 +1200,14 @@ export function describeArchiverDataStore(
1171
1200
  const targetBlockIndex = randomInt(numBlocks);
1172
1201
  const targetTxIndex = randomInt(txsPerBlock);
1173
1202
  const targetLogIndex = randomInt(numPublicLogs);
1203
+ const targetBlockHash = L2BlockHash.fromField(await blocks[targetBlockIndex].block.hash());
1174
1204
 
1175
- const afterLog = new LogId(BlockNumber(targetBlockIndex + INITIAL_L2_BLOCK_NUM), targetTxIndex, targetLogIndex);
1205
+ const afterLog = new LogId(
1206
+ BlockNumber(targetBlockIndex + INITIAL_L2_BLOCK_NUM),
1207
+ targetBlockHash,
1208
+ targetTxIndex,
1209
+ targetLogIndex,
1210
+ );
1176
1211
 
1177
1212
  const response = await store.getPublicLogs({ afterLog, fromBlock: afterLog.blockNumber });
1178
1213
  const logs = response.logs;
@@ -1192,6 +1227,40 @@ export function describeArchiverDataStore(
1192
1227
  });
1193
1228
  });
1194
1229
 
1230
+ describe('getContractClassLogs', () => {
1231
+ let targetBlock: L2Block;
1232
+ let expectedContractClassLog: ContractClassLog;
1233
+
1234
+ beforeEach(async () => {
1235
+ await store.addBlocks(blocks);
1236
+
1237
+ targetBlock = blocks[0].block;
1238
+ expectedContractClassLog = await ContractClassLog.random();
1239
+ targetBlock.body.txEffects.forEach((txEffect, index) => {
1240
+ txEffect.contractClassLogs = index === 0 ? [expectedContractClassLog] : [];
1241
+ });
1242
+
1243
+ await store.addLogs([targetBlock]);
1244
+ });
1245
+
1246
+ it('returns block hash on contract class log ids', async () => {
1247
+ const result = await store.getContractClassLogs({
1248
+ fromBlock: targetBlock.number,
1249
+ toBlock: targetBlock.number + 1,
1250
+ });
1251
+
1252
+ expect(result.maxLogsHit).toBeFalsy();
1253
+ expect(result.logs).toHaveLength(1);
1254
+
1255
+ const [{ id, log }] = result.logs;
1256
+ const expectedBlockHash = L2BlockHash.fromField(await targetBlock.hash());
1257
+
1258
+ expect(id.blockHash.equals(expectedBlockHash)).toBe(true);
1259
+ expect(id.blockNumber).toEqual(targetBlock.number);
1260
+ expect(log).toEqual(expectedContractClassLog);
1261
+ });
1262
+ });
1263
+
1195
1264
  describe('pendingChainValidationStatus', () => {
1196
1265
  it('should return undefined when no status is set', async () => {
1197
1266
  const status = await store.getPendingChainValidationStatus();
@@ -31,7 +31,7 @@ import { ContractInstanceStore } from './contract_instance_store.js';
31
31
  import { LogStore } from './log_store.js';
32
32
  import { MessageStore } from './message_store.js';
33
33
 
34
- export const ARCHIVER_DB_VERSION = 4;
34
+ export const ARCHIVER_DB_VERSION = 5;
35
35
  export const MAX_FUNCTION_SIGNATURES = 1000;
36
36
  export const MAX_FUNCTION_NAME_LEN = 256;
37
37
 
@@ -1,10 +1,10 @@
1
1
  import { INITIAL_L2_BLOCK_NUM, MAX_NOTE_HASHES_PER_TX } from '@aztec/constants';
2
2
  import { BlockNumber } from '@aztec/foundation/branded-types';
3
- import type { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { createLogger } from '@aztec/foundation/log';
5
5
  import { BufferReader, numToUInt32BE } from '@aztec/foundation/serialize';
6
6
  import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
7
- import type { L2Block } from '@aztec/stdlib/block';
7
+ import { type L2Block, L2BlockHash } from '@aztec/stdlib/block';
8
8
  import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
9
9
  import {
10
10
  ContractClassLog,
@@ -42,7 +42,8 @@ export class LogStore {
42
42
  this.#logsMaxPageSize = logsMaxPageSize;
43
43
  }
44
44
 
45
- #extractTaggedLogs(block: L2Block) {
45
+ async #extractTaggedLogs(block: L2Block) {
46
+ const blockHash = L2BlockHash.fromField(await block.hash());
46
47
  const taggedLogs = new Map<string, Buffer[]>();
47
48
  const dataStartIndexForBlock =
48
49
  block.header.state.partial.noteHashTree.nextAvailableLeafIndex -
@@ -56,7 +57,9 @@ export class LogStore {
56
57
  this.#log.debug(`Found private log with tag ${tag.toString()} in block ${block.number}`);
57
58
 
58
59
  const currentLogs = taggedLogs.get(tag.toString()) ?? [];
59
- currentLogs.push(new TxScopedL2Log(txHash, dataStartIndexForTx, logIndex, block.number, log).toBuffer());
60
+ currentLogs.push(
61
+ new TxScopedL2Log(txHash, dataStartIndexForTx, logIndex, block.number, blockHash, log).toBuffer(),
62
+ );
60
63
  taggedLogs.set(tag.toString(), currentLogs);
61
64
  });
62
65
 
@@ -65,7 +68,9 @@ export class LogStore {
65
68
  this.#log.debug(`Found public log with tag ${tag.toString()} in block ${block.number}`);
66
69
 
67
70
  const currentLogs = taggedLogs.get(tag.toString()) ?? [];
68
- currentLogs.push(new TxScopedL2Log(txHash, dataStartIndexForTx, logIndex, block.number, log).toBuffer());
71
+ currentLogs.push(
72
+ new TxScopedL2Log(txHash, dataStartIndexForTx, logIndex, block.number, blockHash, log).toBuffer(),
73
+ );
69
74
  taggedLogs.set(tag.toString(), currentLogs);
70
75
  });
71
76
  });
@@ -77,16 +82,15 @@ export class LogStore {
77
82
  * @param blocks - The blocks for which to add the logs.
78
83
  * @returns True if the operation is successful.
79
84
  */
80
- addLogs(blocks: L2Block[]): Promise<boolean> {
81
- const taggedLogsToAdd = blocks
82
- .map(block => this.#extractTaggedLogs(block))
83
- .reduce((acc, val) => {
84
- for (const [tag, logs] of val.entries()) {
85
- const currentLogs = acc.get(tag) ?? [];
86
- acc.set(tag, currentLogs.concat(logs));
87
- }
88
- return acc;
89
- }, new Map());
85
+ async addLogs(blocks: L2Block[]): Promise<boolean> {
86
+ const taggedLogsInBlocks = await Promise.all(blocks.map(block => this.#extractTaggedLogs(block)));
87
+ const taggedLogsToAdd = taggedLogsInBlocks.reduce((acc, taggedLogs) => {
88
+ for (const [tag, logs] of taggedLogs.entries()) {
89
+ const currentLogs = acc.get(tag) ?? [];
90
+ acc.set(tag, currentLogs.concat(logs));
91
+ }
92
+ return acc;
93
+ }, new Map<string, Buffer[]>());
90
94
  const tagsToUpdate = Array.from(taggedLogsToAdd.keys());
91
95
 
92
96
  return this.db.transactionAsync(async () => {
@@ -102,6 +106,8 @@ export class LogStore {
102
106
  }
103
107
  });
104
108
  for (const block of blocks) {
109
+ const blockHash = await block.hash();
110
+
105
111
  const tagsInBlock = [];
106
112
  for (const [tag, logs] of taggedLogsToAdd.entries()) {
107
113
  await this.#logsByTag.set(tag, logs);
@@ -129,14 +135,31 @@ export class LogStore {
129
135
  )
130
136
  .flat();
131
137
 
132
- await this.#publicLogsByBlock.set(block.number, Buffer.concat(publicLogsInBlock));
133
- await this.#contractClassLogsByBlock.set(block.number, Buffer.concat(contractClassLogsInBlock));
138
+ await this.#publicLogsByBlock.set(block.number, this.#packWithBlockHash(blockHash, publicLogsInBlock));
139
+ await this.#contractClassLogsByBlock.set(
140
+ block.number,
141
+ this.#packWithBlockHash(blockHash, contractClassLogsInBlock),
142
+ );
134
143
  }
135
144
 
136
145
  return true;
137
146
  });
138
147
  }
139
148
 
149
+ #packWithBlockHash(blockHash: Fr, data: Buffer<ArrayBufferLike>[]): Buffer<ArrayBufferLike> {
150
+ return Buffer.concat([blockHash.toBuffer(), ...data]);
151
+ }
152
+
153
+ #unpackBlockHash(reader: BufferReader): L2BlockHash {
154
+ const blockHash = reader.remainingBytes() > 0 ? reader.readObject(Fr) : undefined;
155
+
156
+ if (!blockHash) {
157
+ throw new Error('Failed to read block hash from log entry buffer');
158
+ }
159
+
160
+ return L2BlockHash.fromField(blockHash);
161
+ }
162
+
140
163
  deleteLogs(blocks: L2Block[]): Promise<boolean> {
141
164
  return this.db.transactionAsync(async () => {
142
165
  const tagsToDelete = (
@@ -207,6 +230,9 @@ export class LogStore {
207
230
  const buffer = (await this.#publicLogsByBlock.getAsync(blockNumber)) ?? Buffer.alloc(0);
208
231
  const publicLogsInBlock: [PublicLog[]] = [[]];
209
232
  const reader = new BufferReader(buffer);
233
+
234
+ const blockHash = this.#unpackBlockHash(reader);
235
+
210
236
  while (reader.remainingBytes() > 0) {
211
237
  const indexOfTx = reader.readNumber();
212
238
  const numLogsInTx = reader.readNumber();
@@ -219,7 +245,7 @@ export class LogStore {
219
245
  const txLogs = publicLogsInBlock[txIndex];
220
246
 
221
247
  const logs: ExtendedPublicLog[] = [];
222
- const maxLogsHit = this.#accumulateLogs(logs, blockNumber, txIndex, txLogs, filter);
248
+ const maxLogsHit = this.#accumulateLogs(logs, blockNumber, blockHash, txIndex, txLogs, filter);
223
249
 
224
250
  return { logs, maxLogsHit };
225
251
  }
@@ -242,6 +268,9 @@ export class LogStore {
242
268
  loopOverBlocks: for await (const [blockNumber, logBuffer] of this.#publicLogsByBlock.entriesAsync({ start, end })) {
243
269
  const publicLogsInBlock: [PublicLog[]] = [[]];
244
270
  const reader = new BufferReader(logBuffer);
271
+
272
+ const blockHash = this.#unpackBlockHash(reader);
273
+
245
274
  while (reader.remainingBytes() > 0) {
246
275
  const indexOfTx = reader.readNumber();
247
276
  const numLogsInTx = reader.readNumber();
@@ -252,7 +281,7 @@ export class LogStore {
252
281
  }
253
282
  for (let txIndex = filter.afterLog?.txIndex ?? 0; txIndex < publicLogsInBlock.length; txIndex++) {
254
283
  const txLogs = publicLogsInBlock[txIndex];
255
- maxLogsHit = this.#accumulateLogs(logs, blockNumber, txIndex, txLogs, filter);
284
+ maxLogsHit = this.#accumulateLogs(logs, blockNumber, blockHash, txIndex, txLogs, filter);
256
285
  if (maxLogsHit) {
257
286
  this.#log.debug(`Max logs hit at block ${blockNumber}`);
258
287
  break loopOverBlocks;
@@ -291,6 +320,8 @@ export class LogStore {
291
320
  const contractClassLogsInBlock: [ContractClassLog[]] = [[]];
292
321
 
293
322
  const reader = new BufferReader(contractClassLogsBuffer);
323
+ const blockHash = this.#unpackBlockHash(reader);
324
+
294
325
  while (reader.remainingBytes() > 0) {
295
326
  const indexOfTx = reader.readNumber();
296
327
  const numLogsInTx = reader.readNumber();
@@ -303,7 +334,7 @@ export class LogStore {
303
334
  const txLogs = contractClassLogsInBlock[txIndex];
304
335
 
305
336
  const logs: ExtendedContractClassLog[] = [];
306
- const maxLogsHit = this.#accumulateLogs(logs, blockNumber, txIndex, txLogs, filter);
337
+ const maxLogsHit = this.#accumulateLogs(logs, blockNumber, blockHash, txIndex, txLogs, filter);
307
338
 
308
339
  return { logs, maxLogsHit };
309
340
  }
@@ -329,6 +360,7 @@ export class LogStore {
329
360
  })) {
330
361
  const contractClassLogsInBlock: [ContractClassLog[]] = [[]];
331
362
  const reader = new BufferReader(logBuffer);
363
+ const blockHash = this.#unpackBlockHash(reader);
332
364
  while (reader.remainingBytes() > 0) {
333
365
  const indexOfTx = reader.readNumber();
334
366
  const numLogsInTx = reader.readNumber();
@@ -339,7 +371,7 @@ export class LogStore {
339
371
  }
340
372
  for (let txIndex = filter.afterLog?.txIndex ?? 0; txIndex < contractClassLogsInBlock.length; txIndex++) {
341
373
  const txLogs = contractClassLogsInBlock[txIndex];
342
- maxLogsHit = this.#accumulateLogs(logs, blockNumber, txIndex, txLogs, filter);
374
+ maxLogsHit = this.#accumulateLogs(logs, blockNumber, blockHash, txIndex, txLogs, filter);
343
375
  if (maxLogsHit) {
344
376
  this.#log.debug(`Max logs hit at block ${blockNumber}`);
345
377
  break loopOverBlocks;
@@ -353,9 +385,10 @@ export class LogStore {
353
385
  #accumulateLogs(
354
386
  results: (ExtendedContractClassLog | ExtendedPublicLog)[],
355
387
  blockNumber: number,
388
+ blockHash: L2BlockHash,
356
389
  txIndex: number,
357
390
  txLogs: (ContractClassLog | PublicLog)[],
358
- filter: LogFilter,
391
+ filter: LogFilter = {},
359
392
  ): boolean {
360
393
  let maxLogsHit = false;
361
394
  let logIndex = typeof filter.afterLog?.logIndex === 'number' ? filter.afterLog.logIndex + 1 : 0;
@@ -363,9 +396,13 @@ export class LogStore {
363
396
  const log = txLogs[logIndex];
364
397
  if (!filter.contractAddress || log.contractAddress.equals(filter.contractAddress)) {
365
398
  if (log instanceof ContractClassLog) {
366
- results.push(new ExtendedContractClassLog(new LogId(BlockNumber(blockNumber), txIndex, logIndex), log));
399
+ results.push(
400
+ new ExtendedContractClassLog(new LogId(BlockNumber(blockNumber), blockHash, txIndex, logIndex), log),
401
+ );
402
+ } else if (log instanceof PublicLog) {
403
+ results.push(new ExtendedPublicLog(new LogId(BlockNumber(blockNumber), blockHash, txIndex, logIndex), log));
367
404
  } else {
368
- results.push(new ExtendedPublicLog(new LogId(BlockNumber(blockNumber), txIndex, logIndex), log));
405
+ throw new Error('Unknown log type');
369
406
  }
370
407
 
371
408
  if (results.length >= this.#logsMaxPageSize) {
@@ -141,8 +141,8 @@ async function main() {
141
141
  logger.info('Retrieving block header from rollup transaction...');
142
142
  logger.info('');
143
143
 
144
- // For this script, we don't have blob hashes, so pass empty array
145
- const result = await retriever.getCheckpointFromRollupTx(txHash, [], CheckpointNumber(l2BlockNumber));
144
+ // For this script, we don't have blob hashes or expected hashes, so pass empty arrays/objects
145
+ const result = await retriever.getCheckpointFromRollupTx(txHash, [], CheckpointNumber(l2BlockNumber), {});
146
146
 
147
147
  logger.info(' Successfully retrieved block header!');
148
148
  logger.info('');