@aztec/sequencer-client 0.0.1-commit.fff30aa → 0.0.1-dev
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/publisher/sequencer-publisher.d.ts +1 -2
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +15 -22
- package/dest/sequencer/checkpoint_proposal_job.d.ts +4 -2
- package/dest/sequencer/checkpoint_proposal_job.d.ts.map +1 -1
- package/dest/sequencer/checkpoint_proposal_job.js +27 -34
- package/package.json +28 -28
- package/src/publisher/sequencer-publisher.ts +17 -26
- package/src/sequencer/checkpoint_proposal_job.ts +31 -39
|
@@ -51,7 +51,6 @@ export declare class SequencerPublisher {
|
|
|
51
51
|
protected slashingLog: Logger;
|
|
52
52
|
protected lastActions: Partial<Record<Action, SlotNumber>>;
|
|
53
53
|
private isPayloadEmptyCache;
|
|
54
|
-
private payloadProposedCache;
|
|
55
54
|
protected log: Logger;
|
|
56
55
|
protected ethereumSlotDuration: bigint;
|
|
57
56
|
protected aztecSlotDuration: bigint;
|
|
@@ -211,4 +210,4 @@ export declare class SequencerPublisher {
|
|
|
211
210
|
private getNextL1SlotTimestamp;
|
|
212
211
|
}
|
|
213
212
|
export {};
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9zZXF1ZW5jZXItcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsS0FBSyw4QkFBOEIsRUFFbkMsS0FBSywwQkFBMEIsRUFHL0IsY0FBYyxFQUNkLEtBQUssNkJBQTZCLEVBR25DLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUYsT0FBTyxFQUNMLEtBQUssWUFBWSxFQUNqQixLQUFLLFVBQVUsRUFDZixLQUFLLFdBQVcsRUFDaEIsS0FBSyxTQUFTLEVBRWQsS0FBSyxnQkFBZ0IsRUFFdEIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQStDLE1BQU0sdUJBQXVCLENBQUM7QUFHeEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRy9FLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFzQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsWUFBWSxFQUFTLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,KAAK,8BAA8B,EAEnC,KAAK,0BAA0B,
|
|
1
|
+
{"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -384,7 +384,6 @@ import { pick } from '@aztec/foundation/collection';
|
|
|
384
384
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
385
385
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
386
386
|
import { createLogger } from '@aztec/foundation/log';
|
|
387
|
-
import { makeBackoff, retry } from '@aztec/foundation/retry';
|
|
388
387
|
import { bufferToHex } from '@aztec/foundation/string';
|
|
389
388
|
import { Timer } from '@aztec/foundation/timer';
|
|
390
389
|
import { EmpireBaseAbi, ErrorsAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
@@ -436,7 +435,6 @@ export class SequencerPublisher {
|
|
|
436
435
|
slashingLog;
|
|
437
436
|
lastActions;
|
|
438
437
|
isPayloadEmptyCache;
|
|
439
|
-
payloadProposedCache;
|
|
440
438
|
log;
|
|
441
439
|
ethereumSlotDuration;
|
|
442
440
|
aztecSlotDuration;
|
|
@@ -463,7 +461,6 @@ export class SequencerPublisher {
|
|
|
463
461
|
this.slashingLog = createLogger('sequencer:publisher:slashing');
|
|
464
462
|
this.lastActions = {};
|
|
465
463
|
this.isPayloadEmptyCache = new Map();
|
|
466
|
-
this.payloadProposedCache = new Set();
|
|
467
464
|
this.requests = [];
|
|
468
465
|
this.log = deps.log ?? createLogger('sequencer:publisher');
|
|
469
466
|
this.ethereumSlotDuration = BigInt(config.ethereumSlotDuration);
|
|
@@ -906,26 +903,22 @@ export class SequencerPublisher {
|
|
|
906
903
|
this.log.warn(`Skipping vote cast for payload with empty code`);
|
|
907
904
|
return false;
|
|
908
905
|
}
|
|
909
|
-
//
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
} catch (err) {
|
|
923
|
-
this.log.warn(`Failed to check if payload ${payload} was proposed after retries, skipping signal`, err);
|
|
924
|
-
return false;
|
|
925
|
-
}
|
|
906
|
+
// Skip signaling if there is already a live (non-terminal) Governance proposal for this
|
|
907
|
+
// payload. This is intentionally not cached: a previously-live proposal may transition to
|
|
908
|
+
// a terminal state (Dropped/Rejected/Expired/Executed), at which point we may want to re-signal
|
|
909
|
+
// the same payload in a future round.
|
|
910
|
+
let proposed = false;
|
|
911
|
+
try {
|
|
912
|
+
proposed = await base.hasActiveProposalWithPayload(payload.toString());
|
|
913
|
+
} catch (err) {
|
|
914
|
+
// We deliberately swallow the error and proceed to signal. Failing closed (skipping the
|
|
915
|
+
// signal) on transient RPC errors would let a flaky L1 endpoint silence governance
|
|
916
|
+
// participation entirely; failing open at worst produces a duplicate signal that the
|
|
917
|
+
// contract will simply count alongside others in the round.
|
|
918
|
+
this.log.error(`Failed to check if payload ${payload} was already proposed (signalling anyway)`, err);
|
|
926
919
|
}
|
|
927
|
-
if (
|
|
928
|
-
this.log.info(`Payload ${payload}
|
|
920
|
+
if (proposed) {
|
|
921
|
+
this.log.info(`Payload ${payload} has a live governance proposal, stopping signals`);
|
|
929
922
|
return false;
|
|
930
923
|
}
|
|
931
924
|
const cachedLastVote = this.lastActions[signalType];
|
|
@@ -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": "0.0.1-
|
|
3
|
+
"version": "0.0.1-dev",
|
|
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": "0.0.1-
|
|
30
|
-
"@aztec/bb-prover": "0.0.1-
|
|
31
|
-
"@aztec/blob-client": "0.0.1-
|
|
32
|
-
"@aztec/blob-lib": "0.0.1-
|
|
33
|
-
"@aztec/constants": "0.0.1-
|
|
34
|
-
"@aztec/epoch-cache": "0.0.1-
|
|
35
|
-
"@aztec/ethereum": "0.0.1-
|
|
36
|
-
"@aztec/foundation": "0.0.1-
|
|
37
|
-
"@aztec/l1-artifacts": "0.0.1-
|
|
38
|
-
"@aztec/merkle-tree": "0.0.1-
|
|
39
|
-
"@aztec/node-keystore": "0.0.1-
|
|
40
|
-
"@aztec/noir-acvm_js": "0.0.1-
|
|
41
|
-
"@aztec/noir-contracts.js": "0.0.1-
|
|
42
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-
|
|
43
|
-
"@aztec/noir-types": "0.0.1-
|
|
44
|
-
"@aztec/p2p": "0.0.1-
|
|
45
|
-
"@aztec/protocol-contracts": "0.0.1-
|
|
46
|
-
"@aztec/prover-client": "0.0.1-
|
|
47
|
-
"@aztec/simulator": "0.0.1-
|
|
48
|
-
"@aztec/slasher": "0.0.1-
|
|
49
|
-
"@aztec/stdlib": "0.0.1-
|
|
50
|
-
"@aztec/telemetry-client": "0.0.1-
|
|
51
|
-
"@aztec/validator-client": "0.0.1-
|
|
52
|
-
"@aztec/validator-ha-signer": "0.0.1-
|
|
53
|
-
"@aztec/world-state": "0.0.1-
|
|
29
|
+
"@aztec/aztec.js": "0.0.1-dev",
|
|
30
|
+
"@aztec/bb-prover": "0.0.1-dev",
|
|
31
|
+
"@aztec/blob-client": "0.0.1-dev",
|
|
32
|
+
"@aztec/blob-lib": "0.0.1-dev",
|
|
33
|
+
"@aztec/constants": "0.0.1-dev",
|
|
34
|
+
"@aztec/epoch-cache": "0.0.1-dev",
|
|
35
|
+
"@aztec/ethereum": "0.0.1-dev",
|
|
36
|
+
"@aztec/foundation": "0.0.1-dev",
|
|
37
|
+
"@aztec/l1-artifacts": "0.0.1-dev",
|
|
38
|
+
"@aztec/merkle-tree": "0.0.1-dev",
|
|
39
|
+
"@aztec/node-keystore": "0.0.1-dev",
|
|
40
|
+
"@aztec/noir-acvm_js": "0.0.1-dev",
|
|
41
|
+
"@aztec/noir-contracts.js": "0.0.1-dev",
|
|
42
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-dev",
|
|
43
|
+
"@aztec/noir-types": "0.0.1-dev",
|
|
44
|
+
"@aztec/p2p": "0.0.1-dev",
|
|
45
|
+
"@aztec/protocol-contracts": "0.0.1-dev",
|
|
46
|
+
"@aztec/prover-client": "0.0.1-dev",
|
|
47
|
+
"@aztec/simulator": "0.0.1-dev",
|
|
48
|
+
"@aztec/slasher": "0.0.1-dev",
|
|
49
|
+
"@aztec/stdlib": "0.0.1-dev",
|
|
50
|
+
"@aztec/telemetry-client": "0.0.1-dev",
|
|
51
|
+
"@aztec/validator-client": "0.0.1-dev",
|
|
52
|
+
"@aztec/validator-ha-signer": "0.0.1-dev",
|
|
53
|
+
"@aztec/world-state": "0.0.1-dev",
|
|
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": "0.0.1-
|
|
60
|
-
"@aztec/kv-store": "0.0.1-
|
|
59
|
+
"@aztec/archiver": "0.0.1-dev",
|
|
60
|
+
"@aztec/kv-store": "0.0.1-dev",
|
|
61
61
|
"@electric-sql/pglite": "^0.3.14",
|
|
62
62
|
"@jest/globals": "^30.0.0",
|
|
63
63
|
"@types/jest": "^30.0.0",
|
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
type EmpireSlashingProposerContract,
|
|
7
7
|
FeeAssetPriceOracle,
|
|
8
8
|
type GovernanceProposerContract,
|
|
9
|
-
type IEmpireBase,
|
|
10
9
|
MULTI_CALL_3_ADDRESS,
|
|
11
10
|
Multicall3,
|
|
12
11
|
RollupContract,
|
|
@@ -34,7 +33,6 @@ import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
34
33
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
35
34
|
import { Signature, type ViemSignature } from '@aztec/foundation/eth-signature';
|
|
36
35
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
37
|
-
import { makeBackoff, retry } from '@aztec/foundation/retry';
|
|
38
36
|
import { bufferToHex } from '@aztec/foundation/string';
|
|
39
37
|
import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
40
38
|
import { EmpireBaseAbi, ErrorsAbi, RollupAbi } from '@aztec/l1-artifacts';
|
|
@@ -118,7 +116,6 @@ export class SequencerPublisher {
|
|
|
118
116
|
protected lastActions: Partial<Record<Action, SlotNumber>> = {};
|
|
119
117
|
|
|
120
118
|
private isPayloadEmptyCache: Map<string, boolean> = new Map<string, boolean>();
|
|
121
|
-
private payloadProposedCache: Set<string> = new Set<string>();
|
|
122
119
|
|
|
123
120
|
protected log: Logger;
|
|
124
121
|
protected ethereumSlotDuration: bigint;
|
|
@@ -685,7 +682,7 @@ export class SequencerPublisher {
|
|
|
685
682
|
slotNumber: SlotNumber,
|
|
686
683
|
signalType: GovernanceSignalAction,
|
|
687
684
|
payload: EthAddress,
|
|
688
|
-
base:
|
|
685
|
+
base: GovernanceProposerContract,
|
|
689
686
|
signerAddress: EthAddress,
|
|
690
687
|
signer: (msg: TypedDataDefinition) => Promise<`0x${string}`>,
|
|
691
688
|
): Promise<boolean> {
|
|
@@ -716,29 +713,23 @@ export class SequencerPublisher {
|
|
|
716
713
|
return false;
|
|
717
714
|
}
|
|
718
715
|
|
|
719
|
-
//
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
this.payloadProposedCache.add(cacheKey);
|
|
733
|
-
}
|
|
734
|
-
} catch (err) {
|
|
735
|
-
this.log.warn(`Failed to check if payload ${payload} was proposed after retries, skipping signal`, err);
|
|
736
|
-
return false;
|
|
737
|
-
}
|
|
716
|
+
// Skip signaling if there is already a live (non-terminal) Governance proposal for this
|
|
717
|
+
// payload. This is intentionally not cached: a previously-live proposal may transition to
|
|
718
|
+
// a terminal state (Dropped/Rejected/Expired/Executed), at which point we may want to re-signal
|
|
719
|
+
// the same payload in a future round.
|
|
720
|
+
let proposed = false;
|
|
721
|
+
try {
|
|
722
|
+
proposed = await base.hasActiveProposalWithPayload(payload.toString());
|
|
723
|
+
} catch (err) {
|
|
724
|
+
// We deliberately swallow the error and proceed to signal. Failing closed (skipping the
|
|
725
|
+
// signal) on transient RPC errors would let a flaky L1 endpoint silence governance
|
|
726
|
+
// participation entirely; failing open at worst produces a duplicate signal that the
|
|
727
|
+
// contract will simply count alongside others in the round.
|
|
728
|
+
this.log.error(`Failed to check if payload ${payload} was already proposed (signalling anyway)`, err);
|
|
738
729
|
}
|
|
739
730
|
|
|
740
|
-
if (
|
|
741
|
-
this.log.info(`Payload ${payload}
|
|
731
|
+
if (proposed) {
|
|
732
|
+
this.log.info(`Payload ${payload} has a live governance proposal, stopping signals`);
|
|
742
733
|
return false;
|
|
743
734
|
}
|
|
744
735
|
|
|
@@ -864,7 +855,7 @@ export class SequencerPublisher {
|
|
|
864
855
|
slotNumber,
|
|
865
856
|
'empire-slashing-signal',
|
|
866
857
|
action.payload,
|
|
867
|
-
this.slashingProposerContract,
|
|
858
|
+
this.slashingProposerContract as any,
|
|
868
859
|
signerAddress,
|
|
869
860
|
signer,
|
|
870
861
|
);
|
|
@@ -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
|