@aztec/p2p 0.86.0 → 0.87.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 (159) hide show
  1. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  2. package/dest/client/factory.d.ts +4 -1
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +16 -14
  5. package/dest/client/index.d.ts +1 -0
  6. package/dest/client/index.d.ts.map +1 -1
  7. package/dest/client/index.js +1 -0
  8. package/dest/client/interface.d.ts +155 -0
  9. package/dest/client/interface.d.ts.map +1 -0
  10. package/dest/client/interface.js +9 -0
  11. package/dest/client/p2p_client.d.ts +26 -164
  12. package/dest/client/p2p_client.d.ts.map +1 -1
  13. package/dest/client/p2p_client.js +185 -114
  14. package/dest/config.d.ts +5 -6
  15. package/dest/config.d.ts.map +1 -1
  16. package/dest/config.js +6 -11
  17. package/dest/enr/generate-enr.d.ts +9 -1
  18. package/dest/enr/generate-enr.d.ts.map +1 -1
  19. package/dest/enr/generate-enr.js +24 -2
  20. package/dest/index.d.ts +1 -0
  21. package/dest/index.d.ts.map +1 -1
  22. package/dest/index.js +1 -0
  23. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +2 -0
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +4 -4
  26. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +1 -0
  27. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  28. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +8 -2
  29. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +1 -0
  30. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  31. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +5 -2
  32. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  34. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +4 -0
  35. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  36. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +50 -14
  37. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +3 -0
  38. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
  39. package/dest/mem_pools/tx_pool/memory_tx_pool.js +9 -0
  40. package/dest/mem_pools/tx_pool/tx_pool.d.ts +9 -0
  41. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  42. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +13 -5
  44. package/dest/msg_validators/attestation_validator/attestation_validator.js +1 -1
  45. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +1 -1
  46. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  47. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  48. package/dest/msg_validators/tx_validator/data_validator.js +15 -14
  49. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +0 -2
  50. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  51. package/dest/msg_validators/tx_validator/double_spend_validator.js +2 -2
  52. package/dest/msg_validators/tx_validator/factory.d.ts +14 -0
  53. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
  54. package/dest/msg_validators/tx_validator/factory.js +62 -0
  55. package/dest/msg_validators/tx_validator/gas_validator.js +3 -3
  56. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +8 -4
  57. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  58. package/dest/msg_validators/tx_validator/metadata_validator.js +35 -17
  59. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  60. package/dest/msg_validators/tx_validator/phases_validator.js +1 -1
  61. package/dest/msg_validators/tx_validator/tx_proof_validator.js +1 -1
  62. package/dest/services/discv5/discV5_service.d.ts +2 -2
  63. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  64. package/dest/services/discv5/discV5_service.js +9 -13
  65. package/dest/services/dummy_service.d.ts +3 -3
  66. package/dest/services/dummy_service.d.ts.map +1 -1
  67. package/dest/services/dummy_service.js +6 -1
  68. package/dest/services/encoding.d.ts +1 -3
  69. package/dest/services/encoding.d.ts.map +1 -1
  70. package/dest/services/libp2p/libp2p_service.d.ts +4 -2
  71. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  72. package/dest/services/libp2p/libp2p_service.js +94 -88
  73. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  74. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  75. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  76. package/dest/services/peer-manager/peer_manager.js +11 -2
  77. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  78. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -2
  79. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  80. package/dest/services/reqresp/connection-sampler/connection_sampler.js +41 -21
  81. package/dest/services/reqresp/interface.d.ts +1 -3
  82. package/dest/services/reqresp/interface.d.ts.map +1 -1
  83. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  84. package/dest/services/reqresp/protocols/goodbye.d.ts +0 -2
  85. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  86. package/dest/services/reqresp/protocols/goodbye.js +1 -1
  87. package/dest/services/reqresp/protocols/ping.d.ts +0 -2
  88. package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
  89. package/dest/services/reqresp/protocols/status.d.ts +0 -2
  90. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  91. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  92. package/dest/services/reqresp/reqresp.d.ts +1 -3
  93. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  94. package/dest/services/reqresp/reqresp.js +13 -10
  95. package/dest/services/service.d.ts +4 -3
  96. package/dest/services/service.d.ts.map +1 -1
  97. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  98. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  99. package/dest/test-helpers/make-test-p2p-clients.js +2 -2
  100. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  101. package/dest/test-helpers/reqresp-nodes.js +1 -1
  102. package/dest/testbench/p2p_client_testbench_worker.js +11 -6
  103. package/dest/testbench/testbench.js +1 -1
  104. package/dest/testbench/worker_client_manager.d.ts +0 -1
  105. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  106. package/dest/testbench/worker_client_manager.js +2 -2
  107. package/dest/types/index.d.ts +1 -0
  108. package/dest/types/index.d.ts.map +1 -1
  109. package/dest/types/index.js +1 -0
  110. package/dest/versioning.d.ts +2 -2
  111. package/dest/versioning.d.ts.map +1 -1
  112. package/dest/versioning.js +6 -1
  113. package/package.json +15 -15
  114. package/src/bootstrap/bootstrap.ts +1 -1
  115. package/src/client/factory.ts +38 -33
  116. package/src/client/index.ts +1 -0
  117. package/src/client/interface.ts +186 -0
  118. package/src/client/p2p_client.ts +226 -287
  119. package/src/config.ts +11 -18
  120. package/src/enr/generate-enr.ts +35 -3
  121. package/src/index.ts +1 -0
  122. package/src/mem_pools/attestation_pool/attestation_pool.ts +3 -0
  123. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +4 -4
  124. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +11 -4
  125. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +10 -3
  126. package/src/mem_pools/attestation_pool/mocks.ts +2 -2
  127. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +79 -34
  128. package/src/mem_pools/tx_pool/memory_tx_pool.ts +16 -1
  129. package/src/mem_pools/tx_pool/tx_pool.ts +12 -0
  130. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +9 -3
  131. package/src/msg_validators/attestation_validator/attestation_validator.ts +1 -1
  132. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +1 -1
  133. package/src/msg_validators/tx_validator/block_header_validator.ts +1 -1
  134. package/src/msg_validators/tx_validator/data_validator.ts +24 -18
  135. package/src/msg_validators/tx_validator/double_spend_validator.ts +2 -2
  136. package/src/msg_validators/tx_validator/factory.ts +94 -0
  137. package/src/msg_validators/tx_validator/gas_validator.ts +3 -3
  138. package/src/msg_validators/tx_validator/metadata_validator.ts +50 -14
  139. package/src/msg_validators/tx_validator/phases_validator.ts +6 -2
  140. package/src/msg_validators/tx_validator/tx_proof_validator.ts +1 -1
  141. package/src/services/discv5/discV5_service.ts +14 -12
  142. package/src/services/dummy_service.ts +8 -2
  143. package/src/services/libp2p/libp2p_service.ts +102 -111
  144. package/src/services/peer-manager/metrics.ts +4 -1
  145. package/src/services/peer-manager/peer_manager.ts +18 -1
  146. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +5 -1
  147. package/src/services/reqresp/connection-sampler/connection_sampler.ts +42 -19
  148. package/src/services/reqresp/metrics.ts +4 -1
  149. package/src/services/reqresp/protocols/goodbye.ts +1 -1
  150. package/src/services/reqresp/rate-limiter/rate_limiter.ts +4 -1
  151. package/src/services/reqresp/reqresp.ts +12 -12
  152. package/src/services/service.ts +7 -1
  153. package/src/test-helpers/make-test-p2p-clients.ts +2 -1
  154. package/src/test-helpers/reqresp-nodes.ts +1 -1
  155. package/src/testbench/p2p_client_testbench_worker.ts +10 -4
  156. package/src/testbench/testbench.ts +1 -1
  157. package/src/testbench/worker_client_manager.ts +2 -2
  158. package/src/types/index.ts +1 -0
  159. package/src/versioning.ts +8 -1
@@ -0,0 +1,186 @@
1
+ import type { L2BlockId } from '@aztec/stdlib/block';
2
+ import type { P2PApi } from '@aztec/stdlib/interfaces/server';
3
+ import { BlockAttestation, type BlockProposal, type P2PClientType } from '@aztec/stdlib/p2p';
4
+ import type { Tx, TxHash } from '@aztec/stdlib/tx';
5
+
6
+ import type { ENR } from '@chainsafe/enr';
7
+
8
+ import type { P2PConfig } from '../config.js';
9
+
10
+ /**
11
+ * Enum defining the possible states of the p2p client.
12
+ */
13
+ export enum P2PClientState {
14
+ IDLE,
15
+ SYNCHING,
16
+ RUNNING,
17
+ STOPPED,
18
+ }
19
+
20
+ /**
21
+ * The synchronization status of the P2P client.
22
+ */
23
+ export interface P2PSyncState {
24
+ /**
25
+ * The current state of the p2p client.
26
+ */
27
+ state: P2PClientState;
28
+ /**
29
+ * The block number that the p2p client is synced to.
30
+ */
31
+ syncedToL2Block: L2BlockId;
32
+ }
33
+
34
+ /**
35
+ * Interface of a P2P client.
36
+ **/
37
+ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApi<T> & {
38
+ /**
39
+ * Broadcasts a block proposal to other peers.
40
+ *
41
+ * @param proposal - the block proposal
42
+ */
43
+ broadcastProposal(proposal: BlockProposal): Promise<void>;
44
+
45
+ /**
46
+ * Registers a callback from the validator client that determines how to behave when
47
+ * foreign block proposals are received
48
+ *
49
+ * @param handler - A function taking a received block proposal and producing an attestation
50
+ */
51
+ // REVIEW: https://github.com/AztecProtocol/aztec-packages/issues/7963
52
+ // ^ This pattern is not my favorite (md)
53
+ registerBlockProposalHandler(handler: (block: BlockProposal) => Promise<BlockAttestation | undefined>): void;
54
+
55
+ /**
56
+ * Request a list of transactions from another peer by their tx hashes.
57
+ * @param txHashes - Hashes of the txs to query.
58
+ * @returns A list of transactions or undefined if the transactions are not found.
59
+ */
60
+ requestTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
61
+
62
+ /**
63
+ * Request a transaction from another peer by its tx hash.
64
+ * @param txHash - Hash of the tx to query.
65
+ */
66
+ requestTxByHash(txHash: TxHash): Promise<Tx | undefined>;
67
+
68
+ /**
69
+ * Verifies the 'tx' and, if valid, adds it to local tx pool and forwards it to other peers.
70
+ * @param tx - The transaction.
71
+ **/
72
+ sendTx(tx: Tx): Promise<void>;
73
+
74
+ /**
75
+ * Adds transactions to the pool. Does not send to peers or validate the tx.
76
+ * @param txs - The transactions.
77
+ **/
78
+ addTxs(txs: Tx[]): Promise<void>;
79
+
80
+ /**
81
+ * Deletes 'txs' from the pool, given hashes.
82
+ * NOT used if we use sendTx as reconcileTxPool will handle this.
83
+ * @param txHashes - Hashes to check.
84
+ **/
85
+ deleteTxs(txHashes: TxHash[]): Promise<void>;
86
+
87
+ /**
88
+ * Returns a transaction in the transaction pool by its hash.
89
+ * @param txHash - Hash of tx to return.
90
+ * @returns A single tx or undefined.
91
+ */
92
+ getTxByHashFromPool(txHash: TxHash): Promise<Tx | undefined>;
93
+
94
+ /**
95
+ * Returns transactions in the transaction pool by hash.
96
+ * @param txHashes - Hashes of txs to return.
97
+ * @returns An array of txs or undefined.
98
+ */
99
+ getTxsByHashFromPool(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
100
+
101
+ /**
102
+ * Checks if transactions exist in the pool
103
+ * @param txHashes - The hashes of the transactions to check for
104
+ * @returns True or False for each hash
105
+ */
106
+ hasTxsInPool(txHashes: TxHash[]): Promise<boolean[]>;
107
+
108
+ /**
109
+ * Returns a transaction in the transaction pool by its hash, requesting it from the network if it is not found.
110
+ * @param txHash - Hash of tx to return.
111
+ * @returns A single tx or undefined.
112
+ */
113
+ getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
114
+
115
+ /**
116
+ * Returns transactions in the transaction pool by hash, requesting from the network if not found.
117
+ * @param txHashes - Hashes of tx to return.
118
+ * @returns An array of tx or undefined.
119
+ */
120
+ getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
121
+
122
+ /**
123
+ * Returns an archived transaction from the transaction pool by its hash.
124
+ * @param txHash - Hash of tx to return.
125
+ * @returns A single tx or undefined.
126
+ */
127
+ getArchivedTxByHash(txHash: TxHash): Promise<Tx | undefined>;
128
+
129
+ /**
130
+ * Returns whether the given tx hash is flagged as pending or mined.
131
+ * @param txHash - Hash of the tx to query.
132
+ * @returns Pending or mined depending on its status, or undefined if not found.
133
+ */
134
+ getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
135
+
136
+ /** Returns an iterator over pending txs on the mempool. */
137
+ iteratePendingTxs(): AsyncIterableIterator<Tx>;
138
+
139
+ /** Returns the number of pending txs in the mempool. */
140
+ getPendingTxCount(): Promise<number>;
141
+
142
+ /**
143
+ * Marks transactions as non-evictable in the pool.
144
+ * @param txHashes - Hashes of the transactions to mark as non-evictable.
145
+ */
146
+ markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
147
+
148
+ /**
149
+ * Starts the p2p client.
150
+ * @returns A promise signalling the completion of the block sync.
151
+ */
152
+ start(): Promise<void>;
153
+
154
+ /**
155
+ * Stops the p2p client.
156
+ * @returns A promise signalling the completion of the stop process.
157
+ */
158
+ stop(): Promise<void>;
159
+
160
+ /**
161
+ * Indicates if the p2p client is ready for transaction submission.
162
+ * @returns A boolean flag indicating readiness.
163
+ */
164
+ isReady(): boolean;
165
+
166
+ /**
167
+ * Returns the current status of the p2p client.
168
+ */
169
+ getStatus(): Promise<P2PSyncState>;
170
+
171
+ /**
172
+ * Returns the ENR of this node, if any.
173
+ */
174
+ getEnr(): ENR | undefined;
175
+
176
+ /** Identifies a p2p client. */
177
+ isP2PClient(): true;
178
+
179
+ updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
180
+
181
+ /** Validates a set of txs. */
182
+ validate(txs: Tx[]): Promise<void>;
183
+
184
+ /** Clears the db. */
185
+ clear(): Promise<void>;
186
+ };