@aztec/p2p 0.0.1-commit.2f68f620 → 0.0.1-commit.3100065

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.
Files changed (153) hide show
  1. package/README.md +7 -6
  2. package/dest/bootstrap/bootstrap.d.ts +1 -1
  3. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  4. package/dest/bootstrap/bootstrap.js +20 -12
  5. package/dest/client/factory.d.ts +2 -2
  6. package/dest/client/factory.d.ts.map +1 -1
  7. package/dest/client/factory.js +10 -5
  8. package/dest/client/interface.d.ts +36 -8
  9. package/dest/client/interface.d.ts.map +1 -1
  10. package/dest/client/p2p_client.d.ts +23 -12
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +38 -35
  13. package/dest/config.d.ts +19 -13
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +27 -26
  16. package/dest/errors/reqresp.error.d.ts +13 -1
  17. package/dest/errors/reqresp.error.d.ts.map +1 -1
  18. package/dest/errors/reqresp.error.js +14 -0
  19. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +4 -2
  20. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  21. package/dest/mem_pools/attestation_pool/attestation_pool.js +9 -2
  22. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  23. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  24. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +43 -0
  25. package/dest/mem_pools/instrumentation.d.ts +9 -4
  26. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  27. package/dest/mem_pools/instrumentation.js +11 -8
  28. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +3 -3
  29. package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
  30. package/dest/mem_pools/tx_pool_v2/deleted_pool.js +6 -6
  31. package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +1 -1
  32. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +30 -5
  33. package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
  34. package/dest/mem_pools/tx_pool_v2/interfaces.js +2 -1
  35. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +15 -1
  36. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
  37. package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +31 -0
  38. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +9 -3
  39. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
  40. package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +19 -8
  41. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +17 -4
  42. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +133 -34
  44. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +6 -5
  45. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  46. package/dest/msg_validators/attestation_validator/attestation_validator.js +24 -26
  47. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +4 -4
  48. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  49. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +2 -2
  50. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +4 -3
  51. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -1
  52. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +2 -2
  53. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +4 -3
  54. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -1
  55. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +8 -2
  56. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +19 -5
  57. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
  58. package/dest/msg_validators/proposal_validator/proposal_validator.js +66 -30
  59. package/dest/msg_validators/tx_validator/factory.d.ts +9 -11
  60. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -1
  61. package/dest/msg_validators/tx_validator/factory.js +15 -6
  62. package/dest/msg_validators/tx_validator/gas_validator.d.ts +12 -7
  63. package/dest/msg_validators/tx_validator/gas_validator.d.ts.map +1 -1
  64. package/dest/msg_validators/tx_validator/gas_validator.js +15 -15
  65. package/dest/msg_validators/tx_validator/phases_validator.js +2 -2
  66. package/dest/services/discv5/discV5_service.d.ts +12 -2
  67. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  68. package/dest/services/discv5/discV5_service.js +84 -15
  69. package/dest/services/discv5/persisted_enr_store.d.ts +38 -0
  70. package/dest/services/discv5/persisted_enr_store.d.ts.map +1 -0
  71. package/dest/services/discv5/persisted_enr_store.js +145 -0
  72. package/dest/services/dummy_service.d.ts +6 -2
  73. package/dest/services/dummy_service.d.ts.map +1 -1
  74. package/dest/services/dummy_service.js +3 -0
  75. package/dest/services/encoding.d.ts +19 -6
  76. package/dest/services/encoding.d.ts.map +1 -1
  77. package/dest/services/encoding.js +25 -15
  78. package/dest/services/gossipsub/topic_score_params.d.ts +6 -23
  79. package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
  80. package/dest/services/gossipsub/topic_score_params.js +4 -31
  81. package/dest/services/libp2p/libp2p_service.d.ts +11 -3
  82. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  83. package/dest/services/libp2p/libp2p_service.js +135 -53
  84. package/dest/services/peer-manager/peer_manager.d.ts +15 -2
  85. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  86. package/dest/services/peer-manager/peer_manager.js +46 -18
  87. package/dest/services/peer-manager/peer_scoring.d.ts +28 -1
  88. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  89. package/dest/services/peer-manager/peer_scoring.js +70 -3
  90. package/dest/services/reqresp/config.d.ts +13 -1
  91. package/dest/services/reqresp/config.d.ts.map +1 -1
  92. package/dest/services/reqresp/config.js +11 -0
  93. package/dest/services/reqresp/rate-limiter/rate_limits.js +3 -3
  94. package/dest/services/reqresp/reqresp.d.ts +1 -1
  95. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  96. package/dest/services/reqresp/reqresp.js +34 -3
  97. package/dest/services/service.d.ts +17 -1
  98. package/dest/services/service.d.ts.map +1 -1
  99. package/dest/services/tx_collection/tx_source.d.ts +1 -1
  100. package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
  101. package/dest/services/tx_collection/tx_source.js +4 -1
  102. package/dest/test-helpers/testbench-utils.d.ts +4 -1
  103. package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
  104. package/dest/test-helpers/testbench-utils.js +9 -0
  105. package/dest/testbench/p2p_client_testbench_worker.d.ts +1 -1
  106. package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
  107. package/dest/testbench/p2p_client_testbench_worker.js +19 -2
  108. package/package.json +16 -17
  109. package/src/bootstrap/bootstrap.ts +15 -9
  110. package/src/client/factory.ts +9 -5
  111. package/src/client/interface.ts +29 -6
  112. package/src/client/p2p_client.ts +46 -48
  113. package/src/config.ts +50 -38
  114. package/src/errors/reqresp.error.ts +19 -0
  115. package/src/mem_pools/attestation_pool/attestation_pool.ts +12 -2
  116. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +40 -1
  117. package/src/mem_pools/instrumentation.ts +13 -11
  118. package/src/mem_pools/tx_pool_v2/deleted_pool.ts +7 -7
  119. package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +1 -1
  120. package/src/mem_pools/tx_pool_v2/interfaces.ts +28 -4
  121. package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +35 -0
  122. package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +22 -8
  123. package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +158 -33
  124. package/src/msg_validators/attestation_validator/attestation_validator.ts +26 -26
  125. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +4 -3
  126. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +4 -2
  127. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +10 -2
  128. package/src/msg_validators/proposal_validator/proposal_validator.ts +69 -30
  129. package/src/msg_validators/tx_validator/README.md +2 -0
  130. package/src/msg_validators/tx_validator/factory.ts +19 -13
  131. package/src/msg_validators/tx_validator/gas_validator.ts +16 -20
  132. package/src/msg_validators/tx_validator/phases_validator.ts +2 -2
  133. package/src/services/discv5/discV5_service.ts +88 -9
  134. package/src/services/discv5/persisted_enr_store.ts +158 -0
  135. package/src/services/dummy_service.ts +6 -0
  136. package/src/services/encoding.ts +28 -20
  137. package/src/services/gossipsub/README.md +33 -11
  138. package/src/services/gossipsub/topic_score_params.ts +9 -50
  139. package/src/services/libp2p/libp2p_service.ts +159 -56
  140. package/src/services/peer-manager/peer_manager.ts +48 -17
  141. package/src/services/peer-manager/peer_scoring.ts +75 -3
  142. package/src/services/reqresp/README.md +2 -23
  143. package/src/services/reqresp/config.ts +17 -0
  144. package/src/services/reqresp/rate-limiter/rate_limits.ts +3 -3
  145. package/src/services/reqresp/reqresp.ts +42 -2
  146. package/src/services/service.ts +19 -0
  147. package/src/services/tx_collection/tx_source.ts +2 -1
  148. package/src/test-helpers/testbench-utils.ts +12 -0
  149. package/src/testbench/p2p_client_testbench_worker.ts +22 -2
  150. package/dest/msg_validators/clock_tolerance.d.ts +0 -32
  151. package/dest/msg_validators/clock_tolerance.d.ts.map +0 -1
  152. package/dest/msg_validators/clock_tolerance.js +0 -90
  153. package/src/msg_validators/clock_tolerance.ts +0 -121
@@ -373,10 +373,9 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
373
373
  var _dec, _dec1, _initProto;
374
374
  import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
375
375
  import { createLogger } from '@aztec/foundation/log';
376
- import { RunningPromise } from '@aztec/foundation/promise';
377
376
  import { DateProvider } from '@aztec/foundation/timer';
378
377
  import { L2TipsKVStore } from '@aztec/kv-store/stores';
379
- import { L2BlockStream } from '@aztec/stdlib/block';
378
+ import { EventDrivenL2BlockStream } from '@aztec/stdlib/block';
380
379
  import { getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
381
380
  import { tryStop } from '@aztec/stdlib/interfaces/server';
382
381
  import { Attributes, WithTracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
@@ -435,7 +434,6 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
435
434
  txProvider;
436
435
  validatorAddresses;
437
436
  /** Tracks the last slot for which we called prepareForSlot */ lastSlotProcessed;
438
- /** Polls for slot changes and calls prepareForSlot on the tx pool */ slotMonitor;
439
437
  constructor(store, l2BlockSource, mempools, p2pService, txCollection, txFileStore, epochCache, config = {}, _dateProvider = new DateProvider(), telemetry = getTelemetryClient(), log = createLogger('p2p'), initialBlockHash){
440
438
  super(telemetry, 'P2PClient'), this.store = store, this.l2BlockSource = l2BlockSource, this.p2pService = p2pService, this.txCollection = txCollection, this.txFileStore = txFileStore, this.epochCache = epochCache, this._dateProvider = _dateProvider, this.telemetry = telemetry, this.log = log, this.currentState = (_initProto(this), P2PClientState.IDLE), this.syncPromise = Promise.resolve(), this.syncResolve = undefined, this.latestBlockNumberAtStart = -1, this.provenBlockNumberAtStart = -1, this.finalizedBlockNumberAtStart = -1, this.validatorAddresses = [], this.lastSlotProcessed = SlotNumber.ZERO;
441
439
  this.config = {
@@ -504,10 +502,12 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
504
502
  break;
505
503
  case 'chain-pruned':
506
504
  this.txCollection.stopCollectingForBlocksAfter(event.block.number);
507
- await this.handlePruneL2Blocks(event.block, event.checkpoint);
505
+ await this.handlePruneL2Blocks(event.block, event.checkpointed.checkpoint);
508
506
  break;
509
507
  case 'chain-checkpointed':
510
508
  break;
509
+ case 'chain-proposed':
510
+ break;
511
511
  default:
512
512
  {
513
513
  const _ = event;
@@ -581,9 +581,6 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
581
581
  }
582
582
  this.blockStream.start();
583
583
  this.txFileStore?.start();
584
- // Start slot monitor to call prepareForSlot when the slot changes
585
- this.slotMonitor = new RunningPromise(()=>this.maybeCallPrepareForSlot(), this.log, this.config.slotCheckIntervalMS);
586
- this.slotMonitor.start();
587
584
  return this.syncPromise;
588
585
  }
589
586
  addReqRespSubProtocol(subProtocol, handler) {
@@ -592,7 +589,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
592
589
  initBlockStream(startingBlock) {
593
590
  if (!this.blockStream) {
594
591
  const { blockRequestBatchSize: batchSize, blockCheckIntervalMS: pollIntervalMS } = this.config;
595
- this.blockStream = new L2BlockStream(this.l2BlockSource, this, this, createLogger(`${this.log.module}:l2-block-stream`), {
592
+ this.blockStream = new EventDrivenL2BlockStream(this.l2BlockSource, this, this, createLogger(`${this.log.module}:l2-block-stream`), {
596
593
  batchSize,
597
594
  pollIntervalMS,
598
595
  startingBlock
@@ -604,8 +601,6 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
604
601
  * 'ready' will now return 'false' and the running promise that keeps the client synced is interrupted.
605
602
  */ async stop() {
606
603
  this.log.debug('Stopping p2p client...');
607
- await this.slotMonitor?.stop();
608
- this.log.debug('Stopped slot monitor');
609
604
  await tryStop(this.txCollection);
610
605
  this.log.debug('Stopped tx collection service');
611
606
  await this.txFileStore?.stop();
@@ -683,6 +678,9 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
683
678
  hasBlockProposalsForSlot(slot) {
684
679
  return this.attestationPool.hasBlockProposalsForSlot(slot);
685
680
  }
681
+ hasCheckpointProposalForSlot(slot) {
682
+ return this.attestationPool.hasCheckpointProposalForSlot(slot);
683
+ }
686
684
  // REVIEW: https://github.com/AztecProtocol/aztec-packages/issues/7963
687
685
  // ^ This pattern is not my favorite (md)
688
686
  registerBlockProposalHandler(handler) {
@@ -697,13 +695,16 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
697
695
  registerDuplicateProposalCallback(callback) {
698
696
  this.p2pService.registerDuplicateProposalCallback(callback);
699
697
  }
698
+ registerOversizedProposalCallback(callback) {
699
+ this.p2pService.registerOversizedProposalCallback(callback);
700
+ }
700
701
  registerDuplicateAttestationCallback(callback) {
701
702
  this.p2pService.registerDuplicateAttestationCallback(callback);
702
703
  }
703
704
  registerCheckpointAttestationCallback(callback) {
704
705
  this.p2pService.registerCheckpointAttestationCallback(callback);
705
706
  }
706
- async getPendingTxs(limit, after) {
707
+ async getPendingTxs(limit, after, options) {
707
708
  if (limit !== undefined && limit <= 0) {
708
709
  throw new TypeError('limit must be greater than 0');
709
710
  }
@@ -718,23 +719,30 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
718
719
  }
719
720
  const endIndex = limit !== undefined ? startIndex + limit : undefined;
720
721
  txHashes = txHashes.slice(startIndex, endIndex);
721
- const maybeTxs = await Promise.all(txHashes.map((txHash)=>this.txPool.getTxByHash(txHash)));
722
+ // This is a public-facing API (exposed via both the node and the p2p RPC), so proofs are opt-in.
723
+ const includeProof = !!options?.includeProof;
724
+ const maybeTxs = await Promise.all(txHashes.map((txHash)=>this.txPool.getTxByHash(txHash, {
725
+ includeProof
726
+ })));
722
727
  return maybeTxs.filter((tx)=>!!tx);
723
728
  }
724
729
  getPendingTxCount() {
725
730
  return this.txPool.getPendingTxCount();
726
731
  }
727
- async *iteratePendingTxs() {
732
+ hasEligiblePendingTxs(minCount) {
733
+ return this.txPool.hasEligiblePendingTxs(minCount);
734
+ }
735
+ async *iteratePendingTxs(opts) {
728
736
  for (const txHash of (await this.txPool.getPendingTxHashes())){
729
- const tx = await this.txPool.getTxByHash(txHash);
737
+ const tx = await this.txPool.getTxByHash(txHash, opts);
730
738
  if (tx) {
731
739
  yield tx;
732
740
  }
733
741
  }
734
742
  }
735
- async *iterateEligiblePendingTxs() {
743
+ async *iterateEligiblePendingTxs(opts) {
736
744
  for (const txHash of (await this.txPool.getEligiblePendingTxHashes())){
737
- const tx = await this.txPool.getTxByHash(txHash);
745
+ const tx = await this.txPool.getTxByHash(txHash, opts);
738
746
  if (tx) {
739
747
  yield tx;
740
748
  }
@@ -743,16 +751,18 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
743
751
  /**
744
752
  * Returns a transaction in the transaction pool by its hash.
745
753
  * @param txHash - Hash of the transaction to look for in the pool.
754
+ * @param opts - Set `includeProof: false` to skip loading the tx proof from the DB.
746
755
  * @returns A single tx or undefined.
747
- */ getTxByHashFromPool(txHash) {
748
- return this.txPool.getTxByHash(txHash);
756
+ */ getTxByHashFromPool(txHash, opts) {
757
+ return this.txPool.getTxByHash(txHash, opts);
749
758
  }
750
759
  /**
751
760
  * Returns transactions in the transaction pool by hash.
752
761
  * @param txHashes - Hashes of the transactions to look for.
762
+ * @param opts - Set `includeProof: false` to skip loading tx proofs from the DB.
753
763
  * @returns The txs found, in the same order as the requested hashes. If a tx is not found, it will be undefined.
754
- */ getTxsByHashFromPool(txHashes) {
755
- return this.txPool.getTxsByHash(txHashes);
764
+ */ getTxsByHashFromPool(txHashes, opts) {
765
+ return this.txPool.getTxsByHash(txHashes, opts);
756
766
  }
757
767
  hasTxsInPool(txHashes) {
758
768
  return this.txPool.hasTxs(txHashes);
@@ -868,11 +878,15 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
868
878
  if (!blocks.length) {
869
879
  return;
870
880
  }
881
+ const lastBlock = blocks.at(-1);
882
+ const lastSlot = lastBlock.header.getSlot();
883
+ // Mark txs mined before releasing protections: a block landing at this slot supersedes any
884
+ // protection for txs it includes, so mined-marking must run first to keep just-landed txs from
885
+ // being unprotected into pending where they could be evicted before they are recorded as mined.
871
886
  await this.handleMinedBlocks(blocks);
872
- await this.maybeCallPrepareForSlot();
887
+ await this.maybeCallPrepareForSlot(lastSlot);
873
888
  await this.collectingMissingTxs(blocks);
874
- const lastBlock = blocks.at(-1);
875
- await this.synchedLatestSlot.set(BigInt(lastBlock.header.getSlot()));
889
+ await this.synchedLatestSlot.set(BigInt(lastSlot));
876
890
  }
877
891
  /** Request txs for unproven blocks so the prover node can prove. */ async collectingMissingTxs(blocks) {
878
892
  try {
@@ -962,18 +976,7 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
962
976
  }
963
977
  return isEpochPrune;
964
978
  }
965
- /** Checks if the slot has changed and calls prepareForSlot if so. */ async maybeCallPrepareForSlot() {
966
- // If we have a proposed checkpoint available, we want to prepare the target slot - otherwise we prepare the current slot
967
- const l2Tips = await this.l2Tips.getL2Tips();
968
- const hasProposedCheckpoint = l2Tips.proposedCheckpoint.checkpoint.number > l2Tips.checkpointed.checkpoint.number;
969
- let slot;
970
- if (hasProposedCheckpoint) {
971
- const { targetSlot } = this.epochCache.getTargetAndNextSlot();
972
- slot = targetSlot;
973
- } else {
974
- const { currentSlot } = this.epochCache.getCurrentAndNextSlot();
975
- slot = currentSlot;
976
- }
979
+ /** Calls prepareForSlot for the given slot if it advances past the last slot we prepared for. */ async maybeCallPrepareForSlot(slot) {
977
980
  if (slot <= this.lastSlotProcessed) {
978
981
  return;
979
982
  }
package/dest/config.d.ts CHANGED
@@ -8,21 +8,15 @@ import { type TxFileStoreConfig } from './services/tx_file_store/config.js';
8
8
  /**
9
9
  * P2P client configuration values.
10
10
  */
11
- export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, ChainConfig, TxCollectionConfig, TxFileStoreConfig, Pick<SequencerConfig, 'blockDurationMs' | 'expectedBlockProposalsPerSlot' | 'l1PublishingTime' | 'maxTxsPerBlock' | 'attestationPropagationTime' | 'maxBlocksPerCheckpoint'> {
11
+ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, ChainConfig, TxCollectionConfig, TxFileStoreConfig, Pick<SequencerConfig, 'expectedBlockProposalsPerSlot' | 'maxTxsPerBlock' | 'checkpointProposalSyncGraceSeconds' | 'maxBlocksPerCheckpoint'>, Required<Pick<SequencerConfig, 'blockDurationMs'>> {
12
12
  /** Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set. */
13
13
  validateMaxTxsPerBlock?: number;
14
14
  /** Maximum transactions per checkpoint for validation. Used as fallback for maxTxsPerBlock when that is not set. */
15
15
  validateMaxTxsPerCheckpoint?: number;
16
- /** Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected. */
17
- validateMaxL2BlockGas?: number;
18
- /** Maximum DA gas per block for validation. When set, txs exceeding this limit are rejected. */
19
- validateMaxDABlockGas?: number;
20
16
  /** A flag dictating whether the P2P subsystem should be enabled. */
21
17
  p2pEnabled: boolean;
22
18
  /** The frequency in which to check for new L2 blocks. */
23
19
  blockCheckIntervalMS: number;
24
- /** The frequency in which to check for new L2 slots. */
25
- slotCheckIntervalMS: number;
26
20
  /** The number of blocks to fetch in a single batch. */
27
21
  blockRequestBatchSize: number;
28
22
  /** DEBUG: Disable colocation penalty - for testing purposes only */
@@ -77,6 +71,12 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
77
71
  gossipsubMcacheGossip: number;
78
72
  /** How long to keep message IDs in the seen cache (ms). */
79
73
  gossipsubSeenTTL: number;
74
+ /**
75
+ * Maximum clock-disparity tolerance (ms) applied to proposal/attestation gossip receive windows. Both
76
+ * ends of each acceptance window are widened by this much so peers are not penalized for messages valid
77
+ * when sent but arriving slightly early or late due to clock skew (Ethereum's MAXIMUM_GOSSIP_CLOCK_DISPARITY).
78
+ */
79
+ maxGossipClockDisparityMs: number;
80
80
  /** The 'age' (in # of L2 blocks) of a processed tx after which we heavily penalize a peer for re-sending it. */
81
81
  doubleSpendSeverePeerPenaltyWindow: number;
82
82
  /** The weight of the tx topic for the gossipsub protocol. This determines how much the score for this specific topic contributes to the overall peer score. */
@@ -87,6 +87,8 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
87
87
  gossipsubTxInvalidMessageDeliveriesDecay: number;
88
88
  /** The values for the peer scoring system. Passed as a comma separated list of values in order: low, mid, high tolerance errors. */
89
89
  peerPenaltyValues: number[];
90
+ /** How long (in seconds) a peer is banned for once its score drops below the ban threshold. */
91
+ peerBanDurationSeconds: number;
90
92
  /** Limit of transactions to archive in the tx pool. Once the archived tx limit is reached, the oldest archived txs will be purged. */
91
93
  archivedTxLimit: number;
92
94
  /** A list of trusted peers. */
@@ -141,6 +143,11 @@ export interface P2PConfig extends P2PReqRespConfig, BatchTxRequesterConfig, Cha
141
143
  p2pMissingTxCollectionDeadlineSlots?: number;
142
144
  /** Minimum percentage fee increase required to replace an existing tx via RPC (0 = no bump). */
143
145
  priceBumpPercentage: bigint;
146
+ /**
147
+ * Number of slots behind the finalized tip to keep finalized txs for before deleting them. 0 deletes
148
+ * at the finalized tip (default).
149
+ */
150
+ keepFinalizedTxsForSlots: number;
144
151
  /** Drop incoming block and checkpoint proposals at the libp2p dispatch layer (for testing only) */
145
152
  skipIncomingProposals?: boolean;
146
153
  /** Accept proposal gossip regardless of slot timing (for testing only). */
@@ -169,9 +176,8 @@ export type BootnodeConfig = Pick<P2PConfig, 'p2pIp' | 'p2pPort' | 'p2pBroadcast
169
176
  export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
170
177
  maxTxsPerBlock: number;
171
178
  maxBlocksPerCheckpoint: number;
172
- l1PublishingTime: number;
173
- attestationPropagationTime: number;
174
179
  blockDurationMs: number;
180
+ checkpointProposalSyncGraceSeconds: number;
175
181
  expectedBlockProposalsPerSlot: number;
176
182
  l1ChainId: number;
177
183
  rollupVersion: number;
@@ -201,11 +207,8 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
201
207
  txFileStoreEnabled: boolean;
202
208
  validateMaxTxsPerBlock: number;
203
209
  validateMaxTxsPerCheckpoint: number;
204
- validateMaxL2BlockGas: number;
205
- validateMaxDABlockGas: number;
206
210
  p2pEnabled: boolean;
207
211
  blockCheckIntervalMS: number;
208
- slotCheckIntervalMS: number;
209
212
  blockRequestBatchSize: number;
210
213
  debugDisableColocationPenalty: boolean;
211
214
  peerCheckIntervalMS: number;
@@ -232,11 +235,13 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
232
235
  gossipsubMcacheLength: number;
233
236
  gossipsubMcacheGossip: number;
234
237
  gossipsubSeenTTL: number;
238
+ maxGossipClockDisparityMs: number;
235
239
  doubleSpendSeverePeerPenaltyWindow: number;
236
240
  gossipsubTxTopicWeight: number;
237
241
  gossipsubTxInvalidMessageDeliveriesWeight: number;
238
242
  gossipsubTxInvalidMessageDeliveriesDecay: number;
239
243
  peerPenaltyValues: number[];
244
+ peerBanDurationSeconds: number;
240
245
  archivedTxLimit: number;
241
246
  trustedPeers: string[];
242
247
  privatePeers: string[];
@@ -260,6 +265,7 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
260
265
  slashDataWithholdingToleranceSlots: number;
261
266
  p2pMissingTxCollectionDeadlineSlots: number;
262
267
  priceBumpPercentage: bigint;
268
+ keepFinalizedTxsForSlots: number;
263
269
  skipIncomingProposals: boolean;
264
270
  skipProposalSlotValidation: boolean;
265
271
  skipCheckpointProposalValidation: boolean;
@@ -279,4 +285,4 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
279
285
  * @returns A list of allowed elements
280
286
  */
281
287
  export declare function parseAllowList(value: string): AllowedElement[];
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBVVosTUFBTSwwQkFBMEIsQ0FBQztBQUlsQyxPQUFPLEVBQ0wsS0FBSyxjQUFjLEVBQ25CLEtBQUssV0FBVyxFQUNoQixLQUFLLGVBQWUsRUFHckIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFFbEYsT0FBTyxFQUNMLEtBQUssc0JBQXNCLEVBRTVCLE1BQU0saURBQWlELENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQTRCLE1BQU0sOEJBQThCLENBQUM7QUFDL0YsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQThCLE1BQU0sb0NBQW9DLENBQUM7QUFDekcsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQTZCLE1BQU0sb0NBQW9DLENBQUM7QUFFdkc7O0dBRUc7QUFDSCxNQUFNLFdBQVcsU0FDZixTQUFRLGdCQUFnQixFQUN0QixzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsSUFBSSxDQUNGLGVBQWUsRUFDYixpQkFBaUIsR0FDakIsK0JBQStCLEdBQy9CLGtCQUFrQixHQUNsQixnQkFBZ0IsR0FDaEIsNEJBQTRCLEdBQzVCLHdCQUF3QixDQUMzQjtJQUNILDhHQUE4RztJQUM5RyxzQkFBc0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUVoQyxvSEFBb0g7SUFDcEgsMkJBQTJCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFFckMsZ0dBQWdHO0lBQ2hHLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBRS9CLGdHQUFnRztJQUNoRyxxQkFBcUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUUvQixvRUFBb0U7SUFDcEUsVUFBVSxFQUFFLE9BQU8sQ0FBQztJQUVwQix5REFBeUQ7SUFDekQsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0lBRTdCLHdEQUF3RDtJQUN4RCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFFNUIsdURBQXVEO0lBQ3ZELHFCQUFxQixFQUFFLE1BQU0sQ0FBQztJQUU5QixvRUFBb0U7SUFDcEUsNkJBQTZCLEVBQUUsT0FBTyxDQUFDO0lBRXZDLHFEQUFxRDtJQUNyRCxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFFNUIscUVBQXFFO0lBQ3JFLG1CQUFtQixFQUFFLE1BQU0sQ0FBQztJQUU1QiwyQ0FBMkM7SUFDM0MsV0FBVyxFQUFFLE1BQU0sQ0FBQztJQUVwQixvQ0FBb0M7SUFDcEMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUVoQiw2RUFBNkU7SUFDN0UsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFFMUIsMENBQTBDO0lBQzFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUVmLDBCQUEwQjtJQUMxQixhQUFhLEVBQUUsTUFBTSxDQUFDO0lBRXRCLDZFQUE2RTtJQUM3RSxnQkFBZ0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV2Qyw0SUFBNEk7SUFDNUksb0JBQW9CLENBQUMsRUFBRSxNQUFNLENBQUM7SUFFOUIsK0NBQStDO0lBQy9DLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUV6QixzRUFBc0U7SUFDdEUsNEJBQTRCLEVBQUUsT0FBTyxDQUFDO0lBRXRDLGlHQUFpRztJQUNqRyx5QkFBeUIsRUFBRSxPQUFPLENBQUM7SUFFbkMsOEdBQThHO0lBQzlHLFlBQVksRUFBRSxNQUFNLENBQUM7SUFFckIsK0hBQStIO0lBQy9ILFVBQVUsRUFBRSxPQUFPLENBQUM7SUFFcEI7O09BRUc7SUFDSCxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUUzQiw0RUFBNEU7SUFDNUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBRTFCLGtEQUFrRDtJQUNsRCxVQUFVLEVBQUUsTUFBTSxDQUFDO0lBRW5CLG9EQUFvRDtJQUNwRCxZQUFZLEVBQUUsTUFBTSxDQUFDO0lBRXJCLG9EQUFvRDtJQUNwRCxZQUFZLEVBQUUsTUFBTSxDQUFDO0lBRXJCLHNEQUFzRDtJQUN0RCxjQUFjLEVBQUUsTUFBTSxDQUFDO0lBRXZCLHFFQUFxRTtJQUNyRSxxQkFBcUIsRUFBRSxPQUFPLENBQUM7SUFFL0Isc0VBQXNFO0lBQ3RFLHFCQUFxQixFQUFFLE1BQU0sQ0FBQztJQUU5QixpRkFBaUY7SUFDakYscUJBQXFCLEVBQUUsTUFBTSxDQUFDO0lBRTlCLDJEQUEyRDtJQUMzRCxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7SUFFekIsZ0hBQWdIO0lBQ2hILGtDQUFrQyxFQUFFLE1BQU0sQ0FBQztJQUUzQyxnS0FBZ0s7SUFDaEssc0JBQXNCLEVBQUUsTUFBTSxDQUFDO0lBRS9CLGlGQUFpRjtJQUNqRix5Q0FBeUMsRUFBRSxNQUFNLENBQUM7SUFFbEQsMkdBQTJHO0lBQzNHLHdDQUF3QyxFQUFFLE1BQU0sQ0FBQztJQUVqRCxvSUFBb0k7SUFDcEksaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFFNUIsc0lBQXNJO0lBQ3RJLGVBQWUsRUFBRSxNQUFNLENBQUM7SUFFeEIsK0JBQStCO0lBQy9CLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUV2QiwrQkFBK0I7SUFDL0IsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBRXZCLGlDQUFpQztJQUNqQyxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFFekIsZ0dBQWdHO0lBQ2hHLGlCQUFpQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBRTNCLGlFQUFpRTtJQUNqRSw0QkFBNEIsRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUUvQyw0RUFBNEU7SUFDNUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBRTFCLDRDQUE0QztJQUM1QyxvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFFN0Isc0ZBQXNGO0lBQ3RGLHFCQUFxQixFQUFFLE1BQU0sQ0FBQztJQUU5Qiw4REFBOEQ7SUFDOUQseUJBQXlCLENBQUMsRUFBRSxPQUFPLENBQUM7SUFFcEMsZ0RBQWdEO0lBQ2hELHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBRWpDLGlEQUFpRDtJQUNqRCxvQkFBb0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUMvQixpRkFBaUY7SUFDakYsK0JBQStCLEVBQUUsTUFBTSxDQUFDO0lBRXhDLDJIQUEySDtJQUMzSCxtQkFBbUIsRUFBRSxPQUFPLENBQUM7SUFFN0Isa0dBQWtHO0lBQ2xHLDJCQUEyQixFQUFFLE1BQU0sQ0FBQztJQUVwQyx5R0FBeUc7SUFDekcseUJBQXlCLEVBQUUsT0FBTyxDQUFDO0lBRW5DLG9HQUFvRztJQUNwRywwQkFBMEIsRUFBRSxPQUFPLENBQUM7SUFFcEMsaUpBQWlKO0lBQ2pKLGFBQWEsRUFBRSxPQUFPLENBQUM7SUFFdkIsMklBQTJJO0lBQzNJLDZCQUE2QixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBRXhDLHlHQUF5RztJQUN6RyxjQUFjLEVBQUUsTUFBTSxDQUFDO0lBRXZCOzs7T0FHRztJQUNILGtDQUFrQyxFQUFFLE1BQU0sQ0FBQztJQUUzQzs7Ozs7T0FLRztJQUNILG1DQUFtQyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBRTdDLGdHQUFnRztJQUNoRyxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFFNUIsbUdBQW1HO0lBQ25HLHFCQUFxQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBRWhDLDJFQUEyRTtJQUMzRSwwQkFBMEIsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUVyQzs7OztPQUlHO0lBQ0gsZ0NBQWdDLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDNUM7QUFFRCxlQUFPLE1BQU0sZ0JBQWdCLFFBQVEsQ0FBQztBQUV0QyxrR0FBa0c7QUFDbEcsZUFBTyxNQUFNLDBCQUEwQixFQUFFLE1BQU0sRUFLOUMsQ0FBQztBQUVGLGVBQU8sTUFBTSxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxTQUFTLENBb1czRCxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsd0JBQWdCLG1CQUFtQixJQUFJLFNBQVMsQ0FFL0M7QUFFRCx3QkFBZ0IsbUJBQW1CLElBQUksU0FBUyxDQUUvQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQy9CLFNBQVMsRUFDUCxPQUFPLEdBQ1AsU0FBUyxHQUNULGtCQUFrQixHQUNsQixrQkFBa0IsR0FDbEIsc0JBQXNCLEdBQ3RCLGdCQUFnQixHQUNoQixlQUFlLEdBQ2YsWUFBWSxHQUNaLGtCQUFrQixDQUNyQixHQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUM5QyxJQUFJLENBQUMsZUFBZSxFQUFFLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxHQUM3RCxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBaUJqQyxlQUFPLE1BQU0sc0JBQXNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyTkFHbEMsQ0FBQztBQStCRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCx3QkFBZ0IsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsY0FBYyxFQUFFLENBMkM5RCJ9
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBV1osTUFBTSwwQkFBMEIsQ0FBQztBQUlsQyxPQUFPLEVBQ0wsS0FBSyxjQUFjLEVBQ25CLEtBQUssV0FBVyxFQUNoQixLQUFLLGVBQWUsRUFHckIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFFbEYsT0FBTyxFQUNMLEtBQUssc0JBQXNCLEVBRTVCLE1BQU0saURBQWlELENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQTRCLE1BQU0sOEJBQThCLENBQUM7QUFDL0YsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQThCLE1BQU0sb0NBQW9DLENBQUM7QUFDekcsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQTZCLE1BQU0sb0NBQW9DLENBQUM7QUFFdkc7O0dBRUc7QUFDSCxNQUFNLFdBQVcsU0FDZixTQUFRLGdCQUFnQixFQUN0QixzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsSUFBSSxDQUNGLGVBQWUsRUFDYiwrQkFBK0IsR0FDL0IsZ0JBQWdCLEdBQ2hCLG9DQUFvQyxHQUNwQyx3QkFBd0IsQ0FDM0IsRUFHRCxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3BELDhHQUE4RztJQUM5RyxzQkFBc0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUVoQyxvSEFBb0g7SUFDcEgsMkJBQTJCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFFckMsb0VBQW9FO0lBQ3BFLFVBQVUsRUFBRSxPQUFPLENBQUM7SUFFcEIseURBQXlEO0lBQ3pELG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUU3Qix1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
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dest/config.js CHANGED
@@ -1,4 +1,4 @@
1
- import { bigintConfigHelper, booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper, percentageConfigHelper, pickConfigMappings, secretStringConfigHelper } from '@aztec/foundation/config';
1
+ import { bigintConfigHelper, booleanConfigHelper, floatConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper, percentageConfigHelper, pickConfigMappings, secretStringConfigHelper } from '@aztec/foundation/config';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { FunctionSelector } from '@aztec/stdlib/abi/function-selector';
4
4
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
@@ -26,16 +26,6 @@ export const p2pConfigMappings = {
26
26
  description: 'Maximum transactions per checkpoint for validation. Used as fallback for maxTxsPerBlock when that is not set.',
27
27
  ...optionalNumberConfigHelper()
28
28
  },
29
- validateMaxL2BlockGas: {
30
- env: 'VALIDATOR_MAX_L2_BLOCK_GAS',
31
- description: 'Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected.',
32
- ...optionalNumberConfigHelper()
33
- },
34
- validateMaxDABlockGas: {
35
- env: 'VALIDATOR_MAX_DA_BLOCK_GAS',
36
- description: 'Maximum DA gas per block for validation. When set, txs exceeding this limit are rejected.',
37
- ...optionalNumberConfigHelper()
38
- },
39
29
  p2pEnabled: {
40
30
  env: 'P2P_ENABLED',
41
31
  description: 'A flag dictating whether the P2P subsystem should be enabled.',
@@ -51,11 +41,6 @@ export const p2pConfigMappings = {
51
41
  description: 'The frequency in which to check for new L2 blocks.',
52
42
  ...numberConfigHelper(100)
53
43
  },
54
- slotCheckIntervalMS: {
55
- env: 'P2P_SLOT_CHECK_INTERVAL_MS',
56
- description: 'The frequency in which to check for new L2 slots.',
57
- ...numberConfigHelper(1000)
58
- },
59
44
  debugDisableColocationPenalty: {
60
45
  env: 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY',
61
46
  description: 'DEBUG: Disable colocation penalty - NEVER set to true in production',
@@ -180,20 +165,25 @@ export const p2pConfigMappings = {
180
165
  description: 'How long to keep message IDs in the seen cache.',
181
166
  ...numberConfigHelper(20 * 60 * 1000)
182
167
  },
168
+ maxGossipClockDisparityMs: {
169
+ env: 'P2P_MAX_GOSSIP_CLOCK_DISPARITY_MS',
170
+ description: 'Maximum clock-disparity tolerance (ms) applied to both ends of proposal/attestation gossip receive windows.',
171
+ ...numberConfigHelper(500)
172
+ },
183
173
  gossipsubTxTopicWeight: {
184
174
  env: 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT',
185
175
  description: 'The weight of the tx topic for the gossipsub protocol.',
186
- ...numberConfigHelper(1)
176
+ ...floatConfigHelper(1)
187
177
  },
188
178
  gossipsubTxInvalidMessageDeliveriesWeight: {
189
179
  env: 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_WEIGHT',
190
180
  description: 'The weight of the tx invalid message deliveries for the gossipsub protocol.',
191
- ...numberConfigHelper(-20)
181
+ ...floatConfigHelper(-20)
192
182
  },
193
183
  gossipsubTxInvalidMessageDeliveriesDecay: {
194
184
  env: 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_DECAY',
195
185
  description: 'Determines how quickly the penalty for invalid message deliveries decays over time. Between 0 and 1.',
196
- ...numberConfigHelper(0.5)
186
+ ...floatConfigHelper(0.5)
197
187
  },
198
188
  peerPenaltyValues: {
199
189
  env: 'P2P_PEER_PENALTY_VALUES',
@@ -205,6 +195,11 @@ export const p2pConfigMappings = {
205
195
  50
206
196
  ]
207
197
  },
198
+ peerBanDurationSeconds: {
199
+ env: 'P2P_PEER_BAN_DURATION_SECONDS',
200
+ description: 'How long (in seconds) a peer is banned for once its score drops below the ban threshold.',
201
+ ...numberConfigHelper(24 * 60 * 60)
202
+ },
208
203
  doubleSpendSeverePeerPenaltyWindow: {
209
204
  env: 'P2P_DOUBLE_SPEND_SEVERE_PEER_PENALTY_WINDOW',
210
205
  description: 'The "age" (in L2 blocks) of a tx after which we heavily penalize a peer for sending it.',
@@ -301,11 +296,6 @@ export const p2pConfigMappings = {
301
296
  description: 'Alters the format of p2p messages to include things like broadcast timestamp FOR TESTING ONLY',
302
297
  ...booleanConfigHelper(false)
303
298
  },
304
- l1PublishingTime: {
305
- env: 'SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT',
306
- description: 'How much time (in seconds) we allow in the slot for publishing the L1 tx (defaults to 1 L1 slot).',
307
- ...optionalNumberConfigHelper()
308
- },
309
299
  fishermanMode: {
310
300
  env: 'FISHERMAN_MODE',
311
301
  description: 'Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus.',
@@ -347,7 +337,18 @@ export const p2pConfigMappings = {
347
337
  description: 'Minimum percentage fee increase required to replace an existing tx via RPC. Even at 0%, replacement still requires paying at least 1 unit more.',
348
338
  ...bigintConfigHelper(10n)
349
339
  },
350
- ...sharedSequencerConfigMappings,
340
+ keepFinalizedTxsForSlots: {
341
+ env: 'P2P_KEEP_FINALIZED_TXS_FOR_SLOTS',
342
+ description: 'Number of slots behind the finalized tip to keep finalized txs for before deleting them. 0 deletes at the finalized tip.',
343
+ ...numberConfigHelper(0)
344
+ },
345
+ ...pickConfigMappings(sharedSequencerConfigMappings, [
346
+ 'expectedBlockProposalsPerSlot',
347
+ 'maxTxsPerBlock',
348
+ 'checkpointProposalSyncGraceSeconds',
349
+ 'maxBlocksPerCheckpoint',
350
+ 'blockDurationMs'
351
+ ]),
351
352
  ...p2pReqRespConfigMappings,
352
353
  ...batchTxRequesterConfigMappings,
353
354
  ...chainConfigMappings,
@@ -434,7 +435,7 @@ export const bootnodeConfigMappings = pickConfigMappings({
434
435
  const flags = flagsString ? parseFlags(flagsString, trimmed) : {};
435
436
  if (typeString === 'I') {
436
437
  entries.push({
437
- address: AztecAddress.fromString(identifierString),
438
+ address: AztecAddress.fromStringUnsafe(identifierString),
438
439
  selector,
439
440
  ...flags
440
441
  });
@@ -6,4 +6,16 @@
6
6
  export declare class IndividualReqRespTimeoutError extends Error {
7
7
  constructor();
8
8
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxcmVzcC5lcnJvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy9yZXFyZXNwLmVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxxQkFBYSw2QkFBOEIsU0FBUSxLQUFLO0lBQ3RELGNBRUM7Q0FDRiJ9
9
+ /** Oversized reqresp request error
10
+ *
11
+ * Thrown locally (before dialing) when a request payload does not fit in a single muxer frame. Such a request would
12
+ * reach the responder split across multiple chunks, which are never reassembled into one request.
13
+ * @category Errors
14
+ */
15
+ export declare class OversizedReqRespRequestError extends Error {
16
+ readonly subProtocol: string;
17
+ readonly payloadSizeBytes: number;
18
+ readonly maxSizeBytes: number;
19
+ constructor(subProtocol: string, payloadSizeBytes: number, maxSizeBytes: number);
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxcmVzcC5lcnJvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy9yZXFyZXNwLmVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxxQkFBYSw2QkFBOEIsU0FBUSxLQUFLO0lBQ3RELGNBRUM7Q0FDRjtBQUVEOzs7OztHQUtHO0FBQ0gscUJBQWEsNEJBQTZCLFNBQVEsS0FBSzthQUVuQyxXQUFXLEVBQUUsTUFBTTthQUNuQixnQkFBZ0IsRUFBRSxNQUFNO2FBQ3hCLFlBQVksRUFBRSxNQUFNO0lBSHRDLFlBQ2tCLFdBQVcsRUFBRSxNQUFNLEVBQ25CLGdCQUFnQixFQUFFLE1BQU0sRUFDeEIsWUFBWSxFQUFFLE1BQU0sRUFNckM7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"reqresp.error.d.ts","sourceRoot":"","sources":["../../src/errors/reqresp.error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,cAEC;CACF"}
1
+ {"version":3,"file":"reqresp.error.d.ts","sourceRoot":"","sources":["../../src/errors/reqresp.error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,cAEC;CACF;AAED;;;;;GAKG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;aAEnC,WAAW,EAAE,MAAM;aACnB,gBAAgB,EAAE,MAAM;aACxB,YAAY,EAAE,MAAM;IAHtC,YACkB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EAMrC;CACF"}
@@ -7,3 +7,17 @@
7
7
  super(`Request to peer timed out`);
8
8
  }
9
9
  }
10
+ /** Oversized reqresp request error
11
+ *
12
+ * Thrown locally (before dialing) when a request payload does not fit in a single muxer frame. Such a request would
13
+ * reach the responder split across multiple chunks, which are never reassembled into one request.
14
+ * @category Errors
15
+ */ export class OversizedReqRespRequestError extends Error {
16
+ subProtocol;
17
+ payloadSizeBytes;
18
+ maxSizeBytes;
19
+ constructor(subProtocol, payloadSizeBytes, maxSizeBytes){
20
+ super(`Request payload of ${payloadSizeBytes} bytes for ${subProtocol} exceeds the ${maxSizeBytes} byte limit of a single muxer frame`), this.subProtocol = subProtocol, this.payloadSizeBytes = payloadSizeBytes, this.maxSizeBytes = maxSizeBytes;
21
+ this.name = 'OversizedReqRespRequestError';
22
+ }
23
+ }
@@ -23,7 +23,7 @@ export declare const MAX_BLOCK_PROPOSALS_PER_POSITION = 2;
23
23
  /** Maximum attestations a single signer can make per slot before being rejected. */
24
24
  export declare const MAX_ATTESTATIONS_PER_SLOT_AND_SIGNER = 2;
25
25
  /** Public API interface for attestation pools. Used for typing mocks and test implementations. */
26
- export type AttestationPoolApi = Pick<AttestationPool, 'tryAddBlockProposal' | 'getBlockProposalByArchive' | 'getProposalsForSlot' | 'tryAddCheckpointProposal' | 'getCheckpointProposal' | 'addOwnCheckpointAttestations' | 'tryAddCheckpointAttestation' | 'deleteOlderThan' | 'getCheckpointAttestationsForSlot' | 'getCheckpointAttestationsForSlotAndProposal' | 'hasBlockProposalsForSlot' | 'isEmpty'>;
26
+ export type AttestationPoolApi = Pick<AttestationPool, 'tryAddBlockProposal' | 'getBlockProposalByArchive' | 'getProposalsForSlot' | 'tryAddCheckpointProposal' | 'getCheckpointProposal' | 'hasCheckpointProposalForSlot' | 'addOwnCheckpointAttestations' | 'tryAddCheckpointAttestation' | 'deleteOlderThan' | 'getCheckpointAttestationsForSlot' | 'getCheckpointAttestationsForSlotAndProposal' | 'hasBlockProposalsForSlot' | 'isEmpty'>;
27
27
  /**
28
28
  * Pool for storing attestations and proposals collected by a validator.
29
29
  *
@@ -139,6 +139,8 @@ export declare class AttestationPool {
139
139
  * @return The checkpoint proposal core if one is stored, otherwise undefined.
140
140
  */
141
141
  getCheckpointProposal(slot: SlotNumber): Promise<CheckpointProposalCore | undefined>;
142
+ /** Returns whether any checkpoint proposal is retained for the given slot. */
143
+ hasCheckpointProposalForSlot(slot: SlotNumber): Promise<boolean>;
142
144
  /**
143
145
  * Adds own checkpoint attestations to the pool.
144
146
  * Skips per-signer cap and equivocation tracking; the caller is trusted.
@@ -189,4 +191,4 @@ export declare class AttestationPool {
189
191
  }
190
192
  /** Creates an AttestationPool backed by a temporary store for testing. */
191
193
  export declare function createTestAttestationPool(telemetry?: TelemetryClient): Promise<AttestationPool>;
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQXFCLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzdHLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFxQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFDTCxhQUFhLEVBQ2IscUJBQXFCLEVBRXJCLEtBQUssc0JBQXNCLEVBQzVCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBSW5GLDRFQUE0RTtBQUM1RSxNQUFNLE1BQU0sWUFBWSxHQUFHO0lBQ3pCLCtHQUErRztJQUMvRyxLQUFLLEVBQUUsT0FBTyxDQUFDO0lBQ2YsOEZBQThGO0lBQzlGLGFBQWEsRUFBRSxPQUFPLENBQUM7SUFDdkI7Ozs4RkFHMEY7SUFDMUYsS0FBSyxFQUFFLE1BQU0sQ0FBQztDQUNmLENBQUM7QUFFRixNQUFNLE1BQU0sZ0JBQWdCLEdBQUc7SUFDN0IsY0FBYyxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ2hDLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLENBQUM7Q0FDL0MsQ0FBQztBQUVGLGVBQU8sTUFBTSxpQ0FBaUMsSUFBSSxDQUFDO0FBQ25ELGVBQU8sTUFBTSxnQ0FBZ0MsSUFBSSxDQUFDO0FBQ2xELG9GQUFvRjtBQUNwRixlQUFPLE1BQU0sb0NBQW9DLElBQUksQ0FBQztBQUV0RCxrR0FBa0c7QUFDbEcsTUFBTSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FDbkMsZUFBZSxFQUNiLHFCQUFxQixHQUNyQiwyQkFBMkIsR0FDM0IscUJBQXFCLEdBQ3JCLDBCQUEwQixHQUMxQix1QkFBdUIsR0FDdkIs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
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQXFCLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzdHLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFxQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFDTCxhQUFhLEVBQ2IscUJBQXFCLEVBRXJCLEtBQUssc0JBQXNCLEVBQzVCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBSW5GLDRFQUE0RTtBQUM1RSxNQUFNLE1BQU0sWUFBWSxHQUFHO0lBQ3pCLCtHQUErRztJQUMvRyxLQUFLLEVBQUUsT0FBTyxDQUFDO0lBQ2YsOEZBQThGO0lBQzlGLGFBQWEsRUFBRSxPQUFPLENBQUM7SUFDdkI7Ozs4RkFHMEY7SUFDMUYsS0FBSyxFQUFFLE1BQU0sQ0FBQztDQUNmLENBQUM7QUFFRixNQUFNLE1BQU0sZ0JBQWdCLEdBQUc7SUFDN0IsY0FBYyxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ2hDLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLENBQUM7Q0FDL0MsQ0FBQztBQUVGLGVBQU8sTUFBTSxpQ0FBaUMsSUFBSSxDQUFDO0FBQ25ELGVBQU8sTUFBTSxnQ0FBZ0MsSUFBSSxDQUFDO0FBQ2xELG9GQUFvRjtBQUNwRixlQUFPLE1BQU0sb0NBQW9DLElBQUksQ0FBQztBQUV0RCxrR0FBa0c7QUFDbEcsTUFBTSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FDbkMsZUFBZSxFQUNiLHFCQUFxQixHQUNyQiwyQkFBMkIsR0FDM0IscUJBQXFCLEdBQ3JCLDBCQUEwQixHQUMxQix1QkFBdUIsR0FDdkIs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
@@ -1 +1 @@
1
- {"version":3,"file":"attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool.ts"],"names":[],"mappings":"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"}
@@ -301,6 +301,9 @@ export const MAX_BLOCK_PROPOSALS_PER_POSITION = 2;
301
301
  }
302
302
  return undefined;
303
303
  }
304
+ /** Returns whether any checkpoint proposal is retained for the given slot. */ async hasCheckpointProposalForSlot(slot) {
305
+ return await this.getCheckpointProposal(slot) !== undefined;
306
+ }
304
307
  /**
305
308
  * Adds own checkpoint attestations to the pool.
306
309
  * Skips per-signer cap and equivocation tracking; the caller is trusted.
@@ -322,7 +325,8 @@ export const MAX_BLOCK_PROPOSALS_PER_POSITION = 2;
322
325
  const address = sender.toString();
323
326
  const ownKey = this.getSlotSignerKey(slotNumber, address);
324
327
  const payloadHash = attestation.getPayloadHash();
325
- await this.attestationPerSlotAndSigner.set(ownKey, attestation.toBuffer());
328
+ // Store the signature in canonical (v ∈ {27, 28}) form; see tryAddCheckpointAttestation.
329
+ await this.attestationPerSlotAndSigner.set(ownKey, attestation.withNormalizedSignature().toBuffer());
326
330
  this.metrics.trackMempoolItemAdded(ownKey);
327
331
  // Track our own payload hash so that an equivocating attestation from another
328
332
  // peer at the same (slot, signer) is detected as a duplicate.
@@ -488,7 +492,10 @@ export const MAX_BLOCK_PROPOSALS_PER_POSITION = 2;
488
492
  // equivocations are detected via the multimap but their bytes are not retained.
489
493
  const alreadyHasStored = await this.attestationPerSlotAndSigner.hasAsync(slotSignerKey);
490
494
  if (!alreadyHasStored) {
491
- await this.attestationPerSlotAndSigner.set(slotSignerKey, attestation.toBuffer());
495
+ // Store the signature in canonical (v ∈ {27, 28}) form. `sender` recovered above, so the
496
+ // signature is non-empty and safe to normalize; this keeps a yParity-encoded (v = 0/1) variant
497
+ // from a malicious peer or an in-flight byte mutation out of the L1 bundle downstream.
498
+ await this.attestationPerSlotAndSigner.set(slotSignerKey, attestation.withNormalizedSignature().toBuffer());
492
499
  this.metrics.trackMempoolItemAdded(slotSignerKey);
493
500
  }
494
501
  this.log.debug(`Added checkpoint attestation for slot ${slotNumber} from ${signerAddress}`, {
@@ -1,3 +1,3 @@
1
1
  import { type AttestationPool } from './attestation_pool.js';
2
2
  export declare function describeAttestationPool(getAttestationPool: () => AttestationPool): void;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbF90ZXN0X3N1aXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL2F0dGVzdGF0aW9uX3Bvb2wvYXR0ZXN0YXRpb25fcG9vbF90ZXN0X3N1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFHckIsTUFBTSx1QkFBdUIsQ0FBQztBQUsvQix3QkFBZ0IsdUJBQXVCLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLFFBbTBCaEYifQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbF90ZXN0X3N1aXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL2F0dGVzdGF0aW9uX3Bvb2wvYXR0ZXN0YXRpb25fcG9vbF90ZXN0X3N1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBLE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFHckIsTUFBTSx1QkFBdUIsQ0FBQztBQUsvQix3QkFBZ0IsdUJBQXVCLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLFFBdzJCaEYifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"attestation_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool_test_suite.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,uBAAuB,CAAC;AAK/B,wBAAgB,uBAAuB,CAAC,kBAAkB,EAAE,MAAM,eAAe,QAm0BhF"}
1
+ {"version":3,"file":"attestation_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool_test_suite.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,uBAAuB,CAAC;AAK/B,wBAAgB,uBAAuB,CAAC,kBAAkB,EAAE,MAAM,eAAe,QAw2BhF"}