@aztec/archiver 2.1.0-rc.9 → 2.1.1-rc.1
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 +19 -7
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +48 -20
- package/dest/archiver/archiver_store.d.ts +20 -0
- package/dest/archiver/archiver_store.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +90 -0
- package/dest/archiver/config.js +1 -1
- package/dest/archiver/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/data_retrieval.js +31 -16
- package/dest/archiver/errors.d.ts +1 -1
- package/dest/archiver/errors.d.ts.map +1 -1
- package/dest/archiver/errors.js +2 -2
- package/dest/archiver/instrumentation.d.ts.map +1 -1
- package/dest/archiver/instrumentation.js +3 -0
- package/dest/archiver/kv_archiver_store/block_store.d.ts +26 -1
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +62 -0
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +5 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +13 -0
- package/dest/archiver/validation.d.ts.map +1 -1
- package/dest/archiver/validation.js +37 -42
- package/dest/factory.d.ts +2 -4
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +1 -1
- package/dest/test/mock_l2_block_source.d.ts +8 -1
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +52 -0
- package/package.json +14 -14
- package/src/archiver/archiver.ts +57 -21
- package/src/archiver/archiver_store.ts +24 -0
- package/src/archiver/archiver_store_test_suite.ts +102 -0
- package/src/archiver/config.ts +1 -1
- package/src/archiver/data_retrieval.ts +42 -19
- package/src/archiver/errors.ts +2 -2
- package/src/archiver/instrumentation.ts +3 -0
- package/src/archiver/kv_archiver_store/block_store.ts +77 -0
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +17 -1
- package/src/archiver/validation.ts +38 -45
- package/src/factory.ts +2 -4
- package/src/test/mock_l2_block_source.ts +57 -1
|
@@ -51,9 +51,7 @@ export declare class Archiver extends Archiver_base implements ArchiveSource, Tr
|
|
|
51
51
|
private readonly instrumentation;
|
|
52
52
|
private readonly l1constants;
|
|
53
53
|
private readonly log;
|
|
54
|
-
/**
|
|
55
|
-
* A promise in which we will be continually fetching new L2 blocks.
|
|
56
|
-
*/
|
|
54
|
+
/** A loop in which we will be continually fetching new L2 blocks. */
|
|
57
55
|
private runningPromise?;
|
|
58
56
|
private rollup;
|
|
59
57
|
private inbox;
|
|
@@ -61,6 +59,7 @@ export declare class Archiver extends Archiver_base implements ArchiveSource, Tr
|
|
|
61
59
|
private l1BlockNumber;
|
|
62
60
|
private l1Timestamp;
|
|
63
61
|
private initialSyncComplete;
|
|
62
|
+
private initialSyncPromise;
|
|
64
63
|
readonly tracer: Tracer;
|
|
65
64
|
/**
|
|
66
65
|
* Creates a new instance of the Archiver.
|
|
@@ -82,6 +81,7 @@ export declare class Archiver extends Archiver_base implements ArchiveSource, Tr
|
|
|
82
81
|
skipValidateBlockAttestations?: boolean;
|
|
83
82
|
}, blobSinkClient: BlobSinkClientInterface, epochCache: EpochCache, instrumentation: ArchiverInstrumentation, l1constants: L1RollupConstants & {
|
|
84
83
|
l1StartBlockHash: Buffer32;
|
|
84
|
+
genesisArchiveRoot: Fr;
|
|
85
85
|
}, log?: Logger);
|
|
86
86
|
/**
|
|
87
87
|
* Creates a new instance of the Archiver and blocks until it syncs from chain.
|
|
@@ -99,6 +99,7 @@ export declare class Archiver extends Archiver_base implements ArchiveSource, Tr
|
|
|
99
99
|
*/
|
|
100
100
|
start(blockUntilSynced: boolean): Promise<void>;
|
|
101
101
|
syncImmediate(): Promise<void>;
|
|
102
|
+
waitForInitialSync(): Promise<void>;
|
|
102
103
|
private syncSafe;
|
|
103
104
|
/**
|
|
104
105
|
* Fetches logs from L1 contracts and processes them.
|
|
@@ -124,12 +125,15 @@ export declare class Archiver extends Archiver_base implements ArchiveSource, Tr
|
|
|
124
125
|
stop(): Promise<void>;
|
|
125
126
|
backupTo(destPath: string): Promise<string>;
|
|
126
127
|
getL1Constants(): Promise<L1RollupConstants>;
|
|
128
|
+
getGenesisValues(): Promise<{
|
|
129
|
+
genesisArchiveRoot: Fr;
|
|
130
|
+
}>;
|
|
127
131
|
getRollupAddress(): Promise<EthAddress>;
|
|
128
132
|
getRegistryAddress(): Promise<EthAddress>;
|
|
129
|
-
getL1BlockNumber(): bigint;
|
|
130
|
-
getL1Timestamp(): Promise<bigint>;
|
|
131
|
-
getL2SlotNumber(): Promise<bigint>;
|
|
132
|
-
getL2EpochNumber(): Promise<bigint>;
|
|
133
|
+
getL1BlockNumber(): bigint | undefined;
|
|
134
|
+
getL1Timestamp(): Promise<bigint | undefined>;
|
|
135
|
+
getL2SlotNumber(): Promise<bigint | undefined>;
|
|
136
|
+
getL2EpochNumber(): Promise<bigint | undefined>;
|
|
133
137
|
getBlocksForEpoch(epochNumber: bigint): Promise<L2Block[]>;
|
|
134
138
|
getBlockHeadersForEpoch(epochNumber: bigint): Promise<BlockHeader[]>;
|
|
135
139
|
isEpochComplete(epochNumber: bigint): Promise<boolean>;
|
|
@@ -145,6 +149,10 @@ export declare class Archiver extends Archiver_base implements ArchiveSource, Tr
|
|
|
145
149
|
getBlocks(from: number, limit: number, proven?: boolean): Promise<L2Block[]>;
|
|
146
150
|
/** Equivalent to getBlocks but includes publish data. */
|
|
147
151
|
getPublishedBlocks(from: number, limit: number, proven?: boolean): Promise<PublishedL2Block[]>;
|
|
152
|
+
getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
|
|
153
|
+
getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
|
|
154
|
+
getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
|
|
155
|
+
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
148
156
|
/**
|
|
149
157
|
* Gets an l2 block.
|
|
150
158
|
* @param number - The block number to return.
|
|
@@ -225,7 +233,11 @@ export declare class ArchiverStoreHelper implements Omit<ArchiverDataStore, 'add
|
|
|
225
233
|
unwindBlocks(from: number, blocksToUnwind: number): Promise<boolean>;
|
|
226
234
|
getPublishedBlocks(from: number, limit: number): Promise<PublishedL2Block[]>;
|
|
227
235
|
getPublishedBlock(number: number): Promise<PublishedL2Block | undefined>;
|
|
236
|
+
getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
|
|
237
|
+
getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
|
|
228
238
|
getBlockHeaders(from: number, limit: number): Promise<BlockHeader[]>;
|
|
239
|
+
getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
|
|
240
|
+
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
229
241
|
getTxEffect(txHash: TxHash): Promise<IndexedTxEffect | undefined>;
|
|
230
242
|
getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
|
|
231
243
|
addL1ToL2Messages(messages: InboxMessage[]): Promise<void>;
|
|
@@ -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,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAY,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAE9D,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;
|
|
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,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAY,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAE9D,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,EAAE,YAAY,EAAkB,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAWnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,OAAO,EAEZ,KAAK,aAAa,EAElB,KAAK,MAAM,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAMjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,iBAAiB,EAMvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,UAAU,EAAkB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAMjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQlD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,KAAK,mBAAmB,EAA6B,MAAM,iBAAiB,CAAC;AAEtF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,YAAY,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAEpG,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,cAAc,EAAE,uBAAuB,CAAC;IACxC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;6BAe6C,UAAU,eAAe;AALxE;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,aAA4C,YAAW,aAAa,EAAE,SAAS;IA2BzG,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,QAAQ,CAAC,SAAS,EAAE,iBAAiB;IACrC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAlCtB,qEAAqE;IACrE,OAAO,CAAC,cAAc,CAAC,CAAiB;IAExC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAAgB;IAE7B,OAAO,CAAC,KAAK,CAAsB;IAEnC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,kBAAkB,CAA6B;IAEvD,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;OASG;gBAEgB,YAAY,EAAE,gBAAgB,EAC9B,WAAW,EAAE;QAAE,aAAa,EAAE,UAAU,CAAC;QAAC,YAAY,EAAE,UAAU,CAAC;QAAC,eAAe,EAAE,UAAU,CAAA;KAAE,EACzG,SAAS,EAAE,iBAAiB,EAC7B,MAAM,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,6BAA6B,CAAC,EAAE,OAAO,CAAA;KAAE,EACxF,cAAc,EAAE,uBAAuB,EACvC,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,uBAAuB,EACxC,WAAW,EAAE,iBAAiB,GAAG;QAAE,gBAAgB,EAAE,QAAQ,CAAC;QAAC,kBAAkB,EAAE,EAAE,CAAA;KAAE,EACvF,GAAG,GAAE,MAAiC;IAYzD;;;;;;OAMG;WACiB,aAAa,CAC/B,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE,iBAAiB,EAChC,IAAI,EAAE,YAAY,EAClB,gBAAgB,UAAO,GACtB,OAAO,CAAC,QAAQ,CAAC;IAqDpB,8BAA8B;IACvB,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;IAItD;;;OAGG;IACU,KAAK,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BrD,aAAa;IAOb,kBAAkB;YAIX,QAAQ;IAgBtB;;OAEG;YAEW,IAAI;IAuGlB,qGAAqG;YACvF,QAAQ;IAatB,wFAAwF;YAC1E,gBAAgB;IA8C9B,OAAO,CAAC,SAAS;YAUH,oBAAoB;YA8FpB,qBAAqB;YAkBrB,sBAAsB;YAsCtB,cAAc;YAQd,cAAc;YAuRd,kCAAkC;IA6ChD,yCAAyC;IAClC,MAAM;IAWb;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C,gBAAgB,IAAI,OAAO,CAAC;QAAE,kBAAkB,EAAE,EAAE,CAAA;KAAE,CAAC;IAIvD,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIvC,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIzC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAItC,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI7C,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAM9C,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAMzC,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAkB1D,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAkBpE,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BnE,mFAAmF;IAC5E,qBAAqB,IAAI,OAAO;IAIvC;;;;;;OAMG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAInF,yDAAyD;IAC5C,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAOpG,uBAAuB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAI7E,0BAA0B,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAI9E,oBAAoB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAIrE,uBAAuB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAI7E;;;;OAIG;IACU,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAYtD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAWjF,WAAW,CAAC,MAAM,EAAE,MAAM;IAI1B,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAI1E;;;;;OAKG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIzE;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;IAIrD;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhE;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAI9E;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9C,wEAAwE;IACjE,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAIlE,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIhD,WAAW,CACtB,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAanD;;;;OAIG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAIrD;;;;OAIG;IACH,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrE,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIpC,kCAAkC,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI9F,+BAA+B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIrE,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAInC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAqDrB,UAAU,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiCpE;AAOD;;;;;GAKG;AACH,qBAAa,mBACX,YACE,IAAI,CACF,iBAAiB,EACf,SAAS,GACT,YAAY,GACZ,oBAAoB,GACpB,uBAAuB,GACvB,sBAAsB,GACtB,yBAAyB,GACzB,4BAA4B,GAC5B,+BAA+B,GAC/B,cAAc,GACd,UAAU,GACV,OAAO,GACP,kBAAkB,GAClB,WAAW,CACd;;IAIS,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB;gBAAxB,KAAK,EAAE,iBAAiB;IA0IhD,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,4BAA4B,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoCrG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0CjF,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAG5E,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAGxE,uBAAuB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAG7E,0BAA0B,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAG9E,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAGpE,oBAAoB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAGrE,uBAAuB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAGtE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAGjE,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAGnE,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAG1D,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAGrD,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAGrE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAGlE,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;IAG1E,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAGhE,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAG9E,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAG1C,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAGzC,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAG5D,4BAA4B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGlE,wBAAwB,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAG3D,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAG9C,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAGlE,qBAAqB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAGnE,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAG/G,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAGpC,kCAAkC,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAGvE,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAGpG,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC;IAG7C,YAAY,IAAI,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAGhH,+BAA+B,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGzE,qBAAqB,CAAC,KAAK,GAAE,WAAW,CAAC,MAAM,CAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC;IAG3F,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGvD,oBAAoB,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAGzD,+BAA+B,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAG3E,+BAA+B,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAIxF"}
|
|
@@ -11,6 +11,7 @@ import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
|
11
11
|
import { merge, pick } from '@aztec/foundation/collection';
|
|
12
12
|
import { Fr } from '@aztec/foundation/fields';
|
|
13
13
|
import { createLogger } from '@aztec/foundation/log';
|
|
14
|
+
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
14
15
|
import { RunningPromise, makeLoggingErrorHandler } from '@aztec/foundation/running-promise';
|
|
15
16
|
import { sleep } from '@aztec/foundation/sleep';
|
|
16
17
|
import { count } from '@aztec/foundation/string';
|
|
@@ -49,15 +50,14 @@ function mapArchiverConfig(config) {
|
|
|
49
50
|
instrumentation;
|
|
50
51
|
l1constants;
|
|
51
52
|
log;
|
|
52
|
-
/**
|
|
53
|
-
* A promise in which we will be continually fetching new L2 blocks.
|
|
54
|
-
*/ runningPromise;
|
|
53
|
+
/** A loop in which we will be continually fetching new L2 blocks. */ runningPromise;
|
|
55
54
|
rollup;
|
|
56
55
|
inbox;
|
|
57
56
|
store;
|
|
58
57
|
l1BlockNumber;
|
|
59
58
|
l1Timestamp;
|
|
60
59
|
initialSyncComplete;
|
|
60
|
+
initialSyncPromise;
|
|
61
61
|
tracer;
|
|
62
62
|
/**
|
|
63
63
|
* Creates a new instance of the Archiver.
|
|
@@ -74,6 +74,7 @@ function mapArchiverConfig(config) {
|
|
|
74
74
|
this.store = new ArchiverStoreHelper(dataStore);
|
|
75
75
|
this.rollup = new RollupContract(publicClient, l1Addresses.rollupAddress);
|
|
76
76
|
this.inbox = new InboxContract(publicClient, l1Addresses.inboxAddress);
|
|
77
|
+
this.initialSyncPromise = promiseWithResolvers();
|
|
77
78
|
}
|
|
78
79
|
/**
|
|
79
80
|
* Creates a new instance of the Archiver and blocks until it syncs from chain.
|
|
@@ -89,10 +90,11 @@ function mapArchiverConfig(config) {
|
|
|
89
90
|
pollingInterval: config.viemPollingIntervalMS
|
|
90
91
|
});
|
|
91
92
|
const rollup = new RollupContract(publicClient, config.l1Contracts.rollupAddress);
|
|
92
|
-
const [l1StartBlock, l1GenesisTime, proofSubmissionEpochs] = await Promise.all([
|
|
93
|
+
const [l1StartBlock, l1GenesisTime, proofSubmissionEpochs, genesisArchiveRoot] = await Promise.all([
|
|
93
94
|
rollup.getL1StartBlock(),
|
|
94
95
|
rollup.getL1GenesisTime(),
|
|
95
|
-
rollup.getProofSubmissionEpochs()
|
|
96
|
+
rollup.getProofSubmissionEpochs(),
|
|
97
|
+
rollup.getGenesisArchiveTreeRoot()
|
|
96
98
|
]);
|
|
97
99
|
const l1StartBlockHash = await publicClient.getBlock({
|
|
98
100
|
blockNumber: l1StartBlock,
|
|
@@ -106,7 +108,8 @@ function mapArchiverConfig(config) {
|
|
|
106
108
|
epochDuration,
|
|
107
109
|
slotDuration,
|
|
108
110
|
ethereumSlotDuration,
|
|
109
|
-
proofSubmissionEpochs: Number(proofSubmissionEpochs)
|
|
111
|
+
proofSubmissionEpochs: Number(proofSubmissionEpochs),
|
|
112
|
+
genesisArchiveRoot: Fr.fromHexString(genesisArchiveRoot)
|
|
110
113
|
};
|
|
111
114
|
const opts = merge({
|
|
112
115
|
pollingIntervalMs: 10_000,
|
|
@@ -146,6 +149,9 @@ function mapArchiverConfig(config) {
|
|
|
146
149
|
}
|
|
147
150
|
return this.runningPromise.trigger();
|
|
148
151
|
}
|
|
152
|
+
waitForInitialSync() {
|
|
153
|
+
return this.initialSyncPromise.promise;
|
|
154
|
+
}
|
|
149
155
|
async syncSafe(initialRun) {
|
|
150
156
|
try {
|
|
151
157
|
await this.sync(initialRun);
|
|
@@ -239,6 +245,7 @@ function mapArchiverConfig(config) {
|
|
|
239
245
|
this.l1Timestamp = currentL1Timestamp;
|
|
240
246
|
this.l1BlockNumber = currentL1BlockNumber;
|
|
241
247
|
this.initialSyncComplete = true;
|
|
248
|
+
this.initialSyncPromise.resolve();
|
|
242
249
|
if (initialRun) {
|
|
243
250
|
this.log.info(`Initial archiver sync to L1 block ${currentL1BlockNumber} complete.`, {
|
|
244
251
|
l1BlockNumber: currentL1BlockNumber,
|
|
@@ -718,6 +725,11 @@ function mapArchiverConfig(config) {
|
|
|
718
725
|
getL1Constants() {
|
|
719
726
|
return Promise.resolve(this.l1constants);
|
|
720
727
|
}
|
|
728
|
+
getGenesisValues() {
|
|
729
|
+
return Promise.resolve({
|
|
730
|
+
genesisArchiveRoot: this.l1constants.genesisArchiveRoot
|
|
731
|
+
});
|
|
732
|
+
}
|
|
721
733
|
getRollupAddress() {
|
|
722
734
|
return Promise.resolve(this.l1Addresses.rollupAddress);
|
|
723
735
|
}
|
|
@@ -725,24 +737,16 @@ function mapArchiverConfig(config) {
|
|
|
725
737
|
return Promise.resolve(this.l1Addresses.registryAddress);
|
|
726
738
|
}
|
|
727
739
|
getL1BlockNumber() {
|
|
728
|
-
|
|
729
|
-
if (!l1BlockNumber) {
|
|
730
|
-
throw new Error('L1 block number not yet available. Complete an initial sync first.');
|
|
731
|
-
}
|
|
732
|
-
return l1BlockNumber;
|
|
740
|
+
return this.l1BlockNumber;
|
|
733
741
|
}
|
|
734
742
|
getL1Timestamp() {
|
|
735
|
-
|
|
736
|
-
if (!l1Timestamp) {
|
|
737
|
-
throw new Error('L1 timestamp not yet available. Complete an initial sync first.');
|
|
738
|
-
}
|
|
739
|
-
return Promise.resolve(l1Timestamp);
|
|
743
|
+
return Promise.resolve(this.l1Timestamp);
|
|
740
744
|
}
|
|
741
|
-
|
|
742
|
-
return getSlotAtTimestamp(
|
|
745
|
+
getL2SlotNumber() {
|
|
746
|
+
return Promise.resolve(this.l1Timestamp === undefined ? undefined : getSlotAtTimestamp(this.l1Timestamp, this.l1constants));
|
|
743
747
|
}
|
|
744
|
-
|
|
745
|
-
return getEpochNumberAtTimestamp(
|
|
748
|
+
getL2EpochNumber() {
|
|
749
|
+
return Promise.resolve(this.l1Timestamp === undefined ? undefined : getEpochNumberAtTimestamp(this.l1Timestamp, this.l1constants));
|
|
746
750
|
}
|
|
747
751
|
async getBlocksForEpoch(epochNumber) {
|
|
748
752
|
const [start, end] = getSlotRangeForEpoch(epochNumber, this.l1constants);
|
|
@@ -815,6 +819,18 @@ function mapArchiverConfig(config) {
|
|
|
815
819
|
const limitWithProven = proven ? Math.min(limit, Math.max(await this.store.getProvenL2BlockNumber() - from + 1, 0)) : limit;
|
|
816
820
|
return limitWithProven === 0 ? [] : await this.store.getPublishedBlocks(from, limitWithProven);
|
|
817
821
|
}
|
|
822
|
+
getPublishedBlockByHash(blockHash) {
|
|
823
|
+
return this.store.getPublishedBlockByHash(blockHash);
|
|
824
|
+
}
|
|
825
|
+
getPublishedBlockByArchive(archive) {
|
|
826
|
+
return this.store.getPublishedBlockByArchive(archive);
|
|
827
|
+
}
|
|
828
|
+
getBlockHeaderByHash(blockHash) {
|
|
829
|
+
return this.store.getBlockHeaderByHash(blockHash);
|
|
830
|
+
}
|
|
831
|
+
getBlockHeaderByArchive(archive) {
|
|
832
|
+
return this.store.getBlockHeaderByArchive(archive);
|
|
833
|
+
}
|
|
818
834
|
/**
|
|
819
835
|
* Gets an l2 block.
|
|
820
836
|
* @param number - The block number to return.
|
|
@@ -1200,9 +1216,21 @@ var Operation = /*#__PURE__*/ function(Operation) {
|
|
|
1200
1216
|
getPublishedBlock(number) {
|
|
1201
1217
|
return this.store.getPublishedBlock(number);
|
|
1202
1218
|
}
|
|
1219
|
+
getPublishedBlockByHash(blockHash) {
|
|
1220
|
+
return this.store.getPublishedBlockByHash(blockHash);
|
|
1221
|
+
}
|
|
1222
|
+
getPublishedBlockByArchive(archive) {
|
|
1223
|
+
return this.store.getPublishedBlockByArchive(archive);
|
|
1224
|
+
}
|
|
1203
1225
|
getBlockHeaders(from, limit) {
|
|
1204
1226
|
return this.store.getBlockHeaders(from, limit);
|
|
1205
1227
|
}
|
|
1228
|
+
getBlockHeaderByHash(blockHash) {
|
|
1229
|
+
return this.store.getBlockHeaderByHash(blockHash);
|
|
1230
|
+
}
|
|
1231
|
+
getBlockHeaderByArchive(archive) {
|
|
1232
|
+
return this.store.getBlockHeaderByArchive(archive);
|
|
1233
|
+
}
|
|
1206
1234
|
getTxEffect(txHash) {
|
|
1207
1235
|
return this.store.getTxEffect(txHash);
|
|
1208
1236
|
}
|
|
@@ -50,6 +50,16 @@ export interface ArchiverDataStore {
|
|
|
50
50
|
* @param number - The block number to return.
|
|
51
51
|
*/
|
|
52
52
|
getPublishedBlock(number: number): Promise<PublishedL2Block | undefined>;
|
|
53
|
+
/**
|
|
54
|
+
* Returns the block for the given hash, or undefined if not exists.
|
|
55
|
+
* @param blockHash - The block hash to return.
|
|
56
|
+
*/
|
|
57
|
+
getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
|
|
58
|
+
/**
|
|
59
|
+
* Returns the block for the given archive root, or undefined if not exists.
|
|
60
|
+
* @param archive - The archive root to return.
|
|
61
|
+
*/
|
|
62
|
+
getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
|
|
53
63
|
/**
|
|
54
64
|
* Gets up to `limit` amount of published L2 blocks starting from `from`.
|
|
55
65
|
* @param from - Number of the first block to return (inclusive).
|
|
@@ -64,6 +74,16 @@ export interface ArchiverDataStore {
|
|
|
64
74
|
* @returns The requested L2 block headers.
|
|
65
75
|
*/
|
|
66
76
|
getBlockHeaders(from: number, limit: number): Promise<BlockHeader[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Returns the block header for the given hash, or undefined if not exists.
|
|
79
|
+
* @param blockHash - The block hash to return.
|
|
80
|
+
*/
|
|
81
|
+
getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
|
|
82
|
+
/**
|
|
83
|
+
* Returns the block header for the given archive root, or undefined if not exists.
|
|
84
|
+
* @param archive - The archive root to return.
|
|
85
|
+
*/
|
|
86
|
+
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
67
87
|
/**
|
|
68
88
|
* Gets a tx effect.
|
|
69
89
|
* @param txHash - The hash of the tx corresponding to the tx effect.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver_store.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"archiver_store.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver_store_test_suite.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store_test_suite.ts"],"names":[],"mappings":"AAqCA,OAAO,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAC;AAKnF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"archiver_store_test_suite.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store_test_suite.ts"],"names":[],"mappings":"AAqCA,OAAO,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAC;AAKnF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,QA2rC/D"}
|
|
@@ -130,6 +130,24 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
130
130
|
await store.addBlocks(blocks);
|
|
131
131
|
await expect(store.unwindBlocks(5, 1)).rejects.toThrow(/can only unwind blocks from the tip/i);
|
|
132
132
|
});
|
|
133
|
+
it('unwound blocks and headers cannot be retrieved by hash or archive', async ()=>{
|
|
134
|
+
await store.addBlocks(blocks);
|
|
135
|
+
const lastBlock = blocks[blocks.length - 1];
|
|
136
|
+
const blockHash = await lastBlock.block.hash();
|
|
137
|
+
const archive = lastBlock.block.archive.root;
|
|
138
|
+
// Verify block and header exist before unwinding
|
|
139
|
+
expect(await store.getPublishedBlockByHash(blockHash)).toBeDefined();
|
|
140
|
+
expect(await store.getPublishedBlockByArchive(archive)).toBeDefined();
|
|
141
|
+
expect(await store.getBlockHeaderByHash(blockHash)).toBeDefined();
|
|
142
|
+
expect(await store.getBlockHeaderByArchive(archive)).toBeDefined();
|
|
143
|
+
// Unwind the block
|
|
144
|
+
await store.unwindBlocks(lastBlock.block.number, 1);
|
|
145
|
+
// Verify neither block nor header can be retrieved after unwinding
|
|
146
|
+
expect(await store.getPublishedBlockByHash(blockHash)).toBeUndefined();
|
|
147
|
+
expect(await store.getPublishedBlockByArchive(archive)).toBeUndefined();
|
|
148
|
+
expect(await store.getBlockHeaderByHash(blockHash)).toBeUndefined();
|
|
149
|
+
expect(await store.getBlockHeaderByArchive(archive)).toBeUndefined();
|
|
150
|
+
});
|
|
133
151
|
});
|
|
134
152
|
describe('getBlocks', ()=>{
|
|
135
153
|
beforeEach(async ()=>{
|
|
@@ -165,6 +183,78 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
165
183
|
await expect(store.getPublishedBlocks(20, 2)).rejects.toThrow(`mismatch`);
|
|
166
184
|
});
|
|
167
185
|
});
|
|
186
|
+
describe('getPublishedBlockByHash', ()=>{
|
|
187
|
+
beforeEach(async ()=>{
|
|
188
|
+
await store.addBlocks(blocks);
|
|
189
|
+
});
|
|
190
|
+
it('retrieves a block by its hash', async ()=>{
|
|
191
|
+
const expectedBlock = blocks[5];
|
|
192
|
+
const blockHash = await expectedBlock.block.hash();
|
|
193
|
+
const retrievedBlock = await store.getPublishedBlockByHash(blockHash);
|
|
194
|
+
expect(retrievedBlock).toBeDefined();
|
|
195
|
+
expectBlocksEqual([
|
|
196
|
+
retrievedBlock
|
|
197
|
+
], [
|
|
198
|
+
expectedBlock
|
|
199
|
+
]);
|
|
200
|
+
});
|
|
201
|
+
it('returns undefined for non-existent block hash', async ()=>{
|
|
202
|
+
const nonExistentHash = Fr.random();
|
|
203
|
+
await expect(store.getPublishedBlockByHash(nonExistentHash)).resolves.toBeUndefined();
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
describe('getPublishedBlockByArchive', ()=>{
|
|
207
|
+
beforeEach(async ()=>{
|
|
208
|
+
await store.addBlocks(blocks);
|
|
209
|
+
});
|
|
210
|
+
it('retrieves a block by its archive root', async ()=>{
|
|
211
|
+
const expectedBlock = blocks[3];
|
|
212
|
+
const archive = expectedBlock.block.archive.root;
|
|
213
|
+
const retrievedBlock = await store.getPublishedBlockByArchive(archive);
|
|
214
|
+
expect(retrievedBlock).toBeDefined();
|
|
215
|
+
expectBlocksEqual([
|
|
216
|
+
retrievedBlock
|
|
217
|
+
], [
|
|
218
|
+
expectedBlock
|
|
219
|
+
]);
|
|
220
|
+
});
|
|
221
|
+
it('returns undefined for non-existent archive root', async ()=>{
|
|
222
|
+
const nonExistentArchive = Fr.random();
|
|
223
|
+
await expect(store.getPublishedBlockByArchive(nonExistentArchive)).resolves.toBeUndefined();
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
describe('getBlockHeaderByHash', ()=>{
|
|
227
|
+
beforeEach(async ()=>{
|
|
228
|
+
await store.addBlocks(blocks);
|
|
229
|
+
});
|
|
230
|
+
it('retrieves a block header by its hash', async ()=>{
|
|
231
|
+
const expectedBlock = blocks[7];
|
|
232
|
+
const blockHash = await expectedBlock.block.hash();
|
|
233
|
+
const retrievedHeader = await store.getBlockHeaderByHash(blockHash);
|
|
234
|
+
expect(retrievedHeader).toBeDefined();
|
|
235
|
+
expect(retrievedHeader.equals(expectedBlock.block.header)).toBe(true);
|
|
236
|
+
});
|
|
237
|
+
it('returns undefined for non-existent block hash', async ()=>{
|
|
238
|
+
const nonExistentHash = Fr.random();
|
|
239
|
+
await expect(store.getBlockHeaderByHash(nonExistentHash)).resolves.toBeUndefined();
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
describe('getBlockHeaderByArchive', ()=>{
|
|
243
|
+
beforeEach(async ()=>{
|
|
244
|
+
await store.addBlocks(blocks);
|
|
245
|
+
});
|
|
246
|
+
it('retrieves a block header by its archive root', async ()=>{
|
|
247
|
+
const expectedBlock = blocks[2];
|
|
248
|
+
const archive = expectedBlock.block.archive.root;
|
|
249
|
+
const retrievedHeader = await store.getBlockHeaderByArchive(archive);
|
|
250
|
+
expect(retrievedHeader).toBeDefined();
|
|
251
|
+
expect(retrievedHeader.equals(expectedBlock.block.header)).toBe(true);
|
|
252
|
+
});
|
|
253
|
+
it('returns undefined for non-existent archive root', async ()=>{
|
|
254
|
+
const nonExistentArchive = Fr.random();
|
|
255
|
+
await expect(store.getBlockHeaderByArchive(nonExistentArchive)).resolves.toBeUndefined();
|
|
256
|
+
});
|
|
257
|
+
});
|
|
168
258
|
describe('getSyncedL2BlockNumber', ()=>{
|
|
169
259
|
it('returns the block number before INITIAL_L2_BLOCK_NUM if no blocks have been added', async ()=>{
|
|
170
260
|
await expect(store.getSynchedL2BlockNumber()).resolves.toEqual(INITIAL_L2_BLOCK_NUM - 1);
|
package/dest/archiver/config.js
CHANGED
|
@@ -22,7 +22,7 @@ export const archiverConfigMappings = {
|
|
|
22
22
|
archiverStoreMapSizeKb: {
|
|
23
23
|
env: 'ARCHIVER_STORE_MAP_SIZE_KB',
|
|
24
24
|
parseEnv: (val)=>val ? +val : undefined,
|
|
25
|
-
description: 'The maximum possible size of the archiver DB in KB. Overwrites the general
|
|
25
|
+
description: 'The maximum possible size of the archiver DB in KB. Overwrites the general dataStoreMapSizeKb.'
|
|
26
26
|
},
|
|
27
27
|
skipValidateBlockAttestations: {
|
|
28
28
|
description: 'Whether to skip validating block attestations (use only for testing).',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAEV,UAAU,EAGV,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/archiver/data_retrieval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Blob, BlobDeserializationError } from '@aztec/blob-lib';
|
|
1
|
+
import { Blob, BlobDeserializationError, EMPTY_BLOB_VERSIONED_HASH } from '@aztec/blob-lib';
|
|
2
2
|
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
3
3
|
import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
5
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
|
+
import { bufferToHex } from '@aztec/foundation/string';
|
|
6
7
|
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
7
8
|
import { Body, CommitteeAttestation, L2Block, PublishedL2Block } from '@aztec/stdlib/block';
|
|
8
9
|
import { Proof } from '@aztec/stdlib/proofs';
|
|
@@ -206,33 +207,47 @@ export async function getL1BlockTime(publicClient, blockNumber) {
|
|
|
206
207
|
// TODO(md): why is the proposed block header different to the actual block header?
|
|
207
208
|
// This is likely going to be a footgun
|
|
208
209
|
const header = ProposedBlockHeader.fromViem(decodedArgs.header);
|
|
210
|
+
const body = await getBlockBodyFromBlobs(blobSinkClient, blockHash, blobHashes, l2BlockNumber, logger);
|
|
211
|
+
const archiveRoot = new Fr(Buffer.from(hexToBytes(decodedArgs.archive)));
|
|
212
|
+
const stateReference = StateReference.fromViem(decodedArgs.stateReference);
|
|
213
|
+
return {
|
|
214
|
+
l2BlockNumber,
|
|
215
|
+
archiveRoot,
|
|
216
|
+
stateReference,
|
|
217
|
+
header,
|
|
218
|
+
body,
|
|
219
|
+
attestations
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
async function getBlockBodyFromBlobs(blobSinkClient, blockHash, blobHashes, l2BlockNumber, logger) {
|
|
209
223
|
const blobBodies = await blobSinkClient.getBlobSidecar(blockHash, blobHashes);
|
|
210
|
-
|
|
211
|
-
|
|
224
|
+
logger.trace(`Fetched ${blobBodies.length} blob bodies for L2 block ${l2BlockNumber}`, {
|
|
225
|
+
blobHashes: blobHashes.map(bufferToHex),
|
|
226
|
+
l2BlockNumber
|
|
227
|
+
});
|
|
228
|
+
if (blobBodies.length !== blobHashes.length) {
|
|
229
|
+
// If there is exactly one blob hash and it is the empty blob hash, we are fine with not downloading it
|
|
230
|
+
// and just defaulting to an empty block body.
|
|
231
|
+
if (blobHashes.length === 1 && blobBodies.length === 0 && blobHashes[0].equals(EMPTY_BLOB_VERSIONED_HASH)) {
|
|
232
|
+
logger.verbose(`Ignoring error fetching blob body for block ${l2BlockNumber} as it is empty`);
|
|
233
|
+
return Body.empty();
|
|
234
|
+
} else {
|
|
235
|
+
throw new NoBlobBodiesFoundError(l2BlockNumber, blobBodies.length, blobHashes.length);
|
|
236
|
+
}
|
|
212
237
|
}
|
|
213
238
|
let blockFields;
|
|
214
239
|
try {
|
|
215
240
|
blockFields = Blob.toEncodedFields(blobBodies.map((b)=>b.blob));
|
|
216
241
|
} catch (err) {
|
|
217
242
|
if (err instanceof BlobDeserializationError) {
|
|
218
|
-
logger.
|
|
243
|
+
logger.error(err.message);
|
|
219
244
|
} else {
|
|
220
|
-
logger.
|
|
245
|
+
logger.error('Unable to sync: failed to decode fetched blob, this blob was likely not created by us');
|
|
221
246
|
}
|
|
222
247
|
throw err;
|
|
223
248
|
}
|
|
224
249
|
// The blob source gives us blockFields, and we must construct the body from them:
|
|
225
|
-
|
|
226
|
-
const archiveRoot = new Fr(Buffer.from(hexToBytes(decodedArgs.archive)));
|
|
227
|
-
const stateReference = StateReference.fromViem(decodedArgs.stateReference);
|
|
228
|
-
return {
|
|
229
|
-
l2BlockNumber,
|
|
230
|
-
archiveRoot,
|
|
231
|
-
stateReference,
|
|
232
|
-
header,
|
|
233
|
-
body,
|
|
234
|
-
attestations
|
|
235
|
-
};
|
|
250
|
+
return Body.fromBlobFields(blockFields);
|
|
236
251
|
}
|
|
237
252
|
/** Given an L1 to L2 message, retrieves its corresponding event from the Inbox within a specific block range. */ export async function retrieveL1ToL2Message(inbox, leaf, fromBlock, toBlock) {
|
|
238
253
|
const logs = await inbox.getEvents.MessageSent({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare class NoBlobBodiesFoundError extends Error {
|
|
2
|
-
constructor(l2BlockNum: number);
|
|
2
|
+
constructor(l2BlockNum: number, found: number, expected: number);
|
|
3
3
|
}
|
|
4
4
|
export declare class InitialBlockNumberNotSequentialError extends Error {
|
|
5
5
|
readonly newBlockNumber: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/archiver/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,UAAU,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/archiver/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAGhE;AAED,qBAAa,oCAAqC,SAAQ,KAAK;aAE3C,cAAc,EAAE,MAAM;aACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS;gBADvC,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS;CAQ1D;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS;CAKjE"}
|
package/dest/archiver/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export class NoBlobBodiesFoundError extends Error {
|
|
2
|
-
constructor(l2BlockNum){
|
|
3
|
-
super(`No blob bodies found for block ${l2BlockNum}`);
|
|
2
|
+
constructor(l2BlockNum, found, expected){
|
|
3
|
+
super(`No blob bodies found for block ${l2BlockNum} (expected ${expected} but found ${found})`);
|
|
4
4
|
}
|
|
5
5
|
}
|
|
6
6
|
export class InitialBlockNumberNotSequentialError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/archiver/instrumentation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAKL,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,uBAAuB;IAwBhC,OAAO,CAAC,SAAS;IAvBnB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,YAAY,CAAY;IAChC,OAAO,CAAC,WAAW,CAAY;IAE/B,OAAO,CAAC,sBAAsB,CAAY;IAC1C,OAAO,CAAC,gBAAgB,CAAgB;IAExC,OAAO,CAAC,GAAG,CAA4C;IAEvD,OAAO;WAuFa,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB;IAY1E,SAAS,IAAI,OAAO;IAIpB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAY5D,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/archiver/instrumentation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAKL,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,uBAAuB;IAwBhC,OAAO,CAAC,SAAS;IAvBnB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,YAAY,CAAY;IAChC,OAAO,CAAC,WAAW,CAAY;IAE/B,OAAO,CAAC,sBAAsB,CAAY;IAC1C,OAAO,CAAC,gBAAgB,CAAgB;IAExC,OAAO,CAAC,GAAG,CAA4C;IAEvD,OAAO;WAuFa,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,iBAAiB;IAY1E,SAAS,IAAI,OAAO;IAIpB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAY5D,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAQ1D,YAAY,CAAC,QAAQ,EAAE,MAAM;IAK7B,qBAAqB,CAAC,WAAW,EAAE,MAAM;IAIzC,qBAAqB,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;IAaxF,mBAAmB,CAAC,WAAW,EAAE,MAAM;CAG/C"}
|
|
@@ -107,6 +107,9 @@ export class ArchiverInstrumentation {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
processNewMessages(count, syncPerMessageMs) {
|
|
110
|
+
if (count === 0) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
110
113
|
this.syncMessageCount.add(count);
|
|
111
114
|
this.syncDurationPerMessage.record(Math.ceil(syncPerMessageMs));
|
|
112
115
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
1
2
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
2
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
-
import { PublishedL2Block, type ValidateBlockResult } from '@aztec/stdlib/block';
|
|
4
|
+
import { L2BlockHash, PublishedL2Block, type ValidateBlockResult } from '@aztec/stdlib/block';
|
|
4
5
|
import { BlockHeader, type IndexedTxEffect, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
5
6
|
export { TxReceipt, type TxEffect, type TxHash } from '@aztec/stdlib/tx';
|
|
6
7
|
/**
|
|
@@ -39,6 +40,30 @@ export declare class BlockStore {
|
|
|
39
40
|
* @returns The requested L2 block.
|
|
40
41
|
*/
|
|
41
42
|
getBlock(blockNumber: number): Promise<PublishedL2Block | undefined>;
|
|
43
|
+
/**
|
|
44
|
+
* Gets an L2 block by its hash.
|
|
45
|
+
* @param blockHash - The hash of the block to return.
|
|
46
|
+
* @returns The requested L2 block.
|
|
47
|
+
*/
|
|
48
|
+
getBlockByHash(blockHash: L2BlockHash): Promise<PublishedL2Block | undefined>;
|
|
49
|
+
/**
|
|
50
|
+
* Gets an L2 block by its archive root.
|
|
51
|
+
* @param archive - The archive root of the block to return.
|
|
52
|
+
* @returns The requested L2 block.
|
|
53
|
+
*/
|
|
54
|
+
getBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
|
|
55
|
+
/**
|
|
56
|
+
* Gets a block header by its hash.
|
|
57
|
+
* @param blockHash - The hash of the block to return.
|
|
58
|
+
* @returns The requested block header.
|
|
59
|
+
*/
|
|
60
|
+
getBlockHeaderByHash(blockHash: L2BlockHash): Promise<BlockHeader | undefined>;
|
|
61
|
+
/**
|
|
62
|
+
* Gets a block header by its archive root.
|
|
63
|
+
* @param archive - The archive root of the block to return.
|
|
64
|
+
* @returns The requested block header.
|
|
65
|
+
*/
|
|
66
|
+
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
42
67
|
/**
|
|
43
68
|
* Gets the headers for a sequence of L2 blocks.
|
|
44
69
|
* @param start - Number of the first block to return (inclusive).
|