@aztec/sequencer-client 4.3.0-nightly.20260428 → 4.3.0-nightly.20260430
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.
|
@@ -76,9 +76,11 @@ export declare class CheckpointProposalJob implements Traceable {
|
|
|
76
76
|
}): Promise<{
|
|
77
77
|
block: L2Block;
|
|
78
78
|
usedTxs: Tx[];
|
|
79
|
+
} | {
|
|
80
|
+
failure: 'insufficient-txs' | 'insufficient-valid-txs';
|
|
79
81
|
} | {
|
|
80
82
|
error: Error;
|
|
81
|
-
}
|
|
83
|
+
}>;
|
|
82
84
|
private buildSingleBlockWithCheckpointBuilder;
|
|
83
85
|
private waitForMinTxs;
|
|
84
86
|
private waitForAttestations;
|
|
@@ -99,4 +101,4 @@ export declare class CheckpointProposalJob implements Traceable {
|
|
|
99
101
|
private getSecondsIntoSlot;
|
|
100
102
|
getPublisher(): SequencerPublisher;
|
|
101
103
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludF9wcm9wb3NhbF9qb2IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXF1ZW5jZXIvY2hlY2twb2ludF9wcm9wb3NhbF9qb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUNMLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixVQUFVLEVBQ1gsTUFBTSxpQ0FBaUMsQ0FBQztBQVF6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBUyxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUEwQixNQUFNLHlCQUF5QixDQUFDO0FBQ3pGLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFHTCxPQUFPLEVBQ1AsS0FBSyxXQUFXLEVBQ2hCLEtBQUssYUFBYSxFQUVuQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBc0IsTUFBTSwwQkFBMEIsQ0FBQztBQUcvRSxPQUFPLEVBR0wsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSyxzQkFBc0IsRUFDNUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxtQkFBbUIsRUFBbUMsTUFBTSx5QkFBeUIsQ0FBQztBQVNwRyxPQUFPLEVBQWlCLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJELE9BQU8sRUFBYyxLQUFLLFNB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint_proposal_job.d.ts","sourceRoot":"","sources":["../../src/sequencer/checkpoint_proposal_job.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"checkpoint_proposal_job.d.ts","sourceRoot":"","sources":["../../src/sequencer/checkpoint_proposal_job.ts"],"names":[],"mappings":"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"}
|
|
@@ -723,14 +723,8 @@ _dec = trackSpan('CheckpointProposalJob.execute'), _dec1 = trackSpan('Checkpoint
|
|
|
723
723
|
this.metrics.recordCheckpointSuccess();
|
|
724
724
|
return checkpoint;
|
|
725
725
|
}
|
|
726
|
-
// Include the block pending broadcast in the checkpoint proposal if any
|
|
727
|
-
const lastBlock = blockPendingBroadcast && {
|
|
728
|
-
blockHeader: blockPendingBroadcast.block.header,
|
|
729
|
-
indexWithinCheckpoint: blockPendingBroadcast.block.indexWithinCheckpoint,
|
|
730
|
-
txs: blockPendingBroadcast.txs
|
|
731
|
-
};
|
|
732
726
|
// Create the checkpoint proposal and broadcast it
|
|
733
|
-
const proposal = await this.validatorClient.createCheckpointProposal(checkpoint.header, checkpoint.archive.root, feeAssetPriceModifier,
|
|
727
|
+
const proposal = await this.validatorClient.createCheckpointProposal(checkpoint.header, checkpoint.archive.root, feeAssetPriceModifier, blockPendingBroadcast, this.proposer, checkpointProposalOptions);
|
|
734
728
|
const blockProposedAt = this.dateProvider.now();
|
|
735
729
|
await this.p2pClient.broadcastCheckpointProposal(proposal);
|
|
736
730
|
this.setStateFn(SequencerState.COLLECTING_ATTESTATIONS, this.slot);
|
|
@@ -818,17 +812,19 @@ _dec = trackSpan('CheckpointProposalJob.execute'), _dec1 = trackSpan('Checkpoint
|
|
|
818
812
|
indexWithinCheckpoint,
|
|
819
813
|
txHashesAlreadyIncluded
|
|
820
814
|
});
|
|
821
|
-
//
|
|
822
|
-
if (
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
815
|
+
// If we failed to build the block due to insufficient txs, we try again if there is still time left in the slot
|
|
816
|
+
if ('failure' in buildResult) {
|
|
817
|
+
// If this was the last subslot, or we're running with a single block per slot, we're done
|
|
818
|
+
if (timingInfo.isLastBlock || timingInfo.deadline === undefined) {
|
|
819
|
+
break;
|
|
820
|
+
}
|
|
821
|
+
// Otherwise, if there is still time for more blocks, we wait until the next subslot and try again
|
|
826
822
|
await this.waitUntilNextSubslot(timingInfo.deadline);
|
|
827
823
|
continue;
|
|
828
|
-
}
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
824
|
+
}
|
|
825
|
+
// If there was an error building the block, we just exit the loop and give up the rest of the slot.
|
|
826
|
+
// We don't want to risk building more blocks if something went wrong.
|
|
827
|
+
if ('error' in buildResult) {
|
|
832
828
|
if (!(buildResult.error instanceof SequencerInterruptedError)) {
|
|
833
829
|
this.log.warn(`Halting block building for slot ${slot}`, {
|
|
834
830
|
slot,
|
|
@@ -841,30 +837,23 @@ _dec = trackSpan('CheckpointProposalJob.execute'), _dec1 = trackSpan('Checkpoint
|
|
|
841
837
|
const { block, usedTxs } = buildResult;
|
|
842
838
|
blocksInCheckpoint.push(block);
|
|
843
839
|
usedTxs.forEach((tx)=>txHashesAlreadyIncluded.add(tx.txHash.toString()));
|
|
844
|
-
//
|
|
845
|
-
|
|
840
|
+
// Sign the block proposal. This will throw if HA signing fails.
|
|
841
|
+
const proposal = await this.createBlockProposal(block, inHash, usedTxs, blockProposalOptions);
|
|
842
|
+
// Sync the proposed block to the archiver to make it available, only after we've managed to sign the proposal,
|
|
843
|
+
// so we avoid polluting our archive with a block that would fail.
|
|
844
|
+
// We wait for the sync to succeed, as this helps catch consistency errors, even if it means we lose some time for block-building.
|
|
845
|
+
// If this throws, we abort the entire checkpoint.
|
|
846
|
+
await this.syncProposedBlockToArchiver(block);
|
|
847
|
+
// If this is the last block, do not broadcast it, since it will be included in the checkpoint proposal.
|
|
846
848
|
if (timingInfo.isLastBlock) {
|
|
847
|
-
await this.syncProposedBlockToArchiver(block);
|
|
848
849
|
this.log.verbose(`Completed final block ${blockNumber} for slot ${slot}`, {
|
|
849
850
|
slot,
|
|
850
851
|
blockNumber,
|
|
851
852
|
blocksBuilt
|
|
852
853
|
});
|
|
853
|
-
blockPendingBroadcast =
|
|
854
|
-
block,
|
|
855
|
-
txs: usedTxs
|
|
856
|
-
};
|
|
854
|
+
blockPendingBroadcast = proposal;
|
|
857
855
|
break;
|
|
858
856
|
}
|
|
859
|
-
// Broadcast the block proposal (unless we're in fisherman mode) unless the block is the last one,
|
|
860
|
-
// in which case we'll broadcast it along with the checkpoint at the end of the loop.
|
|
861
|
-
// Note that we only send the block to the archiver if we manage to create the proposal, so if there's
|
|
862
|
-
// a HA error we don't pollute our archiver with a block that won't make it to the chain.
|
|
863
|
-
const proposal = await this.createBlockProposal(block, inHash, usedTxs, blockProposalOptions);
|
|
864
|
-
// Sync the proposed block to the archiver to make it available, only after we've managed to sign the proposal.
|
|
865
|
-
// We wait for the sync to succeed, as this helps catch consistency errors, even if it means we lose some time for block-building.
|
|
866
|
-
// If this throws, we abort the entire checkpoint.
|
|
867
|
-
await this.syncProposedBlockToArchiver(block);
|
|
868
857
|
// Once we have a signed proposal and the archiver agreed with our proposed block, then we broadcast it.
|
|
869
858
|
proposal && await this.p2pClient.broadcastProposal(proposal);
|
|
870
859
|
// Wait until the next block's start time
|
|
@@ -914,7 +903,9 @@ _dec = trackSpan('CheckpointProposalJob.execute'), _dec1 = trackSpan('Checkpoint
|
|
|
914
903
|
slot: this.slot
|
|
915
904
|
});
|
|
916
905
|
this.metrics.recordBlockProposalFailed('insufficient_txs');
|
|
917
|
-
return
|
|
906
|
+
return {
|
|
907
|
+
failure: 'insufficient-txs'
|
|
908
|
+
};
|
|
918
909
|
}
|
|
919
910
|
// Create iterator to pending txs. We filter out txs already included in previous blocks in the checkpoint
|
|
920
911
|
// just in case p2p failed to sync the provisional block and didn't get to remove those txs from the mempool yet.
|
|
@@ -957,7 +948,9 @@ _dec = trackSpan('CheckpointProposalJob.execute'), _dec1 = trackSpan('Checkpoint
|
|
|
957
948
|
slot: this.slot
|
|
958
949
|
});
|
|
959
950
|
this.metrics.recordBlockProposalFailed('insufficient_valid_txs');
|
|
960
|
-
return
|
|
951
|
+
return {
|
|
952
|
+
failure: 'insufficient-valid-txs'
|
|
953
|
+
};
|
|
961
954
|
}
|
|
962
955
|
// Block creation succeeded, emit stats and metrics
|
|
963
956
|
const { block, publicProcessorDuration, usedTxs, blockBuildDuration, numTxs } = buildResult;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "4.3.0-nightly.
|
|
3
|
+
"version": "4.3.0-nightly.20260430",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -26,38 +26,38 @@
|
|
|
26
26
|
"test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@aztec/aztec.js": "4.3.0-nightly.
|
|
30
|
-
"@aztec/bb-prover": "4.3.0-nightly.
|
|
31
|
-
"@aztec/blob-client": "4.3.0-nightly.
|
|
32
|
-
"@aztec/blob-lib": "4.3.0-nightly.
|
|
33
|
-
"@aztec/constants": "4.3.0-nightly.
|
|
34
|
-
"@aztec/epoch-cache": "4.3.0-nightly.
|
|
35
|
-
"@aztec/ethereum": "4.3.0-nightly.
|
|
36
|
-
"@aztec/foundation": "4.3.0-nightly.
|
|
37
|
-
"@aztec/l1-artifacts": "4.3.0-nightly.
|
|
38
|
-
"@aztec/merkle-tree": "4.3.0-nightly.
|
|
39
|
-
"@aztec/node-keystore": "4.3.0-nightly.
|
|
40
|
-
"@aztec/noir-acvm_js": "4.3.0-nightly.
|
|
41
|
-
"@aztec/noir-contracts.js": "4.3.0-nightly.
|
|
42
|
-
"@aztec/noir-protocol-circuits-types": "4.3.0-nightly.
|
|
43
|
-
"@aztec/noir-types": "4.3.0-nightly.
|
|
44
|
-
"@aztec/p2p": "4.3.0-nightly.
|
|
45
|
-
"@aztec/protocol-contracts": "4.3.0-nightly.
|
|
46
|
-
"@aztec/prover-client": "4.3.0-nightly.
|
|
47
|
-
"@aztec/simulator": "4.3.0-nightly.
|
|
48
|
-
"@aztec/slasher": "4.3.0-nightly.
|
|
49
|
-
"@aztec/stdlib": "4.3.0-nightly.
|
|
50
|
-
"@aztec/telemetry-client": "4.3.0-nightly.
|
|
51
|
-
"@aztec/validator-client": "4.3.0-nightly.
|
|
52
|
-
"@aztec/validator-ha-signer": "4.3.0-nightly.
|
|
53
|
-
"@aztec/world-state": "4.3.0-nightly.
|
|
29
|
+
"@aztec/aztec.js": "4.3.0-nightly.20260430",
|
|
30
|
+
"@aztec/bb-prover": "4.3.0-nightly.20260430",
|
|
31
|
+
"@aztec/blob-client": "4.3.0-nightly.20260430",
|
|
32
|
+
"@aztec/blob-lib": "4.3.0-nightly.20260430",
|
|
33
|
+
"@aztec/constants": "4.3.0-nightly.20260430",
|
|
34
|
+
"@aztec/epoch-cache": "4.3.0-nightly.20260430",
|
|
35
|
+
"@aztec/ethereum": "4.3.0-nightly.20260430",
|
|
36
|
+
"@aztec/foundation": "4.3.0-nightly.20260430",
|
|
37
|
+
"@aztec/l1-artifacts": "4.3.0-nightly.20260430",
|
|
38
|
+
"@aztec/merkle-tree": "4.3.0-nightly.20260430",
|
|
39
|
+
"@aztec/node-keystore": "4.3.0-nightly.20260430",
|
|
40
|
+
"@aztec/noir-acvm_js": "4.3.0-nightly.20260430",
|
|
41
|
+
"@aztec/noir-contracts.js": "4.3.0-nightly.20260430",
|
|
42
|
+
"@aztec/noir-protocol-circuits-types": "4.3.0-nightly.20260430",
|
|
43
|
+
"@aztec/noir-types": "4.3.0-nightly.20260430",
|
|
44
|
+
"@aztec/p2p": "4.3.0-nightly.20260430",
|
|
45
|
+
"@aztec/protocol-contracts": "4.3.0-nightly.20260430",
|
|
46
|
+
"@aztec/prover-client": "4.3.0-nightly.20260430",
|
|
47
|
+
"@aztec/simulator": "4.3.0-nightly.20260430",
|
|
48
|
+
"@aztec/slasher": "4.3.0-nightly.20260430",
|
|
49
|
+
"@aztec/stdlib": "4.3.0-nightly.20260430",
|
|
50
|
+
"@aztec/telemetry-client": "4.3.0-nightly.20260430",
|
|
51
|
+
"@aztec/validator-client": "4.3.0-nightly.20260430",
|
|
52
|
+
"@aztec/validator-ha-signer": "4.3.0-nightly.20260430",
|
|
53
|
+
"@aztec/world-state": "4.3.0-nightly.20260430",
|
|
54
54
|
"lodash.chunk": "^4.2.0",
|
|
55
55
|
"tslib": "^2.4.0",
|
|
56
56
|
"viem": "npm:@aztec/viem@2.38.2"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@aztec/archiver": "4.3.0-nightly.
|
|
60
|
-
"@aztec/kv-store": "4.3.0-nightly.
|
|
59
|
+
"@aztec/archiver": "4.3.0-nightly.20260430",
|
|
60
|
+
"@aztec/kv-store": "4.3.0-nightly.20260430",
|
|
61
61
|
"@electric-sql/pglite": "^0.3.14",
|
|
62
62
|
"@jest/globals": "^30.0.0",
|
|
63
63
|
"@types/jest": "^30.0.0",
|
|
@@ -227,7 +227,7 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
227
227
|
};
|
|
228
228
|
|
|
229
229
|
let blocksInCheckpoint: L2Block[] = [];
|
|
230
|
-
let blockPendingBroadcast:
|
|
230
|
+
let blockPendingBroadcast: BlockProposal | undefined = undefined;
|
|
231
231
|
const checkpointBuildTimer = new Timer();
|
|
232
232
|
|
|
233
233
|
try {
|
|
@@ -310,19 +310,12 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
310
310
|
return checkpoint;
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
-
// Include the block pending broadcast in the checkpoint proposal if any
|
|
314
|
-
const lastBlock = blockPendingBroadcast && {
|
|
315
|
-
blockHeader: blockPendingBroadcast.block.header,
|
|
316
|
-
indexWithinCheckpoint: blockPendingBroadcast.block.indexWithinCheckpoint,
|
|
317
|
-
txs: blockPendingBroadcast.txs,
|
|
318
|
-
};
|
|
319
|
-
|
|
320
313
|
// Create the checkpoint proposal and broadcast it
|
|
321
314
|
const proposal = await this.validatorClient.createCheckpointProposal(
|
|
322
315
|
checkpoint.header,
|
|
323
316
|
checkpoint.archive.root,
|
|
324
317
|
feeAssetPriceModifier,
|
|
325
|
-
|
|
318
|
+
blockPendingBroadcast,
|
|
326
319
|
this.proposer,
|
|
327
320
|
checkpointProposalOptions,
|
|
328
321
|
);
|
|
@@ -403,7 +396,7 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
403
396
|
blockProposalOptions: BlockProposalOptions,
|
|
404
397
|
): Promise<{
|
|
405
398
|
blocksInCheckpoint: L2Block[];
|
|
406
|
-
blockPendingBroadcast:
|
|
399
|
+
blockPendingBroadcast: BlockProposal | undefined;
|
|
407
400
|
}> {
|
|
408
401
|
const blocksInCheckpoint: L2Block[] = [];
|
|
409
402
|
const txHashesAlreadyIncluded = new Set<string>();
|
|
@@ -411,7 +404,7 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
411
404
|
const slot = this.slot;
|
|
412
405
|
|
|
413
406
|
// Last block in the checkpoint will usually be flagged as pending broadcast, so we send it along with the checkpoint proposal
|
|
414
|
-
let blockPendingBroadcast:
|
|
407
|
+
let blockPendingBroadcast: BlockProposal | undefined = undefined;
|
|
415
408
|
|
|
416
409
|
while (true) {
|
|
417
410
|
const blocksBuilt = blocksInCheckpoint.length;
|
|
@@ -440,19 +433,20 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
440
433
|
txHashesAlreadyIncluded,
|
|
441
434
|
});
|
|
442
435
|
|
|
443
|
-
//
|
|
444
|
-
if (
|
|
445
|
-
// If
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
436
|
+
// If we failed to build the block due to insufficient txs, we try again if there is still time left in the slot
|
|
437
|
+
if ('failure' in buildResult) {
|
|
438
|
+
// If this was the last subslot, or we're running with a single block per slot, we're done
|
|
439
|
+
if (timingInfo.isLastBlock || timingInfo.deadline === undefined) {
|
|
440
|
+
break;
|
|
441
|
+
}
|
|
442
|
+
// Otherwise, if there is still time for more blocks, we wait until the next subslot and try again
|
|
449
443
|
await this.waitUntilNextSubslot(timingInfo.deadline);
|
|
450
444
|
continue;
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
// If there was an error building the block, we just exit the loop and give up the rest of the slot.
|
|
448
|
+
// We don't want to risk building more blocks if something went wrong.
|
|
449
|
+
if ('error' in buildResult) {
|
|
456
450
|
if (!(buildResult.error instanceof SequencerInterruptedError)) {
|
|
457
451
|
this.log.warn(`Halting block building for slot ${slot}`, { slot, blocksBuilt, error: buildResult.error });
|
|
458
452
|
}
|
|
@@ -463,26 +457,22 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
463
457
|
blocksInCheckpoint.push(block);
|
|
464
458
|
usedTxs.forEach(tx => txHashesAlreadyIncluded.add(tx.txHash.toString()));
|
|
465
459
|
|
|
466
|
-
//
|
|
467
|
-
// and exit the loop now so we can build the checkpoint and start collecting attestations.
|
|
468
|
-
if (timingInfo.isLastBlock) {
|
|
469
|
-
await this.syncProposedBlockToArchiver(block);
|
|
470
|
-
this.log.verbose(`Completed final block ${blockNumber} for slot ${slot}`, { slot, blockNumber, blocksBuilt });
|
|
471
|
-
blockPendingBroadcast = { block, txs: usedTxs };
|
|
472
|
-
break;
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
// Broadcast the block proposal (unless we're in fisherman mode) unless the block is the last one,
|
|
476
|
-
// in which case we'll broadcast it along with the checkpoint at the end of the loop.
|
|
477
|
-
// Note that we only send the block to the archiver if we manage to create the proposal, so if there's
|
|
478
|
-
// a HA error we don't pollute our archiver with a block that won't make it to the chain.
|
|
460
|
+
// Sign the block proposal. This will throw if HA signing fails.
|
|
479
461
|
const proposal = await this.createBlockProposal(block, inHash, usedTxs, blockProposalOptions);
|
|
480
462
|
|
|
481
|
-
// Sync the proposed block to the archiver to make it available, only after we've managed to sign the proposal
|
|
463
|
+
// Sync the proposed block to the archiver to make it available, only after we've managed to sign the proposal,
|
|
464
|
+
// so we avoid polluting our archive with a block that would fail.
|
|
482
465
|
// We wait for the sync to succeed, as this helps catch consistency errors, even if it means we lose some time for block-building.
|
|
483
466
|
// If this throws, we abort the entire checkpoint.
|
|
484
467
|
await this.syncProposedBlockToArchiver(block);
|
|
485
468
|
|
|
469
|
+
// If this is the last block, do not broadcast it, since it will be included in the checkpoint proposal.
|
|
470
|
+
if (timingInfo.isLastBlock) {
|
|
471
|
+
this.log.verbose(`Completed final block ${blockNumber} for slot ${slot}`, { slot, blockNumber, blocksBuilt });
|
|
472
|
+
blockPendingBroadcast = proposal;
|
|
473
|
+
break;
|
|
474
|
+
}
|
|
475
|
+
|
|
486
476
|
// Once we have a signed proposal and the archiver agreed with our proposed block, then we broadcast it.
|
|
487
477
|
proposal && (await this.p2pClient.broadcastProposal(proposal));
|
|
488
478
|
|
|
@@ -540,7 +530,9 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
540
530
|
buildDeadline: Date | undefined;
|
|
541
531
|
txHashesAlreadyIncluded: Set<string>;
|
|
542
532
|
},
|
|
543
|
-
): Promise<
|
|
533
|
+
): Promise<
|
|
534
|
+
{ block: L2Block; usedTxs: Tx[] } | { failure: 'insufficient-txs' | 'insufficient-valid-txs' } | { error: Error }
|
|
535
|
+
> {
|
|
544
536
|
const { blockTimestamp, forceCreate, blockNumber, indexWithinCheckpoint, buildDeadline, txHashesAlreadyIncluded } =
|
|
545
537
|
opts;
|
|
546
538
|
|
|
@@ -559,7 +551,7 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
559
551
|
);
|
|
560
552
|
this.eventEmitter.emit('block-tx-count-check-failed', { minTxs, availableTxs, slot: this.slot });
|
|
561
553
|
this.metrics.recordBlockProposalFailed('insufficient_txs');
|
|
562
|
-
return
|
|
554
|
+
return { failure: 'insufficient-txs' };
|
|
563
555
|
}
|
|
564
556
|
|
|
565
557
|
// Create iterator to pending txs. We filter out txs already included in previous blocks in the checkpoint
|
|
@@ -619,7 +611,7 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
619
611
|
);
|
|
620
612
|
this.eventEmitter.emit('block-build-failed', { reason: `Insufficient valid txs`, slot: this.slot });
|
|
621
613
|
this.metrics.recordBlockProposalFailed('insufficient_valid_txs');
|
|
622
|
-
return
|
|
614
|
+
return { failure: 'insufficient-valid-txs' };
|
|
623
615
|
}
|
|
624
616
|
|
|
625
617
|
// Block creation succeeded, emit stats and metrics
|