@aztec/p2p 0.0.1-commit.03f7ef2 → 0.0.1-commit.1142ef1

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 (191) hide show
  1. package/dest/client/factory.js +1 -1
  2. package/dest/client/interface.d.ts +18 -5
  3. package/dest/client/interface.d.ts.map +1 -1
  4. package/dest/client/p2p_client.d.ts +10 -13
  5. package/dest/client/p2p_client.d.ts.map +1 -1
  6. package/dest/client/p2p_client.js +450 -119
  7. package/dest/config.d.ts +4 -7
  8. package/dest/config.d.ts.map +1 -1
  9. package/dest/config.js +6 -9
  10. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +61 -42
  11. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  12. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
  13. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  14. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +225 -262
  15. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +21 -18
  16. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  17. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +113 -108
  18. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +17 -16
  19. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  20. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +89 -128
  21. package/dest/mem_pools/attestation_pool/mocks.d.ts +7 -6
  22. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  23. package/dest/mem_pools/attestation_pool/mocks.js +9 -8
  24. package/dest/mem_pools/instrumentation.d.ts +3 -3
  25. package/dest/mem_pools/instrumentation.d.ts.map +1 -1
  26. package/dest/mem_pools/instrumentation.js +10 -17
  27. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +28 -24
  28. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  29. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +260 -325
  30. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +18 -0
  31. package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -0
  32. package/dest/mem_pools/tx_pool/eviction/eviction_manager.js +56 -0
  33. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +83 -0
  34. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -0
  35. package/dest/mem_pools/tx_pool/eviction/eviction_strategy.js +5 -0
  36. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts +15 -0
  37. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.d.ts.map +1 -0
  38. package/dest/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.js +88 -0
  39. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts +17 -0
  40. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.d.ts.map +1 -0
  41. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +84 -0
  42. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +19 -0
  43. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -0
  44. package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +76 -0
  45. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts +26 -0
  46. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.d.ts.map +1 -0
  47. package/dest/mem_pools/tx_pool/eviction/low_priority_eviction_rule.js +84 -0
  48. package/dest/mem_pools/tx_pool/index.d.ts +1 -2
  49. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -1
  50. package/dest/mem_pools/tx_pool/index.js +0 -1
  51. package/dest/mem_pools/tx_pool/priority.d.ts +5 -1
  52. package/dest/mem_pools/tx_pool/priority.d.ts.map +1 -1
  53. package/dest/mem_pools/tx_pool/priority.js +6 -1
  54. package/dest/mem_pools/tx_pool/tx_pool.d.ts +8 -4
  55. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  56. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +7 -7
  57. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -4
  58. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
  59. package/dest/msg_validators/attestation_validator/attestation_validator.js +12 -10
  60. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -5
  61. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
  62. package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +7 -10
  63. package/dest/msg_validators/index.d.ts +2 -2
  64. package/dest/msg_validators/index.d.ts.map +1 -1
  65. package/dest/msg_validators/index.js +1 -1
  66. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
  67. package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
  68. package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
  69. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
  70. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
  71. package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
  72. package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
  73. package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
  74. package/dest/msg_validators/proposal_validator/index.js +3 -0
  75. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
  76. package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
  77. package/dest/msg_validators/{block_proposal_validator/block_proposal_validator.js → proposal_validator/proposal_validator.js} +19 -21
  78. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
  79. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
  80. package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +183 -0
  81. package/dest/msg_validators/tx_validator/data_validator.d.ts +1 -1
  82. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  83. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +1 -1
  84. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  85. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +1 -1
  86. package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
  87. package/dest/services/dummy_service.d.ts +6 -2
  88. package/dest/services/dummy_service.d.ts.map +1 -1
  89. package/dest/services/dummy_service.js +3 -0
  90. package/dest/services/encoding.d.ts +1 -1
  91. package/dest/services/encoding.d.ts.map +1 -1
  92. package/dest/services/encoding.js +4 -2
  93. package/dest/services/libp2p/instrumentation.d.ts +1 -1
  94. package/dest/services/libp2p/instrumentation.d.ts.map +1 -1
  95. package/dest/services/libp2p/instrumentation.js +15 -68
  96. package/dest/services/libp2p/libp2p_service.d.ts +27 -10
  97. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  98. package/dest/services/libp2p/libp2p_service.js +696 -137
  99. package/dest/services/peer-manager/metrics.d.ts +6 -1
  100. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  101. package/dest/services/peer-manager/metrics.js +18 -21
  102. package/dest/services/peer-manager/peer_manager.d.ts +2 -2
  103. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  104. package/dest/services/peer-manager/peer_manager.js +2 -10
  105. package/dest/services/peer-manager/peer_scoring.d.ts +1 -1
  106. package/dest/services/peer-manager/peer_scoring.d.ts.map +1 -1
  107. package/dest/services/peer-manager/peer_scoring.js +2 -5
  108. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +1 -1
  109. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  110. package/dest/services/reqresp/metrics.d.ts +1 -1
  111. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  112. package/dest/services/reqresp/metrics.js +5 -21
  113. package/dest/services/reqresp/protocols/status.d.ts +1 -1
  114. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  115. package/dest/services/reqresp/protocols/status.js +2 -0
  116. package/dest/services/reqresp/reqresp.js +402 -24
  117. package/dest/services/service.d.ts +16 -3
  118. package/dest/services/service.d.ts.map +1 -1
  119. package/dest/services/tx_collection/instrumentation.d.ts +1 -1
  120. package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
  121. package/dest/services/tx_collection/instrumentation.js +4 -14
  122. package/dest/services/tx_provider.d.ts +1 -1
  123. package/dest/services/tx_provider.d.ts.map +1 -1
  124. package/dest/services/tx_provider.js +3 -1
  125. package/dest/services/tx_provider_instrumentation.d.ts +1 -1
  126. package/dest/services/tx_provider_instrumentation.d.ts.map +1 -1
  127. package/dest/services/tx_provider_instrumentation.js +6 -19
  128. package/dest/testbench/p2p_client_testbench_worker.js +26 -11
  129. package/dest/testbench/worker_client_manager.d.ts +1 -1
  130. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  131. package/dest/testbench/worker_client_manager.js +6 -1
  132. package/package.json +14 -14
  133. package/src/client/factory.ts +1 -1
  134. package/src/client/interface.ts +19 -4
  135. package/src/client/p2p_client.ts +79 -129
  136. package/src/config.ts +8 -14
  137. package/src/mem_pools/attestation_pool/attestation_pool.ts +68 -41
  138. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +231 -287
  139. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +162 -140
  140. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +141 -164
  141. package/src/mem_pools/attestation_pool/mocks.ts +13 -9
  142. package/src/mem_pools/instrumentation.ts +18 -25
  143. package/src/mem_pools/tx_pool/README.md +255 -0
  144. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +307 -370
  145. package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +71 -0
  146. package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +93 -0
  147. package/src/mem_pools/tx_pool/eviction/insufficient_fee_payer_balance_rule.ts +108 -0
  148. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +104 -0
  149. package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +91 -0
  150. package/src/mem_pools/tx_pool/eviction/low_priority_eviction_rule.ts +106 -0
  151. package/src/mem_pools/tx_pool/index.ts +0 -1
  152. package/src/mem_pools/tx_pool/priority.ts +8 -1
  153. package/src/mem_pools/tx_pool/tx_pool.ts +8 -3
  154. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +7 -7
  155. package/src/msg_validators/attestation_validator/attestation_validator.ts +16 -13
  156. package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +9 -12
  157. package/src/msg_validators/index.ts +1 -1
  158. package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
  159. package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
  160. package/src/msg_validators/proposal_validator/index.ts +3 -0
  161. package/src/msg_validators/{block_proposal_validator/block_proposal_validator.ts → proposal_validator/proposal_validator.ts} +23 -28
  162. package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +206 -0
  163. package/src/msg_validators/tx_validator/data_validator.ts +12 -4
  164. package/src/msg_validators/tx_validator/metadata_validator.ts +12 -4
  165. package/src/msg_validators/tx_validator/timestamp_validator.ts +3 -1
  166. package/src/services/dummy_service.ts +6 -0
  167. package/src/services/encoding.ts +3 -1
  168. package/src/services/libp2p/instrumentation.ts +14 -68
  169. package/src/services/libp2p/libp2p_service.ts +324 -100
  170. package/src/services/peer-manager/metrics.ts +22 -21
  171. package/src/services/peer-manager/peer_manager.ts +3 -2
  172. package/src/services/peer-manager/peer_scoring.ts +1 -5
  173. package/src/services/reqresp/connection-sampler/connection_sampler.ts +3 -1
  174. package/src/services/reqresp/metrics.ts +7 -23
  175. package/src/services/reqresp/protocols/status.ts +2 -1
  176. package/src/services/service.ts +19 -4
  177. package/src/services/tx_collection/instrumentation.ts +4 -21
  178. package/src/services/tx_provider.ts +4 -1
  179. package/src/services/tx_provider_instrumentation.ts +11 -24
  180. package/src/testbench/p2p_client_testbench_worker.ts +35 -11
  181. package/src/testbench/worker_client_manager.ts +6 -1
  182. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -81
  183. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
  184. package/dest/mem_pools/tx_pool/memory_tx_pool.js +0 -242
  185. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
  186. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
  187. package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
  188. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
  189. package/dest/msg_validators/block_proposal_validator/index.js +0 -1
  190. package/src/mem_pools/tx_pool/memory_tx_pool.ts +0 -288
  191. package/src/msg_validators/block_proposal_validator/index.ts +0 -1
@@ -1,14 +1,16 @@
1
1
  import {
2
2
  Attributes,
3
3
  type Gauge,
4
+ type Histogram,
4
5
  Metrics,
5
6
  type TelemetryClient,
6
7
  type Tracer,
7
8
  type UpDownCounter,
8
- ValueType,
9
9
  getTelemetryClient,
10
10
  } from '@aztec/telemetry-client';
11
11
 
12
+ import type { PeerId } from '@libp2p/interface';
13
+
12
14
  import { type GoodByeReason, prettyGoodbyeReason } from '../reqresp/protocols/index.js';
13
15
 
14
16
  export class PeerManagerMetrics {
@@ -16,6 +18,9 @@ export class PeerManagerMetrics {
16
18
  private receivedGoodbyes: UpDownCounter;
17
19
  private peerCount: Gauge;
18
20
  private lowScoreDisconnects: UpDownCounter;
21
+ private peerConnectionDuration: Histogram;
22
+
23
+ private peerConnectedAt: Map<string, number> = new Map<string, number>();
19
24
 
20
25
  public readonly tracer: Tracer;
21
26
 
@@ -26,26 +31,11 @@ export class PeerManagerMetrics {
26
31
  this.tracer = telemetryClient.getTracer(name);
27
32
 
28
33
  const meter = telemetryClient.getMeter(name);
29
- this.sentGoodbyes = meter.createUpDownCounter(Metrics.PEER_MANAGER_GOODBYES_SENT, {
30
- description: 'Number of goodbyes sent to peers',
31
- unit: 'peers',
32
- valueType: ValueType.INT,
33
- });
34
- this.receivedGoodbyes = meter.createUpDownCounter(Metrics.PEER_MANAGER_GOODBYES_RECEIVED, {
35
- description: 'Number of goodbyes received from peers',
36
- unit: 'peers',
37
- valueType: ValueType.INT,
38
- });
39
- this.peerCount = meter.createGauge(Metrics.PEER_MANAGER_PEER_COUNT, {
40
- description: 'Number of peers',
41
- unit: 'peers',
42
- valueType: ValueType.INT,
43
- });
44
- this.lowScoreDisconnects = meter.createUpDownCounter(Metrics.PEER_MANAGER_LOW_SCORE_DISCONNECTS, {
45
- description: 'Number of peers disconnected due to low score',
46
- unit: 'peers',
47
- valueType: ValueType.INT,
48
- });
34
+ this.sentGoodbyes = meter.createUpDownCounter(Metrics.PEER_MANAGER_GOODBYES_SENT);
35
+ this.receivedGoodbyes = meter.createUpDownCounter(Metrics.PEER_MANAGER_GOODBYES_RECEIVED);
36
+ this.peerCount = meter.createGauge(Metrics.PEER_MANAGER_PEER_COUNT);
37
+ this.lowScoreDisconnects = meter.createUpDownCounter(Metrics.PEER_MANAGER_LOW_SCORE_DISCONNECTS);
38
+ this.peerConnectionDuration = meter.createHistogram(Metrics.PEER_MANAGER_PEER_CONNECTION_DURATION);
49
39
  }
50
40
 
51
41
  public recordGoodbyeSent(reason: GoodByeReason) {
@@ -63,4 +53,15 @@ export class PeerManagerMetrics {
63
53
  public recordLowScoreDisconnect(scoreState: 'Banned' | 'Disconnect') {
64
54
  this.lowScoreDisconnects.add(1, { [Attributes.P2P_PEER_SCORE_STATE]: scoreState });
65
55
  }
56
+
57
+ public peerConnected(id: PeerId) {
58
+ this.peerConnectedAt.set(id.toString(), Date.now());
59
+ }
60
+
61
+ public peerDisconnected(id: PeerId) {
62
+ const connectedAt = this.peerConnectedAt.get(id.toString());
63
+ if (connectedAt) {
64
+ this.peerConnectionDuration.record(Date.now() - connectedAt);
65
+ }
66
+ }
66
67
  }
@@ -7,7 +7,7 @@ import { bufferToHex } from '@aztec/foundation/string';
7
7
  import { DateProvider } from '@aztec/foundation/timer';
8
8
  import type { PeerInfo, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
9
9
  import type { PeerErrorSeverity } from '@aztec/stdlib/p2p';
10
- import { type TelemetryClient, trackSpan } from '@aztec/telemetry-client';
10
+ import type { TelemetryClient } from '@aztec/telemetry-client';
11
11
 
12
12
  import type { Connection, PeerId } from '@libp2p/interface';
13
13
  import { peerIdFromString } from '@libp2p/peer-id';
@@ -161,7 +161,6 @@ export class PeerManager implements PeerManagerInterface {
161
161
  return this.metrics.tracer;
162
162
  }
163
163
 
164
- @trackSpan('PeerManager.heartbeat')
165
164
  public async heartbeat() {
166
165
  this.heartbeatCounter++;
167
166
  this.peerScoring.decayAllScores();
@@ -278,6 +277,7 @@ export class PeerManager implements PeerManagerInterface {
278
277
  private handleConnectedPeerEvent(e: CustomEvent<PeerId>) {
279
278
  const peerId = e.detail;
280
279
  this.logger.verbose(`Connected to peer ${peerId.toString()}`);
280
+ this.metrics.peerConnected(peerId);
281
281
  if (this.config.p2pDisableStatusHandshake) {
282
282
  return;
283
283
  }
@@ -303,6 +303,7 @@ export class PeerManager implements PeerManagerInterface {
303
303
  */
304
304
  private handleDisconnectedPeerEvent(e: CustomEvent<PeerId>) {
305
305
  const peerId = e.detail;
306
+ this.metrics.peerDisconnected(peerId);
306
307
  this.logger.verbose(`Disconnected from peer ${peerId.toString()}`);
307
308
  const validatorAddress = this.authenticatedPeerIdToValidatorAddress.get(peerId.toString());
308
309
  if (validatorAddress !== undefined) {
@@ -6,7 +6,6 @@ import {
6
6
  Metrics,
7
7
  type TelemetryClient,
8
8
  type UpDownCounter,
9
- ValueType,
10
9
  getTelemetryClient,
11
10
  } from '@aztec/telemetry-client';
12
11
 
@@ -53,10 +52,7 @@ export class PeerScoring {
53
52
 
54
53
  const meter = telemetry.getMeter('PeerScoring');
55
54
 
56
- this.peerStateCounter = meter.createUpDownCounter(Metrics.P2P_PEER_STATE_COUNT, {
57
- description: 'Count of peers by state (Healthy, Disconnect, Banned)',
58
- valueType: ValueType.INT,
59
- });
55
+ this.peerStateCounter = meter.createUpDownCounter(Metrics.P2P_PEER_STATE_COUNT);
60
56
  }
61
57
 
62
58
  public penalizePeer(peerId: PeerId, penalty: PeerErrorSeverity) {
@@ -261,7 +261,9 @@ export class ConnectionSampler {
261
261
  }
262
262
  } catch (error) {
263
263
  this.logger.error(
264
- `Error cleaning up stale connection to peer ${stream.metadata.peerId?.toString() ?? 'unknown'} stream ${stream.id}`,
264
+ `Error cleaning up stale connection to peer ${stream.metadata.peerId?.toString() ?? 'unknown'} stream ${
265
+ stream.id
266
+ }`,
265
267
  { error },
266
268
  );
267
269
  }
@@ -1,5 +1,5 @@
1
1
  // Request response metrics
2
- import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
2
+ import { Attributes, Metrics } from '@aztec/telemetry-client';
3
3
  import type { TelemetryClient, Tracer, UpDownCounter } from '@aztec/telemetry-client';
4
4
 
5
5
  export class ReqRespMetrics {
@@ -18,28 +18,12 @@ export class ReqRespMetrics {
18
18
  this.tracer = telemetryClient.getTracer(name);
19
19
 
20
20
  const meter = telemetryClient.getMeter(name);
21
- this.sentRequests = meter.createUpDownCounter(Metrics.P2P_REQ_RESP_SENT_REQUESTS, {
22
- description: 'Number of requests sent to peers',
23
- unit: 'requests',
24
- valueType: ValueType.INT,
25
- });
26
- this.receivedRequests = meter.createUpDownCounter(Metrics.P2P_REQ_RESP_RECEIVED_REQUESTS, {
27
- description: 'Number of requests received from peers',
28
- unit: 'requests',
29
- valueType: ValueType.INT,
30
- });
31
-
32
- this.failedOutboundRequests = meter.createUpDownCounter(Metrics.P2P_REQ_RESP_FAILED_OUTBOUND_REQUESTS, {
33
- description: 'Number of failed outbound requests - nodes not getting valid responses',
34
- unit: 'requests',
35
- valueType: ValueType.INT,
36
- });
37
-
38
- this.failedInboundRequests = meter.createUpDownCounter(Metrics.P2P_REQ_RESP_FAILED_INBOUND_REQUESTS, {
39
- description: 'Number of failed inbound requests - node failing to respond to requests',
40
- unit: 'requests',
41
- valueType: ValueType.INT,
42
- });
21
+ this.sentRequests = meter.createUpDownCounter(Metrics.P2P_REQ_RESP_SENT_REQUESTS);
22
+ this.receivedRequests = meter.createUpDownCounter(Metrics.P2P_REQ_RESP_RECEIVED_REQUESTS);
23
+
24
+ this.failedOutboundRequests = meter.createUpDownCounter(Metrics.P2P_REQ_RESP_FAILED_OUTBOUND_REQUESTS);
25
+
26
+ this.failedInboundRequests = meter.createUpDownCounter(Metrics.P2P_REQ_RESP_FAILED_INBOUND_REQUESTS);
43
27
  }
44
28
 
45
29
  public recordRequestSent(protocol: string) {
@@ -19,9 +19,10 @@ export class StatusMessage {
19
19
  readonly latestBlockNumber: BlockNumber,
20
20
  readonly latestBlockHash: string,
21
21
  readonly finalizedBlockNumber: BlockNumber,
22
+ ) {
22
23
  //TODO: add finalizedBlockHash
23
24
  //readonly finalizedBlockHash: string,
24
- ) {}
25
+ }
25
26
 
26
27
  /**
27
28
  * Deserializes the StatusMessage object from a Buffer.
@@ -1,6 +1,6 @@
1
1
  import type { EthAddress } from '@aztec/foundation/eth-address';
2
2
  import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
3
- import type { BlockAttestation, BlockProposal, Gossipable } from '@aztec/stdlib/p2p';
3
+ import type { BlockProposal, CheckpointAttestation, CheckpointProposalCore, Gossipable } from '@aztec/stdlib/p2p';
4
4
  import type { Tx } from '@aztec/stdlib/tx';
5
5
 
6
6
  import type { PeerId } from '@libp2p/interface';
@@ -22,10 +22,23 @@ export enum PeerDiscoveryState {
22
22
  STOPPED = 'stopped',
23
23
  }
24
24
 
25
- export type P2PBlockReceivedCallback = (
26
- block: BlockProposal,
25
+ /**
26
+ * Callback for when a block proposal is received.
27
+ * Validators validate but DO NOT attest to individual blocks - attestations are only for checkpoints.
28
+ * @returns true if the proposal is valid, false otherwise
29
+ */
30
+ export type P2PBlockReceivedCallback = (block: BlockProposal, sender: PeerId) => Promise<boolean>;
31
+
32
+ /**
33
+ * Callback for when a checkpoint proposal is received.
34
+ * The checkpoint proposal is passed as CheckpointProposalCore (without lastBlock) since
35
+ * the lastBlock is extracted and stored separately as a BlockProposal, and the block
36
+ * callback is invoked and awaited before this checkpoint callback.
37
+ */
38
+ export type P2PCheckpointReceivedCallback = (
39
+ checkpoint: CheckpointProposalCore,
27
40
  sender: PeerId,
28
- ) => Promise<BlockAttestation[] | undefined>;
41
+ ) => Promise<CheckpointAttestation[] | undefined>;
29
42
 
30
43
  export type AuthReceivedCallback = (peerId: PeerId, authRequest: AuthRequest) => Promise<AuthResponse | undefined>;
31
44
 
@@ -70,6 +83,8 @@ export interface P2PService {
70
83
  // Leaky abstraction: fix https://github.com/AztecProtocol/aztec-packages/issues/7963
71
84
  registerBlockReceivedCallback(callback: P2PBlockReceivedCallback): void;
72
85
 
86
+ registerCheckpointReceivedCallback(callback: P2PCheckpointReceivedCallback): void;
87
+
73
88
  getEnr(): ENR | undefined;
74
89
 
75
90
  getPeers(includePending?: boolean): PeerInfo[];
@@ -1,11 +1,4 @@
1
- import {
2
- Attributes,
3
- type Histogram,
4
- Metrics,
5
- type TelemetryClient,
6
- type UpDownCounter,
7
- ValueType,
8
- } from '@aztec/telemetry-client';
1
+ import { Attributes, type Histogram, Metrics, type TelemetryClient, type UpDownCounter } from '@aztec/telemetry-client';
9
2
 
10
3
  import type { CollectionMethod } from './tx_collection.js';
11
4
 
@@ -17,21 +10,11 @@ export class TxCollectionInstrumentation {
17
10
  constructor(client: TelemetryClient, name: string) {
18
11
  const meter = client.getMeter(name);
19
12
 
20
- this.txsCollected = meter.createUpDownCounter(Metrics.TX_COLLECTOR_COUNT, {
21
- description: 'The number of txs collected',
22
- });
13
+ this.txsCollected = meter.createUpDownCounter(Metrics.TX_COLLECTOR_COUNT);
23
14
 
24
- this.collectionDurationPerTx = meter.createHistogram(Metrics.TX_COLLECTOR_DURATION_PER_TX, {
25
- unit: 'ms',
26
- description: 'Average duration per tx of an individual tx collection request',
27
- valueType: ValueType.INT,
28
- });
15
+ this.collectionDurationPerTx = meter.createHistogram(Metrics.TX_COLLECTOR_DURATION_PER_TX);
29
16
 
30
- this.collectionDurationPerRequest = meter.createHistogram(Metrics.TX_COLLECTOR_DURATION_PER_REQUEST, {
31
- unit: 'ms',
32
- description: 'Total duration of an individual tx collection request',
33
- valueType: ValueType.INT,
34
- });
17
+ this.collectionDurationPerRequest = meter.createHistogram(Metrics.TX_COLLECTOR_DURATION_PER_REQUEST);
35
18
  }
36
19
 
37
20
  increaseTxsFor(what: CollectionMethod, count: number, duration: number) {
@@ -137,6 +137,7 @@ export class TxProvider implements ITxProvider {
137
137
  );
138
138
 
139
139
  if (missingTxHashes.size === 0) {
140
+ this.instrumentation.incTxsFromP2P(0, txHashes.length);
140
141
  return { txsFromMempool };
141
142
  }
142
143
 
@@ -155,6 +156,7 @@ export class TxProvider implements ITxProvider {
155
156
 
156
157
  if (missingTxHashes.size === 0) {
157
158
  await this.processProposalTxs(txsFromProposal);
159
+ this.instrumentation.incTxsFromP2P(0, txHashes.length);
158
160
  return { txsFromMempool, txsFromProposal };
159
161
  }
160
162
 
@@ -166,13 +168,14 @@ export class TxProvider implements ITxProvider {
166
168
 
167
169
  if (txsFromNetwork.length > 0) {
168
170
  txsFromNetwork.forEach(tx => missingTxHashes.delete(tx.txHash.toString()));
169
- this.instrumentation.incTxsFromP2P(txsFromNetwork.length, txHashes.length);
170
171
  this.log.debug(
171
172
  `Retrieved ${txsFromNetwork.length} txs from network for block proposal (${missingTxHashes.size} pending)`,
172
173
  { ...blockInfo, missingTxHashes: [...missingTxHashes] },
173
174
  );
174
175
  }
175
176
 
177
+ this.instrumentation.incTxsFromP2P(txsFromNetwork.length, txHashes.length);
178
+
176
179
  if (missingTxHashes.size === 0) {
177
180
  return { txsFromNetwork, txsFromMempool, txsFromProposal };
178
181
  }
@@ -12,30 +12,17 @@ export class TxProviderInstrumentation {
12
12
  constructor(client: TelemetryClient, name: string) {
13
13
  const meter = client.getMeter(name);
14
14
 
15
- this.txFromProposalCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_PROPOSALS_COUNT, {
16
- description: 'The number of txs taken from block proposals',
17
- });
18
-
19
- this.txFromMempoolCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_MEMPOOL_COUNT, {
20
- description: 'The number of txs taken from the local mempool',
21
- });
22
-
23
- this.txFromP2PCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_P2P_COUNT, {
24
- description: 'The number of txs taken from the p2p network',
25
- });
26
-
27
- this.missingTxsCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_MISSING_TXS_COUNT, {
28
- description: 'The number of txs not found anywhere',
29
- });
30
-
31
- this.fractionOfTxsRequestedFromP2P = meter.createHistogram(Metrics.TX_PROVIDER_P2P_TXS_REQUESTED_FRACTION, {
32
- description: 'The fraction of transaction requested from peers',
33
- });
34
-
35
- this.txsRequestDelay = meter.createHistogram(Metrics.TX_PROVIDER_P2P_TXS_REQUEST_DELAY, {
36
- unit: 'ms',
37
- description: 'The time it took to request missing transactions from p2p',
38
- });
15
+ this.txFromProposalCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_PROPOSALS_COUNT);
16
+
17
+ this.txFromMempoolCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_MEMPOOL_COUNT);
18
+
19
+ this.txFromP2PCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_TXS_FROM_P2P_COUNT);
20
+
21
+ this.missingTxsCount = meter.createUpDownCounter(Metrics.TX_PROVIDER_MISSING_TXS_COUNT);
22
+
23
+ this.fractionOfTxsRequestedFromP2P = meter.createHistogram(Metrics.TX_PROVIDER_P2P_TXS_REQUESTED_FRACTION);
24
+
25
+ this.txsRequestDelay = meter.createHistogram(Metrics.TX_PROVIDER_P2P_TXS_REQUEST_DELAY);
39
26
  }
40
27
 
41
28
  incTxsFromProposals(count: number) {
@@ -6,6 +6,7 @@
6
6
  import { MockL2BlockSource } from '@aztec/archiver/test';
7
7
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
8
8
  import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
9
+ import { SecretValue } from '@aztec/foundation/config';
9
10
  import { EthAddress } from '@aztec/foundation/eth-address';
10
11
  import { createLogger } from '@aztec/foundation/log';
11
12
  import { sleep } from '@aztec/foundation/sleep';
@@ -56,6 +57,7 @@ function mockTxPool(): TxPool {
56
57
  hasTx: () => Promise.resolve(false),
57
58
  updateConfig: () => {},
58
59
  markTxsAsNonEvictable: () => Promise.resolve(),
60
+ clearNonEvictableTxs: () => Promise.resolve(),
59
61
  cleanupDeletedMinedTxs: () => Promise.resolve(0),
60
62
  };
61
63
  return Object.assign(new EventEmitter(), pool);
@@ -64,19 +66,23 @@ function mockTxPool(): TxPool {
64
66
  function mockAttestationPool(): AttestationPool {
65
67
  return {
66
68
  isEmpty: () => Promise.resolve(false),
67
- addAttestations: () => Promise.resolve(),
68
- deleteAttestations: () => Promise.resolve(),
69
- deleteAttestationsOlderThan: () => Promise.resolve(),
70
- deleteAttestationsForSlot: () => Promise.resolve(),
71
- deleteAttestationsForSlotAndProposal: () => Promise.resolve(),
72
- getAttestationsForSlot: () => Promise.resolve([]),
73
- getAttestationsForSlotAndProposal: () => Promise.resolve([]),
74
69
  addBlockProposal: () => Promise.resolve(),
75
70
  getBlockProposal: () => Promise.resolve(undefined),
76
71
  hasBlockProposal: () => Promise.resolve(false),
77
- hasAttestation: () => Promise.resolve(false),
78
72
  canAddProposal: () => Promise.resolve(true),
79
- canAddAttestation: () => Promise.resolve(true),
73
+ // Checkpoint attestation methods
74
+ addCheckpointProposal: () => Promise.resolve(),
75
+ getCheckpointProposal: () => Promise.resolve(undefined),
76
+ hasCheckpointProposal: () => Promise.resolve(false),
77
+ addCheckpointAttestations: () => Promise.resolve(),
78
+ getCheckpointAttestationsForSlot: () => Promise.resolve([]),
79
+ getCheckpointAttestationsForSlotAndProposal: () => Promise.resolve([]),
80
+ deleteCheckpointAttestationsOlderThan: () => Promise.resolve(),
81
+ hasReachedCheckpointProposalCap: () => Promise.resolve(false),
82
+ hasReachedCheckpointAttestationCap: () => Promise.resolve(false),
83
+ canAddCheckpointProposal: () => Promise.resolve(true),
84
+ canAddCheckpointAttestation: () => Promise.resolve(true),
85
+ hasCheckpointAttestation: () => Promise.resolve(false),
80
86
  };
81
87
  }
82
88
 
@@ -93,6 +99,7 @@ function mockEpochCache(): EpochCacheInterface {
93
99
  currentSlot: SlotNumber.ZERO,
94
100
  nextSlot: SlotNumber.ZERO,
95
101
  }),
102
+ getProposerAttesterAddressInSlot: () => Promise.resolve(undefined),
96
103
  getEpochAndSlotInNextL1Slot: () => ({ epoch: EpochNumber.ZERO, slot: SlotNumber.ZERO, ts: 0n, now: 0n }),
97
104
  isInCommittee: () => Promise.resolve(false),
98
105
  getRegisteredValidators: () => Promise.resolve([]),
@@ -188,9 +195,25 @@ class TestLibP2PService<T extends P2PClientType = P2PClientType.Full> extends Li
188
195
 
189
196
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
190
197
  process.on('message', async msg => {
191
- const { type, config, clientIndex } = msg as { type: string; config: P2PConfig; clientIndex: number };
198
+ // Note: peerIdPrivateKey comes as a raw string (not SecretValue) because
199
+ // SecretValue's private fields can't be serialized via IPC
200
+ const {
201
+ type,
202
+ config: rawConfig,
203
+ clientIndex,
204
+ } = msg as {
205
+ type: string;
206
+ config: Omit<P2PConfig, 'peerIdPrivateKey'> & { peerIdPrivateKey?: string };
207
+ clientIndex: number;
208
+ };
192
209
  try {
193
210
  if (type === 'START') {
211
+ // Re-wrap the peerIdPrivateKey with SecretValue
212
+ const config: P2PConfig = {
213
+ ...rawConfig,
214
+ peerIdPrivateKey: rawConfig.peerIdPrivateKey ? new SecretValue(rawConfig.peerIdPrivateKey) : undefined,
215
+ } as P2PConfig;
216
+
194
217
  const txPool = mockTxPool();
195
218
  const attestationPool = mockAttestationPool();
196
219
  const epochCache = mockEpochCache();
@@ -223,14 +246,15 @@ process.on('message', async msg => {
223
246
  );
224
247
 
225
248
  // Create test service with validation disabled
249
+ // Note: Parameter order must match LibP2PService constructor
226
250
  const testService = new TestLibP2PService(
227
251
  P2PClientType.Full,
228
252
  config,
229
253
  (client as any).p2pService.node,
230
254
  (client as any).p2pService.peerDiscoveryService,
231
- (client as any).p2pService.mempools,
232
255
  (client as any).p2pService.reqresp,
233
256
  (client as any).p2pService.peerManager,
257
+ (client as any).p2pService.mempools,
234
258
  (client as any).p2pService.archiver,
235
259
  epochCache,
236
260
  proofVerifier,
@@ -73,7 +73,12 @@ class WorkerClientManager {
73
73
  clientIndex: number,
74
74
  ): [ChildProcess, Promise<void>] {
75
75
  const childProcess = fork(workerPath);
76
- childProcess.send({ type: 'START', config, clientIndex });
76
+ // Extract the raw peerIdPrivateKey value since SecretValue can't be serialized via IPC
77
+ const serializedConfig = {
78
+ ...config,
79
+ peerIdPrivateKey: config.peerIdPrivateKey?.getValue(),
80
+ };
81
+ childProcess.send({ type: 'START', config: serializedConfig, clientIndex });
77
82
 
78
83
  // Handle unexpected child process exit
79
84
  childProcess.on('exit', (code, signal) => {
@@ -1,81 +0,0 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import type { TypedEventEmitter } from '@aztec/foundation/types';
3
- import { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
4
- import { type TelemetryClient } from '@aztec/telemetry-client';
5
- import type { TxPool, TxPoolEvents, TxPoolOptions } from './tx_pool.js';
6
- declare const InMemoryTxPool_base: new () => TypedEventEmitter<TxPoolEvents>;
7
- /**
8
- * In-memory implementation of the Transaction Pool.
9
- */
10
- export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPool {
11
- private log;
12
- /**
13
- * Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
14
- */
15
- private txs;
16
- private minedTxs;
17
- private pendingTxs;
18
- private deletedMinedTxHashes;
19
- private blockToDeletedMinedTxHash;
20
- private metrics;
21
- /**
22
- * Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
23
- * @param log - A logger.
24
- */
25
- constructor(telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
26
- private countTx;
27
- isEmpty(): Promise<boolean>;
28
- markAsMined(txHashes: TxHash[], blockHeader: BlockHeader): Promise<void>;
29
- markMinedAsPending(txHashes: TxHash[]): Promise<void>;
30
- getPendingTxHashes(): Promise<TxHash[]>;
31
- getMinedTxHashes(): Promise<[TxHash, BlockNumber][]>;
32
- getPendingTxCount(): Promise<number>;
33
- getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
34
- /**
35
- * Checks if a transaction exists in the pool and returns it.
36
- * @param txHash - The generated tx hash.
37
- * @returns The transaction, if found, 'undefined' otherwise.
38
- */
39
- getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
40
- getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
41
- hasTxs(txHashes: TxHash[]): Promise<boolean[]>;
42
- hasTx(txHash: TxHash): Promise<boolean>;
43
- getArchivedTxByHash(): Promise<Tx | undefined>;
44
- /**
45
- * Adds a list of transactions to the pool. Duplicates are ignored.
46
- * @param txs - An array of txs to be added to the pool.
47
- * @returns Empty promise.
48
- */
49
- addTxs(txs: Tx[], opts?: {
50
- source?: string;
51
- }): Promise<number>;
52
- /**
53
- * Deletes transactions from the pool. Tx hashes that are not present are ignored.
54
- * Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
55
- * @param txHashes - An array of tx hashes to be deleted from the tx pool.
56
- * @returns Empty promise.
57
- */
58
- deleteTxs(txHashes: TxHash[], opts?: {
59
- permanently?: boolean;
60
- }): Promise<void>;
61
- /**
62
- * Gets all the transactions stored in the pool.
63
- * @returns Array of tx objects in the order they were added to the pool.
64
- */
65
- getAllTxs(): Promise<Tx[]>;
66
- /**
67
- * Gets the hashes of all transactions currently in the tx pool.
68
- * @returns An array of transaction hashes found in the tx pool.
69
- */
70
- getAllTxHashes(): Promise<TxHash[]>;
71
- updateConfig(_config: TxPoolOptions): void;
72
- markTxsAsNonEvictable(_: TxHash[]): Promise<void>;
73
- /**
74
- * Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
75
- * @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
76
- * @returns The number of transactions permanently deleted.
77
- */
78
- cleanupDeletedMinedTxs(blockNumber: BlockNumber): Promise<number>;
79
- }
80
- export {};
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X3R4X3Bvb2wuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvdHhfcG9vbC9tZW1vcnlfdHhfcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFNbkYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXhFOztHQUVHO0FBQ0gscUJBQWEsY0FBZSxTQUFRLG1CQUE0RCxZQUFXLE1BQU07SUFtQjdHLE9BQU8sQ0FBQyxHQUFHO0lBbEJiOztPQUVHO0lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBa0I7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBMkI7SUFDM0MsT0FBTyxDQUFDLFVBQVUsQ0FBYztJQUNoQyxPQUFPLENBQUMsb0JBQW9CLENBQTJCO0lBRXZELE9BQU8sQ0FBQyx5QkFBeUIsQ0FBZ0M7SUFFakUsT0FBTyxDQUFDLE9BQU8sQ0FBMEI7SUFFekM7OztPQUdHO0lBQ0gsWUFDRSxTQUFTLEdBQUUsZUFBc0MsRUFDekMsR0FBRyx5Q0FBOEIsRUFTMUM7SUFFRCxPQUFPLENBQUMsT0FBTyxDQU9iO0lBRUssT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFakM7SUFFTSxXQUFXLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQXFCOUU7SUFFTSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWdCM0Q7SUFFWSxrQkFBa0IsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FXbkQ7SUFFTSxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUkxRDtJQUVNLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FHMUM7SUFFTSxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sR0FBRyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBYXZGO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBRzFEO0lBRUQsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUU1RDtJQUNELE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBRTdDO0lBRUssS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUc1QztJQUVNLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBRXBEO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxHQUFFO1FBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBeUJ4RTtJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtRQUFFLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQTRCcEY7SUFFRDs7O09BR0c7SUFDSSxTQUFTLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBRWhDO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUV6QztJQUVELFlBQVksQ0FBQyxPQUFPLEVBQUUsYUFBYSxHQUFHLElBQUksQ0FBRztJQUU3QyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUVoRDtJQUVEOzs7O09BSUc7SUFDSSxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0EwQnZFO0NBQ0YifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/memory_tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAMnF,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;;AAExE;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAA4D,YAAW,MAAM;IAmB7G,OAAO,CAAC,GAAG;IAlBb;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,oBAAoB,CAA2B;IAEvD,OAAO,CAAC,yBAAyB,CAAgC;IAEjE,OAAO,CAAC,OAAO,CAA0B;IAEzC;;;OAGG;IACH,YACE,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAA8B,EAS1C;IAED,OAAO,CAAC,OAAO,CAOb;IAEK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAEjC;IAEM,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB9E;IAEM,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB3D;IAEY,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnD;IAEM,gBAAgB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAI1D;IAEM,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAG1C;IAEM,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,CAavF;IAED;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAG1D;IAED,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAE5D;IACD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAE7C;IAEK,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG5C;IAEM,mBAAmB,IAAI,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAEpD;IAED;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBxE;IAED;;;;;OAKG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BpF;IAED;;;OAGG;IACI,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAEhC;IAED;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAEzC;IAED,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAG;IAE7C,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhD;IAED;;;;OAIG;IACI,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BvE;CACF"}