@aztec/sequencer-client 0.73.0 → 0.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/client/sequencer-client.js +9 -4
- package/dest/publisher/sequencer-publisher.d.ts +10 -5
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +52 -79
- package/dest/slasher/factory.d.ts +2 -2
- package/dest/slasher/factory.d.ts.map +1 -1
- package/dest/slasher/factory.js +2 -2
- package/dest/slasher/slasher_client.d.ts +4 -4
- package/dest/slasher/slasher_client.d.ts.map +1 -1
- package/dest/slasher/slasher_client.js +34 -25
- package/package.json +21 -21
- package/src/client/sequencer-client.ts +23 -2
- package/src/publisher/sequencer-publisher.ts +70 -90
- package/src/slasher/factory.ts +3 -3
- package/src/slasher/slasher_client.ts +40 -31
|
@@ -109,22 +109,22 @@ export class SlasherClient extends WithTracer {
|
|
|
109
109
|
return EthAddress.fromString(payloadAddress);
|
|
110
110
|
}
|
|
111
111
|
getL2BlockHash(number) {
|
|
112
|
-
return
|
|
112
|
+
return this.synchedBlockHashes.getAsync(number);
|
|
113
113
|
}
|
|
114
|
-
getL2Tips() {
|
|
115
|
-
const latestBlockNumber = this.getSyncedLatestBlockNum();
|
|
114
|
+
async getL2Tips() {
|
|
115
|
+
const latestBlockNumber = await this.getSyncedLatestBlockNum();
|
|
116
116
|
let latestBlockHash;
|
|
117
|
-
const provenBlockNumber = this.getSyncedProvenBlockNum();
|
|
117
|
+
const provenBlockNumber = await this.getSyncedProvenBlockNum();
|
|
118
118
|
let provenBlockHash;
|
|
119
119
|
if (latestBlockNumber > 0) {
|
|
120
|
-
latestBlockHash = this.synchedBlockHashes.
|
|
120
|
+
latestBlockHash = await this.synchedBlockHashes.getAsync(latestBlockNumber);
|
|
121
121
|
if (typeof latestBlockHash === 'undefined') {
|
|
122
122
|
this.log.warn(`Block hash for latest block ${latestBlockNumber} not found`);
|
|
123
123
|
throw new Error();
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
if (provenBlockNumber > 0) {
|
|
127
|
-
provenBlockHash = this.synchedBlockHashes.
|
|
127
|
+
provenBlockHash = await this.synchedBlockHashes.getAsync(provenBlockNumber);
|
|
128
128
|
if (typeof provenBlockHash === 'undefined') {
|
|
129
129
|
this.log.warn(`Block hash for proven block ${provenBlockNumber} not found`);
|
|
130
130
|
throw new Error();
|
|
@@ -146,7 +146,7 @@ export class SlasherClient extends WithTracer {
|
|
|
146
146
|
// TODO (alexg): I think we can prune the block hashes map here
|
|
147
147
|
break;
|
|
148
148
|
case 'chain-proven': {
|
|
149
|
-
const from = this.getSyncedProvenBlockNum() + 1;
|
|
149
|
+
const from = (await this.getSyncedProvenBlockNum()) + 1;
|
|
150
150
|
const limit = event.blockNumber - from + 1;
|
|
151
151
|
await this.handleProvenL2Blocks(await this.l2BlockSource.getBlocks(from, limit));
|
|
152
152
|
break;
|
|
@@ -170,8 +170,8 @@ export class SlasherClient extends WithTracer {
|
|
|
170
170
|
// get the current latest block numbers
|
|
171
171
|
this.latestBlockNumberAtStart = await this.l2BlockSource.getBlockNumber();
|
|
172
172
|
this.provenBlockNumberAtStart = await this.l2BlockSource.getProvenBlockNumber();
|
|
173
|
-
const syncedLatestBlock = this.getSyncedLatestBlockNum() + 1;
|
|
174
|
-
const syncedProvenBlock = this.getSyncedProvenBlockNum() + 1;
|
|
173
|
+
const syncedLatestBlock = (await this.getSyncedLatestBlockNum()) + 1;
|
|
174
|
+
const syncedProvenBlock = (await this.getSyncedProvenBlockNum()) + 1;
|
|
175
175
|
// if there are blocks to be retrieved, go to a synching state
|
|
176
176
|
if (syncedLatestBlock <= this.latestBlockNumberAtStart || syncedProvenBlock <= this.provenBlockNumberAtStart) {
|
|
177
177
|
this.setCurrentState(SlasherClientState.SYNCHING);
|
|
@@ -198,6 +198,8 @@ export class SlasherClient extends WithTracer {
|
|
|
198
198
|
this.log.debug('Stopping Slasher client...');
|
|
199
199
|
await this.blockStream.stop();
|
|
200
200
|
this.log.debug('Stopped block downloader');
|
|
201
|
+
await this.store.close();
|
|
202
|
+
this.log.debug('Stopped slasher store');
|
|
201
203
|
this.setCurrentState(SlasherClientState.STOPPED);
|
|
202
204
|
this.log.info('Slasher client stopped.');
|
|
203
205
|
}
|
|
@@ -212,22 +214,22 @@ export class SlasherClient extends WithTracer {
|
|
|
212
214
|
* Public function to check the latest block number that the slasher client is synced to.
|
|
213
215
|
* @returns Block number of latest L2 Block we've synced with.
|
|
214
216
|
*/
|
|
215
|
-
getSyncedLatestBlockNum() {
|
|
216
|
-
return this.synchedLatestBlockNumber.
|
|
217
|
+
async getSyncedLatestBlockNum() {
|
|
218
|
+
return (await this.synchedLatestBlockNumber.getAsync()) ?? INITIAL_L2_BLOCK_NUM - 1;
|
|
217
219
|
}
|
|
218
220
|
/**
|
|
219
221
|
* Public function to check the latest proven block number that the slasher client is synced to.
|
|
220
222
|
* @returns Block number of latest proven L2 Block we've synced with.
|
|
221
223
|
*/
|
|
222
|
-
getSyncedProvenBlockNum() {
|
|
223
|
-
return this.synchedProvenBlockNumber.
|
|
224
|
+
async getSyncedProvenBlockNum() {
|
|
225
|
+
return (await this.synchedProvenBlockNumber.getAsync()) ?? INITIAL_L2_BLOCK_NUM - 1;
|
|
224
226
|
}
|
|
225
227
|
/**
|
|
226
228
|
* Method to check the status of the slasher client.
|
|
227
229
|
* @returns Information about slasher client status: state & syncedToBlockNum.
|
|
228
230
|
*/
|
|
229
231
|
async getStatus() {
|
|
230
|
-
const blockNumber = this.getSyncedLatestBlockNum();
|
|
232
|
+
const blockNumber = await this.getSyncedLatestBlockNum();
|
|
231
233
|
const blockHash = blockNumber == 0
|
|
232
234
|
? ''
|
|
233
235
|
: await this.l2BlockSource
|
|
@@ -246,13 +248,16 @@ export class SlasherClient extends WithTracer {
|
|
|
246
248
|
*/
|
|
247
249
|
async handleLatestL2Blocks(blocks) {
|
|
248
250
|
if (!blocks.length) {
|
|
249
|
-
return
|
|
251
|
+
return;
|
|
250
252
|
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
253
|
+
await this.store.transactionAsync(async () => {
|
|
254
|
+
for (const block of blocks) {
|
|
255
|
+
await this.synchedBlockHashes.set(block.number, (await block.hash()).toString());
|
|
256
|
+
}
|
|
257
|
+
const lastBlockNum = blocks[blocks.length - 1].number;
|
|
258
|
+
await this.synchedLatestBlockNumber.set(lastBlockNum);
|
|
259
|
+
});
|
|
260
|
+
await this.startServiceIfSynched();
|
|
256
261
|
}
|
|
257
262
|
/**
|
|
258
263
|
* Handles new proven blocks by updating the proven block number
|
|
@@ -266,7 +271,7 @@ export class SlasherClient extends WithTracer {
|
|
|
266
271
|
const lastBlockNum = blocks[blocks.length - 1].number;
|
|
267
272
|
await this.synchedProvenBlockNumber.set(lastBlockNum);
|
|
268
273
|
this.log.debug(`Synched to proven block ${lastBlockNum}`);
|
|
269
|
-
this.startServiceIfSynched();
|
|
274
|
+
await this.startServiceIfSynched();
|
|
270
275
|
}
|
|
271
276
|
async handlePruneL2Blocks(latestBlock) {
|
|
272
277
|
const blockHeader = await this.l2BlockSource.getBlockHeader(latestBlock);
|
|
@@ -284,10 +289,14 @@ export class SlasherClient extends WithTracer {
|
|
|
284
289
|
});
|
|
285
290
|
await this.synchedLatestBlockNumber.set(latestBlock);
|
|
286
291
|
}
|
|
287
|
-
startServiceIfSynched() {
|
|
292
|
+
async startServiceIfSynched() {
|
|
293
|
+
const [latestBlock, provenBlock] = await Promise.all([
|
|
294
|
+
this.getSyncedLatestBlockNum(),
|
|
295
|
+
this.getSyncedProvenBlockNum(),
|
|
296
|
+
]);
|
|
288
297
|
if (this.currentState === SlasherClientState.SYNCHING &&
|
|
289
|
-
|
|
290
|
-
|
|
298
|
+
latestBlock >= this.latestBlockNumberAtStart &&
|
|
299
|
+
provenBlock >= this.provenBlockNumberAtStart) {
|
|
291
300
|
this.log.debug(`Synched to blocks at start`);
|
|
292
301
|
this.setCurrentState(SlasherClientState.RUNNING);
|
|
293
302
|
if (this.syncResolve !== undefined) {
|
|
@@ -304,4 +313,4 @@ export class SlasherClient extends WithTracer {
|
|
|
304
313
|
this.log.debug(`Moved to state ${SlasherClientState[this.currentState]}`);
|
|
305
314
|
}
|
|
306
315
|
}
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xhc2hlcl9jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2xhc2hlci9zbGFzaGVyX2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsYUFBYSxHQUdkLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUErQyxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBd0IsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFL0YsT0FBTyxFQUtMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsV0FBVyxFQUNYLElBQUksR0FDTCxNQUFNLE1BQU0sQ0FBQztBQUVkOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksa0JBS1g7QUFMRCxXQUFZLGtCQUFrQjtJQUM1QiwyREFBSSxDQUFBO0lBQ0osbUVBQVEsQ0FBQTtJQUNSLGlFQUFPLENBQUE7SUFDUCxpRUFBTyxDQUFBO0FBQ1QsQ0FBQyxFQUxXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFLN0I7QUEyQkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUNILE1BQU0sT0FBTyxhQUFjLFNBQVEsVUFBVTtJQXVCM0MsWUFDVSxNQUEwRCxFQUMxRCxLQUFtQixFQUNuQixhQUE0QixFQUNwQyxZQUE2QixrQkFBa0IsRUFBRSxFQUN6QyxNQUFNLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFFckMsS0FBSyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQU5wQixXQUFNLEdBQU4s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
|
|
316
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xhc2hlcl9jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2xhc2hlci9zbGFzaGVyX2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsYUFBYSxHQUdkLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUErQyxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBd0IsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFL0YsT0FBTyxFQUtMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsV0FBVyxFQUNYLElBQUksR0FDTCxNQUFNLE1BQU0sQ0FBQztBQUVkOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksa0JBS1g7QUFMRCxXQUFZLGtCQUFrQjtJQUM1QiwyREFBSSxDQUFBO0lBQ0osbUVBQVEsQ0FBQTtJQUNSLGlFQUFPLENBQUE7SUFDUCxpRUFBTyxDQUFBO0FBQ1QsQ0FBQyxFQUxXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFLN0I7QUEyQkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUNILE1BQU0sT0FBTyxhQUFjLFNBQVEsVUFBVTtJQXVCM0MsWUFDVSxNQUEwRCxFQUMxRCxLQUF3QixFQUN4QixhQUE0QixFQUNwQyxZQUE2QixrQkFBa0IsRUFBRSxFQUN6QyxNQUFNLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFFckMsS0FBSyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQU5wQixXQUFNLEdBQU4sTUFBTSxDQUFvRDtRQUMxRCxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUU1QixRQUFHLEdBQUgsR0FBRyxDQUEwQjtRQTNCL0IsaUJBQVksR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDdkMsZ0JBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsZ0JBQVcsR0FBZ0IsU0FBUyxDQUFDO1FBQ3JDLDZCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlCLDZCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBUTlCLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUU3Qix5QkFBb0IsR0FDNUIsU0FBUyxDQUFDO1FBRVosbUNBQW1DO1FBQ25DLG1HQUFtRztRQUNuRyxrREFBa0Q7UUFDMUMsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFXbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGFBQWEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsc0JBQXNCLENBQUMsRUFBRTtZQUNwRyxTQUFTLEVBQUUsTUFBTSxDQUFDLHFCQUFxQjtZQUN2QyxjQUFjLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtTQUM1QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUVwRixJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsS0FBSyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekcsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckUsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7Z0JBQ3RDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUztnQkFDdEIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUM3QixlQUFlLEVBQUUsTUFBTSxDQUFDLHFCQUFxQjthQUM5QyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsV0FBVyxDQUFDO2dCQUN0QyxPQUFPLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RFLEdBQUcsRUFBRSxlQUFlO2dCQUNwQixNQUFNLEVBQUUsWUFBWTthQUNyQixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDhEQUE4RCxDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELDZFQUE2RTtJQUN0RSxLQUFLLENBQUMsZUFBZSxDQUFDLFVBQWtCO1FBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMvQixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsK0ZBQStGO1FBQy9GLG1EQUFtRDtRQUNuRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxVQUFVLEVBQUUsQ0FBQztZQUNoRixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1lBQ2hHLFVBQVUsQ0FBQyxLQUFLO1lBQ2hCLFVBQVUsQ0FBQyxNQUFNO1NBQ2xCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQix1REFBdUQ7WUFDdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsdUNBQXVDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sY0FBYyxDQUFDLE1BQWM7UUFDbEMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUztRQUNwQixNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0QsSUFBSSxlQUFtQyxDQUFDO1FBQ3hDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvRCxJQUFJLGVBQW1DLENBQUM7UUFFeEMsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQixlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDNUUsSUFBSSxPQUFPLGVBQWUsS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsK0JBQStCLGlCQUFpQixZQUFZLENBQUMsQ0FBQztnQkFDNUUsTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQixlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDNUUsSUFBSSxPQUFPLGVBQWUsS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsK0JBQStCLGlCQUFpQixZQUFZLENBQUMsQ0FBQztnQkFDNUUsTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3JCLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxlQUFnQixFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtZQUM3RCxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsZUFBZ0IsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUU7WUFDN0QsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLGVBQWdCLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFO1NBQ2pFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsc0JBQXNCLENBQUMsS0FBeUI7UUFDM0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsK0JBQStCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVELFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25CLEtBQUssY0FBYztnQkFDakIsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QyxNQUFNO1lBQ1IsS0FBSyxpQkFBaUI7Z0JBQ3BCLCtEQUErRDtnQkFDL0QsTUFBTTtZQUNSLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDcEIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQzNDLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ2pGLE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxjQUFjO2dCQUNqQixNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2xELE1BQU07WUFDUixPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNSLE1BQU0sQ0FBQyxHQUFVLEtBQUssQ0FBQztnQkFDdkIsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDMUIsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVoRixNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyRSxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVyRSw4REFBOEQ7UUFDOUQsSUFBSSxpQkFBaUIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLElBQUksaUJBQWlCLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDN0csSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLHNCQUFzQixpQkFBaUIsaUJBQWlCLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUNqRyxDQUFDO2FBQU0sQ0FBQztZQUNOLHVEQUF1RDtZQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsaUJBQWlCLFlBQVksaUJBQWlCLGdDQUFnQyxDQUFDLENBQUM7UUFDNUcsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsdUNBQXVDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUU3RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxJQUFJO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUM3QyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUMzQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssa0JBQWtCLENBQUMsT0FBTyxDQUFDO0lBQzFELENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsdUJBQXVCO1FBQ2xDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLG9CQUFvQixHQUFHLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLHVCQUF1QjtRQUNsQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDekQsTUFBTSxTQUFTLEdBQ2IsV0FBVyxJQUFJLENBQUM7WUFDZCxDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhO2lCQUNyQixjQUFjLENBQUMsV0FBVyxDQUFDO2lCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDeEIsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1NBQ3RDLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxNQUFpQjtRQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxFQUFFO1lBQzNDLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ25GLENBQUM7WUFFRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDdEQsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxNQUFpQjtRQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDdEQsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDJCQUEyQixZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRTFELE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVPLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFtQjtRQUNuRCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRixNQUFNLFdBQVcsR0FBRyxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyREFBMkQsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUV4RixpRkFBaUY7UUFDakYsTUFBTSxjQUFjLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUUsTUFBTSxNQUFNLEdBQUcsY0FBYyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLGNBQWMsQ0FBQztRQUVsRyxNQUFNLFFBQVEsR0FBRyxVQUFVLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFN0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDcEIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQzNCLFFBQVE7U0FDVCxDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLEtBQUssQ0FBQyxxQkFBcUI7UUFDakMsTUFBTSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDbkQsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQzlCLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtTQUMvQixDQUFDLENBQUM7UUFDSCxJQUNFLElBQUksQ0FBQyxZQUFZLEtBQUssa0JBQWtCLENBQUMsUUFBUTtZQUNqRCxXQUFXLElBQUksSUFBSSxDQUFDLHdCQUF3QjtZQUM1QyxXQUFXLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUM1QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGVBQWUsQ0FBQyxRQUE0QjtRQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0Isa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0NBQ0YifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.74.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -28,26 +28,26 @@
|
|
|
28
28
|
"test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@aztec/aztec.js": "0.
|
|
32
|
-
"@aztec/bb-prover": "0.
|
|
33
|
-
"@aztec/blob-sink": "0.
|
|
34
|
-
"@aztec/circuit-types": "0.
|
|
35
|
-
"@aztec/circuits.js": "0.
|
|
36
|
-
"@aztec/epoch-cache": "0.
|
|
37
|
-
"@aztec/ethereum": "0.
|
|
38
|
-
"@aztec/foundation": "0.
|
|
39
|
-
"@aztec/l1-artifacts": "0.
|
|
40
|
-
"@aztec/merkle-tree": "0.
|
|
41
|
-
"@aztec/noir-contracts.js": "0.
|
|
42
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
43
|
-
"@aztec/p2p": "0.
|
|
44
|
-
"@aztec/protocol-contracts": "0.
|
|
45
|
-
"@aztec/prover-client": "0.
|
|
46
|
-
"@aztec/simulator": "0.
|
|
47
|
-
"@aztec/telemetry-client": "0.
|
|
48
|
-
"@aztec/types": "0.
|
|
49
|
-
"@aztec/validator-client": "0.
|
|
50
|
-
"@aztec/world-state": "0.
|
|
31
|
+
"@aztec/aztec.js": "0.74.0",
|
|
32
|
+
"@aztec/bb-prover": "0.74.0",
|
|
33
|
+
"@aztec/blob-sink": "0.74.0",
|
|
34
|
+
"@aztec/circuit-types": "0.74.0",
|
|
35
|
+
"@aztec/circuits.js": "0.74.0",
|
|
36
|
+
"@aztec/epoch-cache": "0.74.0",
|
|
37
|
+
"@aztec/ethereum": "0.74.0",
|
|
38
|
+
"@aztec/foundation": "0.74.0",
|
|
39
|
+
"@aztec/l1-artifacts": "0.74.0",
|
|
40
|
+
"@aztec/merkle-tree": "0.74.0",
|
|
41
|
+
"@aztec/noir-contracts.js": "0.74.0",
|
|
42
|
+
"@aztec/noir-protocol-circuits-types": "0.74.0",
|
|
43
|
+
"@aztec/p2p": "0.74.0",
|
|
44
|
+
"@aztec/protocol-contracts": "0.74.0",
|
|
45
|
+
"@aztec/prover-client": "0.74.0",
|
|
46
|
+
"@aztec/simulator": "0.74.0",
|
|
47
|
+
"@aztec/telemetry-client": "0.74.0",
|
|
48
|
+
"@aztec/types": "0.74.0",
|
|
49
|
+
"@aztec/validator-client": "0.74.0",
|
|
50
|
+
"@aztec/world-state": "0.74.0",
|
|
51
51
|
"@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
|
|
52
52
|
"@noir-lang/types": "portal:../../noir/packages/types",
|
|
53
53
|
"lodash.chunk": "^4.2.0",
|
|
@@ -4,8 +4,10 @@ import { type AztecAddress, type ContractDataSource } from '@aztec/circuits.js';
|
|
|
4
4
|
import { EpochCache } from '@aztec/epoch-cache';
|
|
5
5
|
import {
|
|
6
6
|
ForwarderContract,
|
|
7
|
+
GovernanceProposerContract,
|
|
7
8
|
L1TxUtilsWithBlobs,
|
|
8
9
|
RollupContract,
|
|
10
|
+
SlashingProposerContract,
|
|
9
11
|
createEthereumChain,
|
|
10
12
|
createL1Clients,
|
|
11
13
|
isAnvilTestChain,
|
|
@@ -84,8 +86,25 @@ export class SequencerClient {
|
|
|
84
86
|
] as const);
|
|
85
87
|
const forwarderContract =
|
|
86
88
|
config.customForwarderContractAddress && config.customForwarderContractAddress !== EthAddress.ZERO
|
|
87
|
-
? new ForwarderContract(
|
|
88
|
-
|
|
89
|
+
? new ForwarderContract(
|
|
90
|
+
publicClient,
|
|
91
|
+
config.customForwarderContractAddress.toString(),
|
|
92
|
+
config.l1Contracts.rollupAddress.toString(),
|
|
93
|
+
)
|
|
94
|
+
: await ForwarderContract.create(
|
|
95
|
+
walletClient.account.address,
|
|
96
|
+
walletClient,
|
|
97
|
+
publicClient,
|
|
98
|
+
log,
|
|
99
|
+
config.l1Contracts.rollupAddress.toString(),
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
const governanceProposerContract = new GovernanceProposerContract(
|
|
103
|
+
publicClient,
|
|
104
|
+
config.l1Contracts.governanceProposerAddress.toString(),
|
|
105
|
+
);
|
|
106
|
+
const slashingProposerAddress = await rollupContract.getSlashingProposerAddress();
|
|
107
|
+
const slashingProposerContract = new SlashingProposerContract(publicClient, slashingProposerAddress.toString());
|
|
89
108
|
const epochCache =
|
|
90
109
|
deps.epochCache ??
|
|
91
110
|
(await EpochCache.create(
|
|
@@ -110,6 +129,8 @@ export class SequencerClient {
|
|
|
110
129
|
rollupContract,
|
|
111
130
|
epochCache,
|
|
112
131
|
forwarderContract,
|
|
132
|
+
governanceProposerContract,
|
|
133
|
+
slashingProposerContract,
|
|
113
134
|
});
|
|
114
135
|
const globalsBuilder = new GlobalVariableBuilder(config);
|
|
115
136
|
|
|
@@ -14,25 +14,28 @@ import {
|
|
|
14
14
|
FormattedViemError,
|
|
15
15
|
type ForwarderContract,
|
|
16
16
|
type GasPrice,
|
|
17
|
+
type GovernanceProposerContract,
|
|
18
|
+
type IEmpireBase,
|
|
17
19
|
type L1BlobInputs,
|
|
18
20
|
type L1ContractsConfig,
|
|
19
21
|
type L1GasConfig,
|
|
20
22
|
type L1TxRequest,
|
|
21
23
|
type L1TxUtilsWithBlobs,
|
|
22
|
-
|
|
24
|
+
RollupContract,
|
|
25
|
+
type SlashingProposerContract,
|
|
23
26
|
type TransactionStats,
|
|
24
27
|
formatViemError,
|
|
25
28
|
} from '@aztec/ethereum';
|
|
26
29
|
import { toHex } from '@aztec/foundation/bigint-buffer';
|
|
27
30
|
import { Blob } from '@aztec/foundation/blob';
|
|
28
31
|
import { type Signature } from '@aztec/foundation/eth-signature';
|
|
29
|
-
import {
|
|
32
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
30
33
|
import { Timer } from '@aztec/foundation/timer';
|
|
31
|
-
import {
|
|
34
|
+
import { ForwarderAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
32
35
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
33
36
|
|
|
34
37
|
import pick from 'lodash.pick';
|
|
35
|
-
import { type TransactionReceipt, encodeFunctionData
|
|
38
|
+
import { type TransactionReceipt, encodeFunctionData } from 'viem';
|
|
36
39
|
|
|
37
40
|
import { type PublisherConfig, type TxSenderConfig } from './config.js';
|
|
38
41
|
import { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js';
|
|
@@ -106,6 +109,8 @@ export class SequencerPublisher {
|
|
|
106
109
|
|
|
107
110
|
public l1TxUtils: L1TxUtilsWithBlobs;
|
|
108
111
|
public rollupContract: RollupContract;
|
|
112
|
+
public govProposerContract: GovernanceProposerContract;
|
|
113
|
+
public slashingProposerContract: SlashingProposerContract;
|
|
109
114
|
|
|
110
115
|
protected requests: RequestWithExpiry[] = [];
|
|
111
116
|
|
|
@@ -117,15 +122,14 @@ export class SequencerPublisher {
|
|
|
117
122
|
forwarderContract: ForwarderContract;
|
|
118
123
|
l1TxUtils: L1TxUtilsWithBlobs;
|
|
119
124
|
rollupContract: RollupContract;
|
|
125
|
+
slashingProposerContract: SlashingProposerContract;
|
|
126
|
+
governanceProposerContract: GovernanceProposerContract;
|
|
120
127
|
epochCache: EpochCache;
|
|
121
128
|
},
|
|
122
129
|
) {
|
|
123
130
|
this.ethereumSlotDuration = BigInt(config.ethereumSlotDuration);
|
|
124
131
|
this.epochCache = deps.epochCache;
|
|
125
132
|
|
|
126
|
-
if (config.l1Contracts.governanceProposerAddress) {
|
|
127
|
-
this.governanceProposerAddress = EthAddress.fromString(config.l1Contracts.governanceProposerAddress.toString());
|
|
128
|
-
}
|
|
129
133
|
this.blobSinkClient = deps.blobSinkClient ?? createBlobSinkClient(config);
|
|
130
134
|
|
|
131
135
|
const telemetry = deps.telemetry ?? getTelemetryClient();
|
|
@@ -134,6 +138,9 @@ export class SequencerPublisher {
|
|
|
134
138
|
|
|
135
139
|
this.rollupContract = deps.rollupContract;
|
|
136
140
|
this.forwarderContract = deps.forwarderContract;
|
|
141
|
+
|
|
142
|
+
this.govProposerContract = deps.governanceProposerContract;
|
|
143
|
+
this.slashingProposerContract = deps.slashingProposerContract;
|
|
137
144
|
}
|
|
138
145
|
|
|
139
146
|
public registerSlashPayloadGetter(callback: GetSlashPayloadCallBack) {
|
|
@@ -221,12 +228,13 @@ export class SequencerPublisher {
|
|
|
221
228
|
this.l1TxUtils,
|
|
222
229
|
gasConfig,
|
|
223
230
|
blobConfig,
|
|
231
|
+
this.log,
|
|
224
232
|
);
|
|
225
233
|
this.callbackBundledTransactions(validRequests, result);
|
|
226
234
|
return result;
|
|
227
235
|
} catch (err) {
|
|
228
|
-
const
|
|
229
|
-
this.log.error(`Failed to publish bundled transactions`,
|
|
236
|
+
const viemError = formatViemError(err);
|
|
237
|
+
this.log.error(`Failed to publish bundled transactions`, viemError);
|
|
230
238
|
return undefined;
|
|
231
239
|
}
|
|
232
240
|
}
|
|
@@ -249,7 +257,7 @@ export class SequencerPublisher {
|
|
|
249
257
|
* @returns The slot and block number if it is possible to propose, undefined otherwise
|
|
250
258
|
*/
|
|
251
259
|
public canProposeAtNextEthBlock(tipArchive: Buffer) {
|
|
252
|
-
const ignoredErrors = ['SlotAlreadyInChain', 'InvalidProposer'];
|
|
260
|
+
const ignoredErrors = ['SlotAlreadyInChain', 'InvalidProposer', 'InvalidArchive'];
|
|
253
261
|
return this.rollupContract
|
|
254
262
|
.canProposeAtNextEthBlock(tipArchive, this.getForwarderAddress().toString(), this.ethereumSlotDuration)
|
|
255
263
|
.catch(err => {
|
|
@@ -335,114 +343,85 @@ export class SequencerPublisher {
|
|
|
335
343
|
return committee.map(EthAddress.fromString);
|
|
336
344
|
}
|
|
337
345
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
public async enqueueCastVote(slotNumber: bigint, timestamp: bigint, voteType: VoteType): Promise<boolean> {
|
|
346
|
-
// @todo This function can be optimized by doing some of the computations locally instead of calling the L1 contracts
|
|
346
|
+
private async enqueueCastVoteHelper(
|
|
347
|
+
slotNumber: bigint,
|
|
348
|
+
timestamp: bigint,
|
|
349
|
+
voteType: VoteType,
|
|
350
|
+
payload: EthAddress,
|
|
351
|
+
base: IEmpireBase,
|
|
352
|
+
): Promise<boolean> {
|
|
347
353
|
if (this.myLastVotes[voteType] >= slotNumber) {
|
|
348
354
|
return false;
|
|
349
355
|
}
|
|
350
|
-
|
|
351
|
-
const voteConfig = async (): Promise<
|
|
352
|
-
{ payload: EthAddress; voteContractAddress: EthAddress; logger: Logger } | undefined
|
|
353
|
-
> => {
|
|
354
|
-
if (voteType === VoteType.GOVERNANCE) {
|
|
355
|
-
if (this.governancePayload.equals(EthAddress.ZERO)) {
|
|
356
|
-
return undefined;
|
|
357
|
-
}
|
|
358
|
-
if (!this.governanceProposerAddress) {
|
|
359
|
-
return undefined;
|
|
360
|
-
}
|
|
361
|
-
return {
|
|
362
|
-
payload: this.governancePayload,
|
|
363
|
-
voteContractAddress: this.governanceProposerAddress,
|
|
364
|
-
logger: this.governanceLog,
|
|
365
|
-
};
|
|
366
|
-
} else if (voteType === VoteType.SLASHING) {
|
|
367
|
-
if (!this.getSlashPayload) {
|
|
368
|
-
return undefined;
|
|
369
|
-
}
|
|
370
|
-
const slashingProposerAddress = await this.rollupContract.getSlashingProposerAddress();
|
|
371
|
-
if (!slashingProposerAddress) {
|
|
372
|
-
return undefined;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
const slashPayload = await this.getSlashPayload(slotNumber);
|
|
376
|
-
|
|
377
|
-
if (!slashPayload) {
|
|
378
|
-
return undefined;
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
return {
|
|
382
|
-
payload: slashPayload,
|
|
383
|
-
voteContractAddress: slashingProposerAddress,
|
|
384
|
-
logger: this.slashingLog,
|
|
385
|
-
};
|
|
386
|
-
} else {
|
|
387
|
-
throw new Error('Invalid vote type');
|
|
388
|
-
}
|
|
389
|
-
};
|
|
390
|
-
|
|
391
|
-
const vConfig = await voteConfig();
|
|
392
|
-
|
|
393
|
-
if (!vConfig) {
|
|
356
|
+
if (payload.equals(EthAddress.ZERO)) {
|
|
394
357
|
return false;
|
|
395
358
|
}
|
|
396
|
-
|
|
397
|
-
const
|
|
398
|
-
|
|
399
|
-
const voteContract = getContract({
|
|
400
|
-
address: getAddress(voteContractAddress.toString()),
|
|
401
|
-
abi: EmpireBaseAbi,
|
|
402
|
-
client: this.l1TxUtils.walletClient,
|
|
403
|
-
});
|
|
404
|
-
|
|
405
|
-
const [proposer, roundNumber] = await Promise.all([
|
|
359
|
+
const round = await base.computeRound(slotNumber);
|
|
360
|
+
const [proposer, roundInfo] = await Promise.all([
|
|
406
361
|
this.rollupContract.getProposerAt(timestamp),
|
|
407
|
-
|
|
362
|
+
base.getRoundInfo(this.rollupContract.address, round),
|
|
408
363
|
]);
|
|
409
364
|
|
|
410
365
|
if (proposer.toLowerCase() !== this.getForwarderAddress().toString().toLowerCase()) {
|
|
411
366
|
return false;
|
|
412
367
|
}
|
|
413
|
-
|
|
414
|
-
const [slotForLastVote] = await voteContract.read.rounds([this.rollupContract.address, roundNumber]);
|
|
415
|
-
|
|
416
|
-
if (slotForLastVote >= slotNumber) {
|
|
368
|
+
if (roundInfo.lastVote >= slotNumber) {
|
|
417
369
|
return false;
|
|
418
370
|
}
|
|
419
371
|
|
|
420
372
|
const cachedLastVote = this.myLastVotes[voteType];
|
|
421
|
-
|
|
422
373
|
this.myLastVotes[voteType] = slotNumber;
|
|
423
374
|
|
|
424
375
|
this.addRequest({
|
|
425
376
|
action: voteType === VoteType.GOVERNANCE ? 'governance-vote' : 'slashing-vote',
|
|
426
|
-
request:
|
|
427
|
-
to: voteContractAddress.toString(),
|
|
428
|
-
data: encodeFunctionData({
|
|
429
|
-
abi: EmpireBaseAbi,
|
|
430
|
-
functionName: 'vote',
|
|
431
|
-
args: [payload.toString()],
|
|
432
|
-
}),
|
|
433
|
-
},
|
|
377
|
+
request: base.createVoteRequest(payload.toString()),
|
|
434
378
|
lastValidL2Slot: slotNumber,
|
|
435
379
|
onResult: (_request, result) => {
|
|
436
380
|
if (!result || result.receipt.status !== 'success') {
|
|
437
381
|
this.myLastVotes[voteType] = cachedLastVote;
|
|
438
382
|
} else {
|
|
439
|
-
this.log.info(`Cast ${voteType} vote for slot ${slotNumber}`);
|
|
383
|
+
this.log.info(`Cast [${voteType}] vote for slot ${slotNumber}`);
|
|
440
384
|
}
|
|
441
385
|
},
|
|
442
386
|
});
|
|
443
387
|
return true;
|
|
444
388
|
}
|
|
445
389
|
|
|
390
|
+
private async getVoteConfig(
|
|
391
|
+
slotNumber: bigint,
|
|
392
|
+
voteType: VoteType,
|
|
393
|
+
): Promise<{ payload: EthAddress; base: IEmpireBase } | undefined> {
|
|
394
|
+
if (voteType === VoteType.GOVERNANCE) {
|
|
395
|
+
return { payload: this.governancePayload, base: this.govProposerContract };
|
|
396
|
+
} else if (voteType === VoteType.SLASHING) {
|
|
397
|
+
if (!this.getSlashPayload) {
|
|
398
|
+
return undefined;
|
|
399
|
+
}
|
|
400
|
+
const slashPayload = await this.getSlashPayload(slotNumber);
|
|
401
|
+
if (!slashPayload) {
|
|
402
|
+
return undefined;
|
|
403
|
+
}
|
|
404
|
+
return { payload: slashPayload, base: this.slashingProposerContract };
|
|
405
|
+
}
|
|
406
|
+
throw new Error('Unreachable: Invalid vote type');
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Enqueues a castVote transaction to cast a vote for a given slot number.
|
|
411
|
+
* @param slotNumber - The slot number to cast a vote for.
|
|
412
|
+
* @param timestamp - The timestamp of the slot to cast a vote for.
|
|
413
|
+
* @param voteType - The type of vote to cast.
|
|
414
|
+
* @returns True if the vote was successfully enqueued, false otherwise.
|
|
415
|
+
*/
|
|
416
|
+
public async enqueueCastVote(slotNumber: bigint, timestamp: bigint, voteType: VoteType): Promise<boolean> {
|
|
417
|
+
const voteConfig = await this.getVoteConfig(slotNumber, voteType);
|
|
418
|
+
if (!voteConfig) {
|
|
419
|
+
return false;
|
|
420
|
+
}
|
|
421
|
+
const { payload, base } = voteConfig;
|
|
422
|
+
return this.enqueueCastVoteHelper(slotNumber, timestamp, voteType, payload, base);
|
|
423
|
+
}
|
|
424
|
+
|
|
446
425
|
/**
|
|
447
426
|
* Proposes a L2 block on L1.
|
|
448
427
|
*
|
|
@@ -627,7 +606,7 @@ export class SequencerPublisher {
|
|
|
627
606
|
// @note we override checkBlob to false since blobs are not part simulate()
|
|
628
607
|
stateDiff: [
|
|
629
608
|
{
|
|
630
|
-
slot: toHex(
|
|
609
|
+
slot: toHex(RollupContract.checkBlobStorageSlot, true),
|
|
631
610
|
value: toHex(0n, true),
|
|
632
611
|
},
|
|
633
612
|
],
|
|
@@ -657,6 +636,7 @@ export class SequencerPublisher {
|
|
|
657
636
|
const kzg = Blob.getViemKzgInstance();
|
|
658
637
|
const { rollupData, simulationResult, blobEvaluationGas } = await this.prepareProposeTx(encodedData, timestamp);
|
|
659
638
|
const startBlock = await this.l1TxUtils.getBlockNumber();
|
|
639
|
+
const blockHash = await block.hash();
|
|
660
640
|
|
|
661
641
|
return this.addRequest({
|
|
662
642
|
action: 'propose',
|
|
@@ -708,7 +688,7 @@ export class SequencerPublisher {
|
|
|
708
688
|
this.log.error(`Rollup process tx reverted. ${errorMsg ?? 'No error message'}`, undefined, {
|
|
709
689
|
...block.getStats(),
|
|
710
690
|
txHash: receipt.transactionHash,
|
|
711
|
-
blockHash
|
|
691
|
+
blockHash,
|
|
712
692
|
slotNumber: block.header.globalVariables.slotNumber.toBigInt(),
|
|
713
693
|
});
|
|
714
694
|
}
|
package/src/slasher/factory.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { L2BlockSource } from '@aztec/circuit-types';
|
|
2
2
|
import { type L1ContractsConfig, type L1ReaderConfig } from '@aztec/ethereum';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
|
-
import { type
|
|
4
|
+
import { type AztecAsyncKVStore } from '@aztec/kv-store';
|
|
5
5
|
import { type DataStoreConfig } from '@aztec/kv-store/config';
|
|
6
|
-
import { createStore } from '@aztec/kv-store/lmdb';
|
|
6
|
+
import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
7
7
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
8
8
|
|
|
9
9
|
import { SlasherClient } from './slasher_client.js';
|
|
@@ -13,7 +13,7 @@ export const createSlasherClient = async (
|
|
|
13
13
|
_config: SlasherConfig & DataStoreConfig & L1ContractsConfig & L1ReaderConfig,
|
|
14
14
|
l2BlockSource: L2BlockSource,
|
|
15
15
|
telemetry: TelemetryClient = getTelemetryClient(),
|
|
16
|
-
deps: { store?:
|
|
16
|
+
deps: { store?: AztecAsyncKVStore } = {},
|
|
17
17
|
) => {
|
|
18
18
|
const config = { ..._config };
|
|
19
19
|
const store = deps.store ?? (await createStore('slasher', config, createLogger('slasher:lmdb')));
|