@aztec/p2p 0.57.0 → 0.58.0

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 (107) hide show
  1. package/dest/client/index.d.ts +4 -4
  2. package/dest/client/index.d.ts.map +1 -1
  3. package/dest/client/index.js +11 -9
  4. package/dest/client/p2p_client.d.ts +9 -10
  5. package/dest/client/p2p_client.d.ts.map +1 -1
  6. package/dest/client/p2p_client.js +375 -350
  7. package/dest/config.js +3 -3
  8. package/dest/index.d.ts +3 -3
  9. package/dest/index.d.ts.map +1 -1
  10. package/dest/index.js +4 -4
  11. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -0
  12. package/dest/{attestation_pool → mem_pools/attestation_pool}/attestation_pool.js +1 -1
  13. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -0
  14. package/dest/{attestation_pool → mem_pools/attestation_pool}/index.js +1 -1
  15. package/dest/{attestation_pool → mem_pools/attestation_pool}/memory_attestation_pool.d.ts +4 -1
  16. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -0
  17. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +114 -0
  18. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -0
  19. package/dest/mem_pools/attestation_pool/mocks.js +31 -0
  20. package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.d.ts.map +1 -0
  21. package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.js +2 -0
  22. package/dest/mem_pools/epoch_proof_quote_pool/index.d.ts.map +1 -0
  23. package/dest/{epoch_proof_quote_pool → mem_pools/epoch_proof_quote_pool}/index.js +1 -1
  24. package/dest/{epoch_proof_quote_pool → mem_pools/epoch_proof_quote_pool}/memory_epoch_proof_quote_pool.d.ts +3 -1
  25. package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.d.ts.map +1 -0
  26. package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.js +30 -0
  27. package/dest/mem_pools/epoch_proof_quote_pool/test_utils.d.ts.map +1 -0
  28. package/dest/mem_pools/epoch_proof_quote_pool/test_utils.js +21 -0
  29. package/dest/mem_pools/index.d.ts +5 -0
  30. package/dest/mem_pools/index.d.ts.map +1 -0
  31. package/dest/mem_pools/index.js +2 -0
  32. package/dest/mem_pools/instrumentation.d.ts +25 -0
  33. package/dest/mem_pools/instrumentation.d.ts.map +1 -0
  34. package/dest/mem_pools/instrumentation.js +70 -0
  35. package/dest/mem_pools/interface.d.ts +12 -0
  36. package/dest/mem_pools/interface.d.ts.map +1 -0
  37. package/dest/mem_pools/interface.js +2 -0
  38. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -0
  39. package/dest/{tx_pool → mem_pools/tx_pool}/aztec_kv_tx_pool.js +9 -9
  40. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -0
  41. package/dest/{tx_pool → mem_pools/tx_pool}/index.js +1 -1
  42. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -0
  43. package/dest/mem_pools/tx_pool/memory_tx_pool.js +111 -0
  44. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -0
  45. package/dest/{tx_pool → mem_pools/tx_pool}/tx_pool.js +1 -1
  46. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -0
  47. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +55 -0
  48. package/dest/service/libp2p_service.d.ts +12 -7
  49. package/dest/service/libp2p_service.d.ts.map +1 -1
  50. package/dest/service/libp2p_service.js +453 -381
  51. package/package.json +6 -6
  52. package/src/client/index.ts +16 -20
  53. package/src/client/p2p_client.ts +33 -10
  54. package/src/config.ts +2 -2
  55. package/src/index.ts +3 -3
  56. package/src/{attestation_pool → mem_pools/attestation_pool}/memory_attestation_pool.ts +40 -8
  57. package/src/{epoch_proof_quote_pool → mem_pools/epoch_proof_quote_pool}/memory_epoch_proof_quote_pool.ts +17 -1
  58. package/src/mem_pools/index.ts +4 -0
  59. package/src/mem_pools/instrumentation.ts +85 -0
  60. package/src/mem_pools/interface.ts +12 -0
  61. package/src/{tx_pool → mem_pools/tx_pool}/aztec_kv_tx_pool.ts +9 -9
  62. package/src/{tx_pool → mem_pools/tx_pool}/memory_tx_pool.ts +9 -9
  63. package/src/service/libp2p_service.ts +76 -18
  64. package/dest/attestation_pool/attestation_pool.d.ts.map +0 -1
  65. package/dest/attestation_pool/index.d.ts.map +0 -1
  66. package/dest/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  67. package/dest/attestation_pool/memory_attestation_pool.js +0 -89
  68. package/dest/attestation_pool/mocks.d.ts.map +0 -1
  69. package/dest/attestation_pool/mocks.js +0 -31
  70. package/dest/epoch_proof_quote_pool/epoch_proof_quote_pool.d.ts.map +0 -1
  71. package/dest/epoch_proof_quote_pool/epoch_proof_quote_pool.js +0 -2
  72. package/dest/epoch_proof_quote_pool/index.d.ts.map +0 -1
  73. package/dest/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.d.ts.map +0 -1
  74. package/dest/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.js +0 -22
  75. package/dest/epoch_proof_quote_pool/test_utils.d.ts.map +0 -1
  76. package/dest/epoch_proof_quote_pool/test_utils.js +0 -21
  77. package/dest/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  78. package/dest/tx_pool/index.d.ts.map +0 -1
  79. package/dest/tx_pool/instrumentation.d.ts +0 -25
  80. package/dest/tx_pool/instrumentation.d.ts.map +0 -1
  81. package/dest/tx_pool/instrumentation.js +0 -61
  82. package/dest/tx_pool/memory_tx_pool.d.ts.map +0 -1
  83. package/dest/tx_pool/memory_tx_pool.js +0 -111
  84. package/dest/tx_pool/tx_pool.d.ts.map +0 -1
  85. package/dest/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  86. package/dest/tx_pool/tx_pool_test_suite.js +0 -55
  87. package/src/tx_pool/instrumentation.ts +0 -73
  88. /package/dest/{attestation_pool → mem_pools/attestation_pool}/attestation_pool.d.ts +0 -0
  89. /package/dest/{attestation_pool → mem_pools/attestation_pool}/index.d.ts +0 -0
  90. /package/dest/{attestation_pool → mem_pools/attestation_pool}/mocks.d.ts +0 -0
  91. /package/dest/{epoch_proof_quote_pool → mem_pools/epoch_proof_quote_pool}/epoch_proof_quote_pool.d.ts +0 -0
  92. /package/dest/{epoch_proof_quote_pool → mem_pools/epoch_proof_quote_pool}/index.d.ts +0 -0
  93. /package/dest/{epoch_proof_quote_pool → mem_pools/epoch_proof_quote_pool}/test_utils.d.ts +0 -0
  94. /package/dest/{tx_pool → mem_pools/tx_pool}/aztec_kv_tx_pool.d.ts +0 -0
  95. /package/dest/{tx_pool → mem_pools/tx_pool}/index.d.ts +0 -0
  96. /package/dest/{tx_pool → mem_pools/tx_pool}/memory_tx_pool.d.ts +0 -0
  97. /package/dest/{tx_pool → mem_pools/tx_pool}/tx_pool.d.ts +0 -0
  98. /package/dest/{tx_pool → mem_pools/tx_pool}/tx_pool_test_suite.d.ts +0 -0
  99. /package/src/{attestation_pool → mem_pools/attestation_pool}/attestation_pool.ts +0 -0
  100. /package/src/{attestation_pool → mem_pools/attestation_pool}/index.ts +0 -0
  101. /package/src/{attestation_pool → mem_pools/attestation_pool}/mocks.ts +0 -0
  102. /package/src/{epoch_proof_quote_pool → mem_pools/epoch_proof_quote_pool}/epoch_proof_quote_pool.ts +0 -0
  103. /package/src/{epoch_proof_quote_pool → mem_pools/epoch_proof_quote_pool}/index.ts +0 -0
  104. /package/src/{epoch_proof_quote_pool → mem_pools/epoch_proof_quote_pool}/test_utils.ts +0 -0
  105. /package/src/{tx_pool → mem_pools/tx_pool}/index.ts +0 -0
  106. /package/src/{tx_pool → mem_pools/tx_pool}/tx_pool.ts +0 -0
  107. /package/src/{tx_pool → mem_pools/tx_pool}/tx_pool_test_suite.ts +0 -0
@@ -2,6 +2,7 @@ import {
2
2
  BlockAttestation,
3
3
  BlockProposal,
4
4
  type ClientProtocolCircuitVerifier,
5
+ EpochProofQuote,
5
6
  type Gossipable,
6
7
  type L2BlockSource,
7
8
  MerkleTreeId,
@@ -17,6 +18,7 @@ import { createDebugLogger } from '@aztec/foundation/log';
17
18
  import { SerialQueue } from '@aztec/foundation/queue';
18
19
  import { RunningPromise } from '@aztec/foundation/running-promise';
19
20
  import type { AztecKVStore } from '@aztec/kv-store';
21
+ import { Attributes, type TelemetryClient, WithTracer, trackSpan } from '@aztec/telemetry-client';
20
22
 
21
23
  import { type ENR } from '@chainsafe/enr';
22
24
  import { type GossipSub, type GossipSubComponents, gossipsub } from '@chainsafe/libp2p-gossipsub';
@@ -31,9 +33,8 @@ import { createFromJSON, createSecp256k1PeerId } from '@libp2p/peer-id-factory';
31
33
  import { tcp } from '@libp2p/tcp';
32
34
  import { createLibp2p } from 'libp2p';
33
35
 
34
- import { type AttestationPool } from '../attestation_pool/attestation_pool.js';
35
36
  import { type P2PConfig } from '../config.js';
36
- import { type TxPool } from '../tx_pool/index.js';
37
+ import { type MemPools } from '../mem_pools/interface.js';
37
38
  import {
38
39
  DataTxValidator,
39
40
  DoubleSpendTxValidator,
@@ -77,7 +78,7 @@ export async function createLibP2PPeerId(privateKey?: string): Promise<PeerId> {
77
78
  /**
78
79
  * Lib P2P implementation of the P2PService interface.
79
80
  */
80
- export class LibP2PService implements P2PService {
81
+ export class LibP2PService extends WithTracer implements P2PService {
81
82
  private jobQueue: SerialQueue = new SerialQueue();
82
83
  private peerManager: PeerManager;
83
84
  private discoveryRunningPromise?: RunningPromise;
@@ -96,14 +97,17 @@ export class LibP2PService implements P2PService {
96
97
  private config: P2PConfig,
97
98
  private node: PubSubLibp2p,
98
99
  private peerDiscoveryService: PeerDiscoveryService,
99
- private txPool: TxPool,
100
- private attestationPool: AttestationPool,
100
+ private mempools: MemPools,
101
101
  private l2BlockSource: L2BlockSource,
102
102
  private proofVerifier: ClientProtocolCircuitVerifier,
103
103
  private worldStateSynchronizer: WorldStateSynchronizer,
104
+ telemetry: TelemetryClient,
104
105
  private requestResponseHandlers: ReqRespSubProtocolHandlers = DEFAULT_SUB_PROTOCOL_HANDLERS,
105
106
  private logger = createDebugLogger('aztec:libp2p_service'),
106
107
  ) {
108
+ // Instatntiate tracer
109
+ super(telemetry, 'LibP2PService');
110
+
107
111
  this.peerManager = new PeerManager(node, peerDiscoveryService, config, logger);
108
112
  this.node.services.pubsub.score.params.appSpecificScore = (peerId: string) => {
109
113
  return this.peerManager.getPeerScore(peerId);
@@ -200,12 +204,12 @@ export class LibP2PService implements P2PService {
200
204
  config: P2PConfig,
201
205
  peerDiscoveryService: PeerDiscoveryService,
202
206
  peerId: PeerId,
203
- txPool: TxPool,
204
- attestationPool: AttestationPool,
207
+ mempools: MemPools,
205
208
  l2BlockSource: L2BlockSource,
206
209
  proofVerifier: ClientProtocolCircuitVerifier,
207
210
  worldStateSynchronizer: WorldStateSynchronizer,
208
211
  store: AztecKVStore,
212
+ telemetry: TelemetryClient,
209
213
  ) {
210
214
  const { tcpListenAddress, tcpAnnounceAddress, minPeerCount, maxPeerCount } = config;
211
215
  const bindAddrTcp = convertToMultiaddr(tcpListenAddress, 'tcp');
@@ -260,6 +264,21 @@ export class LibP2PService implements P2PService {
260
264
  invalidMessageDeliveriesWeight: -20,
261
265
  invalidMessageDeliveriesDecay: 0.5,
262
266
  }),
267
+ [BlockAttestation.p2pTopic]: createTopicScoreParams({
268
+ topicWeight: 1,
269
+ invalidMessageDeliveriesWeight: -20,
270
+ invalidMessageDeliveriesDecay: 0.5,
271
+ }),
272
+ [BlockAttestation.p2pTopic]: createTopicScoreParams({
273
+ topicWeight: 1,
274
+ invalidMessageDeliveriesWeight: -20,
275
+ invalidMessageDeliveriesDecay: 0.5,
276
+ }),
277
+ [EpochProofQuote.p2pTopic]: createTopicScoreParams({
278
+ topicWeight: 1,
279
+ invalidMessageDeliveriesWeight: -20,
280
+ invalidMessageDeliveriesDecay: 0.5,
281
+ }),
263
282
  },
264
283
  }),
265
284
  }) as (components: GossipSubComponents) => GossipSub,
@@ -274,7 +293,7 @@ export class LibP2PService implements P2PService {
274
293
  */
275
294
  const txHandler = (msg: Buffer): Promise<Uint8Array> => {
276
295
  const txHash = TxHash.fromBuffer(msg);
277
- const foundTx = txPool.getTxByHash(txHash);
296
+ const foundTx = mempools.txPool.getTxByHash(txHash);
278
297
  const asUint8Array = Uint8Array.from(foundTx ? foundTx.toBuffer() : Buffer.alloc(0));
279
298
  return Promise.resolve(asUint8Array);
280
299
  };
@@ -289,11 +308,11 @@ export class LibP2PService implements P2PService {
289
308
  config,
290
309
  node,
291
310
  peerDiscoveryService,
292
- txPool,
293
- attestationPool,
311
+ mempools,
294
312
  l2BlockSource,
295
313
  proofVerifier,
296
314
  worldStateSynchronizer,
315
+ telemetry,
297
316
  requestResponseHandlers,
298
317
  );
299
318
  }
@@ -372,6 +391,10 @@ export class LibP2PService implements P2PService {
372
391
  const block = BlockProposal.fromBuffer(Buffer.from(message.data));
373
392
  await this.processBlockFromPeer(block);
374
393
  }
394
+ if (message.topic == EpochProofQuote.p2pTopic) {
395
+ const epochProofQuote = EpochProofQuote.fromBuffer(Buffer.from(message.data));
396
+ this.processEpochProofQuoteFromPeer(epochProofQuote);
397
+ }
375
398
 
376
399
  return;
377
400
  }
@@ -381,9 +404,15 @@ export class LibP2PService implements P2PService {
381
404
  *
382
405
  * @param attestation - The attestation to process.
383
406
  */
407
+ @trackSpan('Libp2pService.processAttestationFromPeer', attestation => ({
408
+ [Attributes.BLOCK_NUMBER]: attestation.payload.header.globalVariables.blockNumber.toNumber(),
409
+ [Attributes.SLOT_NUMBER]: attestation.payload.header.globalVariables.slotNumber.toNumber(),
410
+ [Attributes.BLOCK_ARCHIVE]: attestation.archive.toString(),
411
+ [Attributes.P2P_ID]: attestation.p2pMessageIdentifier().toString(),
412
+ }))
384
413
  private async processAttestationFromPeer(attestation: BlockAttestation): Promise<void> {
385
- this.logger.verbose(`Received attestation ${attestation.p2pMessageIdentifier()} from external peer.`);
386
- await this.attestationPool.addAttestations([attestation]);
414
+ this.logger.debug(`Received attestation ${attestation.p2pMessageIdentifier()} from external peer.`);
415
+ await this.mempools.attestationPool.addAttestations([attestation]);
387
416
  }
388
417
 
389
418
  /**Process block from peer
@@ -393,6 +422,12 @@ export class LibP2PService implements P2PService {
393
422
  * @param block - The block to process.
394
423
  */
395
424
  // REVIEW: callback pattern https://github.com/AztecProtocol/aztec-packages/issues/7963
425
+ @trackSpan('Libp2pService.processBlockFromPeer', block => ({
426
+ [Attributes.BLOCK_NUMBER]: block.payload.header.globalVariables.blockNumber.toNumber(),
427
+ [Attributes.SLOT_NUMBER]: block.payload.header.globalVariables.slotNumber.toNumber(),
428
+ [Attributes.BLOCK_ARCHIVE]: block.archive.toString(),
429
+ [Attributes.P2P_ID]: block.p2pMessageIdentifier().toString(),
430
+ }))
396
431
  private async processBlockFromPeer(block: BlockProposal): Promise<void> {
397
432
  this.logger.verbose(`Received block ${block.p2pMessageIdentifier()} from external peer.`);
398
433
  const attestation = await this.blockReceivedCallback(block);
@@ -400,16 +435,39 @@ export class LibP2PService implements P2PService {
400
435
  // TODO: fix up this pattern - the abstraction is not nice
401
436
  // The attestation can be undefined if no handler is registered / the validator deems the block invalid
402
437
  if (attestation != undefined) {
403
- this.propagate(attestation);
438
+ this.logger.verbose(`Broadcasting attestation ${attestation.p2pMessageIdentifier()}`);
439
+ this.broadcastAttestation(attestation);
404
440
  }
405
441
  }
406
442
 
443
+ /**
444
+ * Broadcast an attestation to all peers.
445
+ * @param attestation - The attestation to broadcast.
446
+ */
447
+ @trackSpan('Libp2pService.broadcastAttestation', attestation => ({
448
+ [Attributes.BLOCK_NUMBER]: attestation.payload.header.globalVariables.blockNumber.toNumber(),
449
+ [Attributes.SLOT_NUMBER]: attestation.payload.header.globalVariables.slotNumber.toNumber(),
450
+ [Attributes.BLOCK_ARCHIVE]: attestation.archive.toString(),
451
+ [Attributes.P2P_ID]: attestation.p2pMessageIdentifier().toString(),
452
+ }))
453
+ private broadcastAttestation(attestation: BlockAttestation): void {
454
+ this.propagate(attestation);
455
+ }
456
+
457
+ private processEpochProofQuoteFromPeer(epochProofQuote: EpochProofQuote): void {
458
+ this.logger.verbose(`Received epoch proof quote ${epochProofQuote.p2pMessageIdentifier()} from external peer.`);
459
+ this.mempools.epochProofQuotePool.addQuote(epochProofQuote);
460
+ }
461
+
407
462
  /**
408
463
  * Propagates provided message to peers.
409
464
  * @param message - The message to propagate.
410
465
  */
411
466
  public propagate<T extends Gossipable>(message: T): void {
412
- void this.jobQueue.put(() => Promise.resolve(this.sendToPeers(message)));
467
+ this.logger.debug(`[${message.p2pMessageIdentifier()}] queued`);
468
+ void this.jobQueue.put(async () => {
469
+ await this.sendToPeers(message);
470
+ });
413
471
  }
414
472
 
415
473
  private async processTxFromPeer(tx: Tx, peerId: PeerId): Promise<void> {
@@ -420,7 +478,7 @@ export class LibP2PService implements P2PService {
420
478
  const isValidTx = await this.validatePropagatedTx(tx, peerId);
421
479
 
422
480
  if (isValidTx) {
423
- await this.txPool.addTxs([tx]);
481
+ await this.mempools.txPool.addTxs([tx]);
424
482
  }
425
483
  }
426
484
 
@@ -481,7 +539,7 @@ export class LibP2PService implements P2PService {
481
539
  // double spend validation
482
540
  const doubleSpendValidator = new DoubleSpendTxValidator({
483
541
  getNullifierIndex: async (nullifier: Fr) => {
484
- const merkleTree = this.worldStateSynchronizer.getLatest();
542
+ const merkleTree = this.worldStateSynchronizer.getCommitted();
485
543
  const index = await merkleTree.findLeafIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBuffer());
486
544
  return index;
487
545
  },
@@ -533,10 +591,10 @@ export class LibP2PService implements P2PService {
533
591
  const parent = message.constructor as typeof Gossipable;
534
592
 
535
593
  const identifier = message.p2pMessageIdentifier().toString();
536
- this.logger.verbose(`Sending message ${identifier} to peers`);
594
+ this.logger.verbose(`[${identifier}] sending`);
537
595
 
538
596
  const recipientsNum = await this.publishToTopic(parent.p2pTopic, message.toBuffer());
539
- this.logger.verbose(`Sent message ${identifier} to ${recipientsNum} peers`);
597
+ this.logger.verbose(`[${identifier}] sent to ${recipientsNum} peers`);
540
598
  }
541
599
 
542
600
  // Libp2p seems to hang sometimes if new peers are initiating connections.
@@ -1 +0,0 @@
1
- {"version":3,"file":"attestation_pool.d.ts","sourceRoot":"","sources":["../../src/attestation_pool/attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;;;;OAMG;IACH,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;;;;;;;OAQG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CACvF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/attestation_pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory_attestation_pool.d.ts","sourceRoot":"","sources":["../../src/attestation_pool/memory_attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,uBAAwB,YAAW,eAAe;IAGjD,OAAO,CAAC,GAAG;IAFvB,OAAO,CAAC,YAAY,CAAgG;gBAEhG,GAAG,yCAA8C;IAI9D,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAWrF,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhE,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtD,oCAAoC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASrF,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB3E"}
@@ -1,89 +0,0 @@
1
- import { createDebugLogger } from '@aztec/foundation/log';
2
- export class InMemoryAttestationPool {
3
- constructor(log = createDebugLogger('aztec:attestation_pool')) {
4
- this.log = log;
5
- this.attestations = new Map();
6
- }
7
- getAttestationsForSlot(slot, proposalId) {
8
- const slotAttestationMap = this.attestations.get(slot);
9
- if (slotAttestationMap) {
10
- const proposalAttestationMap = slotAttestationMap.get(proposalId);
11
- if (proposalAttestationMap) {
12
- return Promise.resolve(Array.from(proposalAttestationMap.values()));
13
- }
14
- }
15
- return Promise.resolve([]);
16
- }
17
- addAttestations(attestations) {
18
- for (const attestation of attestations) {
19
- // Perf: order and group by slot before insertion
20
- const slotNumber = attestation.payload.header.globalVariables.slotNumber;
21
- const proposalId = attestation.p2pMessageIdentifier().toString();
22
- const address = attestation.getSender();
23
- const slotAttestationMap = getSlotOrDefault(this.attestations, slotNumber.toBigInt());
24
- const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
25
- proposalAttestationMap.set(address.toString(), attestation);
26
- this.log.verbose(`Added attestation for slot ${slotNumber} from ${address}`);
27
- }
28
- return Promise.resolve();
29
- }
30
- deleteAttestationsForSlot(slot) {
31
- // TODO(md): check if this will free the memory of the inner hash map
32
- this.attestations.delete(slot);
33
- this.log.verbose(`Removed attestation for slot ${slot}`);
34
- return Promise.resolve();
35
- }
36
- deleteAttestationsForSlotAndProposal(slot, proposalId) {
37
- const slotAttestationMap = this.attestations.get(slot);
38
- if (slotAttestationMap) {
39
- slotAttestationMap.delete(proposalId);
40
- this.log.verbose(`Removed attestation for slot ${slot}`);
41
- }
42
- return Promise.resolve();
43
- }
44
- deleteAttestations(attestations) {
45
- for (const attestation of attestations) {
46
- const slotNumber = attestation.payload.header.globalVariables.slotNumber;
47
- const slotAttestationMap = this.attestations.get(slotNumber.toBigInt());
48
- if (slotAttestationMap) {
49
- const proposalId = attestation.p2pMessageIdentifier().toString();
50
- const proposalAttestationMap = getProposalOrDefault(slotAttestationMap, proposalId);
51
- if (proposalAttestationMap) {
52
- const address = attestation.getSender();
53
- proposalAttestationMap.delete(address.toString());
54
- this.log.debug(`Deleted attestation for slot ${slotNumber} from ${address}`);
55
- }
56
- }
57
- }
58
- return Promise.resolve();
59
- }
60
- }
61
- /**
62
- * Get Slot or Default
63
- *
64
- * Fetch the slot mapping, if it does not exist, then create a mapping and return it
65
- * @param map - The map to fetch from
66
- * @param slot - The slot to fetch
67
- * @returns The slot mapping
68
- */
69
- function getSlotOrDefault(map, slot) {
70
- if (!map.has(slot)) {
71
- map.set(slot, new Map());
72
- }
73
- return map.get(slot);
74
- }
75
- /**
76
- * Get Proposal or Default
77
- *
78
- * Fetch the proposal mapping, if it does not exist, then create a mapping and return it
79
- * @param map - The map to fetch from
80
- * @param proposalId - The proposal id to fetch
81
- * @returns The proposal mapping
82
- */
83
- function getProposalOrDefault(map, proposalId) {
84
- if (!map.has(proposalId)) {
85
- map.set(proposalId, new Map());
86
- }
87
- return map.get(proposalId);
88
- }
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X2F0dGVzdGF0aW9uX3Bvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXR0ZXN0YXRpb25fcG9vbC9tZW1vcnlfYXR0ZXN0YXRpb25fcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUkxRCxNQUFNLE9BQU8sdUJBQXVCO0lBR2xDLFlBQW9CLE1BQU0saUJBQWlCLENBQUMsd0JBQXdCLENBQUM7UUFBakQsUUFBRyxHQUFILEdBQUcsQ0FBOEM7UUFDbkUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxJQUFZLEVBQUUsVUFBa0I7UUFDNUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDdkIsTUFBTSxzQkFBc0IsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEUsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO2dCQUMzQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdEUsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLGVBQWUsQ0FBQyxZQUFnQztRQUNyRCxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ3ZDLGlEQUFpRDtZQUNqRCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO1lBRXpFLE1BQU0sVUFBVSxHQUFHLFdB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
@@ -1 +0,0 @@
1
- {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/attestation_pool/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA4B,MAAM,sBAAsB,CAAC;AAGlF,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAG9C;;;;GAIG;AACH,eAAO,MAAM,eAAe,yBAG3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,WAClB,iBAAiB,SACnB,MAAM,YACH,EAAE,KACV,QAAQ,gBAAgB,CAY1B,CAAC"}
@@ -1,31 +0,0 @@
1
- import { BlockAttestation, ConsensusPayload, TxHash } from '@aztec/circuit-types';
2
- import { makeHeader } from '@aztec/circuits.js/testing';
3
- import { Signature } from '@aztec/foundation/eth-signature';
4
- import { Fr } from '@aztec/foundation/fields';
5
- import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
6
- /** Generate Account
7
- *
8
- * Create a random signer
9
- * @returns A random viem signer
10
- */
11
- export const generateAccount = () => {
12
- const privateKey = generatePrivateKey();
13
- return privateKeyToAccount(privateKey);
14
- };
15
- /** Mock Attestation
16
- *
17
- * @param signer A viem signer to create a signature
18
- * @param slot The slot number the attestation is for
19
- * @returns A Block Attestation
20
- */
21
- export const mockAttestation = async (signer, slot = 0, archive = Fr.random()) => {
22
- // Use arbitrary numbers for all other than slot
23
- const header = makeHeader(1, 2, slot);
24
- const txs = [0, 1, 2, 3, 4, 5].map(() => TxHash.random());
25
- const payload = new ConsensusPayload(header, archive, txs);
26
- const message = `0x${payload.getPayloadToSign().toString('hex')}`;
27
- const sigString = await signer.signMessage({ message });
28
- const signature = Signature.from0xString(sigString);
29
- return new BlockAttestation(payload, signature);
30
- };
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXR0ZXN0YXRpb25fcG9vbC9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFO0lBQ2xDLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixFQUFFLENBQUM7SUFDeEMsT0FBTyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQ2xDLE1BQXlCLEVBQ3pCLE9BQWUsQ0FBQyxFQUNoQixVQUFjLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFDRSxFQUFFO0lBQzdCLGdEQUFnRDtJQUNoRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRTFELE1BQU0sT0FBTyxHQUFHLElBQUksZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUUzRCxNQUFNLE9BQU8sR0FBa0IsS0FBSyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUNqRixNQUFNLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRXhELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEQsT0FBTyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNsRCxDQUFDLENBQUMifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"epoch_proof_quote_pool.d.ts","sourceRoot":"","sources":["../../src/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hfcHJvb2ZfcXVvdGVfcG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcG9jaF9wcm9vZl9xdW90ZV9wb29sL2Vwb2NoX3Byb29mX3F1b3RlX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/epoch_proof_quote_pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,iBAAiB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory_epoch_proof_quote_pool.d.ts","sourceRoot":"","sources":["../../src/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,OAAO,CAAC,MAAM,CAAiC;;IAI/C,QAAQ,CAAC,KAAK,EAAE,eAAe;IAO/B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE;IAG3C,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAMzC"}
@@ -1,22 +0,0 @@
1
- export class MemoryEpochProofQuotePool {
2
- constructor() {
3
- this.quotes = new Map();
4
- }
5
- addQuote(quote) {
6
- const epoch = quote.payload.epochToProve;
7
- if (!this.quotes.has(epoch)) {
8
- this.quotes.set(epoch, []);
9
- }
10
- this.quotes.get(epoch).push(quote);
11
- }
12
- getQuotes(epoch) {
13
- return this.quotes.get(epoch) || [];
14
- }
15
- deleteQuotesToEpoch(epoch) {
16
- const expiredEpochs = Array.from(this.quotes.keys()).filter(k => k <= epoch);
17
- for (const expiredEpoch of expiredEpochs) {
18
- this.quotes.delete(expiredEpoch);
19
- }
20
- }
21
- }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X2Vwb2NoX3Byb29mX3F1b3RlX3Bvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXBvY2hfcHJvb2ZfcXVvdGVfcG9vbC9tZW1vcnlfZXBvY2hfcHJvb2ZfcXVvdGVfcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQU8seUJBQXlCO0lBRXBDO1FBQ0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxRQUFRLENBQUMsS0FBc0I7UUFDN0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxLQUFhO1FBQy9CLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztRQUM3RSxLQUFLLE1BQU0sWUFBWSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../src/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcG9jaF9wcm9vZl9xdW90ZV9wb29sL3Rlc3RfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFcEYsTUFBTSxVQUFVLGdDQUFnQztJQUM5QyxPQUFPLHNCQUFzQixDQUFDLElBQUksQ0FBQztRQUNqQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUMvQixVQUFVLEVBQUUsb0JBQW9CO1FBQ2hDLFlBQVksRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFO1FBQzNCLGNBQWMsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDO0tBQ3ZDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsT0FBZ0M7SUFJeEUsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBRXhDLE9BQU87UUFDTCxLQUFLLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxJQUFJLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxDQUFDO1FBQ3BHLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQyJ9
@@ -1 +0,0 @@
1
- {"version":3,"file":"aztec_kv_tx_pool.d.ts","sourceRoot":"","sources":["../../src/tx_pool/aztec_kv_tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,KAAK,MAAM,EAAqB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,YAAY,EAAgC,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,qBAAa,aAAc,YAAW,MAAM;;IAe1C;;;;OAIG;gBACS,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,SAAqC;IAU9F,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB9C,kBAAkB,IAAI,MAAM,EAAE;IAI9B,gBAAgB,IAAI,MAAM,EAAE;IAI5B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS;IAWnE;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS;IAKlD;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBvC;;;;OAIG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnD;;;OAGG;IACI,SAAS,IAAI,EAAE,EAAE;IAIxB;;;OAGG;IACI,cAAc,IAAI,MAAM,EAAE;CAGlC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tx_pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}
@@ -1,25 +0,0 @@
1
- import { type Tx } from '@aztec/circuit-types';
2
- import { type TelemetryClient } from '@aztec/telemetry-client';
3
- export type TxStatus = 'pending' | 'mined';
4
- /**
5
- * Instrumentation class for the TxPool.
6
- */
7
- export declare class TxPoolInstrumentation {
8
- /** The number of txs in the mempool */
9
- private txInMempool;
10
- /** Tracks tx size */
11
- private txSize;
12
- constructor(telemetry: TelemetryClient, name: string);
13
- recordTxSize(tx: Tx): void;
14
- /**
15
- * Updates the metrics with the new transactions.
16
- * @param txs - The transactions to record
17
- */
18
- recordAddedTxs(status: string, count?: number): void;
19
- /**
20
- * Updates the metrics by removing transactions from the mempool.
21
- * @param count - The number of transactions to remove from the mempool
22
- */
23
- recordRemovedTxs(status: string, count?: number): void;
24
- }
25
- //# sourceMappingURL=instrumentation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/tx_pool/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAuC,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAExH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3C;;GAEG;AACH,qBAAa,qBAAqB;IAChC,uCAAuC;IACvC,OAAO,CAAC,WAAW,CAAgB;IACnC,qBAAqB;IACrB,OAAO,CAAC,MAAM,CAAY;gBAEd,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM;IAuB7C,YAAY,CAAC,EAAE,EAAE,EAAE;IAI1B;;;OAGG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI;IAY/C;;;OAGG;IACI,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI;CAWlD"}
@@ -1,61 +0,0 @@
1
- import { Attributes, Metrics } from '@aztec/telemetry-client';
2
- /**
3
- * Instrumentation class for the TxPool.
4
- */
5
- export class TxPoolInstrumentation {
6
- constructor(telemetry, name) {
7
- const meter = telemetry.getMeter(name);
8
- this.txInMempool = meter.createUpDownCounter(Metrics.MEMPOOL_TX_COUNT, {
9
- description: 'The current number of transactions in the mempool',
10
- });
11
- this.txSize = meter.createHistogram(Metrics.MEMPOOL_TX_SIZE, {
12
- unit: 'By',
13
- description: 'The size of transactions in the mempool',
14
- advice: {
15
- explicitBucketBoundaries: [
16
- 5000, // 5KB
17
- 10000,
18
- 20000,
19
- 50000,
20
- 75000,
21
- 100000, // 100KB
22
- 200000,
23
- ],
24
- },
25
- });
26
- }
27
- recordTxSize(tx) {
28
- this.txSize.record(tx.getSize());
29
- }
30
- /**
31
- * Updates the metrics with the new transactions.
32
- * @param txs - The transactions to record
33
- */
34
- recordAddedTxs(status, count = 1) {
35
- if (count < 0) {
36
- throw new Error('Count must be positive');
37
- }
38
- if (count === 0) {
39
- return;
40
- }
41
- this.txInMempool.add(count, {
42
- [Attributes.STATUS]: status,
43
- });
44
- }
45
- /**
46
- * Updates the metrics by removing transactions from the mempool.
47
- * @param count - The number of transactions to remove from the mempool
48
- */
49
- recordRemovedTxs(status, count = 1) {
50
- if (count < 0) {
51
- throw new Error('Count must be positive');
52
- }
53
- if (count === 0) {
54
- return;
55
- }
56
- this.txInMempool.add(-1 * count, {
57
- [Attributes.STATUS]: status,
58
- });
59
- }
60
- }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4X3Bvb2wvaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQWtCLE9BQU8sRUFBNEMsTUFBTSx5QkFBeUIsQ0FBQztBQUl4SDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFNaEMsWUFBWSxTQUEwQixFQUFFLElBQVk7UUFDbEQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7WUFDckUsV0FBVyxFQUFFLG1EQUFtRDtTQUNqRSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUMzRCxJQUFJLEVBQUUsSUFBSTtZQUNWLFdBQVcsRUFBRSx5Q0FBeUM7WUFDdEQsTUFBTSxFQUFFO2dCQUNOLHdCQUF3QixFQUFFO29CQUN4QixJQUFLLEVBQUUsTUFBTTtvQkFDYixLQUFNO29CQUNOLEtBQU07b0JBQ04sS0FBTTtvQkFDTixLQUFNO29CQUNOLE1BQU8sRUFBRSxRQUFRO29CQUNqQixNQUFPO2lCQUNSO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLEVBQU07UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxNQUFjLEVBQUUsS0FBSyxHQUFHLENBQUM7UUFDN0MsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQzFCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU07U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxLQUFLLEdBQUcsQ0FBQztRQUMvQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUU7WUFDL0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory_tx_pool.d.ts","sourceRoot":"","sources":["../../src/tx_pool/memory_tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,qBAAa,cAAe,YAAW,MAAM;IAcH,OAAO,CAAC,GAAG;IAbnD;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,UAAU,CAAc;IAEhC,OAAO,CAAC,OAAO,CAAwB;IAEvC;;;OAGG;gBACS,SAAS,EAAE,eAAe,EAAU,GAAG,yCAAqC;IAOjF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9C,kBAAkB,IAAI,MAAM,EAAE;IAI9B,gBAAgB,IAAI,MAAM,EAAE;IAI5B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS;IAWnE;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS;IAKlD;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBvC;;;;OAIG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnD;;;OAGG;IACI,SAAS,IAAI,EAAE,EAAE;IAIxB;;;OAGG;IACI,cAAc,IAAI,MAAM,EAAE;CAGlC"}