@aztec/sequencer-client 4.0.0-nightly.20260112 → 4.0.0-nightly.20260114
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 +4 -5
- package/dest/client/sequencer-client.d.ts.map +1 -1
- package/dest/config.d.ts +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +8 -1
- package/dest/index.d.ts +2 -3
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -2
- package/dest/publisher/sequencer-publisher.d.ts +15 -15
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +44 -46
- package/dest/sequencer/block_builder.d.ts +2 -2
- package/dest/sequencer/block_builder.d.ts.map +1 -1
- package/dest/sequencer/block_builder.js +5 -5
- package/dest/sequencer/checkpoint_proposal_job.d.ts +11 -8
- package/dest/sequencer/checkpoint_proposal_job.d.ts.map +1 -1
- package/dest/sequencer/checkpoint_proposal_job.js +56 -30
- package/dest/sequencer/index.d.ts +1 -2
- package/dest/sequencer/index.d.ts.map +1 -1
- package/dest/sequencer/index.js +0 -1
- package/dest/sequencer/metrics.d.ts +3 -3
- package/dest/sequencer/metrics.d.ts.map +1 -1
- package/dest/sequencer/metrics.js +4 -4
- package/dest/sequencer/sequencer.d.ts +13 -12
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/dest/sequencer/sequencer.js +30 -28
- package/dest/test/index.d.ts +2 -3
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/mock_checkpoint_builder.d.ts +13 -3
- package/dest/test/mock_checkpoint_builder.d.ts.map +1 -1
- package/dest/test/mock_checkpoint_builder.js +27 -2
- package/dest/test/utils.d.ts +8 -4
- package/dest/test/utils.d.ts.map +1 -1
- package/dest/test/utils.js +19 -9
- package/package.json +27 -27
- package/src/client/sequencer-client.ts +3 -4
- package/src/config.ts +7 -0
- package/src/index.ts +0 -3
- package/src/publisher/sequencer-publisher.ts +75 -70
- package/src/sequencer/block_builder.ts +5 -3
- package/src/sequencer/checkpoint_proposal_job.ts +68 -38
- package/src/sequencer/index.ts +0 -1
- package/src/sequencer/metrics.ts +4 -4
- package/src/sequencer/sequencer.ts +47 -34
- package/src/test/index.ts +1 -2
- package/src/test/mock_checkpoint_builder.ts +45 -3
- package/src/test/utils.ts +36 -9
- package/dest/sequencer/checkpoint_builder.d.ts +0 -63
- package/dest/sequencer/checkpoint_builder.d.ts.map +0 -1
- package/dest/sequencer/checkpoint_builder.js +0 -131
- package/dest/tx_validator/nullifier_cache.d.ts +0 -14
- package/dest/tx_validator/nullifier_cache.d.ts.map +0 -1
- package/dest/tx_validator/nullifier_cache.js +0 -24
- package/dest/tx_validator/tx_validator_factory.d.ts +0 -18
- package/dest/tx_validator/tx_validator_factory.d.ts.map +0 -1
- package/dest/tx_validator/tx_validator_factory.js +0 -53
- package/src/sequencer/checkpoint_builder.ts +0 -217
- package/src/tx_validator/nullifier_cache.ts +0 -30
- package/src/tx_validator/tx_validator_factory.ts +0 -133
|
@@ -542,7 +542,7 @@ _dec = trackSpan('Sequencer.work'), _dec1 = trackSpan('Sequencer.prepareCheckpoi
|
|
|
542
542
|
this.setState(SequencerState.SYNCHRONIZING, undefined);
|
|
543
543
|
const { slot, ts, now, epoch } = this.epochCache.getEpochAndSlotInNextL1Slot();
|
|
544
544
|
// Check if we are synced and it's our slot, grab a publisher, check previous block invalidation, etc
|
|
545
|
-
const checkpointProposalJob = await this.prepareCheckpointProposal(slot, ts, now);
|
|
545
|
+
const checkpointProposalJob = await this.prepareCheckpointProposal(epoch, slot, ts, now);
|
|
546
546
|
if (!checkpointProposalJob) {
|
|
547
547
|
return;
|
|
548
548
|
}
|
|
@@ -563,7 +563,7 @@ _dec = trackSpan('Sequencer.work'), _dec1 = trackSpan('Sequencer.prepareCheckpoi
|
|
|
563
563
|
* Prepares the checkpoint proposal by performing all necessary checks and setup.
|
|
564
564
|
* This is the initial step in the main loop.
|
|
565
565
|
* @returns CheckpointProposalJob if successful, undefined if we are not yet synced or are not the proposer.
|
|
566
|
-
*/ async prepareCheckpointProposal(slot, ts, now) {
|
|
566
|
+
*/ async prepareCheckpointProposal(epoch, slot, ts, now) {
|
|
567
567
|
// Check we have not already processed this slot (cheapest check)
|
|
568
568
|
// We only check this if enforce timetable is set, since we want to keep processing the same slot if we are not
|
|
569
569
|
// running against actual time (eg when we use sandbox-style automining)
|
|
@@ -588,8 +588,8 @@ _dec = trackSpan('Sequencer.work'), _dec1 = trackSpan('Sequencer.prepareCheckpoi
|
|
|
588
588
|
});
|
|
589
589
|
return undefined;
|
|
590
590
|
}
|
|
591
|
-
//
|
|
592
|
-
const checkpointNumber = CheckpointNumber
|
|
591
|
+
// Next checkpoint follows from the last synced one
|
|
592
|
+
const checkpointNumber = CheckpointNumber(syncedTo.checkpointNumber + 1);
|
|
593
593
|
const logCtx = {
|
|
594
594
|
now,
|
|
595
595
|
syncedToL1Ts: syncedTo.l1Timestamp,
|
|
@@ -602,9 +602,9 @@ _dec = trackSpan('Sequencer.work'), _dec1 = trackSpan('Sequencer.prepareCheckpoi
|
|
|
602
602
|
// Check that we are a proposer for the next slot
|
|
603
603
|
this.setState(SequencerState.PROPOSER_CHECK, slot);
|
|
604
604
|
const [canPropose, proposer] = await this.checkCanPropose(slot);
|
|
605
|
-
// If we are not a proposer check if we should invalidate
|
|
605
|
+
// If we are not a proposer check if we should invalidate an invalid checkpoint, and bail
|
|
606
606
|
if (!canPropose) {
|
|
607
|
-
await this.
|
|
607
|
+
await this.considerInvalidatingCheckpoint(syncedTo, slot);
|
|
608
608
|
return undefined;
|
|
609
609
|
}
|
|
610
610
|
// Check that the slot is not taken by a block already (should never happen, since only us can propose for this slot)
|
|
@@ -630,11 +630,10 @@ _dec = trackSpan('Sequencer.work'), _dec1 = trackSpan('Sequencer.prepareCheckpoi
|
|
|
630
630
|
this.log.debug(`Set proposer address ${proposer} for simulation in fisherman mode`);
|
|
631
631
|
}
|
|
632
632
|
// Prepare invalidation request if the pending chain is invalid (returns undefined if no need)
|
|
633
|
-
|
|
634
|
-
const invalidateBlock = await publisher.simulateInvalidateBlock(syncedTo.pendingChainValidationStatus);
|
|
633
|
+
const invalidateCheckpoint = await publisher.simulateInvalidateCheckpoint(syncedTo.pendingChainValidationStatus);
|
|
635
634
|
// Check with the rollup contract if we can indeed propose at the next L2 slot. This check should not fail
|
|
636
635
|
// if all the previous checks are good, but we do it just in case.
|
|
637
|
-
const canProposeCheck = await publisher.canProposeAtNextEthBlock(syncedTo.archive, proposer ?? EthAddress.ZERO,
|
|
636
|
+
const canProposeCheck = await publisher.canProposeAtNextEthBlock(syncedTo.archive, proposer ?? EthAddress.ZERO, invalidateCheckpoint);
|
|
638
637
|
if (canProposeCheck === undefined) {
|
|
639
638
|
this.log.warn(`Cannot propose checkpoint ${checkpointNumber} at slot ${slot} due to failed rollup contract check`, logCtx);
|
|
640
639
|
this.emit('proposer-rollup-check-failed', {
|
|
@@ -676,10 +675,10 @@ _dec = trackSpan('Sequencer.work'), _dec1 = trackSpan('Sequencer.prepareCheckpoi
|
|
|
676
675
|
proposer
|
|
677
676
|
});
|
|
678
677
|
// Create and return the checkpoint proposal job
|
|
679
|
-
return this.createCheckpointProposalJob(slot, checkpointNumber, syncedTo.blockNumber, proposer, publisher, attestorAddress,
|
|
678
|
+
return this.createCheckpointProposalJob(epoch, slot, checkpointNumber, syncedTo.blockNumber, proposer, publisher, attestorAddress, invalidateCheckpoint);
|
|
680
679
|
}
|
|
681
|
-
createCheckpointProposalJob(slot, checkpointNumber, syncedToBlockNumber, proposer, publisher, attestorAddress,
|
|
682
|
-
return new CheckpointProposalJob(slot, checkpointNumber, syncedToBlockNumber, proposer, publisher, attestorAddress,
|
|
680
|
+
createCheckpointProposalJob(epoch, slot, checkpointNumber, syncedToBlockNumber, proposer, publisher, attestorAddress, invalidateCheckpoint) {
|
|
681
|
+
return new CheckpointProposalJob(epoch, slot, checkpointNumber, syncedToBlockNumber, proposer, publisher, attestorAddress, invalidateCheckpoint, this.validatorClient, this.globalsBuilder, this.p2pClient, this.worldState, this.l1ToL2MessageSource, this.l2BlockSource, this.checkpointsBuilder, this.l2BlockSource, this.l1Constants, this.config, this.timetable, this.slasherClient, this.epochCache, this.dateProvider, this.metrics, this, this.setState.bind(this), this.log, this.tracer);
|
|
683
682
|
}
|
|
684
683
|
/**
|
|
685
684
|
* Internal helper for setting the sequencer state and checks if we have enough time left in the slot to transition to the new state.
|
|
@@ -739,14 +738,15 @@ _dec = trackSpan('Sequencer.work'), _dec1 = trackSpan('Sequencer.prepareCheckpoi
|
|
|
739
738
|
number: syncSummary.latestBlockNumber,
|
|
740
739
|
hash: syncSummary.latestBlockHash
|
|
741
740
|
})),
|
|
742
|
-
this.l2BlockSource.getL2Tips().then((t)=>t.
|
|
741
|
+
this.l2BlockSource.getL2Tips().then((t)=>t.proposed),
|
|
743
742
|
this.p2pClient.getStatus().then((p2p)=>p2p.syncedToL2Block),
|
|
744
|
-
this.l1ToL2MessageSource.getL2Tips().then((t)=>t.
|
|
743
|
+
this.l1ToL2MessageSource.getL2Tips().then((t)=>t.proposed),
|
|
745
744
|
this.l2BlockSource.getPendingChainValidationStatus()
|
|
746
745
|
]);
|
|
747
746
|
const [worldState, l2BlockSource, p2p, l1ToL2MessageSource, pendingChainValidationStatus] = syncedBlocks;
|
|
748
747
|
// Handle zero as a special case, since the block hash won't match across services if we're changing the prefilled data for the genesis block,
|
|
749
748
|
// as the world state can compute the new genesis block hash, but other components use the hardcoded constant.
|
|
749
|
+
// TODO(palla/mbps): Fix the above. All components should be able to handle dynamic genesis block hashes.
|
|
750
750
|
const result = l2BlockSource.number === 0 && worldState.number === 0 && p2p.number === 0 && l1ToL2MessageSource.number === 0 || worldState.hash === l2BlockSource.hash && p2p.hash === l2BlockSource.hash && l1ToL2MessageSource.hash === l2BlockSource.hash;
|
|
751
751
|
if (!result) {
|
|
752
752
|
this.log.debug(`Sequencer sync check failed`, {
|
|
@@ -762,7 +762,8 @@ _dec = trackSpan('Sequencer.work'), _dec1 = trackSpan('Sequencer.prepareCheckpoi
|
|
|
762
762
|
if (blockNumber < INITIAL_L2_BLOCK_NUM) {
|
|
763
763
|
const archive = new Fr((await this.worldState.getCommitted().getTreeInfo(MerkleTreeId.ARCHIVE)).root);
|
|
764
764
|
return {
|
|
765
|
-
|
|
765
|
+
checkpointNumber: CheckpointNumber.ZERO,
|
|
766
|
+
blockNumber: BlockNumber.ZERO,
|
|
766
767
|
archive,
|
|
767
768
|
l1Timestamp,
|
|
768
769
|
pendingChainValidationStatus
|
|
@@ -777,6 +778,7 @@ _dec = trackSpan('Sequencer.work'), _dec1 = trackSpan('Sequencer.prepareCheckpoi
|
|
|
777
778
|
return {
|
|
778
779
|
block,
|
|
779
780
|
blockNumber: block.number,
|
|
781
|
+
checkpointNumber: block.checkpointNumber,
|
|
780
782
|
archive: block.archive.root,
|
|
781
783
|
l1Timestamp,
|
|
782
784
|
pendingChainValidationStatus
|
|
@@ -891,24 +893,24 @@ _dec = trackSpan('Sequencer.work'), _dec1 = trackSpan('Sequencer.prepareCheckpoi
|
|
|
891
893
|
await publisher.sendRequests();
|
|
892
894
|
}
|
|
893
895
|
/**
|
|
894
|
-
* Considers invalidating a
|
|
896
|
+
* Considers invalidating a checkpoint if the pending chain is invalid. Depends on how long the invalid checkpoint
|
|
895
897
|
* has been there without being invalidated and whether the sequencer is in the committee or not. We always
|
|
896
898
|
* have the proposer try to invalidate, but if they fail, the sequencers in the committee are expected to try,
|
|
897
899
|
* and if they fail, any sequencer will try as well.
|
|
898
|
-
*/ async
|
|
900
|
+
*/ async considerInvalidatingCheckpoint(syncedTo, currentSlot) {
|
|
899
901
|
const { pendingChainValidationStatus, l1Timestamp } = syncedTo;
|
|
900
902
|
if (pendingChainValidationStatus.valid) {
|
|
901
903
|
return;
|
|
902
904
|
}
|
|
903
|
-
const
|
|
904
|
-
const
|
|
905
|
-
const timeSinceChainInvalid = this.dateProvider.nowInSeconds() - Number(
|
|
905
|
+
const invalidCheckpointNumber = pendingChainValidationStatus.checkpoint.checkpointNumber;
|
|
906
|
+
const invalidCheckpointTimestamp = pendingChainValidationStatus.checkpoint.timestamp;
|
|
907
|
+
const timeSinceChainInvalid = this.dateProvider.nowInSeconds() - Number(invalidCheckpointTimestamp);
|
|
906
908
|
const ourValidatorAddresses = this.validatorClient.getValidatorAddresses();
|
|
907
909
|
const { secondsBeforeInvalidatingBlockAsCommitteeMember, secondsBeforeInvalidatingBlockAsNonCommitteeMember } = this.config;
|
|
908
910
|
const logData = {
|
|
909
|
-
invalidL1Timestamp:
|
|
911
|
+
invalidL1Timestamp: invalidCheckpointTimestamp,
|
|
910
912
|
l1Timestamp,
|
|
911
|
-
|
|
913
|
+
invalidCheckpoint: pendingChainValidationStatus.checkpoint,
|
|
912
914
|
secondsBeforeInvalidatingBlockAsCommitteeMember,
|
|
913
915
|
secondsBeforeInvalidatingBlockAsNonCommitteeMember,
|
|
914
916
|
ourValidatorAddresses,
|
|
@@ -936,17 +938,17 @@ _dec = trackSpan('Sequencer.work'), _dec1 = trackSpan('Sequencer.prepareCheckpoi
|
|
|
936
938
|
validatorToUse = ourValidatorAddresses[0];
|
|
937
939
|
}
|
|
938
940
|
const { publisher } = await this.publisherFactory.create(validatorToUse);
|
|
939
|
-
const
|
|
940
|
-
if (!
|
|
941
|
-
this.log.warn(`Failed to simulate invalidate
|
|
941
|
+
const invalidateCheckpoint = await publisher.simulateInvalidateCheckpoint(pendingChainValidationStatus);
|
|
942
|
+
if (!invalidateCheckpoint) {
|
|
943
|
+
this.log.warn(`Failed to simulate invalidate checkpoint`, logData);
|
|
942
944
|
return;
|
|
943
945
|
}
|
|
944
|
-
this.log.info(invalidateAsCommitteeMember ? `Invalidating
|
|
945
|
-
publisher.
|
|
946
|
+
this.log.info(invalidateAsCommitteeMember ? `Invalidating checkpoint ${invalidCheckpointNumber} as committee member` : `Invalidating checkpoint ${invalidCheckpointNumber} as non-committee member`, logData);
|
|
947
|
+
publisher.enqueueInvalidateCheckpoint(invalidateCheckpoint);
|
|
946
948
|
if (!this.config.fishermanMode) {
|
|
947
949
|
await publisher.sendRequests();
|
|
948
950
|
} else {
|
|
949
|
-
this.log.info('Invalidating
|
|
951
|
+
this.log.info('Invalidating checkpoint in fisherman mode, clearing pending requests');
|
|
950
952
|
publisher.clearPendingRequests();
|
|
951
953
|
}
|
|
952
954
|
}
|
package/dest/test/index.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import type { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs';
|
|
2
2
|
import type { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
3
3
|
import type { PublicProcessorFactory } from '@aztec/simulator/server';
|
|
4
|
-
import type { ValidatorClient } from '@aztec/validator-client';
|
|
4
|
+
import type { FullNodeCheckpointsBuilder, ValidatorClient } from '@aztec/validator-client';
|
|
5
5
|
import { SequencerClient } from '../client/sequencer-client.js';
|
|
6
6
|
import type { SequencerPublisherFactory } from '../publisher/sequencer-publisher-factory.js';
|
|
7
7
|
import type { SequencerPublisher } from '../publisher/sequencer-publisher.js';
|
|
8
|
-
import type { FullNodeCheckpointsBuilder } from '../sequencer/checkpoint_builder.js';
|
|
9
8
|
import { Sequencer } from '../sequencer/sequencer.js';
|
|
10
9
|
import type { SequencerTimetable } from '../sequencer/timetable.js';
|
|
11
10
|
declare class TestSequencer_ extends Sequencer {
|
|
@@ -23,4 +22,4 @@ declare class TestSequencerClient_ extends SequencerClient {
|
|
|
23
22
|
}
|
|
24
23
|
export type TestSequencerClient = TestSequencerClient_;
|
|
25
24
|
export {};
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLDBCQUEwQixFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzdGLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEUsY0FBTSxjQUFlLFNBQVEsU0FBUztJQUNyQixzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQztJQUMvQyxTQUFTLEVBQUUsa0JBQWtCLENBQUM7SUFDOUIsU0FBUyxFQUFFLGtCQUFrQixDQUFDO0lBQzlCLGdCQUFnQixFQUFFLHlCQUF5QixDQUFDO0lBQzVDLGVBQWUsRUFBRSxlQUFlLENBQUM7SUFDakMsa0JBQWtCLEVBQUUsMEJBQTBCLENBQUM7Q0FDL0Q7QUFFRCxNQUFNLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQztBQUUzQyxjQUFNLG9CQUFxQixTQUFRLGVBQWU7SUFDakMsU0FBUyxFQUFFLGFBQWEsQ0FBQztJQUN6QixnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0NBQ3ZFO0FBRUQsTUFBTSxNQUFNLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDIn0=
|
package/dest/test/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE3F,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,cAAM,cAAe,SAAQ,SAAS;IACrB,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE,kBAAkB,CAAC;IAC9B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,gBAAgB,EAAE,yBAAyB,CAAC;IAC5C,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,0BAA0B,CAAC;CAC/D;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC;AAE3C,cAAM,oBAAqB,SAAQ,eAAe;IACjC,SAAS,EAAE,aAAa,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;CACvE;AAED,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAC"}
|
|
@@ -5,7 +5,7 @@ import { L2BlockNew } from '@aztec/stdlib/block';
|
|
|
5
5
|
import { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
6
6
|
import type { FullNodeBlockBuilderConfig, PublicProcessorLimits } from '@aztec/stdlib/interfaces/server';
|
|
7
7
|
import type { CheckpointGlobalVariables, Tx } from '@aztec/stdlib/tx';
|
|
8
|
-
import type { BuildBlockInCheckpointResult, CheckpointBuilder, FullNodeCheckpointsBuilder } from '
|
|
8
|
+
import type { BuildBlockInCheckpointResult, CheckpointBuilder, FullNodeCheckpointsBuilder } from '@aztec/validator-client';
|
|
9
9
|
/**
|
|
10
10
|
* A fake CheckpointBuilder for testing that implements the same interface as the real one.
|
|
11
11
|
* Can be seeded with blocks to return sequentially on each `buildBlock` call.
|
|
@@ -61,6 +61,14 @@ export declare class MockCheckpointsBuilder implements FunctionsOf<FullNodeCheck
|
|
|
61
61
|
checkpointNumber: CheckpointNumber;
|
|
62
62
|
constants: CheckpointGlobalVariables;
|
|
63
63
|
l1ToL2Messages: Fr[];
|
|
64
|
+
previousCheckpointOutHashes: Fr[];
|
|
65
|
+
}>;
|
|
66
|
+
openCheckpointCalls: Array<{
|
|
67
|
+
checkpointNumber: CheckpointNumber;
|
|
68
|
+
constants: CheckpointGlobalVariables;
|
|
69
|
+
l1ToL2Messages: Fr[];
|
|
70
|
+
previousCheckpointOutHashes: Fr[];
|
|
71
|
+
existingBlocks: L2BlockNew[];
|
|
64
72
|
}>;
|
|
65
73
|
updateConfigCalls: Array<Partial<FullNodeBlockBuilderConfig>>;
|
|
66
74
|
/**
|
|
@@ -75,9 +83,11 @@ export declare class MockCheckpointsBuilder implements FunctionsOf<FullNodeCheck
|
|
|
75
83
|
createCheckpointBuilder(constants: CheckpointGlobalVariables, checkpointNumber: CheckpointNumber): MockCheckpointBuilder;
|
|
76
84
|
/** Get the current checkpoint builder (for assertions) */
|
|
77
85
|
getCheckpointBuilder(): MockCheckpointBuilder | undefined;
|
|
86
|
+
getConfig(): FullNodeBlockBuilderConfig;
|
|
78
87
|
updateConfig(config: Partial<FullNodeBlockBuilderConfig>): void;
|
|
79
|
-
startCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, l1ToL2Messages: Fr[], _fork: unknown): Promise<CheckpointBuilder>;
|
|
88
|
+
startCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], _fork: unknown): Promise<CheckpointBuilder>;
|
|
89
|
+
openCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], _fork: unknown, existingBlocks?: L2BlockNew[]): Promise<CheckpointBuilder>;
|
|
80
90
|
/** Reset for reuse in another test */
|
|
81
91
|
reset(): void;
|
|
82
92
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19jaGVja3BvaW50X2J1aWxkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfY2hlY2twb2ludF9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRELE9BQU8sS0FBSyxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHekcsT0FBTyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEUsT0FBTyxLQUFLLEVBQ1YsNEJBQTRCLEVBQzVCLGlCQUFpQixFQUNqQiwwQkFBMEIsRUFDM0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQzs7O0dBR0c7QUFDSCxxQkFBYSxxQkFBc0IsWUFBVyxXQUFXLENBQUMsaUJBQWlCLENBQUM7SUFzQnhFLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtJQXRCbkMsT0FBTyxDQUFDLE1BQU0sQ0FBb0I7SUFDbEMsT0FBTyxDQUFDLFdBQVcsQ0FBb0I7SUFDdkMsT0FBTyxDQUFDLGVBQWUsQ0FBYztJQUNyQyxPQUFPLENBQUMsVUFBVSxDQUFLO0lBRXZCLHFGQUFxRjtJQUNyRixPQUFPLENBQUMsYUFBYSxDQUE2QztJQUVsRSxpQ0FBaUM7SUFDMUIsZUFBZSxFQUFFLEtBQUssQ0FBQztRQUM1QixXQUFX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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_checkpoint_builder.d.ts","sourceRoot":"","sources":["../../src/test/mock_checkpoint_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGzG,OAAO,KAAK,EAAE,yBAAyB,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"mock_checkpoint_builder.d.ts","sourceRoot":"","sources":["../../src/test/mock_checkpoint_builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -138,6 +138,7 @@ import { makeAppendOnlyTreeSnapshot } from '@aztec/stdlib/testing';
|
|
|
138
138
|
*/ export class MockCheckpointsBuilder {
|
|
139
139
|
checkpointBuilder;
|
|
140
140
|
/** Track calls for assertions */ startCheckpointCalls = [];
|
|
141
|
+
openCheckpointCalls = [];
|
|
141
142
|
updateConfigCalls = [];
|
|
142
143
|
/**
|
|
143
144
|
* Set the MockCheckpointBuilder to return from startCheckpoint.
|
|
@@ -156,14 +157,37 @@ import { makeAppendOnlyTreeSnapshot } from '@aztec/stdlib/testing';
|
|
|
156
157
|
/** Get the current checkpoint builder (for assertions) */ getCheckpointBuilder() {
|
|
157
158
|
return this.checkpointBuilder;
|
|
158
159
|
}
|
|
160
|
+
getConfig() {
|
|
161
|
+
return {
|
|
162
|
+
l1GenesisTime: 0n,
|
|
163
|
+
slotDuration: 24,
|
|
164
|
+
l1ChainId: 1,
|
|
165
|
+
rollupVersion: 1
|
|
166
|
+
};
|
|
167
|
+
}
|
|
159
168
|
updateConfig(config) {
|
|
160
169
|
this.updateConfigCalls.push(config);
|
|
161
170
|
}
|
|
162
|
-
startCheckpoint(checkpointNumber, constants, l1ToL2Messages, _fork) {
|
|
171
|
+
startCheckpoint(checkpointNumber, constants, l1ToL2Messages, previousCheckpointOutHashes, _fork) {
|
|
163
172
|
this.startCheckpointCalls.push({
|
|
164
173
|
checkpointNumber,
|
|
165
174
|
constants,
|
|
166
|
-
l1ToL2Messages
|
|
175
|
+
l1ToL2Messages,
|
|
176
|
+
previousCheckpointOutHashes
|
|
177
|
+
});
|
|
178
|
+
if (!this.checkpointBuilder) {
|
|
179
|
+
// Auto-create a builder if none was set
|
|
180
|
+
this.checkpointBuilder = new MockCheckpointBuilder(constants, checkpointNumber);
|
|
181
|
+
}
|
|
182
|
+
return Promise.resolve(this.checkpointBuilder);
|
|
183
|
+
}
|
|
184
|
+
openCheckpoint(checkpointNumber, constants, l1ToL2Messages, previousCheckpointOutHashes, _fork, existingBlocks = []) {
|
|
185
|
+
this.openCheckpointCalls.push({
|
|
186
|
+
checkpointNumber,
|
|
187
|
+
constants,
|
|
188
|
+
l1ToL2Messages,
|
|
189
|
+
previousCheckpointOutHashes,
|
|
190
|
+
existingBlocks
|
|
167
191
|
});
|
|
168
192
|
if (!this.checkpointBuilder) {
|
|
169
193
|
// Auto-create a builder if none was set
|
|
@@ -174,6 +198,7 @@ import { makeAppendOnlyTreeSnapshot } from '@aztec/stdlib/testing';
|
|
|
174
198
|
/** Reset for reuse in another test */ reset() {
|
|
175
199
|
this.checkpointBuilder = undefined;
|
|
176
200
|
this.startCheckpointCalls = [];
|
|
201
|
+
this.openCheckpointCalls = [];
|
|
177
202
|
this.updateConfigCalls = [];
|
|
178
203
|
}
|
|
179
204
|
}
|
package/dest/test/utils.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
4
4
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
5
5
|
import type { P2P } from '@aztec/p2p';
|
|
6
6
|
import { CommitteeAttestation, L2BlockNew } from '@aztec/stdlib/block';
|
|
7
|
-
import {
|
|
7
|
+
import { BlockProposal, CheckpointAttestation, CheckpointProposal } from '@aztec/stdlib/p2p';
|
|
8
8
|
import { GlobalVariables, type Tx } from '@aztec/stdlib/tx';
|
|
9
9
|
import type { MockProxy } from 'jest-mock-extended';
|
|
10
10
|
export { MockCheckpointBuilder, MockCheckpointsBuilder } from './mock_checkpoint_builder.js';
|
|
@@ -33,11 +33,15 @@ export declare function createMockSignatures(signer: Secp256k1Signer): Committee
|
|
|
33
33
|
*/
|
|
34
34
|
export declare function createBlockProposal(block: L2BlockNew, signature: Signature): BlockProposal;
|
|
35
35
|
/**
|
|
36
|
-
* Creates a
|
|
36
|
+
* Creates a checkpoint proposal from a block and signature
|
|
37
|
+
*/
|
|
38
|
+
export declare function createCheckpointProposal(block: L2BlockNew, checkpointSignature: Signature, blockSignature?: Signature): CheckpointProposal;
|
|
39
|
+
/**
|
|
40
|
+
* Creates a checkpoint attestation from a block and signature.
|
|
37
41
|
* Note: We manually set the sender since we use random signatures in tests.
|
|
38
42
|
* In production, the sender is recovered from the signature.
|
|
39
43
|
*/
|
|
40
|
-
export declare function
|
|
44
|
+
export declare function createCheckpointAttestation(block: L2BlockNew, signature: Signature, sender: EthAddress): CheckpointAttestation;
|
|
41
45
|
/**
|
|
42
46
|
* Creates transactions and a block, and mocks P2P to return them.
|
|
43
47
|
* Helper for tests that need to set up a block with transactions.
|
|
@@ -46,4 +50,4 @@ export declare function setupTxsAndBlock(p2p: MockProxy<P2P>, globalVariables: G
|
|
|
46
50
|
txs: Tx[];
|
|
47
51
|
block: L2BlockNew;
|
|
48
52
|
}>;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSxtQkFBbUIsQ0FBQztBQUcvRyxPQUFPLEVBQWUsZUFBZSxFQUFFLEtBQUssRUFBRSxFQUFvQyxNQUFNLGtCQUFrQixDQUFDO0FBRTNHLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTdGOztHQUVHO0FBQ0gsd0JBQXNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FNckU7QUFFRDs7R0FFRztBQUNILHdCQUFzQixTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxlQUFlLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQVVoRztBQUVEOztHQUVHO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBR25FO0FBRUQ7O0dBRUc7QUFDSCx3QkFBdUIsY0FBYyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FJbkY7QUFFRDs7R0FFRztBQUNILHdCQUFnQixvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsZUFBZSxHQUFHLG9CQUFvQixFQUFFLENBR3BGO0FBdUJEOztHQUVHO0FBQ0gsd0JBQWdCLG1CQUFtQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsR0FBRyxhQUFhLENBVTFGO0FBRUQ7O0dBRUc7QUFDSCx3QkFBZ0Isd0JBQXdCLENBQ3RDLEtBQUssRUFBRSxVQUFVLEVBQ2pCLG1CQUFtQixFQUFFLFNBQVMsRUFDOUIsY0FBYyxDQUFDLEVBQUUsU0FBUyxHQUN6QixrQkFBa0IsQ0FTcEI7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLDJCQUEyQixDQUN6QyxLQUFLLEVBQUUsVUFBVSxFQUNqQixTQUFTLEVBQUUsU0FBUyxFQUNwQixNQUFNLEVBQUUsVUFBVSxHQUNqQixxQkFBcUIsQ0FPdkI7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0IsZ0JBQWdCLENBQ3BDLEdBQUcsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQ25CLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLEVBQUUsR0FDVixPQUFPLENBQUM7SUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFBQyxLQUFLLEVBQUUsVUFBVSxDQUFBO0NBQUUsQ0FBQyxDQUszQyJ9
|
package/dest/test/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;AAG/G,OAAO,EAAe,eAAe,EAAE,KAAK,EAAE,EAAoC,MAAM,kBAAkB,CAAC;AAE3G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAE7F;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAMrE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAUhG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAGnE;AAED;;GAEG;AACH,wBAAuB,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAInF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,oBAAoB,EAAE,CAGpF;AAuBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,aAAa,CAU1F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,UAAU,EACjB,mBAAmB,EAAE,SAAS,EAC9B,cAAc,CAAC,EAAE,SAAS,GACzB,kBAAkB,CASpB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,UAAU,GACjB,qBAAqB,CAOvB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EACnB,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,EAAE,GACV,OAAO,CAAC;IAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,CAK3C"}
|
package/dest/test/utils.js
CHANGED
|
@@ -5,7 +5,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
5
5
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
6
6
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
7
7
|
import { CommitteeAttestation, L2BlockNew } from '@aztec/stdlib/block';
|
|
8
|
-
import {
|
|
8
|
+
import { BlockProposal, CheckpointAttestation, CheckpointProposal, ConsensusPayload } from '@aztec/stdlib/p2p';
|
|
9
9
|
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
10
10
|
import { makeAppendOnlyTreeSnapshot, mockTxForRollup } from '@aztec/stdlib/testing';
|
|
11
11
|
import { BlockHeader, makeProcessedTxFromPrivateOnlyTx } from '@aztec/stdlib/tx';
|
|
@@ -57,24 +57,34 @@ export { MockCheckpointBuilder, MockCheckpointsBuilder } from './mock_checkpoint
|
|
|
57
57
|
* Uses mock values for blockHeadersHash, blobsHash and inHash since L2BlockNew doesn't have these fields.
|
|
58
58
|
*/ function createCheckpointHeaderFromBlock(block) {
|
|
59
59
|
const gv = block.header.globalVariables;
|
|
60
|
-
return new CheckpointHeader(block.header.lastArchive.root, Fr.random(), Fr.random(), Fr.random(), gv.slotNumber, gv.timestamp, gv.coinbase, gv.feeRecipient, gv.gasFees, block.header.totalManaUsed);
|
|
60
|
+
return new CheckpointHeader(block.header.lastArchive.root, Fr.random(), Fr.random(), Fr.random(), Fr.random(), gv.slotNumber, gv.timestamp, gv.coinbase, gv.feeRecipient, gv.gasFees, block.header.totalManaUsed);
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* Creates a block proposal from a block and signature
|
|
64
64
|
*/ export function createBlockProposal(block, signature) {
|
|
65
|
-
const checkpointHeader = createCheckpointHeaderFromBlock(block);
|
|
66
|
-
const consensusPayload = new ConsensusPayload(checkpointHeader, block.archive.root);
|
|
67
65
|
const txHashes = block.body.txEffects.map((tx)=>tx.txHash);
|
|
68
|
-
return new BlockProposal(
|
|
66
|
+
return new BlockProposal(block.header, block.indexWithinCheckpoint, Fr.ZERO, block.archive.root, txHashes, signature);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Creates a checkpoint proposal from a block and signature
|
|
70
|
+
*/ export function createCheckpointProposal(block, checkpointSignature, blockSignature) {
|
|
71
|
+
const txHashes = block.body.txEffects.map((tx)=>tx.txHash);
|
|
72
|
+
const checkpointHeader = createCheckpointHeaderFromBlock(block);
|
|
73
|
+
return new CheckpointProposal(checkpointHeader, block.archive.root, checkpointSignature, {
|
|
74
|
+
blockHeader: block.header,
|
|
75
|
+
indexWithinCheckpoint: block.indexWithinCheckpoint,
|
|
76
|
+
txHashes,
|
|
77
|
+
signature: blockSignature ?? checkpointSignature
|
|
78
|
+
});
|
|
69
79
|
}
|
|
70
80
|
/**
|
|
71
|
-
* Creates a
|
|
81
|
+
* Creates a checkpoint attestation from a block and signature.
|
|
72
82
|
* Note: We manually set the sender since we use random signatures in tests.
|
|
73
83
|
* In production, the sender is recovered from the signature.
|
|
74
|
-
*/ export function
|
|
84
|
+
*/ export function createCheckpointAttestation(block, signature, sender) {
|
|
75
85
|
const checkpointHeader = createCheckpointHeaderFromBlock(block);
|
|
76
|
-
const
|
|
77
|
-
const attestation = new
|
|
86
|
+
const payload = new ConsensusPayload(checkpointHeader, block.archive.root);
|
|
87
|
+
const attestation = new CheckpointAttestation(payload, signature, signature);
|
|
78
88
|
// Set sender directly for testing (bypasses signature recovery)
|
|
79
89
|
attestation.sender = sender;
|
|
80
90
|
return attestation;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "4.0.0-nightly.
|
|
3
|
+
"version": "4.0.0-nightly.20260114",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -26,37 +26,37 @@
|
|
|
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.0.0-nightly.
|
|
30
|
-
"@aztec/bb-prover": "4.0.0-nightly.
|
|
31
|
-
"@aztec/blob-client": "4.0.0-nightly.
|
|
32
|
-
"@aztec/blob-lib": "4.0.0-nightly.
|
|
33
|
-
"@aztec/constants": "4.0.0-nightly.
|
|
34
|
-
"@aztec/epoch-cache": "4.0.0-nightly.
|
|
35
|
-
"@aztec/ethereum": "4.0.0-nightly.
|
|
36
|
-
"@aztec/foundation": "4.0.0-nightly.
|
|
37
|
-
"@aztec/l1-artifacts": "4.0.0-nightly.
|
|
38
|
-
"@aztec/merkle-tree": "4.0.0-nightly.
|
|
39
|
-
"@aztec/node-keystore": "4.0.0-nightly.
|
|
40
|
-
"@aztec/noir-acvm_js": "4.0.0-nightly.
|
|
41
|
-
"@aztec/noir-contracts.js": "4.0.0-nightly.
|
|
42
|
-
"@aztec/noir-protocol-circuits-types": "4.0.0-nightly.
|
|
43
|
-
"@aztec/noir-types": "4.0.0-nightly.
|
|
44
|
-
"@aztec/p2p": "4.0.0-nightly.
|
|
45
|
-
"@aztec/protocol-contracts": "4.0.0-nightly.
|
|
46
|
-
"@aztec/prover-client": "4.0.0-nightly.
|
|
47
|
-
"@aztec/simulator": "4.0.0-nightly.
|
|
48
|
-
"@aztec/slasher": "4.0.0-nightly.
|
|
49
|
-
"@aztec/stdlib": "4.0.0-nightly.
|
|
50
|
-
"@aztec/telemetry-client": "4.0.0-nightly.
|
|
51
|
-
"@aztec/validator-client": "4.0.0-nightly.
|
|
52
|
-
"@aztec/world-state": "4.0.0-nightly.
|
|
29
|
+
"@aztec/aztec.js": "4.0.0-nightly.20260114",
|
|
30
|
+
"@aztec/bb-prover": "4.0.0-nightly.20260114",
|
|
31
|
+
"@aztec/blob-client": "4.0.0-nightly.20260114",
|
|
32
|
+
"@aztec/blob-lib": "4.0.0-nightly.20260114",
|
|
33
|
+
"@aztec/constants": "4.0.0-nightly.20260114",
|
|
34
|
+
"@aztec/epoch-cache": "4.0.0-nightly.20260114",
|
|
35
|
+
"@aztec/ethereum": "4.0.0-nightly.20260114",
|
|
36
|
+
"@aztec/foundation": "4.0.0-nightly.20260114",
|
|
37
|
+
"@aztec/l1-artifacts": "4.0.0-nightly.20260114",
|
|
38
|
+
"@aztec/merkle-tree": "4.0.0-nightly.20260114",
|
|
39
|
+
"@aztec/node-keystore": "4.0.0-nightly.20260114",
|
|
40
|
+
"@aztec/noir-acvm_js": "4.0.0-nightly.20260114",
|
|
41
|
+
"@aztec/noir-contracts.js": "4.0.0-nightly.20260114",
|
|
42
|
+
"@aztec/noir-protocol-circuits-types": "4.0.0-nightly.20260114",
|
|
43
|
+
"@aztec/noir-types": "4.0.0-nightly.20260114",
|
|
44
|
+
"@aztec/p2p": "4.0.0-nightly.20260114",
|
|
45
|
+
"@aztec/protocol-contracts": "4.0.0-nightly.20260114",
|
|
46
|
+
"@aztec/prover-client": "4.0.0-nightly.20260114",
|
|
47
|
+
"@aztec/simulator": "4.0.0-nightly.20260114",
|
|
48
|
+
"@aztec/slasher": "4.0.0-nightly.20260114",
|
|
49
|
+
"@aztec/stdlib": "4.0.0-nightly.20260114",
|
|
50
|
+
"@aztec/telemetry-client": "4.0.0-nightly.20260114",
|
|
51
|
+
"@aztec/validator-client": "4.0.0-nightly.20260114",
|
|
52
|
+
"@aztec/world-state": "4.0.0-nightly.20260114",
|
|
53
53
|
"lodash.chunk": "^4.2.0",
|
|
54
54
|
"tslib": "^2.4.0",
|
|
55
55
|
"viem": "npm:@aztec/viem@2.38.2"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@aztec/archiver": "4.0.0-nightly.
|
|
59
|
-
"@aztec/kv-store": "4.0.0-nightly.
|
|
58
|
+
"@aztec/archiver": "4.0.0-nightly.20260114",
|
|
59
|
+
"@aztec/kv-store": "4.0.0-nightly.20260114",
|
|
60
60
|
"@jest/globals": "^30.0.0",
|
|
61
61
|
"@types/jest": "^30.0.0",
|
|
62
62
|
"@types/lodash.chunk": "^4.2.7",
|
|
@@ -11,17 +11,16 @@ import type { DateProvider } from '@aztec/foundation/timer';
|
|
|
11
11
|
import type { KeystoreManager } from '@aztec/node-keystore';
|
|
12
12
|
import type { P2P } from '@aztec/p2p';
|
|
13
13
|
import type { SlasherClientInterface } from '@aztec/slasher';
|
|
14
|
-
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
14
|
+
import type { L2BlockSink, L2BlockSource } from '@aztec/stdlib/block';
|
|
15
15
|
import type { ValidatorClientFullConfig, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
16
16
|
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
17
17
|
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
18
18
|
import { L1Metrics, type TelemetryClient } from '@aztec/telemetry-client';
|
|
19
|
-
import { NodeKeystoreAdapter, type ValidatorClient } from '@aztec/validator-client';
|
|
19
|
+
import { FullNodeCheckpointsBuilder, NodeKeystoreAdapter, type ValidatorClient } from '@aztec/validator-client';
|
|
20
20
|
|
|
21
21
|
import type { SequencerClientConfig } from '../config.js';
|
|
22
22
|
import { GlobalVariableBuilder } from '../global_variable_builder/index.js';
|
|
23
23
|
import { SequencerPublisherFactory } from '../publisher/sequencer-publisher-factory.js';
|
|
24
|
-
import { FullNodeCheckpointsBuilder } from '../sequencer/checkpoint_builder.js';
|
|
25
24
|
import { Sequencer, type SequencerConfig } from '../sequencer/index.js';
|
|
26
25
|
|
|
27
26
|
/**
|
|
@@ -56,7 +55,7 @@ export class SequencerClient {
|
|
|
56
55
|
worldStateSynchronizer: WorldStateSynchronizer;
|
|
57
56
|
slasherClient: SlasherClientInterface | undefined;
|
|
58
57
|
checkpointsBuilder: FullNodeCheckpointsBuilder;
|
|
59
|
-
l2BlockSource: L2BlockSource;
|
|
58
|
+
l2BlockSource: L2BlockSource & L2BlockSink;
|
|
60
59
|
l1ToL2MessageSource: L1ToL2MessageSource;
|
|
61
60
|
telemetry: TelemetryClient;
|
|
62
61
|
publisherFactory?: SequencerPublisherFactory;
|
package/src/config.ts
CHANGED
|
@@ -50,6 +50,8 @@ export const DefaultSequencerConfig: ResolvedSequencerConfig = {
|
|
|
50
50
|
injectFakeAttestation: false,
|
|
51
51
|
fishermanMode: false,
|
|
52
52
|
shuffleAttestationOrdering: false,
|
|
53
|
+
// TODO(palla/mbps): Change default to false once block sync is stable
|
|
54
|
+
skipPushProposedBlocksToArchiver: true,
|
|
53
55
|
};
|
|
54
56
|
|
|
55
57
|
/**
|
|
@@ -202,6 +204,11 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
|
|
|
202
204
|
description: 'Have sequencer build and publish an empty checkpoint if there are no txs',
|
|
203
205
|
...booleanConfigHelper(DefaultSequencerConfig.buildCheckpointIfEmpty),
|
|
204
206
|
},
|
|
207
|
+
// TODO(palla/mbps): Change default to false once block sync is stable
|
|
208
|
+
skipPushProposedBlocksToArchiver: {
|
|
209
|
+
description: 'Skip pushing proposed blocks to archiver (default: true)',
|
|
210
|
+
...booleanConfigHelper(DefaultSequencerConfig.skipPushProposedBlocksToArchiver),
|
|
211
|
+
},
|
|
205
212
|
...pickConfigMappings(p2pConfigMappings, ['txPublicSetupAllowList']),
|
|
206
213
|
};
|
|
207
214
|
|
package/src/index.ts
CHANGED
|
@@ -3,13 +3,10 @@ export * from './config.js';
|
|
|
3
3
|
export * from './publisher/index.js';
|
|
4
4
|
export {
|
|
5
5
|
FullNodeBlockBuilder as BlockBuilder,
|
|
6
|
-
FullNodeCheckpointsBuilder as CheckpointsBuilder,
|
|
7
|
-
CheckpointBuilder,
|
|
8
6
|
Sequencer,
|
|
9
7
|
SequencerState,
|
|
10
8
|
type SequencerEvents,
|
|
11
9
|
} from './sequencer/index.js';
|
|
12
|
-
export * from './tx_validator/tx_validator_factory.js';
|
|
13
10
|
|
|
14
11
|
// Used by the node to simulate public parts of transactions. Should these be moved to a shared library?
|
|
15
12
|
// ISSUE(#9832)
|