@aztec/archiver 0.87.2 → 0.87.3-nightly.20250528
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 +4 -3
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +8 -0
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +5 -6
- package/dest/archiver/data_retrieval.d.ts +2 -3
- package/dest/archiver/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/data_retrieval.js +6 -7
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +4 -5
- package/dest/test/mock_l2_block_source.d.ts +1 -1
- package/dest/test/mock_l2_block_source.js +1 -1
- package/package.json +12 -14
- package/src/archiver/archiver.ts +11 -1
- package/src/archiver/archiver_store_test_suite.ts +5 -6
- package/src/archiver/data_retrieval.ts +14 -10
- package/src/archiver/kv_archiver_store/block_store.ts +5 -6
- package/src/test/mock_l2_block_source.ts +1 -1
|
@@ -7,7 +7,7 @@ import { type Logger } from '@aztec/foundation/log';
|
|
|
7
7
|
import type { CustomRange } from '@aztec/kv-store';
|
|
8
8
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
9
9
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
10
|
-
import { type L2Block, type L2BlockSource, type L2Tips } from '@aztec/stdlib/block';
|
|
10
|
+
import { type ArchiverEmitter, type L2Block, type L2BlockSource, type L2Tips } from '@aztec/stdlib/block';
|
|
11
11
|
import { type ContractClassPublic, type ContractDataSource, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
12
12
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
13
13
|
import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
@@ -16,7 +16,6 @@ import { type LogFilter, type PrivateLog, TxScopedL2Log } from '@aztec/stdlib/lo
|
|
|
16
16
|
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
17
17
|
import { type BlockHeader, type IndexedTxEffect, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
18
18
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
19
|
-
import { EventEmitter } from 'events';
|
|
20
19
|
import type { ArchiverDataStore, ArchiverL1SynchPoint } from './archiver_store.js';
|
|
21
20
|
import type { ArchiverConfig } from './config.js';
|
|
22
21
|
import { ArchiverInstrumentation } from './instrumentation.js';
|
|
@@ -26,12 +25,13 @@ import type { PublishedL2Block } from './structs/published.js';
|
|
|
26
25
|
* Helper interface to combine all sources this archiver implementation provides.
|
|
27
26
|
*/
|
|
28
27
|
export type ArchiveSource = L2BlockSource & L2LogsSource & ContractDataSource & L1ToL2MessageSource;
|
|
28
|
+
declare const Archiver_base: new () => ArchiverEmitter;
|
|
29
29
|
/**
|
|
30
30
|
* Pulls L2 blocks in a non-blocking manner and provides interface for their retrieval.
|
|
31
31
|
* Responsible for handling robust L1 polling so that other components do not need to
|
|
32
32
|
* concern themselves with it.
|
|
33
33
|
*/
|
|
34
|
-
export declare class Archiver extends
|
|
34
|
+
export declare class Archiver extends Archiver_base implements ArchiveSource, Traceable {
|
|
35
35
|
private readonly publicClient;
|
|
36
36
|
private readonly l1Addresses;
|
|
37
37
|
readonly dataStore: ArchiverDataStore;
|
|
@@ -246,4 +246,5 @@ export declare class ArchiverStoreHelper implements Omit<ArchiverDataStore, 'add
|
|
|
246
246
|
removeL1ToL2Messages(startIndex: bigint): Promise<void>;
|
|
247
247
|
getLastL1ToL2Message(): Promise<InboxMessage | undefined>;
|
|
248
248
|
}
|
|
249
|
+
export {};
|
|
249
250
|
//# sourceMappingURL=archiver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAY,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAKlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAWnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,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,EAAc,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"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"}
|
|
@@ -470,6 +470,14 @@ import { ArchiverInstrumentation } from './instrumentation.js';
|
|
|
470
470
|
this.log.info(`Updated proven chain to block ${provenBlockNumber}`, {
|
|
471
471
|
provenBlockNumber
|
|
472
472
|
});
|
|
473
|
+
const provenSlotNumber = localBlockForDestinationProvenBlockNumber.header.globalVariables.slotNumber.toBigInt();
|
|
474
|
+
const provenEpochNumber = getEpochAtSlot(provenSlotNumber, this.l1constants);
|
|
475
|
+
this.emit(L2BlockSourceEvents.L2BlockProven, {
|
|
476
|
+
type: L2BlockSourceEvents.L2BlockProven,
|
|
477
|
+
blockNumber: provenBlockNumber,
|
|
478
|
+
slotNumber: provenSlotNumber,
|
|
479
|
+
epochNumber: provenEpochNumber
|
|
480
|
+
});
|
|
473
481
|
} else {
|
|
474
482
|
this.log.trace(`Proven block ${provenBlockNumber} already stored.`);
|
|
475
483
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver_store_test_suite.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store_test_suite.ts"],"names":[],"mappings":"
|
|
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,QAi/B/D"}
|
|
@@ -3,12 +3,11 @@ import { makeTuple } from '@aztec/foundation/array';
|
|
|
3
3
|
import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
4
4
|
import { times, timesParallel } from '@aztec/foundation/collection';
|
|
5
5
|
import { randomInt } from '@aztec/foundation/crypto';
|
|
6
|
-
import { Signature } from '@aztec/foundation/eth-signature';
|
|
7
6
|
import { Fr } from '@aztec/foundation/fields';
|
|
8
7
|
import { toArray } from '@aztec/foundation/iterable';
|
|
9
8
|
import { sleep } from '@aztec/foundation/sleep';
|
|
10
9
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
11
|
-
import { L2Block, wrapInBlock } from '@aztec/stdlib/block';
|
|
10
|
+
import { CommitteeAttestation, L2Block, wrapInBlock } from '@aztec/stdlib/block';
|
|
12
11
|
import { SerializableContractInstance, computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
|
|
13
12
|
import { LogId, PrivateLog, PublicLog } from '@aztec/stdlib/logs';
|
|
14
13
|
import { InboxLeaf } from '@aztec/stdlib/messaging';
|
|
@@ -59,7 +58,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
59
58
|
blockHash: `0x${l1BlockNumber}`,
|
|
60
59
|
timestamp: BigInt(l1BlockNumber * 1000)
|
|
61
60
|
},
|
|
62
|
-
|
|
61
|
+
attestations: times(3, CommitteeAttestation.random)
|
|
63
62
|
});
|
|
64
63
|
const expectBlocksEqual = (actual, expected)=>{
|
|
65
64
|
expect(actual.length).toEqual(expected.length);
|
|
@@ -68,7 +67,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
68
67
|
const actualBlock = actual[i];
|
|
69
68
|
expect(actualBlock.l1).toEqual(expectedBlock.l1);
|
|
70
69
|
expect(actualBlock.block.equals(expectedBlock.block)).toBe(true);
|
|
71
|
-
expect(actualBlock.
|
|
70
|
+
expect(actualBlock.attestations.every((a, i)=>a.equals(expectedBlock.attestations[i]))).toBe(true);
|
|
72
71
|
}
|
|
73
72
|
};
|
|
74
73
|
beforeEach(async ()=>{
|
|
@@ -789,7 +788,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
789
788
|
});
|
|
790
789
|
return {
|
|
791
790
|
block: block,
|
|
792
|
-
|
|
791
|
+
attestations: times(3, CommitteeAttestation.random),
|
|
793
792
|
l1: {
|
|
794
793
|
blockNumber: BigInt(blockNumber),
|
|
795
794
|
blockHash: `0x${blockNumber}`,
|
|
@@ -910,7 +909,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
910
909
|
blockHash: `0x${index}`,
|
|
911
910
|
timestamp: BigInt(index)
|
|
912
911
|
},
|
|
913
|
-
|
|
912
|
+
attestations: times(3, CommitteeAttestation.random)
|
|
914
913
|
}));
|
|
915
914
|
await store.addBlocks(blocks);
|
|
916
915
|
await store.addLogs(blocks.map((b)=>b.block));
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import type { BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
2
2
|
import type { ViemClient, ViemPublicClient } from '@aztec/ethereum';
|
|
3
3
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
|
-
import { Signature } from '@aztec/foundation/eth-signature';
|
|
5
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
5
|
import { type Logger } from '@aztec/foundation/log';
|
|
7
6
|
import { type InboxAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
8
|
-
import { Body } from '@aztec/stdlib/block';
|
|
7
|
+
import { Body, CommitteeAttestation } from '@aztec/stdlib/block';
|
|
9
8
|
import { Proof } from '@aztec/stdlib/proofs';
|
|
10
9
|
import { ProposedBlockHeader, StateReference } from '@aztec/stdlib/tx';
|
|
11
10
|
import { type GetContractReturnType, type Hex } from 'viem';
|
|
@@ -21,7 +20,7 @@ export type RetrievedL2Block = {
|
|
|
21
20
|
l1: L1PublishedData;
|
|
22
21
|
chainId: Fr;
|
|
23
22
|
version: Fr;
|
|
24
|
-
|
|
23
|
+
attestations: CommitteeAttestation[];
|
|
25
24
|
};
|
|
26
25
|
export declare function retrievedBlockToPublishedL2Block(retrievedBlock: RetrievedL2Block): PublishedL2Block;
|
|
27
26
|
/**
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { Blob, BlobDeserializationError } from '@aztec/blob-lib';
|
|
2
2
|
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
3
3
|
import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
4
|
-
import { Signature } from '@aztec/foundation/eth-signature';
|
|
5
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
5
|
import { createLogger } from '@aztec/foundation/log';
|
|
7
6
|
import { ForwarderAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
8
|
-
import { Body, L2Block } from '@aztec/stdlib/block';
|
|
7
|
+
import { Body, CommitteeAttestation, L2Block } from '@aztec/stdlib/block';
|
|
9
8
|
import { Proof } from '@aztec/stdlib/proofs';
|
|
10
9
|
import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
|
|
11
10
|
import { BlockHeader, GlobalVariables, ProposedBlockHeader, StateReference } from '@aztec/stdlib/tx';
|
|
12
11
|
import { decodeFunctionData, getAbiItem, hexToBytes } from 'viem';
|
|
13
12
|
import { NoBlobBodiesFoundError } from './errors.js';
|
|
14
13
|
export function retrievedBlockToPublishedL2Block(retrievedBlock) {
|
|
15
|
-
const { l2BlockNumber, archiveRoot, stateReference, header: proposedHeader, body, l1, chainId, version,
|
|
14
|
+
const { l2BlockNumber, archiveRoot, stateReference, header: proposedHeader, body, l1, chainId, version, attestations } = retrievedBlock;
|
|
16
15
|
const archive = new AppendOnlyTreeSnapshot(archiveRoot, Number(l2BlockNumber + 1n));
|
|
17
16
|
const globalVariables = GlobalVariables.from({
|
|
18
17
|
chainId,
|
|
@@ -36,7 +35,7 @@ export function retrievedBlockToPublishedL2Block(retrievedBlock) {
|
|
|
36
35
|
return {
|
|
37
36
|
block,
|
|
38
37
|
l1,
|
|
39
|
-
|
|
38
|
+
attestations
|
|
40
39
|
};
|
|
41
40
|
}
|
|
42
41
|
/**
|
|
@@ -113,7 +112,7 @@ export function retrievedBlockToPublishedL2Block(retrievedBlock) {
|
|
|
113
112
|
l1BlockNumber: log.blockNumber,
|
|
114
113
|
l2BlockNumber,
|
|
115
114
|
archive: archive.toString(),
|
|
116
|
-
|
|
115
|
+
attestations: block.attestations
|
|
117
116
|
});
|
|
118
117
|
} else {
|
|
119
118
|
logger.warn(`Ignoring L2 block ${l2BlockNumber} due to archive root mismatch`, {
|
|
@@ -191,7 +190,7 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
191
190
|
if (rollupFunctionName !== 'propose') {
|
|
192
191
|
throw new Error(`Unexpected rollup method called ${rollupFunctionName}`);
|
|
193
192
|
}
|
|
194
|
-
const [decodedArgs,
|
|
193
|
+
const [decodedArgs, attestations, _blobInput] = rollupArgs;
|
|
195
194
|
const header = ProposedBlockHeader.fromBuffer(Buffer.from(hexToBytes(decodedArgs.header)));
|
|
196
195
|
const blobBodies = await blobSinkClient.getBlobSidecar(blockHash, blobHashes);
|
|
197
196
|
if (blobBodies.length === 0) {
|
|
@@ -218,7 +217,7 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
218
217
|
stateReference,
|
|
219
218
|
header,
|
|
220
219
|
body,
|
|
221
|
-
|
|
220
|
+
attestations: attestations.map(CommitteeAttestation.fromViem)
|
|
222
221
|
};
|
|
223
222
|
}
|
|
224
223
|
/** Given an L1 to L2 message, retrieves its corresponding event from the Inbox. */ export async function retrieveL1ToL2Message(inbox, leaf, fromBlock) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/block_store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/block_store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAA6C,MAAM,iBAAiB,CAAC;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGxF,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEjF,OAAO,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAWzE;;GAEG;AACH,qBAAa,UAAU;;IAqBT,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,iBAAiB;IASzC;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA8C7F;;;;;;OAMG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IA+BvD;;;;;OAKG;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC,gBAAgB,CAAC;IASvF;;;;OAIG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAQ1E;;;;;OAKG;IACI,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC;YAYzE,gBAAgB;YAajB,wBAAwB;IAsBtC;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAmBvE;;;;OAIG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAuBzE;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAI1F;;;;OAIG;IACH,mBAAmB,CAAC,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAI7G;;;OAGG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKhD;;;OAGG;IACH,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAItD,uBAAuB,CAAC,aAAa,EAAE,MAAM;IAIvC,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ/C,sBAAsB,CAAC,WAAW,EAAE,MAAM;CAe3C"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
2
|
-
import { Signature } from '@aztec/foundation/eth-signature';
|
|
3
2
|
import { toArray } from '@aztec/foundation/iterable';
|
|
4
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
|
-
import { Body, L2Block, L2BlockHash } from '@aztec/stdlib/block';
|
|
4
|
+
import { Body, CommitteeAttestation, L2Block, L2BlockHash } from '@aztec/stdlib/block';
|
|
6
5
|
import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
|
|
7
6
|
import { BlockHeader, TxReceipt } from '@aztec/stdlib/tx';
|
|
8
7
|
import { BlockNumberNotSequentialError, InitialBlockNumberNotSequentialError } from '../errors.js';
|
|
@@ -59,7 +58,7 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
59
58
|
header: block.block.header.toBuffer(),
|
|
60
59
|
archive: block.block.archive.toBuffer(),
|
|
61
60
|
l1: block.l1,
|
|
62
|
-
|
|
61
|
+
attestations: block.attestations.map((attestation)=>attestation.toBuffer())
|
|
63
62
|
});
|
|
64
63
|
for(let i = 0; i < block.block.body.txEffects.length; i++){
|
|
65
64
|
const txEffect = block.block.body.txEffects[i];
|
|
@@ -171,11 +170,11 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
171
170
|
if (block.number !== blockNumber) {
|
|
172
171
|
throw new Error(`Block number mismatch when retrieving block from archive (expected ${blockNumber} but got ${block.number} with hash ${await block.hash()})`);
|
|
173
172
|
}
|
|
174
|
-
const
|
|
173
|
+
const attestations = blockStorage.attestations.map(CommitteeAttestation.fromBuffer);
|
|
175
174
|
return {
|
|
176
175
|
block,
|
|
177
176
|
l1: blockStorage.l1,
|
|
178
|
-
|
|
177
|
+
attestations
|
|
179
178
|
};
|
|
180
179
|
}
|
|
181
180
|
/**
|
|
@@ -55,7 +55,7 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
|
|
|
55
55
|
blockHash: `0x${string}`;
|
|
56
56
|
timestamp: bigint;
|
|
57
57
|
};
|
|
58
|
-
|
|
58
|
+
attestations: never[];
|
|
59
59
|
}[]>;
|
|
60
60
|
getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined>;
|
|
61
61
|
getBlocksForEpoch(epochNumber: bigint): Promise<L2Block[]>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/archiver",
|
|
3
|
-
"version": "0.87.
|
|
3
|
+
"version": "0.87.3-nightly.20250528",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -62,18 +62,17 @@
|
|
|
62
62
|
]
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@aztec/blob-lib": "0.87.
|
|
66
|
-
"@aztec/blob-sink": "0.87.
|
|
67
|
-
"@aztec/constants": "0.87.
|
|
68
|
-
"@aztec/ethereum": "0.87.
|
|
69
|
-
"@aztec/foundation": "0.87.
|
|
70
|
-
"@aztec/kv-store": "0.87.
|
|
71
|
-
"@aztec/l1-artifacts": "0.87.
|
|
72
|
-
"@aztec/noir-protocol-circuits-types": "0.87.
|
|
73
|
-
"@aztec/protocol-contracts": "0.87.
|
|
74
|
-
"@aztec/stdlib": "0.87.
|
|
75
|
-
"@aztec/telemetry-client": "0.87.
|
|
76
|
-
"debug": "^4.3.4",
|
|
65
|
+
"@aztec/blob-lib": "0.87.3-nightly.20250528",
|
|
66
|
+
"@aztec/blob-sink": "0.87.3-nightly.20250528",
|
|
67
|
+
"@aztec/constants": "0.87.3-nightly.20250528",
|
|
68
|
+
"@aztec/ethereum": "0.87.3-nightly.20250528",
|
|
69
|
+
"@aztec/foundation": "0.87.3-nightly.20250528",
|
|
70
|
+
"@aztec/kv-store": "0.87.3-nightly.20250528",
|
|
71
|
+
"@aztec/l1-artifacts": "0.87.3-nightly.20250528",
|
|
72
|
+
"@aztec/noir-protocol-circuits-types": "0.87.3-nightly.20250528",
|
|
73
|
+
"@aztec/protocol-contracts": "0.87.3-nightly.20250528",
|
|
74
|
+
"@aztec/stdlib": "0.87.3-nightly.20250528",
|
|
75
|
+
"@aztec/telemetry-client": "0.87.3-nightly.20250528",
|
|
77
76
|
"lodash.groupby": "^4.6.0",
|
|
78
77
|
"lodash.omit": "^4.5.0",
|
|
79
78
|
"tsc-watch": "^6.0.0",
|
|
@@ -82,7 +81,6 @@
|
|
|
82
81
|
},
|
|
83
82
|
"devDependencies": {
|
|
84
83
|
"@jest/globals": "^29.5.0",
|
|
85
|
-
"@types/debug": "^4.1.7",
|
|
86
84
|
"@types/jest": "^29.5.0",
|
|
87
85
|
"@types/lodash.groupby": "^4.6.9",
|
|
88
86
|
"@types/lodash.omit": "^4.5.7",
|
package/src/archiver/archiver.ts
CHANGED
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
31
31
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
32
32
|
import {
|
|
33
|
+
type ArchiverEmitter,
|
|
33
34
|
type L2Block,
|
|
34
35
|
type L2BlockId,
|
|
35
36
|
type L2BlockSource,
|
|
@@ -88,7 +89,7 @@ export type ArchiveSource = L2BlockSource & L2LogsSource & ContractDataSource &
|
|
|
88
89
|
* Responsible for handling robust L1 polling so that other components do not need to
|
|
89
90
|
* concern themselves with it.
|
|
90
91
|
*/
|
|
91
|
-
export class Archiver extends EventEmitter implements ArchiveSource, Traceable {
|
|
92
|
+
export class Archiver extends (EventEmitter as new () => ArchiverEmitter) implements ArchiveSource, Traceable {
|
|
92
93
|
/**
|
|
93
94
|
* A promise in which we will be continually fetching new L2 blocks.
|
|
94
95
|
*/
|
|
@@ -624,6 +625,15 @@ export class Archiver extends EventEmitter implements ArchiveSource, Traceable {
|
|
|
624
625
|
this.log.info(`Updated proven chain to block ${provenBlockNumber}`, {
|
|
625
626
|
provenBlockNumber,
|
|
626
627
|
});
|
|
628
|
+
const provenSlotNumber =
|
|
629
|
+
localBlockForDestinationProvenBlockNumber.header.globalVariables.slotNumber.toBigInt();
|
|
630
|
+
const provenEpochNumber = getEpochAtSlot(provenSlotNumber, this.l1constants);
|
|
631
|
+
this.emit(L2BlockSourceEvents.L2BlockProven, {
|
|
632
|
+
type: L2BlockSourceEvents.L2BlockProven,
|
|
633
|
+
blockNumber: provenBlockNumber,
|
|
634
|
+
slotNumber: provenSlotNumber,
|
|
635
|
+
epochNumber: provenEpochNumber,
|
|
636
|
+
});
|
|
627
637
|
} else {
|
|
628
638
|
this.log.trace(`Proven block ${provenBlockNumber} already stored.`);
|
|
629
639
|
}
|
|
@@ -8,12 +8,11 @@ import { makeTuple } from '@aztec/foundation/array';
|
|
|
8
8
|
import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
9
9
|
import { times, timesParallel } from '@aztec/foundation/collection';
|
|
10
10
|
import { randomInt } from '@aztec/foundation/crypto';
|
|
11
|
-
import { Signature } from '@aztec/foundation/eth-signature';
|
|
12
11
|
import { Fr } from '@aztec/foundation/fields';
|
|
13
12
|
import { toArray } from '@aztec/foundation/iterable';
|
|
14
13
|
import { sleep } from '@aztec/foundation/sleep';
|
|
15
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
16
|
-
import { L2Block, wrapInBlock } from '@aztec/stdlib/block';
|
|
15
|
+
import { CommitteeAttestation, L2Block, wrapInBlock } from '@aztec/stdlib/block';
|
|
17
16
|
import {
|
|
18
17
|
type ContractClassPublic,
|
|
19
18
|
type ContractInstanceWithAddress,
|
|
@@ -64,7 +63,7 @@ export function describeArchiverDataStore(
|
|
|
64
63
|
blockHash: `0x${l1BlockNumber}`,
|
|
65
64
|
timestamp: BigInt(l1BlockNumber * 1000),
|
|
66
65
|
},
|
|
67
|
-
|
|
66
|
+
attestations: times(3, CommitteeAttestation.random),
|
|
68
67
|
});
|
|
69
68
|
|
|
70
69
|
const expectBlocksEqual = (actual: PublishedL2Block[], expected: PublishedL2Block[]) => {
|
|
@@ -74,7 +73,7 @@ export function describeArchiverDataStore(
|
|
|
74
73
|
const actualBlock = actual[i];
|
|
75
74
|
expect(actualBlock.l1).toEqual(expectedBlock.l1);
|
|
76
75
|
expect(actualBlock.block.equals(expectedBlock.block)).toBe(true);
|
|
77
|
-
expect(actualBlock.
|
|
76
|
+
expect(actualBlock.attestations.every((a, i) => a.equals(expectedBlock.attestations[i]))).toBe(true);
|
|
78
77
|
}
|
|
79
78
|
};
|
|
80
79
|
|
|
@@ -758,7 +757,7 @@ export function describeArchiverDataStore(
|
|
|
758
757
|
|
|
759
758
|
return {
|
|
760
759
|
block: block,
|
|
761
|
-
|
|
760
|
+
attestations: times(3, CommitteeAttestation.random),
|
|
762
761
|
l1: { blockNumber: BigInt(blockNumber), blockHash: `0x${blockNumber}`, timestamp: BigInt(blockNumber) },
|
|
763
762
|
};
|
|
764
763
|
};
|
|
@@ -876,7 +875,7 @@ export function describeArchiverDataStore(
|
|
|
876
875
|
blocks = await timesParallel(numBlocks, async (index: number) => ({
|
|
877
876
|
block: await L2Block.random(index + 1, txsPerBlock, numPublicFunctionCalls, numPublicLogs),
|
|
878
877
|
l1: { blockNumber: BigInt(index), blockHash: `0x${index}`, timestamp: BigInt(index) },
|
|
879
|
-
|
|
878
|
+
attestations: times(3, CommitteeAttestation.random),
|
|
880
879
|
}));
|
|
881
880
|
|
|
882
881
|
await store.addBlocks(blocks);
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { Blob, BlobDeserializationError } from '@aztec/blob-lib';
|
|
2
2
|
import type { BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
EpochProofPublicInputArgs,
|
|
5
|
+
ViemClient,
|
|
6
|
+
ViemCommitteeAttestation,
|
|
7
|
+
ViemPublicClient,
|
|
8
|
+
} from '@aztec/ethereum';
|
|
4
9
|
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
5
10
|
import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
6
11
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
|
-
import { Signature, type ViemSignature } from '@aztec/foundation/eth-signature';
|
|
8
12
|
import { Fr } from '@aztec/foundation/fields';
|
|
9
13
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
10
14
|
import { ForwarderAbi, type InboxAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
11
|
-
import { Body, L2Block } from '@aztec/stdlib/block';
|
|
15
|
+
import { Body, CommitteeAttestation, L2Block } from '@aztec/stdlib/block';
|
|
12
16
|
import { Proof } from '@aztec/stdlib/proofs';
|
|
13
17
|
import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
|
|
14
18
|
import { BlockHeader, GlobalVariables, ProposedBlockHeader, StateReference } from '@aztec/stdlib/tx';
|
|
@@ -36,7 +40,7 @@ export type RetrievedL2Block = {
|
|
|
36
40
|
l1: L1PublishedData;
|
|
37
41
|
chainId: Fr;
|
|
38
42
|
version: Fr;
|
|
39
|
-
|
|
43
|
+
attestations: CommitteeAttestation[];
|
|
40
44
|
};
|
|
41
45
|
|
|
42
46
|
export function retrievedBlockToPublishedL2Block(retrievedBlock: RetrievedL2Block): PublishedL2Block {
|
|
@@ -49,7 +53,7 @@ export function retrievedBlockToPublishedL2Block(retrievedBlock: RetrievedL2Bloc
|
|
|
49
53
|
l1,
|
|
50
54
|
chainId,
|
|
51
55
|
version,
|
|
52
|
-
|
|
56
|
+
attestations,
|
|
53
57
|
} = retrievedBlock;
|
|
54
58
|
|
|
55
59
|
const archive = new AppendOnlyTreeSnapshot(
|
|
@@ -82,7 +86,7 @@ export function retrievedBlockToPublishedL2Block(retrievedBlock: RetrievedL2Bloc
|
|
|
82
86
|
return {
|
|
83
87
|
block,
|
|
84
88
|
l1,
|
|
85
|
-
|
|
89
|
+
attestations,
|
|
86
90
|
};
|
|
87
91
|
}
|
|
88
92
|
|
|
@@ -196,7 +200,7 @@ async function processL2BlockProposedLogs(
|
|
|
196
200
|
l1BlockNumber: log.blockNumber,
|
|
197
201
|
l2BlockNumber,
|
|
198
202
|
archive: archive.toString(),
|
|
199
|
-
|
|
203
|
+
attestations: block.attestations,
|
|
200
204
|
});
|
|
201
205
|
} else {
|
|
202
206
|
logger.warn(`Ignoring L2 block ${l2BlockNumber} due to archive root mismatch`, {
|
|
@@ -295,7 +299,7 @@ async function getBlockFromRollupTx(
|
|
|
295
299
|
throw new Error(`Unexpected rollup method called ${rollupFunctionName}`);
|
|
296
300
|
}
|
|
297
301
|
|
|
298
|
-
const [decodedArgs,
|
|
302
|
+
const [decodedArgs, attestations, _blobInput] = rollupArgs! as readonly [
|
|
299
303
|
{
|
|
300
304
|
header: Hex;
|
|
301
305
|
archive: Hex;
|
|
@@ -306,7 +310,7 @@ async function getBlockFromRollupTx(
|
|
|
306
310
|
};
|
|
307
311
|
txHashes: Hex[];
|
|
308
312
|
},
|
|
309
|
-
|
|
313
|
+
ViemCommitteeAttestation[],
|
|
310
314
|
Hex,
|
|
311
315
|
];
|
|
312
316
|
|
|
@@ -341,7 +345,7 @@ async function getBlockFromRollupTx(
|
|
|
341
345
|
stateReference,
|
|
342
346
|
header,
|
|
343
347
|
body,
|
|
344
|
-
|
|
348
|
+
attestations: attestations.map(CommitteeAttestation.fromViem),
|
|
345
349
|
};
|
|
346
350
|
}
|
|
347
351
|
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
2
|
-
import { Signature } from '@aztec/foundation/eth-signature';
|
|
3
2
|
import { toArray } from '@aztec/foundation/iterable';
|
|
4
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
4
|
import type { AztecAsyncKVStore, AztecAsyncMap, AztecAsyncSingleton, Range } from '@aztec/kv-store';
|
|
6
5
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
-
import { Body, L2Block, L2BlockHash } from '@aztec/stdlib/block';
|
|
6
|
+
import { Body, CommitteeAttestation, L2Block, L2BlockHash } from '@aztec/stdlib/block';
|
|
8
7
|
import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
|
|
9
8
|
import { BlockHeader, type IndexedTxEffect, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
10
9
|
|
|
@@ -19,7 +18,7 @@ type BlockStorage = {
|
|
|
19
18
|
header: Buffer;
|
|
20
19
|
archive: Buffer;
|
|
21
20
|
l1: L1PublishedData;
|
|
22
|
-
|
|
21
|
+
attestations: Buffer[];
|
|
23
22
|
};
|
|
24
23
|
|
|
25
24
|
/**
|
|
@@ -90,7 +89,7 @@ export class BlockStore {
|
|
|
90
89
|
header: block.block.header.toBuffer(),
|
|
91
90
|
archive: block.block.archive.toBuffer(),
|
|
92
91
|
l1: block.l1,
|
|
93
|
-
|
|
92
|
+
attestations: block.attestations.map(attestation => attestation.toBuffer()),
|
|
94
93
|
});
|
|
95
94
|
|
|
96
95
|
for (let i = 0; i < block.block.body.txEffects.length; i++) {
|
|
@@ -221,8 +220,8 @@ export class BlockStore {
|
|
|
221
220
|
} with hash ${await block.hash()})`,
|
|
222
221
|
);
|
|
223
222
|
}
|
|
224
|
-
const
|
|
225
|
-
return { block, l1: blockStorage.l1,
|
|
223
|
+
const attestations = blockStorage.attestations.map(CommitteeAttestation.fromBuffer);
|
|
224
|
+
return { block, l1: blockStorage.l1, attestations };
|
|
226
225
|
}
|
|
227
226
|
|
|
228
227
|
/**
|