@aztec/p2p 0.76.1 → 0.76.3

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 (57) hide show
  1. package/dest/client/factory.d.ts +0 -2
  2. package/dest/client/factory.d.ts.map +1 -1
  3. package/dest/client/factory.js +1 -3
  4. package/dest/client/p2p_client.d.ts +1 -22
  5. package/dest/client/p2p_client.d.ts.map +1 -1
  6. package/dest/client/p2p_client.js +1 -23
  7. package/dest/index.d.ts +2 -3
  8. package/dest/index.d.ts.map +1 -1
  9. package/dest/index.js +3 -4
  10. package/dest/mem_pools/index.d.ts +1 -2
  11. package/dest/mem_pools/index.d.ts.map +1 -1
  12. package/dest/mem_pools/instrumentation.d.ts +1 -2
  13. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  14. package/dest/mem_pools/instrumentation.js +1 -8
  15. package/dest/mem_pools/interface.d.ts +0 -2
  16. package/dest/mem_pools/interface.d.ts.map +1 -1
  17. package/dest/services/libp2p/libp2p_service.d.ts +1 -17
  18. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  19. package/dest/services/libp2p/libp2p_service.js +2 -55
  20. package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -3
  21. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  22. package/dest/test-helpers/make-test-p2p-clients.js +2 -3
  23. package/dest/testbench/p2p_client_testbench_worker.js +1 -10
  24. package/package.json +9 -9
  25. package/src/client/factory.ts +0 -4
  26. package/src/client/p2p_client.ts +0 -44
  27. package/src/index.ts +2 -3
  28. package/src/mem_pools/index.ts +1 -2
  29. package/src/mem_pools/instrumentation.ts +0 -6
  30. package/src/mem_pools/interface.ts +0 -2
  31. package/src/services/libp2p/libp2p_service.ts +0 -63
  32. package/src/test-helpers/make-test-p2p-clients.ts +0 -4
  33. package/src/testbench/p2p_client_testbench_worker.ts +0 -11
  34. package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.d.ts +0 -7
  35. package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.d.ts.map +0 -1
  36. package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.js +0 -2
  37. package/dest/mem_pools/epoch_proof_quote_pool/index.d.ts +0 -4
  38. package/dest/mem_pools/epoch_proof_quote_pool/index.d.ts.map +0 -1
  39. package/dest/mem_pools/epoch_proof_quote_pool/index.js +0 -4
  40. package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.d.ts +0 -12
  41. package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.d.ts.map +0 -1
  42. package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.js +0 -30
  43. package/dest/mem_pools/epoch_proof_quote_pool/test_utils.d.ts +0 -8
  44. package/dest/mem_pools/epoch_proof_quote_pool/test_utils.d.ts.map +0 -1
  45. package/dest/mem_pools/epoch_proof_quote_pool/test_utils.js +0 -21
  46. package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts +0 -8
  47. package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts.map +0 -1
  48. package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.js +0 -16
  49. package/dest/msg_validators/epoch_proof_quote_validator/index.d.ts +0 -2
  50. package/dest/msg_validators/epoch_proof_quote_validator/index.d.ts.map +0 -1
  51. package/dest/msg_validators/epoch_proof_quote_validator/index.js +0 -2
  52. package/src/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.ts +0 -7
  53. package/src/mem_pools/epoch_proof_quote_pool/index.ts +0 -3
  54. package/src/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.ts +0 -41
  55. package/src/mem_pools/epoch_proof_quote_pool/test_utils.ts +0 -26
  56. package/src/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.ts +0 -22
  57. package/src/msg_validators/epoch_proof_quote_validator/index.ts +0 -1
@@ -2,7 +2,6 @@ import {
2
2
  BlockAttestation,
3
3
  BlockProposal,
4
4
  type ClientProtocolCircuitVerifier,
5
- EpochProofQuote,
6
5
  type Gossipable,
7
6
  type L2BlockSource,
8
7
  MerkleTreeId,
@@ -48,7 +47,6 @@ import { createLibp2p } from 'libp2p';
48
47
 
49
48
  import { type P2PConfig } from '../../config.js';
50
49
  import { type MemPools } from '../../mem_pools/interface.js';
51
- import { EpochProofQuoteValidator } from '../../msg_validators/epoch_proof_quote_validator/index.js';
52
50
  import { AttestationValidator, BlockProposalValidator } from '../../msg_validators/index.js';
53
51
  import {
54
52
  DataTxValidator,
@@ -95,7 +93,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
95
93
  // Message validators
96
94
  private attestationValidator: AttestationValidator;
97
95
  private blockProposalValidator: BlockProposalValidator;
98
- private epochProofQuoteValidator: EpochProofQuoteValidator;
99
96
 
100
97
  // Request and response sub service
101
98
  public reqresp: ReqResp;
@@ -143,7 +140,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
143
140
 
144
141
  this.attestationValidator = new AttestationValidator(epochCache);
145
142
  this.blockProposalValidator = new BlockProposalValidator(epochCache);
146
- this.epochProofQuoteValidator = new EpochProofQuoteValidator(epochCache);
147
143
 
148
144
  this.blockReceivedCallback = async (block: BlockProposal): Promise<BlockAttestation | undefined> => {
149
145
  this.logger.warn(
@@ -265,11 +261,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
265
261
  invalidMessageDeliveriesWeight: -20,
266
262
  invalidMessageDeliveriesDecay: 0.5,
267
263
  }),
268
- [EpochProofQuote.p2pTopic]: createTopicScoreParams({
269
- topicWeight: 1,
270
- invalidMessageDeliveriesWeight: -20,
271
- invalidMessageDeliveriesDecay: 0.5,
272
- }),
273
264
  },
274
265
  }),
275
266
  }) as (components: GossipSubComponents) => GossipSub,
@@ -343,7 +334,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
343
334
  [Tx.p2pTopic]: this.validatePropagatedTxFromMessage.bind(this),
344
335
  [BlockAttestation.p2pTopic]: this.validatePropagatedAttestationFromMessage.bind(this),
345
336
  [BlockProposal.p2pTopic]: this.validatePropagatedBlockFromMessage.bind(this),
346
- [EpochProofQuote.p2pTopic]: this.validatePropagatedEpochProofQuoteFromMessage.bind(this),
347
337
  };
348
338
  // When running bandwidth benchmarks, we use send blobs of data we do not want to validate
349
339
  // NEVER switch this off in production
@@ -507,10 +497,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
507
497
  const block = BlockProposal.fromBuffer(Buffer.from(message.data));
508
498
  await this.processBlockFromPeer(block);
509
499
  }
510
- if (message.topic == EpochProofQuote.p2pTopic) {
511
- const epochProofQuote = EpochProofQuote.fromBuffer(Buffer.from(message.data));
512
- await this.processEpochProofQuoteFromPeer(epochProofQuote);
513
- }
514
500
 
515
501
  return;
516
502
  }
@@ -594,17 +580,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
594
580
  await this.propagate(attestation);
595
581
  }
596
582
 
597
- private async processEpochProofQuoteFromPeer(epochProofQuote: EpochProofQuote) {
598
- const epoch = epochProofQuote.payload.epochToProve;
599
- const prover = epochProofQuote.payload.prover.toString();
600
- const p2pMessageIdentifier = await epochProofQuote.p2pMessageIdentifier();
601
- this.logger.verbose(
602
- `Received epoch proof quote ${p2pMessageIdentifier} by prover ${prover} for epoch ${epoch} from external peer.`,
603
- { quote: epochProofQuote.toInspect(), p2pMessageIdentifier },
604
- );
605
- this.mempools.epochProofQuotePool.addQuote(epochProofQuote);
606
- }
607
-
608
583
  /**
609
584
  * Propagates provided message to peers.
610
585
  * @param message - The message to propagate.
@@ -718,25 +693,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
718
693
  return isValid ? TopicValidatorResult.Accept : TopicValidatorResult.Reject;
719
694
  }
720
695
 
721
- /**
722
- * Validate an epoch proof quote from a peer.
723
- * @param propagationSource - The peer ID of the peer that sent the epoch proof quote.
724
- * @param msg - The epoch proof quote message.
725
- * @returns True if the epoch proof quote is valid, false otherwise.
726
- */
727
- private async validatePropagatedEpochProofQuoteFromMessage(
728
- propagationSource: PeerId,
729
- msg: Message,
730
- ): Promise<TopicValidatorResult> {
731
- const epochProofQuote = EpochProofQuote.fromBuffer(Buffer.from(msg.data));
732
- const isValid = await this.validateEpochProofQuote(propagationSource, epochProofQuote);
733
- this.logger.trace(`validatePropagatedEpochProofQuote: ${isValid}`, {
734
- [Attributes.EPOCH_NUMBER]: epochProofQuote.payload.epochToProve.toString(),
735
- [Attributes.P2P_ID]: propagationSource.toString(),
736
- });
737
- return isValid ? TopicValidatorResult.Accept : TopicValidatorResult.Reject;
738
- }
739
-
740
696
  @trackSpan('Libp2pService.validatePropagatedTx', async tx => ({
741
697
  [Attributes.TX_HASH]: (await tx.getTxHash()).toString(),
742
698
  }))
@@ -908,25 +864,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
908
864
  return true;
909
865
  }
910
866
 
911
- /**
912
- * Validate an epoch proof quote.
913
- *
914
- * @param epochProofQuote - The epoch proof quote to validate.
915
- * @returns True if the epoch proof quote is valid, false otherwise.
916
- */
917
- @trackSpan('Libp2pService.validateEpochProofQuote', (_peerId, epochProofQuote) => ({
918
- [Attributes.EPOCH_NUMBER]: epochProofQuote.payload.epochToProve.toString(),
919
- }))
920
- public async validateEpochProofQuote(peerId: PeerId, epochProofQuote: EpochProofQuote): Promise<boolean> {
921
- const severity = await this.epochProofQuoteValidator.validate(epochProofQuote);
922
- if (severity) {
923
- this.peerManager.penalizePeer(peerId, severity);
924
- return false;
925
- }
926
-
927
- return true;
928
- }
929
-
930
867
  public getPeerScore(peerId: PeerId): number {
931
868
  return this.node.services.pubsub.score.score(peerId.toString());
932
869
  }
@@ -9,7 +9,6 @@ import { createP2PClient } from '../client/index.js';
9
9
  import { type P2PClient } from '../client/p2p_client.js';
10
10
  import { type P2PConfig } from '../config.js';
11
11
  import { type AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
12
- import { type EpochProofQuotePool } from '../mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.js';
13
12
  import { type TxPool } from '../mem_pools/tx_pool/index.js';
14
13
  import { generatePeerIdPrivateKeys } from '../test-helpers/generate-peer-id-private-keys.js';
15
14
  import { getPorts } from './get-ports.js';
@@ -18,7 +17,6 @@ import { AlwaysFalseCircuitVerifier, AlwaysTrueCircuitVerifier } from './reqresp
18
17
 
19
18
  interface MakeTestP2PClientOptions {
20
19
  mockAttestationPool: AttestationPool;
21
- mockEpochProofQuotePool: EpochProofQuotePool;
22
20
  mockTxPool: TxPool;
23
21
  mockEpochCache: EpochCache;
24
22
  mockWorldState: WorldStateSynchronizer;
@@ -45,7 +43,6 @@ export async function makeTestP2PClient(
45
43
  p2pBaseConfig,
46
44
  p2pConfigOverrides = {},
47
45
  mockAttestationPool,
48
- mockEpochProofQuotePool,
49
46
  mockTxPool,
50
47
  mockEpochCache,
51
48
  mockWorldState,
@@ -79,7 +76,6 @@ export async function makeTestP2PClient(
79
76
  const deps = {
80
77
  txPool: mockTxPool as unknown as TxPool,
81
78
  attestationPool: mockAttestationPool as unknown as AttestationPool,
82
- epochProofQuotePool: mockEpochProofQuotePool as unknown as EpochProofQuotePool,
83
79
  store: kvStore,
84
80
  logger,
85
81
  };
@@ -15,7 +15,6 @@ import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
15
15
  import { type P2PConfig } from '../config.js';
16
16
  import { createP2PClient } from '../index.js';
17
17
  import { type AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
18
- import { type EpochProofQuotePool } from '../mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.js';
19
18
  import { type TxPool } from '../mem_pools/tx_pool/index.js';
20
19
  import { AlwaysTrueCircuitVerifier } from '../test-helpers/reqresp-nodes.js';
21
20
 
@@ -48,14 +47,6 @@ function mockAttestationPool(): AttestationPool {
48
47
  };
49
48
  }
50
49
 
51
- function mockEpochProofQuotePool(): EpochProofQuotePool {
52
- return {
53
- addQuote: () => {},
54
- getQuotes: () => [],
55
- deleteQuotesToEpoch: () => {},
56
- };
57
- }
58
-
59
50
  function mockEpochCache(): EpochCacheInterface {
60
51
  return {
61
52
  getCommittee: () => Promise.resolve([] as EthAddress[]),
@@ -81,7 +72,6 @@ process.on('message', async msg => {
81
72
  if (type === 'START') {
82
73
  const txPool = mockTxPool();
83
74
  const attestationPool = mockAttestationPool();
84
- const epochProofQuotePool = mockEpochProofQuotePool();
85
75
  const epochCache = mockEpochCache();
86
76
  const worldState = {} as WorldStateSynchronizer;
87
77
  const l2BlockSource = new MockL2BlockSource();
@@ -94,7 +84,6 @@ process.on('message', async msg => {
94
84
  const deps = {
95
85
  txPool,
96
86
  attestationPool,
97
- epochProofQuotePool,
98
87
  store: kvStore,
99
88
  logger,
100
89
  };
@@ -1,7 +0,0 @@
1
- import { type EpochProofQuote } from '@aztec/circuit-types';
2
- export interface EpochProofQuotePool {
3
- addQuote(quote: EpochProofQuote): void;
4
- getQuotes(epoch: bigint): EpochProofQuote[];
5
- deleteQuotesToEpoch(epoch: bigint): void;
6
- }
7
- //# sourceMappingURL=epoch_proof_quote_pool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"epoch_proof_quote_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IACvC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;IAC5C,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hfcHJvb2ZfcXVvdGVfcG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvZXBvY2hfcHJvb2ZfcXVvdGVfcG9vbC9lcG9jaF9wcm9vZl9xdW90ZV9wb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -1,4 +0,0 @@
1
- export * from './epoch_proof_quote_pool.js';
2
- export * from './memory_epoch_proof_quote_pool.js';
3
- export * from './test_utils.js';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/epoch_proof_quote_pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,iBAAiB,CAAC"}
@@ -1,4 +0,0 @@
1
- export * from './epoch_proof_quote_pool.js';
2
- export * from './memory_epoch_proof_quote_pool.js';
3
- export * from './test_utils.js';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL2Vwb2NoX3Byb29mX3F1b3RlX3Bvb2wvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsaUJBQWlCLENBQUMifQ==
@@ -1,12 +0,0 @@
1
- import { type EpochProofQuote } from '@aztec/circuit-types';
2
- import { type TelemetryClient } from '@aztec/telemetry-client';
3
- import { type EpochProofQuotePool } from './epoch_proof_quote_pool.js';
4
- export declare class MemoryEpochProofQuotePool implements EpochProofQuotePool {
5
- private quotes;
6
- private metrics;
7
- constructor(telemetry?: TelemetryClient);
8
- addQuote(quote: EpochProofQuote): void;
9
- getQuotes(epoch: bigint): EpochProofQuote[];
10
- deleteQuotesToEpoch(epoch: bigint): void;
11
- }
12
- //# sourceMappingURL=memory_epoch_proof_quote_pool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory_epoch_proof_quote_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGnF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAuC;gBAE1C,SAAS,GAAE,eAAsC;IAK7D,QAAQ,CAAC,KAAK,EAAE,eAAe;IAS/B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE;IAG3C,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAazC"}
@@ -1,30 +0,0 @@
1
- import { getTelemetryClient } from '@aztec/telemetry-client';
2
- import { PoolInstrumentation, PoolName } from '../instrumentation.js';
3
- export class MemoryEpochProofQuotePool {
4
- constructor(telemetry = getTelemetryClient()) {
5
- this.quotes = new Map();
6
- this.metrics = new PoolInstrumentation(telemetry, PoolName.EPOCH_PROOF_QUOTE_POOL);
7
- }
8
- addQuote(quote) {
9
- const epoch = quote.payload.epochToProve;
10
- if (!this.quotes.has(epoch)) {
11
- this.quotes.set(epoch, []);
12
- }
13
- this.quotes.get(epoch).push(quote);
14
- this.metrics.recordAddedObjects(1);
15
- }
16
- getQuotes(epoch) {
17
- return this.quotes.get(epoch) || [];
18
- }
19
- deleteQuotesToEpoch(epoch) {
20
- const expiredEpochs = Array.from(this.quotes.keys()).filter(k => k <= epoch);
21
- let removedObjectsCount = 0;
22
- for (const expiredEpoch of expiredEpochs) {
23
- // For logging
24
- removedObjectsCount += this.quotes.get(expiredEpoch)?.length || 0;
25
- this.quotes.delete(expiredEpoch);
26
- }
27
- this.metrics.recordRemovedObjects(removedObjectsCount);
28
- }
29
- }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X2Vwb2NoX3Byb29mX3F1b3RlX3Bvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL2Vwb2NoX3Byb29mX3F1b3RlX3Bvb2wvbWVtb3J5X2Vwb2NoX3Byb29mX3F1b3RlX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd0RSxNQUFNLE9BQU8seUJBQXlCO0lBSXBDLFlBQVksWUFBNkIsa0JBQWtCLEVBQUU7UUFDM0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFzQjtRQUM3QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsbUJBQW1CLENBQUMsS0FBYTtRQUMvQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7UUFFN0UsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUN6QyxjQUFjO1lBQ2QsbUJBQW1CLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUVsRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRiJ9
@@ -1,8 +0,0 @@
1
- import { EpochProofQuote, EpochProofQuotePayload } from '@aztec/circuit-types';
2
- import { Secp256k1Signer } from '@aztec/foundation/crypto';
3
- export declare function makeRandomEpochProofQuotePayload(): EpochProofQuotePayload;
4
- export declare function makeRandomEpochProofQuote(payload?: EpochProofQuotePayload): {
5
- quote: EpochProofQuote;
6
- signer: Secp256k1Signer;
7
- };
8
- //# sourceMappingURL=test_utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/epoch_proof_quote_pool/test_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAG/E,OAAO,EAAE,eAAe,EAA2B,MAAM,0BAA0B,CAAC;AAEpF,wBAAgB,gCAAgC,IAAI,sBAAsB,CAQzE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG;IAC3E,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;CACzB,CAOA"}
@@ -1,21 +0,0 @@
1
- import { EpochProofQuote, EpochProofQuotePayload } from '@aztec/circuit-types';
2
- import { EthAddress } from '@aztec/circuits.js';
3
- import { Buffer32 } from '@aztec/foundation/buffer';
4
- import { Secp256k1Signer, randomBigInt, randomInt } from '@aztec/foundation/crypto';
5
- export function makeRandomEpochProofQuotePayload() {
6
- return EpochProofQuotePayload.from({
7
- basisPointFee: randomInt(10000),
8
- bondAmount: 1000000000000000000n,
9
- epochToProve: randomBigInt(1000000n),
10
- prover: EthAddress.random(),
11
- validUntilSlot: randomBigInt(1000000n),
12
- });
13
- }
14
- export function makeRandomEpochProofQuote(payload) {
15
- const signer = Secp256k1Signer.random();
16
- return {
17
- quote: EpochProofQuote.new(Buffer32.random(), payload ?? makeRandomEpochProofQuotePayload(), signer),
18
- signer,
19
- };
20
- }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvZXBvY2hfcHJvb2ZfcXVvdGVfcG9vbC90ZXN0X3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE1BQU0sVUFBVSxnQ0FBZ0M7SUFDOUMsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7UUFDakMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDL0IsVUFBVSxFQUFFLG9CQUFvQjtRQUNoQyxZQUFZLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUNwQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRTtRQUMzQixjQUFjLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQztLQUN2QyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE9BQWdDO0lBSXhFLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUV4QyxPQUFPO1FBQ0wsS0FBSyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sSUFBSSxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sQ0FBQztRQUNwRyxNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUMifQ==
@@ -1,8 +0,0 @@
1
- import { type EpochProofQuote, type P2PValidator, PeerErrorSeverity } from '@aztec/circuit-types';
2
- import { type EpochCacheInterface } from '@aztec/epoch-cache';
3
- export declare class EpochProofQuoteValidator implements P2PValidator<EpochProofQuote> {
4
- private epochCache;
5
- constructor(epochCache: EpochCacheInterface);
6
- validate(message: EpochProofQuote): Promise<PeerErrorSeverity | undefined>;
7
- }
8
- //# sourceMappingURL=epoch_proof_quote_validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"epoch_proof_quote_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,qBAAa,wBAAyB,YAAW,YAAY,CAAC,eAAe,CAAC;IAC5E,OAAO,CAAC,UAAU,CAAsB;gBAE5B,UAAU,EAAE,mBAAmB;IAI3C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;CAW3E"}
@@ -1,16 +0,0 @@
1
- import { PeerErrorSeverity } from '@aztec/circuit-types';
2
- export class EpochProofQuoteValidator {
3
- constructor(epochCache) {
4
- this.epochCache = epochCache;
5
- }
6
- validate(message) {
7
- const { epoch } = this.epochCache.getEpochAndSlotNow();
8
- // Check that the epoch proof quote is for the current epoch
9
- const epochToProve = message.payload.epochToProve;
10
- if (epochToProve !== epoch && epochToProve !== epoch - 1n) {
11
- return Promise.resolve(PeerErrorSeverity.HighToleranceError);
12
- }
13
- return Promise.resolve(undefined);
14
- }
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hfcHJvb2ZfcXVvdGVfdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL2Vwb2NoX3Byb29mX3F1b3RlX3ZhbGlkYXRvci9lcG9jaF9wcm9vZl9xdW90ZV92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEyQyxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2xHLE1BQU0sT0FBTyx3QkFBd0I7SUFHbkMsWUFBWSxVQUErQjtRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFdkQsNERBQTREO1FBQzVELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ2xELElBQUksWUFBWSxLQUFLLEtBQUssSUFBSSxZQUFZLEtBQUssS0FBSyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzFELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGIn0=
@@ -1,2 +0,0 @@
1
- export { EpochProofQuoteValidator } from './epoch_proof_quote_validator.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/epoch_proof_quote_validator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -1,2 +0,0 @@
1
- export { EpochProofQuoteValidator } from './epoch_proof_quote_validator.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvZXBvY2hfcHJvb2ZfcXVvdGVfdmFsaWRhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDIn0=
@@ -1,7 +0,0 @@
1
- import { type EpochProofQuote } from '@aztec/circuit-types';
2
-
3
- export interface EpochProofQuotePool {
4
- addQuote(quote: EpochProofQuote): void;
5
- getQuotes(epoch: bigint): EpochProofQuote[];
6
- deleteQuotesToEpoch(epoch: bigint): void;
7
- }
@@ -1,3 +0,0 @@
1
- export * from './epoch_proof_quote_pool.js';
2
- export * from './memory_epoch_proof_quote_pool.js';
3
- export * from './test_utils.js';
@@ -1,41 +0,0 @@
1
- import { type EpochProofQuote } from '@aztec/circuit-types';
2
- import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
3
-
4
- import { PoolInstrumentation, PoolName } from '../instrumentation.js';
5
- import { type EpochProofQuotePool } from './epoch_proof_quote_pool.js';
6
-
7
- export class MemoryEpochProofQuotePool implements EpochProofQuotePool {
8
- private quotes: Map<bigint, EpochProofQuote[]>;
9
- private metrics: PoolInstrumentation<EpochProofQuote>;
10
-
11
- constructor(telemetry: TelemetryClient = getTelemetryClient()) {
12
- this.quotes = new Map();
13
- this.metrics = new PoolInstrumentation(telemetry, PoolName.EPOCH_PROOF_QUOTE_POOL);
14
- }
15
-
16
- addQuote(quote: EpochProofQuote) {
17
- const epoch = quote.payload.epochToProve;
18
- if (!this.quotes.has(epoch)) {
19
- this.quotes.set(epoch, []);
20
- }
21
- this.quotes.get(epoch)!.push(quote);
22
-
23
- this.metrics.recordAddedObjects(1);
24
- }
25
- getQuotes(epoch: bigint): EpochProofQuote[] {
26
- return this.quotes.get(epoch) || [];
27
- }
28
- deleteQuotesToEpoch(epoch: bigint): void {
29
- const expiredEpochs = Array.from(this.quotes.keys()).filter(k => k <= epoch);
30
-
31
- let removedObjectsCount = 0;
32
- for (const expiredEpoch of expiredEpochs) {
33
- // For logging
34
- removedObjectsCount += this.quotes.get(expiredEpoch)?.length || 0;
35
-
36
- this.quotes.delete(expiredEpoch);
37
- }
38
-
39
- this.metrics.recordRemovedObjects(removedObjectsCount);
40
- }
41
- }
@@ -1,26 +0,0 @@
1
- import { EpochProofQuote, EpochProofQuotePayload } from '@aztec/circuit-types';
2
- import { EthAddress } from '@aztec/circuits.js';
3
- import { Buffer32 } from '@aztec/foundation/buffer';
4
- import { Secp256k1Signer, randomBigInt, randomInt } from '@aztec/foundation/crypto';
5
-
6
- export function makeRandomEpochProofQuotePayload(): EpochProofQuotePayload {
7
- return EpochProofQuotePayload.from({
8
- basisPointFee: randomInt(10000),
9
- bondAmount: 1000000000000000000n,
10
- epochToProve: randomBigInt(1000000n),
11
- prover: EthAddress.random(),
12
- validUntilSlot: randomBigInt(1000000n),
13
- });
14
- }
15
-
16
- export function makeRandomEpochProofQuote(payload?: EpochProofQuotePayload): {
17
- quote: EpochProofQuote;
18
- signer: Secp256k1Signer;
19
- } {
20
- const signer = Secp256k1Signer.random();
21
-
22
- return {
23
- quote: EpochProofQuote.new(Buffer32.random(), payload ?? makeRandomEpochProofQuotePayload(), signer),
24
- signer,
25
- };
26
- }
@@ -1,22 +0,0 @@
1
- import { type EpochProofQuote, type P2PValidator, PeerErrorSeverity } from '@aztec/circuit-types';
2
- import { type EpochCacheInterface } from '@aztec/epoch-cache';
3
-
4
- export class EpochProofQuoteValidator implements P2PValidator<EpochProofQuote> {
5
- private epochCache: EpochCacheInterface;
6
-
7
- constructor(epochCache: EpochCacheInterface) {
8
- this.epochCache = epochCache;
9
- }
10
-
11
- validate(message: EpochProofQuote): Promise<PeerErrorSeverity | undefined> {
12
- const { epoch } = this.epochCache.getEpochAndSlotNow();
13
-
14
- // Check that the epoch proof quote is for the current epoch
15
- const epochToProve = message.payload.epochToProve;
16
- if (epochToProve !== epoch && epochToProve !== epoch - 1n) {
17
- return Promise.resolve(PeerErrorSeverity.HighToleranceError);
18
- }
19
-
20
- return Promise.resolve(undefined);
21
- }
22
- }
@@ -1 +0,0 @@
1
- export { EpochProofQuoteValidator } from './epoch_proof_quote_validator.js';