@aztec/p2p 0.47.1 → 0.49.2

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.
@@ -31,11 +31,17 @@ export class AztecKVTxPool {
31
31
  }
32
32
  markAsMined(txHashes) {
33
33
  return __classPrivateFieldGet(this, _AztecKVTxPool_store, "f").transaction(() => {
34
+ let deleted = 0;
34
35
  for (const hash of txHashes) {
35
36
  const key = hash.toString();
36
37
  void __classPrivateFieldGet(this, _AztecKVTxPool_minedTxs, "f").add(key);
37
- void __classPrivateFieldGet(this, _AztecKVTxPool_pendingTxs, "f").delete(key);
38
+ if (__classPrivateFieldGet(this, _AztecKVTxPool_pendingTxs, "f").has(key)) {
39
+ deleted++;
40
+ void __classPrivateFieldGet(this, _AztecKVTxPool_pendingTxs, "f").delete(key);
41
+ }
38
42
  }
43
+ __classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").recordRemovedTxs('pending', deleted);
44
+ __classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").recordAddedTxs('mined', txHashes.length);
39
45
  });
40
46
  }
41
47
  getPendingTxHashes() {
@@ -73,6 +79,7 @@ export class AztecKVTxPool {
73
79
  addTxs(txs) {
74
80
  const txHashes = txs.map(tx => tx.getTxHash());
75
81
  return __classPrivateFieldGet(this, _AztecKVTxPool_store, "f").transaction(() => {
82
+ let pendingCount = 0;
76
83
  for (const [i, tx] of txs.entries()) {
77
84
  const txHash = txHashes[i];
78
85
  __classPrivateFieldGet(this, _AztecKVTxPool_log, "f").info(`Adding tx with id ${txHash.toString()}`, {
@@ -82,11 +89,13 @@ export class AztecKVTxPool {
82
89
  const key = txHash.toString();
83
90
  void __classPrivateFieldGet(this, _AztecKVTxPool_txs, "f").set(key, tx.toBuffer());
84
91
  if (!__classPrivateFieldGet(this, _AztecKVTxPool_minedTxs, "f").has(key)) {
92
+ pendingCount++;
85
93
  // REFACTOR: Use an lmdb conditional write to avoid race conditions with this write tx
86
94
  void __classPrivateFieldGet(this, _AztecKVTxPool_pendingTxs, "f").add(key);
95
+ __classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").recordTxSize(tx);
87
96
  }
88
97
  }
89
- __classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").recordTxs(txs);
98
+ __classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").recordAddedTxs('pending', pendingCount);
90
99
  });
91
100
  }
92
101
  /**
@@ -96,13 +105,22 @@ export class AztecKVTxPool {
96
105
  */
97
106
  deleteTxs(txHashes) {
98
107
  return __classPrivateFieldGet(this, _AztecKVTxPool_store, "f").transaction(() => {
108
+ let pendingDeleted = 0;
109
+ let minedDeleted = 0;
99
110
  for (const hash of txHashes) {
100
111
  const key = hash.toString();
101
112
  void __classPrivateFieldGet(this, _AztecKVTxPool_txs, "f").delete(key);
102
- void __classPrivateFieldGet(this, _AztecKVTxPool_pendingTxs, "f").delete(key);
103
- void __classPrivateFieldGet(this, _AztecKVTxPool_minedTxs, "f").delete(key);
113
+ if (__classPrivateFieldGet(this, _AztecKVTxPool_pendingTxs, "f").has(key)) {
114
+ pendingDeleted++;
115
+ void __classPrivateFieldGet(this, _AztecKVTxPool_pendingTxs, "f").delete(key);
116
+ }
117
+ if (__classPrivateFieldGet(this, _AztecKVTxPool_minedTxs, "f").has(key)) {
118
+ minedDeleted++;
119
+ void __classPrivateFieldGet(this, _AztecKVTxPool_minedTxs, "f").delete(key);
120
+ }
104
121
  }
105
- __classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").removeTxs(txHashes.length);
122
+ __classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").recordRemovedTxs('pending', pendingDeleted);
123
+ __classPrivateFieldGet(this, _AztecKVTxPool_metrics, "f").recordRemovedTxs('mined', minedDeleted);
106
124
  });
107
125
  }
108
126
  /**
@@ -121,4 +139,4 @@ export class AztecKVTxPool {
121
139
  }
122
140
  }
123
141
  _AztecKVTxPool_store = new WeakMap(), _AztecKVTxPool_txs = new WeakMap(), _AztecKVTxPool_pendingTxs = new WeakMap(), _AztecKVTxPool_minedTxs = new WeakMap(), _AztecKVTxPool_log = new WeakMap(), _AztecKVTxPool_metrics = new WeakMap();
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWNfa3ZfdHhfcG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF9wb29sL2F6dGVjX2t2X3R4X3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRzdEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFleEI7Ozs7T0FJRztJQUNILFlBQVksS0FBbUIsRUFBRSxTQUEwQixFQUFFLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxlQUFlLENBQUM7UUFuQnJHLHVDQUFxQjtRQUVyQiw0RUFBNEU7UUFDNUUscUNBQStCO1FBRS9CLDZCQUE2QjtRQUM3Qiw0Q0FBOEI7UUFDOUIsMkJBQTJCO1FBQzNCLDBDQUE0QjtRQUU1QixxQ0FBYTtRQUViLHlDQUFnQztRQVE5Qix1QkFBQSxJQUFJLHNCQUFRLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQUEsQ0FBQztRQUNqQyx1QkFBQSxJQUFJLDJCQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQUEsQ0FBQztRQUMzQyx1QkFBQSxJQUFJLDZCQUFlLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQUEsQ0FBQztRQUUvQyx1QkFBQSxJQUFJLHdCQUFVLEtBQUssTUFBQSxDQUFDO1FBQ3BCLHVCQUFBLElBQUksc0JBQVEsR0FBRyxNQUFBLENBQUM7UUFDaEIsdUJBQUEsSUFBSSwwQkFBWSxJQUFJLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsTUFBQSxDQUFDO0lBQ3hFLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBa0I7UUFDbkMsT0FBTyx1QkFBQSxJQUFJLDRCQUFPLENB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
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp0ZWNfa3ZfdHhfcG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eF9wb29sL2F6dGVjX2t2X3R4X3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRzdEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFleEI7Ozs7T0FJRztJQUNILFlBQVksS0FBbUIsRUFBRSxTQUEwQixFQUFFLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxlQUFlLENBQUM7UUFuQnJHLHVDQUFxQjtRQUVyQiw0RUFBNEU7UUFDNUUscUNBQStCO1FBRS9CLDZCQUE2QjtRQUM3Qiw0Q0FBOEI7UUFDOUIsMkJBQTJCO1FBQzNCLDBDQUE0QjtRQUU1QixxQ0FBYTtRQUViLHlDQUFnQztRQVE5Qix1QkFBQSxJQUFJLHNCQUFRLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQUEsQ0FBQztRQUNqQyx1QkFBQSxJQUFJLDJCQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQUEsQ0FBQztRQUMzQyx1QkFBQSxJQUFJLDZCQUFlLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQUEsQ0FBQztRQUUvQyx1QkFBQSxJQUFJLHdCQUFVLEtBQUssTUFBQSxDQUFDO1FBQ3BCLHVCQUFBLElBQUksc0JBQVEsR0FBRyxNQUFBLENBQUM7UUFDaEIsdUJBQUEsSUFBSSwwQkFBWSxJQUFJLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsTUFBQSxDQUFDO0lBQ3hFLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBa0I7UUFDbkMsT0FBTyx1QkFBQSxJQUFJLDRCQUFPLENB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
@@ -1,5 +1,6 @@
1
1
  import { type Tx } from '@aztec/circuit-types';
2
2
  import { type TelemetryClient } from '@aztec/telemetry-client';
3
+ export type TxStatus = 'pending' | 'mined';
3
4
  /**
4
5
  * Instrumentation class for the TxPool.
5
6
  */
@@ -9,15 +10,16 @@ export declare class TxPoolInstrumentation {
9
10
  /** Tracks tx size */
10
11
  private txSize;
11
12
  constructor(telemetry: TelemetryClient, name: string);
13
+ recordTxSize(tx: Tx): void;
12
14
  /**
13
15
  * Updates the metrics with the new transactions.
14
16
  * @param txs - The transactions to record
15
17
  */
16
- recordTxs(txs: Tx[]): void;
18
+ recordAddedTxs(status: string, count?: number): void;
17
19
  /**
18
20
  * Updates the metrics by removing transactions from the mempool.
19
21
  * @param count - The number of transactions to remove from the mempool
20
22
  */
21
- removeTxs(count?: number): void;
23
+ recordRemovedTxs(status: string, count?: number): void;
22
24
  }
23
25
  //# sourceMappingURL=instrumentation.d.ts.map
@@ -1 +1 @@
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,EAA2B,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAE5G;;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;IAuBpD;;;OAGG;IACI,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE;IAQ1B;;;OAGG;IACI,SAAS,CAAC,KAAK,SAAI;CAM3B"}
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,4 +1,4 @@
1
- import { Metrics } from '@aztec/telemetry-client';
1
+ import { Attributes, Metrics } from '@aztec/telemetry-client';
2
2
  /**
3
3
  * Instrumentation class for the TxPool.
4
4
  */
@@ -24,25 +24,38 @@ export class TxPoolInstrumentation {
24
24
  },
25
25
  });
26
26
  }
27
+ recordTxSize(tx) {
28
+ this.txSize.record(tx.getSize());
29
+ }
27
30
  /**
28
31
  * Updates the metrics with the new transactions.
29
32
  * @param txs - The transactions to record
30
33
  */
31
- recordTxs(txs) {
32
- for (const tx of txs) {
33
- this.txSize.record(tx.getSize());
34
+ recordAddedTxs(status, count = 1) {
35
+ if (count < 0) {
36
+ throw new Error('Count must be positive');
37
+ }
38
+ if (count === 0) {
39
+ return;
34
40
  }
35
- this.txInMempool.add(txs.length);
41
+ this.txInMempool.add(count, {
42
+ [Attributes.STATUS]: status,
43
+ });
36
44
  }
37
45
  /**
38
46
  * Updates the metrics by removing transactions from the mempool.
39
47
  * @param count - The number of transactions to remove from the mempool
40
48
  */
41
- removeTxs(count = 1) {
49
+ recordRemovedTxs(status, count = 1) {
42
50
  if (count < 0) {
43
51
  throw new Error('Count must be positive');
44
52
  }
45
- this.txInMempool.add(-1 * count);
53
+ if (count === 0) {
54
+ return;
55
+ }
56
+ this.txInMempool.add(-1 * count, {
57
+ [Attributes.STATUS]: status,
58
+ });
46
59
  }
47
60
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4X3Bvb2wvaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBa0IsT0FBTyxFQUE0QyxNQUFNLHlCQUF5QixDQUFDO0FBRTVHOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHFCQUFxQjtJQU1oQyxZQUFZLFNBQTBCLEVBQUUsSUFBWTtRQUNsRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyRSxXQUFXLEVBQUUsbURBQW1EO1NBQ2pFLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFO1lBQzNELElBQUksRUFBRSxJQUFJO1lBQ1YsV0FBVyxFQUFFLHlDQUF5QztZQUN0RCxNQUFNLEVBQUU7Z0JBQ04sd0JBQXdCLEVBQUU7b0JBQ3hCLElBQUssRUFBRSxNQUFNO29CQUNiLEtBQU07b0JBQ04sS0FBTTtvQkFDTixLQUFNO29CQUNOLEtBQU07b0JBQ04sTUFBTyxFQUFFLFFBQVE7b0JBQ2pCLE1BQU87aUJBQ1I7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsR0FBUztRQUN4QixLQUFLLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUN4QixJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGIn0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4X3Bvb2wvaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQWtCLE9BQU8sRUFBNEMsTUFBTSx5QkFBeUIsQ0FBQztBQUl4SDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFNaEMsWUFBWSxTQUEwQixFQUFFLElBQVk7UUFDbEQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7WUFDckUsV0FBVyxFQUFFLG1EQUFtRDtTQUNqRSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUMzRCxJQUFJLEVBQUUsSUFBSTtZQUNWLFdBQVcsRUFBRSx5Q0FBeUM7WUFDdEQsTUFBTSxFQUFFO2dCQUNOLHdCQUF3QixFQUFFO29CQUN4QixJQUFLLEVBQUUsTUFBTTtvQkFDYixLQUFNO29CQUNOLEtBQU07b0JBQ04sS0FBTTtvQkFDTixLQUFNO29CQUNOLE1BQU8sRUFBRSxRQUFRO29CQUNqQixNQUFPO2lCQUNSO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLEVBQU07UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxNQUFjLEVBQUUsS0FBSyxHQUFHLENBQUM7UUFDN0MsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQzFCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU07U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxLQUFLLEdBQUcsQ0FBQztRQUMvQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUU7WUFDL0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ==
@@ -1 +1 @@
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;IAS9C,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;IAkBvC;;;;OAIG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnD;;;OAGG;IACI,SAAS,IAAI,EAAE,EAAE;IAIxB;;;OAGG;IACI,cAAc,IAAI,MAAM,EAAE;CAGlC"}
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"}
@@ -22,6 +22,8 @@ export class InMemoryTxPool {
22
22
  this.minedTxs.add(key);
23
23
  this.pendingTxs.delete(key);
24
24
  }
25
+ this.metrics.recordRemovedTxs('pending', txHashes.length);
26
+ this.metrics.recordAddedTxs('mined', txHashes.length);
25
27
  return Promise.resolve();
26
28
  }
27
29
  getPendingTxHashes() {
@@ -55,7 +57,7 @@ export class InMemoryTxPool {
55
57
  * @returns Empty promise.
56
58
  */
57
59
  addTxs(txs) {
58
- this.metrics.recordTxs(txs);
60
+ let pending = 0;
59
61
  for (const tx of txs) {
60
62
  const txHash = tx.getTxHash();
61
63
  this.log.debug(`Adding tx with id ${txHash.toString()}`, {
@@ -65,9 +67,12 @@ export class InMemoryTxPool {
65
67
  const key = txHash.toBigInt();
66
68
  this.txs.set(key, tx);
67
69
  if (!this.minedTxs.has(key)) {
70
+ pending++;
71
+ this.metrics.recordTxSize(tx);
68
72
  this.pendingTxs.add(key);
69
73
  }
70
74
  }
75
+ this.metrics.recordAddedTxs('pending', pending);
71
76
  return Promise.resolve();
72
77
  }
73
78
  /**
@@ -76,13 +81,16 @@ export class InMemoryTxPool {
76
81
  * @returns The number of transactions that was deleted from the pool.
77
82
  */
78
83
  deleteTxs(txHashes) {
79
- this.metrics.removeTxs(txHashes.length);
84
+ let deletedMined = 0;
85
+ let deletedPending = 0;
80
86
  for (const txHash of txHashes) {
81
87
  const key = txHash.toBigInt();
82
88
  this.txs.delete(key);
83
- this.pendingTxs.delete(key);
84
- this.minedTxs.delete(key);
89
+ deletedPending += this.pendingTxs.delete(key) ? 1 : 0;
90
+ deletedMined += this.minedTxs.delete(key) ? 1 : 0;
85
91
  }
92
+ this.metrics.recordRemovedTxs('pending', deletedPending);
93
+ this.metrics.recordRemovedTxs('mined', deletedMined);
86
94
  return Promise.resolve();
87
95
  }
88
96
  /**
@@ -100,4 +108,4 @@ export class InMemoryTxPool {
100
108
  return Array.from(this.txs.keys()).map(x => TxHash.fromBigInt(x));
101
109
  }
102
110
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X3R4X3Bvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfcG9vbC9tZW1vcnlfdHhfcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRzdEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFVekI7OztPQUdHO0lBQ0gsWUFBWSxTQUEwQixFQUFVLE1BQU0saUJBQWlCLENBQUMsZUFBZSxDQUFDO1FBQXhDLFFBQUcsR0FBSCxHQUFHLENBQXFDO1FBQ3RGLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQWMsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQWtCO1FBQ25DLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3QyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFP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
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X3R4X3Bvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfcG9vbC9tZW1vcnlfdHhfcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRzdEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFVekI7OztPQUdHO0lBQ0gsWUFBWSxTQUEwQixFQUFVLE1BQU0saUJBQWlCLENBQUMsZUFBZSxDQUFDO1FBQXhDLFFBQUcsR0FBSCxHQUFHLENBQXFDO1FBQ3RGLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQWMsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQWtCO1FBQ25DLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3QyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFD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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/p2p",
3
- "version": "0.47.1",
3
+ "version": "0.49.2",
4
4
  "type": "module",
5
5
  "exports": "./dest/index.js",
6
6
  "typedocOptions": {
@@ -56,11 +56,11 @@
56
56
  "testTimeout": 15000
57
57
  },
58
58
  "dependencies": {
59
- "@aztec/circuit-types": "0.47.1",
60
- "@aztec/circuits.js": "0.47.1",
61
- "@aztec/foundation": "0.47.1",
62
- "@aztec/kv-store": "0.47.1",
63
- "@aztec/telemetry-client": "0.47.1",
59
+ "@aztec/circuit-types": "0.49.2",
60
+ "@aztec/circuits.js": "0.49.2",
61
+ "@aztec/foundation": "0.49.2",
62
+ "@aztec/kv-store": "0.49.2",
63
+ "@aztec/telemetry-client": "0.49.2",
64
64
  "@chainsafe/discv5": "9.0.0",
65
65
  "@chainsafe/enr": "3.0.0",
66
66
  "@chainsafe/libp2p-gossipsub": "13.0.0",
@@ -5,18 +5,11 @@ import { SignableENR } from '@chainsafe/enr';
5
5
  import type { PeerId } from '@libp2p/interface';
6
6
  import { type Multiaddr, multiaddr } from '@multiformats/multiaddr';
7
7
 
8
- import { type P2PConfig } from '../config.js';
8
+ import type { BootnodeConfig } from '../config.js';
9
9
  import { AZTEC_ENR_KEY, AZTEC_NET } from '../service/discV5_service.js';
10
10
  import { createLibP2PPeerId } from '../service/index.js';
11
11
  import { convertToMultiaddr } from '../util.js';
12
12
 
13
- /**
14
- * Required P2P config values for a bootstrap node.
15
- */
16
- export type BootNodeConfig = Partial<P2PConfig> &
17
- Pick<P2PConfig, 'udpAnnounceAddress'> &
18
- Required<Pick<P2PConfig, 'udpListenAddress'>>;
19
-
20
13
  /**
21
14
  * Encapsulates a 'Bootstrap' node, used for the purpose of assisting new joiners in acquiring peers.
22
15
  */
@@ -31,7 +24,7 @@ export class BootstrapNode {
31
24
  * @param config - A partial P2P configuration. No need for TCP values as well as aztec node specific values.
32
25
  * @returns An empty promise.
33
26
  */
34
- public async start(config: BootNodeConfig) {
27
+ public async start(config: BootnodeConfig) {
35
28
  const { peerIdPrivateKey, udpListenAddress, udpAnnounceAddress } = config;
36
29
  const peerId = await createLibP2PPeerId(peerIdPrivateKey);
37
30
  this.peerId = peerId;
@@ -15,7 +15,7 @@ export class MockBlockSource implements L2BlockSource {
15
15
  public addBlocks(numBlocks: number) {
16
16
  for (let i = 0; i < numBlocks; i++) {
17
17
  const blockNum = this.l2Blocks.length;
18
- const block = L2Block.random(blockNum);
18
+ const block = L2Block.random(blockNum, blockNum);
19
19
  this.l2Blocks.push(block);
20
20
  this.txEffects.push(...block.body.txEffects);
21
21
  }
@@ -134,7 +134,7 @@ export class P2PClient implements P2P {
134
134
  private keepProvenTxsFor: number,
135
135
  private log = createDebugLogger('aztec:p2p'),
136
136
  ) {
137
- const { p2pBlockCheckIntervalMS: checkInterval, p2pL2QueueSize } = getP2PConfigEnvVars();
137
+ const { blockCheckIntervalMS: checkInterval, l2QueueSize: p2pL2QueueSize } = getP2PConfigEnvVars();
138
138
  const l2DownloaderOpts = { maxQueueSize: p2pL2QueueSize, pollIntervalMS: checkInterval };
139
139
  // TODO(palla/prover-node): This effectively downloads blocks twice from the archiver, which is an issue
140
140
  // if the archiver is remote. We should refactor this so the downloader keeps a single queue and handles
package/src/config.ts CHANGED
@@ -1,4 +1,10 @@
1
- import { SemVer } from 'semver';
1
+ import {
2
+ type ConfigMappingsType,
3
+ booleanConfigHelper,
4
+ getConfigFromMappings,
5
+ numberConfigHelper,
6
+ pickConfigMappings,
7
+ } from '@aztec/foundation/config';
2
8
 
3
9
  /**
4
10
  * P2P client configuration values.
@@ -12,17 +18,17 @@ export interface P2PConfig {
12
18
  /**
13
19
  * The frequency in which to check for new L2 blocks.
14
20
  */
15
- p2pBlockCheckIntervalMS: number;
21
+ blockCheckIntervalMS: number;
16
22
 
17
23
  /**
18
24
  * The frequency in which to check for new peers.
19
25
  */
20
- p2pPeerCheckIntervalMS: number;
26
+ peerCheckIntervalMS: number;
21
27
 
22
28
  /**
23
29
  * Size of queue of L2 blocks to store.
24
30
  */
25
- p2pL2QueueSize: number;
31
+ l2QueueSize: number;
26
32
 
27
33
  /**
28
34
  * The announce address for TCP.
@@ -59,11 +65,6 @@ export interface P2PConfig {
59
65
  */
60
66
  transactionProtocol: string;
61
67
 
62
- /**
63
- * Whether to enable NAT from libp2p (ignored for bootstrap node).
64
- */
65
- enableNat?: boolean;
66
-
67
68
  /**
68
69
  * The minimum number of peers (a peer count below this will cause the node to look for more peers)
69
70
  */
@@ -79,11 +80,6 @@ export interface P2PConfig {
79
80
  */
80
81
  dataDirectory?: string;
81
82
 
82
- /**
83
- * The transaction gossiping message version.
84
- */
85
- txGossipVersion: SemVer;
86
-
87
83
  /**
88
84
  * If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false.
89
85
  */
@@ -93,52 +89,112 @@ export interface P2PConfig {
93
89
  keepProvenTxsInPoolFor: number;
94
90
  }
95
91
 
92
+ export const p2pConfigMappings: ConfigMappingsType<P2PConfig> = {
93
+ p2pEnabled: {
94
+ env: 'P2P_ENABLED',
95
+ description: 'A flag dictating whether the P2P subsystem should be enabled.',
96
+ ...booleanConfigHelper(),
97
+ },
98
+ blockCheckIntervalMS: {
99
+ env: 'P2P_BLOCK_CHECK_INTERVAL_MS',
100
+ description: 'The frequency in which to check for new L2 blocks.',
101
+ ...numberConfigHelper(100),
102
+ },
103
+ peerCheckIntervalMS: {
104
+ env: 'P2P_PEER_CHECK_INTERVAL_MS',
105
+ description: 'The frequency in which to check for new peers.',
106
+ ...numberConfigHelper(1_000),
107
+ },
108
+ l2QueueSize: {
109
+ env: 'P2P_L2_QUEUE_SIZE',
110
+ description: 'Size of queue of L2 blocks to store.',
111
+ ...numberConfigHelper(1_000),
112
+ },
113
+ tcpListenAddress: {
114
+ env: 'TCP_LISTEN_ADDR',
115
+ defaultValue: '0.0.0.0:40400',
116
+ description: 'The listen address for TCP. Format: <IP_ADDRESS>:<PORT>.',
117
+ },
118
+ udpListenAddress: {
119
+ env: 'UDP_LISTEN_ADDR',
120
+ defaultValue: '0.0.0.0:40400',
121
+ description: 'The listen address for UDP. Format: <IP_ADDRESS>:<PORT>.',
122
+ },
123
+ tcpAnnounceAddress: {
124
+ env: 'P2P_TCP_ANNOUNCE_ADDR',
125
+ description:
126
+ 'The announce address for TCP. Format: <IP_ADDRESS>:<PORT>. Leave IP_ADDRESS blank to query for public IP.',
127
+ },
128
+ udpAnnounceAddress: {
129
+ env: 'P2P_UDP_ANNOUNCE_ADDR',
130
+ description:
131
+ 'The announce address for UDP. Format: <IP_ADDRESS>:<PORT>. Leave IP_ADDRESS blank to query for public IP.',
132
+ },
133
+ peerIdPrivateKey: {
134
+ env: 'PEER_ID_PRIVATE_KEY',
135
+ description: 'An optional peer id private key. If blank, will generate a random key.',
136
+ },
137
+ bootstrapNodes: {
138
+ env: 'BOOTSTRAP_NODES',
139
+ parseEnv: (val: string) => val.split(','),
140
+ description: 'A list of bootstrap peer ENRs to connect to. Separated by commas.',
141
+ },
142
+ transactionProtocol: {
143
+ env: 'P2P_TX_PROTOCOL',
144
+ description: 'Protocol identifier for transaction gossiping.',
145
+ defaultValue: '/aztec/0.1.0',
146
+ },
147
+ minPeerCount: {
148
+ env: 'P2P_MIN_PEERS',
149
+ description: 'The minimum number of peers to connect to.',
150
+ ...numberConfigHelper(10),
151
+ },
152
+ maxPeerCount: {
153
+ env: 'P2P_MAX_PEERS',
154
+ description: 'The maximum number of peers to connect to.',
155
+ ...numberConfigHelper(100),
156
+ },
157
+ dataDirectory: {
158
+ env: 'DATA_DIRECTORY',
159
+ description: 'Data directory for peer & tx databases. Will use temporary location if not set.',
160
+ },
161
+ queryForIp: {
162
+ env: 'P2P_QUERY_FOR_IP',
163
+ description:
164
+ 'If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false.',
165
+ ...booleanConfigHelper(),
166
+ },
167
+ keepProvenTxsInPoolFor: {
168
+ env: 'P2P_TX_POOL_KEEP_PROVEN_FOR',
169
+ description:
170
+ 'How many blocks have to pass after a block is proven before its txs are deleted (zero to delete immediately once proven)',
171
+ ...numberConfigHelper(0),
172
+ },
173
+ };
174
+
96
175
  /**
97
176
  * Gets the config values for p2p client from environment variables.
98
177
  * @returns The config values for p2p client.
99
178
  */
100
179
  export function getP2PConfigEnvVars(): P2PConfig {
101
- const {
102
- P2P_ENABLED,
103
- P2P_BLOCK_CHECK_INTERVAL_MS,
104
- P2P_PEER_CHECK_INTERVAL_MS,
105
- P2P_L2_BLOCK_QUEUE_SIZE,
106
- P2P_TCP_LISTEN_ADDR,
107
- P2P_UDP_LISTEN_ADDR,
108
- P2P_TCP_ANNOUNCE_ADDR,
109
- P2P_UDP_ANNOUNCE_ADDR,
110
- PEER_ID_PRIVATE_KEY,
111
- BOOTSTRAP_NODES,
112
- P2P_NAT_ENABLED,
113
- P2P_MIN_PEERS,
114
- P2P_MAX_PEERS,
115
- DATA_DIRECTORY,
116
- TX_GOSSIP_VERSION,
117
- P2P_TX_PROTOCOL,
118
- P2P_QUERY_FOR_IP,
119
- P2P_TX_POOL_KEEP_PROVEN_FOR,
120
- } = process.env;
121
- // P2P listen & announce addresses passed in format: <IP_ADDRESS>:<PORT>
122
- // P2P announce multiaddrs passed in format: /ip4/<IP_ADDRESS>/<protocol>/<PORT>
123
- const envVars: P2PConfig = {
124
- tcpAnnounceAddress: P2P_TCP_ANNOUNCE_ADDR,
125
- udpAnnounceAddress: P2P_UDP_ANNOUNCE_ADDR,
126
- tcpListenAddress: P2P_TCP_LISTEN_ADDR || '0.0.0.0:40400',
127
- udpListenAddress: P2P_UDP_LISTEN_ADDR || '0.0.0.0:40400',
128
- p2pEnabled: P2P_ENABLED === 'true',
129
- p2pBlockCheckIntervalMS: P2P_BLOCK_CHECK_INTERVAL_MS ? +P2P_BLOCK_CHECK_INTERVAL_MS : 100,
130
- p2pPeerCheckIntervalMS: P2P_PEER_CHECK_INTERVAL_MS ? +P2P_PEER_CHECK_INTERVAL_MS : 1000,
131
- p2pL2QueueSize: P2P_L2_BLOCK_QUEUE_SIZE ? +P2P_L2_BLOCK_QUEUE_SIZE : 1000,
132
- peerIdPrivateKey: PEER_ID_PRIVATE_KEY,
133
- bootstrapNodes: BOOTSTRAP_NODES ? BOOTSTRAP_NODES.split(',') : [],
134
- transactionProtocol: P2P_TX_PROTOCOL ? P2P_TX_PROTOCOL : '/aztec/0.1.0',
135
- enableNat: P2P_NAT_ENABLED === 'true',
136
- minPeerCount: P2P_MIN_PEERS ? +P2P_MIN_PEERS : 10,
137
- maxPeerCount: P2P_MAX_PEERS ? +P2P_MAX_PEERS : 100,
138
- dataDirectory: DATA_DIRECTORY,
139
- txGossipVersion: TX_GOSSIP_VERSION ? new SemVer(TX_GOSSIP_VERSION) : new SemVer('0.1.0'),
140
- queryForIp: P2P_QUERY_FOR_IP === 'true',
141
- keepProvenTxsInPoolFor: P2P_TX_POOL_KEEP_PROVEN_FOR ? +P2P_TX_POOL_KEEP_PROVEN_FOR : 0,
142
- };
143
- return envVars;
180
+ return getConfigFromMappings<P2PConfig>(p2pConfigMappings);
144
181
  }
182
+
183
+ /**
184
+ * Required P2P config values for a bootstrap node.
185
+ */
186
+ export type BootnodeConfig = Pick<
187
+ P2PConfig,
188
+ 'udpAnnounceAddress' | 'peerIdPrivateKey' | 'minPeerCount' | 'maxPeerCount'
189
+ > &
190
+ Required<Pick<P2PConfig, 'udpListenAddress'>>;
191
+
192
+ const bootnodeConfigKeys: (keyof BootnodeConfig)[] = [
193
+ 'udpAnnounceAddress',
194
+ 'peerIdPrivateKey',
195
+ 'minPeerCount',
196
+ 'maxPeerCount',
197
+ 'udpListenAddress',
198
+ ];
199
+
200
+ export const bootnodeConfigMappings = pickConfigMappings(p2pConfigMappings, bootnodeConfigKeys);