@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.
- package/dest/archiver/archiver_store_test_suite.d.ts +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +56 -7
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +1 -1
- package/dest/archiver/kv_archiver_store/log_store.d.ts +3 -3
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.js +39 -15
- package/dest/archiver/l1/bin/retrieve-calldata.js +2 -2
- package/dest/archiver/l1/calldata_retriever.d.ts +17 -3
- package/dest/archiver/l1/calldata_retriever.d.ts.map +1 -1
- package/dest/archiver/l1/calldata_retriever.js +75 -7
- package/dest/archiver/l1/data_retrieval.d.ts +1 -1
- package/dest/archiver/l1/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/l1/data_retrieval.js +6 -1
- package/package.json +13 -13
- package/src/archiver/archiver_store_test_suite.ts +76 -7
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +1 -1
- package/src/archiver/kv_archiver_store/log_store.ts +61 -24
- package/src/archiver/l1/bin/retrieve-calldata.ts +2 -2
- package/src/archiver/l1/calldata_retriever.ts +116 -6
- package/src/archiver/l1/data_retrieval.ts +7 -0
|
@@ -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,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9yZXRyaWV2YWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcmNoaXZlci9sMS9kYXRhX3JldHJpZXZhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXZFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWpHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQVEsb0JBQW9CLEVBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQWMsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJeEQsT0FBTyxFQUVMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssR0FBRyxFQUlULE1BQU0sTUFBTSxDQUFDO0FBR2QsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUcvRCxNQUFNLE1BQU0sbUJBQW1CLEdBQUc7SUFDaEMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDbkMsV0FBVyxFQUFFLEVBQUUsQ0FBQztJQUNoQixNQUFNLEVBQUUsZ0JBQWdCLENBQUM7SUFDekIsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUM7SUFDdkMsRUFBRSxFQUFFLGVBQWUsQ0FBQztJQUNwQixPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ1osT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUNaLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxDQUFDO0NBQ3RDLENBQUM7QUFFRix3QkFBc0IsOEJBQThCLENBQUMsRUFDbkQsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxNQUFNLEVBQUUsZ0JBQWdCLEVBQ3hCLGtCQUFrQixFQUNsQixFQUFFLEVBQ0YsT0FBTyxFQUNQLE9BQU8sRUFDUCxZQUFZLEVBQ2IsRUFBRSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0E0RXBEO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsd0JBQXNCLDZCQUE2QixDQUNqRCxNQUFNLEVBQUUscUJBQXFCLENBQUMsT0FBTyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsRUFDakUsWUFBWSxFQUFFLGdCQUFnQixFQUM5QixXQUFXLEVBQUUscUJBQXFCLEVBQ2xDLGNBQWMsRUFBRSx1QkFBdUIsRUFDdkMsZ0JBQWdCLEVBQUUsTUFBTSxFQUN4QixjQUFjLEVBQUUsTUFBTSxFQUN0QixpQkFBaUIsRUFBRTtJQUNqQix5QkFBeUIsRUFBRSxVQUFVLENBQUM7SUFDdEMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLENBQUM7SUFDakMsdUJBQXVCLEVBQUUsVUFBVSxDQUFDO0NBQ3JDLEVBQ0QsZUFBZSxFQUFFLHVCQUF1QixFQUN4QyxNQUFNLEdBQUUsTUFBaUMsR0FDeEMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0EwRGhDO0FBdUZELHdCQUFzQixjQUFjLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUd6RztBQUVELHdCQUFzQiw4QkFBOEIsQ0FDbEQsY0FBYyxFQUFFLHVCQUF1QixFQUN2QyxTQUFTLEVBQUUsTUFBTSxFQUNqQixVQUFVLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQ3JDLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQXFCN0I7QUFFRCxpSEFBaUg7QUFDakgsd0JBQXNCLHFCQUFxQixDQUN6QyxLQUFLLEVBQUUscUJBQXFCLENBQUMsT0FBTyxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQ3pELElBQUksRUFBRSxFQUFFLEVBQ1IsU0FBUyxFQUFFLE1BQU0sRUFDakIsT0FBTyxFQUFFLE1BQU0sR0FDZCxPQUFPLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxDQUtuQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQXNCLHNCQUFzQixDQUMxQyxLQUFLLEVBQUUscUJBQXFCLENBQUMsT0FBTyxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQ3pELGdCQUFnQixFQUFFLE1BQU0sRUFDeEIsY0FBYyxFQUFFLE1BQU0sR0FDckIsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBZ0J6QjtBQWdCRCxpRUFBaUU7QUFDakUsd0JBQXNCLDZCQUE2QixDQUNqRCxZQUFZLEVBQUUsZ0JBQWdCLEVBQzlCLGFBQWEsRUFBRSxVQUFVLEVBQ3pCLGdCQUFnQixFQUFFLE1BQU0sRUFDeEIsY0FBYyxDQUFDLEVBQUUsTUFBTSxHQUN0QixPQUFPLENBQUM7SUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQTtDQUFFLEVBQUUsQ0FBQyxDQWVyRztBQUVELHlEQUF5RDtBQUN6RCx3QkFBc0IsMEJBQTBCLENBQzlDLFlBQVksRUFBRSxnQkFBZ0IsRUFDOUIsYUFBYSxFQUFFLFVBQVUsRUFDekIsZ0JBQWdCLEVBQUUsTUFBTSxFQUN4QixjQUFjLENBQUMsRUFBRSxNQUFNLEdBQ3RCLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztJQUFDLE1BQU0sRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFBO0NBQUUsQ0FBQyxDQUFDLENBYXpHO0FBRUQsTUFBTSxNQUFNLGdCQUFnQixHQUFHO0lBQzdCLFdBQVcsRUFBRSxFQUFFLENBQUM7SUFDaEIsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUNiLEtBQUssRUFBRSxLQUFLLENBQUM7Q0FDZCxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCx3QkFBc0IseUJBQXlCLENBQzdDLFlBQVksRUFBRSxnQkFBZ0IsRUFDOUIsTUFBTSxFQUFFLEtBQUssTUFBTSxFQUFFLEVBQ3JCLGdCQUFnQixFQUFFLEVBQUUsR0FDbkIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBbUMzQiJ9
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../../src/archiver/l1/data_retrieval.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
|
|
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.
|
|
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.
|
|
70
|
-
"@aztec/blob-sink": "3.0.0-nightly.
|
|
71
|
-
"@aztec/constants": "3.0.0-nightly.
|
|
72
|
-
"@aztec/epoch-cache": "3.0.0-nightly.
|
|
73
|
-
"@aztec/ethereum": "3.0.0-nightly.
|
|
74
|
-
"@aztec/foundation": "3.0.0-nightly.
|
|
75
|
-
"@aztec/kv-store": "3.0.0-nightly.
|
|
76
|
-
"@aztec/l1-artifacts": "3.0.0-nightly.
|
|
77
|
-
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.
|
|
78
|
-
"@aztec/protocol-contracts": "3.0.0-nightly.
|
|
79
|
-
"@aztec/stdlib": "3.0.0-nightly.
|
|
80
|
-
"@aztec/telemetry-client": "3.0.0-nightly.
|
|
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(
|
|
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 = (
|
|
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(
|
|
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 =
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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,
|
|
133
|
-
await this.#contractClassLogsByBlock.set(
|
|
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(
|
|
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
|
-
|
|
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
|
|
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('');
|