@aztec/p2p 0.67.1 → 0.68.1

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 (211) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +5 -3
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +17 -15
  4. package/dest/client/factory.d.ts +19 -0
  5. package/dest/client/factory.d.ts.map +1 -0
  6. package/dest/client/factory.js +40 -0
  7. package/dest/client/index.d.ts +1 -15
  8. package/dest/client/index.d.ts.map +1 -1
  9. package/dest/client/index.js +2 -37
  10. package/dest/client/p2p_client.d.ts +6 -6
  11. package/dest/client/p2p_client.d.ts.map +1 -1
  12. package/dest/client/p2p_client.js +12 -11
  13. package/dest/config.d.ts +1 -1
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/config.js +3 -3
  16. package/dest/errors/reqresp.error.d.ts +12 -1
  17. package/dest/errors/reqresp.error.d.ts.map +1 -1
  18. package/dest/errors/reqresp.error.js +15 -2
  19. package/dest/index.d.ts +2 -2
  20. package/dest/index.d.ts.map +1 -1
  21. package/dest/index.js +3 -3
  22. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +9 -0
  23. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  24. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +3 -0
  25. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -0
  26. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +171 -0
  27. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +29 -0
  28. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -0
  29. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +114 -0
  30. package/dest/mem_pools/interface.d.ts +4 -3
  31. package/dest/mem_pools/interface.d.ts.map +1 -1
  32. package/dest/mocks/index.d.ts +7 -6
  33. package/dest/mocks/index.d.ts.map +1 -1
  34. package/dest/mocks/index.js +8 -8
  35. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +8 -0
  36. package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -0
  37. package/dest/msg_validators/attestation_validator/attestation_validator.js +19 -0
  38. package/dest/msg_validators/attestation_validator/index.d.ts +2 -0
  39. package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -0
  40. package/dest/msg_validators/attestation_validator/index.js +2 -0
  41. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +8 -0
  42. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +1 -0
  43. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +21 -0
  44. package/dest/msg_validators/block_proposal_validator/index.d.ts +2 -0
  45. package/dest/msg_validators/block_proposal_validator/index.d.ts.map +1 -0
  46. package/dest/msg_validators/block_proposal_validator/index.js +2 -0
  47. package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts +8 -0
  48. package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts.map +1 -0
  49. package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.js +16 -0
  50. package/dest/msg_validators/epoch_proof_quote_validator/index.d.ts +2 -0
  51. package/dest/msg_validators/epoch_proof_quote_validator/index.d.ts.map +1 -0
  52. package/dest/msg_validators/epoch_proof_quote_validator/index.js +2 -0
  53. package/dest/msg_validators/index.d.ts +4 -0
  54. package/dest/msg_validators/index.d.ts.map +1 -0
  55. package/dest/msg_validators/index.js +4 -0
  56. package/dest/{tx_validator → msg_validators/tx_validator}/aggregate_tx_validator.d.ts +1 -1
  57. package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -0
  58. package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +34 -0
  59. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -0
  60. package/dest/{tx_validator → msg_validators/tx_validator}/data_validator.js +1 -1
  61. package/dest/{tx_validator → msg_validators/tx_validator}/double_spend_validator.d.ts +3 -2
  62. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -0
  63. package/dest/msg_validators/tx_validator/double_spend_validator.js +56 -0
  64. package/dest/msg_validators/tx_validator/index.d.ts.map +1 -0
  65. package/dest/{tx_validator → msg_validators/tx_validator}/index.js +1 -1
  66. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -0
  67. package/dest/{tx_validator → msg_validators/tx_validator}/metadata_validator.js +1 -1
  68. package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -0
  69. package/dest/msg_validators/tx_validator/tx_proof_validator.js +29 -0
  70. package/dest/services/data_store.d.ts.map +1 -0
  71. package/dest/services/data_store.js +188 -0
  72. package/dest/{service → services/discv5}/discV5_service.d.ts +3 -9
  73. package/dest/services/discv5/discV5_service.d.ts.map +1 -0
  74. package/dest/services/discv5/discV5_service.js +139 -0
  75. package/dest/services/dummy_service.d.ts.map +1 -0
  76. package/dest/{service → services}/dummy_service.js +1 -1
  77. package/dest/{service → services}/encoding.d.ts +5 -0
  78. package/dest/services/encoding.d.ts.map +1 -0
  79. package/dest/services/encoding.js +65 -0
  80. package/dest/services/index.d.ts +3 -0
  81. package/dest/services/index.d.ts.map +1 -0
  82. package/dest/services/index.js +3 -0
  83. package/dest/services/libp2p/libp2p_service.d.ts +222 -0
  84. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -0
  85. package/dest/services/libp2p/libp2p_service.js +697 -0
  86. package/dest/services/peer-scoring/peer_scoring.d.ts +25 -0
  87. package/dest/services/peer-scoring/peer_scoring.d.ts.map +1 -0
  88. package/dest/services/peer-scoring/peer_scoring.js +75 -0
  89. package/dest/services/peer_manager.d.ts +60 -0
  90. package/dest/services/peer_manager.d.ts.map +1 -0
  91. package/dest/services/peer_manager.js +358 -0
  92. package/dest/services/reqresp/config.d.ts.map +1 -0
  93. package/dest/{service → services}/reqresp/config.js +1 -1
  94. package/dest/services/reqresp/handlers.d.ts.map +1 -0
  95. package/dest/{service → services}/reqresp/handlers.js +1 -1
  96. package/dest/services/reqresp/index.d.ts.map +1 -0
  97. package/dest/{service → services}/reqresp/index.js +1 -1
  98. package/dest/services/reqresp/interface.d.ts.map +1 -0
  99. package/dest/{service → services}/reqresp/interface.js +1 -1
  100. package/dest/services/reqresp/rate_limiter/index.d.ts.map +1 -0
  101. package/dest/{service → services}/reqresp/rate_limiter/index.js +1 -1
  102. package/dest/{service → services}/reqresp/rate_limiter/rate_limiter.d.ts +0 -5
  103. package/dest/services/reqresp/rate_limiter/rate_limiter.d.ts.map +1 -0
  104. package/dest/{service → services}/reqresp/rate_limiter/rate_limiter.js +7 -2
  105. package/dest/services/reqresp/rate_limiter/rate_limits.d.ts.map +1 -0
  106. package/dest/{service → services}/reqresp/rate_limiter/rate_limits.js +1 -1
  107. package/dest/{service → services}/reqresp/reqresp.d.ts +16 -0
  108. package/dest/services/reqresp/reqresp.d.ts.map +1 -0
  109. package/dest/services/reqresp/reqresp.js +279 -0
  110. package/dest/services/service.d.ts.map +1 -0
  111. package/dest/{service → services}/service.js +1 -1
  112. package/dest/services/types.d.ts +38 -0
  113. package/dest/services/types.d.ts.map +1 -0
  114. package/dest/services/types.js +43 -0
  115. package/package.json +14 -11
  116. package/src/bootstrap/bootstrap.ts +25 -20
  117. package/src/client/factory.ts +97 -0
  118. package/src/client/index.ts +1 -73
  119. package/src/client/p2p_client.ts +28 -15
  120. package/src/config.ts +2 -2
  121. package/src/errors/reqresp.error.ts +15 -1
  122. package/src/index.ts +2 -2
  123. package/src/mem_pools/attestation_pool/attestation_pool.ts +10 -0
  124. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +237 -0
  125. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +153 -0
  126. package/src/mem_pools/interface.ts +5 -3
  127. package/src/mocks/index.ts +16 -10
  128. package/src/msg_validators/attestation_validator/attestation_validator.ts +26 -0
  129. package/src/msg_validators/attestation_validator/index.ts +1 -0
  130. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +29 -0
  131. package/src/msg_validators/block_proposal_validator/index.ts +1 -0
  132. package/src/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.ts +22 -0
  133. package/src/msg_validators/epoch_proof_quote_validator/index.ts +1 -0
  134. package/src/msg_validators/index.ts +3 -0
  135. package/src/{tx_validator → msg_validators/tx_validator}/aggregate_tx_validator.ts +5 -3
  136. package/src/{tx_validator → msg_validators/tx_validator}/double_spend_validator.ts +6 -8
  137. package/src/{service → services/discv5}/discV5_service.ts +19 -23
  138. package/src/{service → services}/encoding.ts +21 -3
  139. package/src/services/index.ts +2 -0
  140. package/src/{service → services/libp2p}/libp2p_service.ts +350 -90
  141. package/src/{service → services/peer-scoring}/peer_scoring.ts +27 -23
  142. package/src/services/peer_manager.ts +422 -0
  143. package/src/{service → services}/reqresp/rate_limiter/rate_limiter.ts +2 -1
  144. package/src/{service → services}/reqresp/reqresp.ts +86 -20
  145. package/src/services/types.ts +44 -0
  146. package/dest/service/data_store.d.ts.map +0 -1
  147. package/dest/service/data_store.js +0 -188
  148. package/dest/service/discV5_service.d.ts.map +0 -1
  149. package/dest/service/discV5_service.js +0 -144
  150. package/dest/service/dummy_service.d.ts.map +0 -1
  151. package/dest/service/encoding.d.ts.map +0 -1
  152. package/dest/service/encoding.js +0 -49
  153. package/dest/service/index.d.ts +0 -3
  154. package/dest/service/index.d.ts.map +0 -1
  155. package/dest/service/index.js +0 -3
  156. package/dest/service/libp2p_service.d.ts +0 -136
  157. package/dest/service/libp2p_service.d.ts.map +0 -1
  158. package/dest/service/libp2p_service.js +0 -500
  159. package/dest/service/peer_manager.d.ts +0 -33
  160. package/dest/service/peer_manager.d.ts.map +0 -1
  161. package/dest/service/peer_manager.js +0 -214
  162. package/dest/service/peer_scoring.d.ts +0 -35
  163. package/dest/service/peer_scoring.d.ts.map +0 -1
  164. package/dest/service/peer_scoring.js +0 -72
  165. package/dest/service/reqresp/config.d.ts.map +0 -1
  166. package/dest/service/reqresp/handlers.d.ts.map +0 -1
  167. package/dest/service/reqresp/index.d.ts.map +0 -1
  168. package/dest/service/reqresp/interface.d.ts.map +0 -1
  169. package/dest/service/reqresp/rate_limiter/index.d.ts.map +0 -1
  170. package/dest/service/reqresp/rate_limiter/rate_limiter.d.ts.map +0 -1
  171. package/dest/service/reqresp/rate_limiter/rate_limits.d.ts.map +0 -1
  172. package/dest/service/reqresp/reqresp.d.ts.map +0 -1
  173. package/dest/service/reqresp/reqresp.js +0 -230
  174. package/dest/service/service.d.ts.map +0 -1
  175. package/dest/tx_validator/aggregate_tx_validator.d.ts.map +0 -1
  176. package/dest/tx_validator/aggregate_tx_validator.js +0 -32
  177. package/dest/tx_validator/data_validator.d.ts.map +0 -1
  178. package/dest/tx_validator/double_spend_validator.d.ts.map +0 -1
  179. package/dest/tx_validator/double_spend_validator.js +0 -56
  180. package/dest/tx_validator/index.d.ts.map +0 -1
  181. package/dest/tx_validator/metadata_validator.d.ts.map +0 -1
  182. package/dest/tx_validator/tx_proof_validator.d.ts.map +0 -1
  183. package/dest/tx_validator/tx_proof_validator.js +0 -29
  184. package/src/service/index.ts +0 -2
  185. package/src/service/peer_manager.ts +0 -266
  186. /package/dest/{tx_validator → msg_validators/tx_validator}/data_validator.d.ts +0 -0
  187. /package/dest/{tx_validator → msg_validators/tx_validator}/index.d.ts +0 -0
  188. /package/dest/{tx_validator → msg_validators/tx_validator}/metadata_validator.d.ts +0 -0
  189. /package/dest/{tx_validator → msg_validators/tx_validator}/tx_proof_validator.d.ts +0 -0
  190. /package/dest/{service → services}/data_store.d.ts +0 -0
  191. /package/dest/{service → services}/dummy_service.d.ts +0 -0
  192. /package/dest/{service → services}/reqresp/config.d.ts +0 -0
  193. /package/dest/{service → services}/reqresp/handlers.d.ts +0 -0
  194. /package/dest/{service → services}/reqresp/index.d.ts +0 -0
  195. /package/dest/{service → services}/reqresp/interface.d.ts +0 -0
  196. /package/dest/{service → services}/reqresp/rate_limiter/index.d.ts +0 -0
  197. /package/dest/{service → services}/reqresp/rate_limiter/rate_limits.d.ts +0 -0
  198. /package/dest/{service → services}/service.d.ts +0 -0
  199. /package/src/{tx_validator → msg_validators/tx_validator}/data_validator.ts +0 -0
  200. /package/src/{tx_validator → msg_validators/tx_validator}/index.ts +0 -0
  201. /package/src/{tx_validator → msg_validators/tx_validator}/metadata_validator.ts +0 -0
  202. /package/src/{tx_validator → msg_validators/tx_validator}/tx_proof_validator.ts +0 -0
  203. /package/src/{service → services}/data_store.ts +0 -0
  204. /package/src/{service → services}/dummy_service.ts +0 -0
  205. /package/src/{service → services}/reqresp/config.ts +0 -0
  206. /package/src/{service → services}/reqresp/handlers.ts +0 -0
  207. /package/src/{service → services}/reqresp/index.ts +0 -0
  208. /package/src/{service → services}/reqresp/interface.ts +0 -0
  209. /package/src/{service → services}/reqresp/rate_limiter/index.ts +0 -0
  210. /package/src/{service → services}/reqresp/rate_limiter/rate_limits.ts +0 -0
  211. /package/src/{service → services}/service.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate_limiter.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/rate_limiter/rate_limiter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAM7F;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,eAAe;IAE1B,OAAO,CAAC,GAAG,CAAS;IAEpB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;OAGG;gBACS,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAMnD,KAAK,IAAI,OAAO;CAWjB;AASD,aAAK,eAAe;IAClB,OAAO,IAAA;IACP,YAAY,IAAA;IACZ,UAAU,IAAA;CACX;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAE7B,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;IAOhH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAwBtC,oBAAoB;CAQrB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,0BAA0B;IAKzB,OAAO,CAAC,WAAW;IAJ/B,OAAO,CAAC,uBAAuB,CAAkD;IAEjF,OAAO,CAAC,eAAe,CAAyC;gBAE5C,WAAW,EAAE,WAAW,EAAE,UAAU,GAAE,4BAAkD;IAgB5G,KAAK;IAML,KAAK,CAAC,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAkB/D,oBAAoB;IAIpB;;OAEG;IACH,IAAI;CAGL"}
@@ -1,4 +1,9 @@
1
- import { PeerErrorSeverity } from '../../peer_scoring.js';
1
+ /**
2
+ * @attribution Rate limiter approach implemented in the lodestar ethereum 2 client.
3
+ * Rationale is that if it was good enough for them, then it should be good enough for us.
4
+ * https://github.com/ChainSafe/lodestar
5
+ */
6
+ import { PeerErrorSeverity } from '@aztec/circuit-types';
2
7
  import { DEFAULT_RATE_LIMITS } from './rate_limits.js';
3
8
  // Check for disconnected peers every 10 minutes
4
9
  const CHECK_DISCONNECTED_PEERS_INTERVAL_MS = 10 * 60 * 1000;
@@ -167,4 +172,4 @@ export class RequestResponseRateLimiter {
167
172
  clearInterval(this.cleanupInterval);
168
173
  }
169
174
  }
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZV9saW1pdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2UvcmVxcmVzcC9yYXRlX2xpbWl0ZXIvcmF0ZV9saW1pdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXZELGdEQUFnRDtBQUNoRCxNQUFNLG9DQUFvQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRTVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFRMUI7OztPQUdHO0lBQ0gsWUFBWSxVQUFrQixFQUFFLFdBQW1CO1FBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXZCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0QsSUFBSSxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQVNELElBQUssZUFJSjtBQUpELFdBQUssZUFBZTtJQUNsQiwyREFBTyxDQUFB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
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZV9saW1pdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3JlcXJlc3AvcmF0ZV9saW1pdGVyL3JhdGVfbGltaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFNekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdkQsZ0RBQWdEO0FBQ2hELE1BQU0sb0NBQW9DLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFNUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQVExQjs7O09BR0c7SUFDSCxZQUFZLFVBQWtCLEVBQUUsV0FBbUI7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUM7UUFDakMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUs7UUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvRCxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBU0QsSUFBSyxlQUlKO0FBSkQsV0FBSyxlQUFlO0lB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate_limits.d.ts","sourceRoot":"","sources":["../../../../src/services/reqresp/rate_limiter/rate_limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,4BAA4B,EAAoC,MAAM,iBAAiB,CAAC;AAGrH,eAAO,MAAM,mBAAmB,EAAE,4BA+BjC,CAAC"}
@@ -32,4 +32,4 @@ export const DEFAULT_RATE_LIMITS = {
32
32
  },
33
33
  },
34
34
  };
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZV9saW1pdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZS9yZXFyZXNwL3JhdGVfbGltaXRlci9yYXRlX2xpbWl0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFxQyxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckgsNENBQTRDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFpQztJQUMvRCxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQ2YsU0FBUyxFQUFFO1lBQ1QsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLENBQUM7U0FDZDtRQUNELFdBQVcsRUFBRTtZQUNYLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxFQUFFO1NBQ2Y7S0FDRjtJQUNELENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDakIsU0FBUyxFQUFFO1lBQ1QsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLENBQUM7U0FDZDtRQUNELFdBQVcsRUFBRTtZQUNYLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxFQUFFO1NBQ2Y7S0FDRjtJQUNELENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDakIsU0FBUyxFQUFFO1lBQ1QsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLENBQUM7U0FDZDtRQUNELFdBQVcsRUFBRTtZQUNYLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxFQUFFO1NBQ2Y7S0FDRjtDQUNGLENBQUMifQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZV9saW1pdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9yYXRlX2xpbWl0ZXIvcmF0ZV9saW1pdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBcUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXJILDRDQUE0QztBQUM1QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBaUM7SUFDL0QsQ0FBQyxhQUFhLENBQUMsRUFBRTtRQUNmLFNBQVMsRUFBRTtZQUNULFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxDQUFDO1NBQ2Q7UUFDRCxXQUFXLEVBQUU7WUFDWCxXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsRUFBRTtTQUNmO0tBQ0Y7SUFDRCxDQUFDLGVBQWUsQ0FBQyxFQUFFO1FBQ2pCLFNBQVMsRUFBRTtZQUNULFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxDQUFDO1NBQ2Q7UUFDRCxXQUFXLEVBQUU7WUFDWCxXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsRUFBRTtTQUNmO0tBQ0Y7SUFDRCxDQUFDLGVBQWUsQ0FBQyxFQUFFO1FBQ2pCLFNBQVMsRUFBRTtZQUNULFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxDQUFDO1NBQ2Q7UUFDRCxXQUFXLEVBQUU7WUFDWCxXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsRUFBRTtTQUNmO0tBQ0Y7Q0FDRixDQUFDIn0=
@@ -29,6 +29,7 @@ export declare class ReqResp {
29
29
  private subProtocolHandlers;
30
30
  private subProtocolValidators;
31
31
  private rateLimiter;
32
+ private snappyTransform;
32
33
  constructor(config: P2PReqRespConfig, libp2p: Libp2p, peerManager: PeerManager);
33
34
  /**
34
35
  * Start the reqresp service
@@ -93,6 +94,21 @@ export declare class ReqResp {
93
94
  * the stream is closed on the requester's end and sender (us) updates its peer score
94
95
  */
95
96
  sendRequestToPeer(peerId: PeerId, subProtocol: ReqRespSubProtocol, payload: Buffer): Promise<Buffer | undefined>;
97
+ /**
98
+ * Handle a response error
99
+ *
100
+ * ReqResp errors are punished differently depending on the severity of the offense
101
+ *
102
+ * @param e - The error
103
+ * @param peerId - The peer id
104
+ * @param subProtocol - The sub protocol
105
+ * @returns If the error is non pubishable, then undefined is returned, otherwise the peer is penalized
106
+ */
107
+ private handleResponseError;
108
+ /**
109
+ * Categorize the error and log it.
110
+ */
111
+ private categorizeError;
96
112
  /**
97
113
  * Read a message returned from a stream into a single buffer
98
114
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reqresp.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/reqresp.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAA2B,KAAK,MAAM,EAAe,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AASrC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,cAAc,EAEpB,MAAM,gBAAgB,CAAC;AAGxB;;;;;;;;;;;;;GAaG;AACH,qBAAa,OAAO;IAcoB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAE,OAAO,CAAC,WAAW;IAb5F,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,0BAA0B,CAAS;IAG3C,OAAO,CAAC,mBAAmB,CAA6D;IACxF,OAAO,CAAC,qBAAqB,CAAiE;IAE9F,OAAO,CAAC,WAAW,CAA6B;IAEhD,OAAO,CAAC,eAAe,CAAkB;gBAE7B,MAAM,EAAE,gBAAgB,EAAqB,MAAM,EAAE,MAAM,EAAU,WAAW,EAAE,WAAW;IAUzG;;OAEG;IACG,KAAK,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,4BAA4B;IAWhH;;OAEG;IACG,IAAI;IAiBV;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,WAAW,CAAC,WAAW,SAAS,kBAAkB,EACtD,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,GAC5D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IAuC7E;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA8B9B;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,eAAe;IA4CvB;;OAEG;YACW,WAAW;IASzB;;;;;;;;;;;;;;;OAeG;YACW,aAAa;CA+B5B"}
@@ -0,0 +1,279 @@
1
+ // @attribution: lodestar impl for inspiration
2
+ import { PeerErrorSeverity } from '@aztec/circuit-types';
3
+ import { createLogger } from '@aztec/foundation/log';
4
+ import { executeTimeout } from '@aztec/foundation/timer';
5
+ import { pipe } from 'it-pipe';
6
+ import { CollectiveReqRespTimeoutError, IndividualReqRespTimeoutError, InvalidResponseError, } from '../../errors/reqresp.error.js';
7
+ import { SnappyTransform } from '../encoding.js';
8
+ import { DEFAULT_SUB_PROTOCOL_HANDLERS, DEFAULT_SUB_PROTOCOL_VALIDATORS, subProtocolMap, } from './interface.js';
9
+ import { RequestResponseRateLimiter } from './rate_limiter/rate_limiter.js';
10
+ /**
11
+ * The Request Response Service
12
+ *
13
+ * It allows nodes to request specific information from their peers, its use case covers recovering
14
+ * information that was missed during a syncronisation or a gossip event.
15
+ *
16
+ * This service implements the request response sub protocol, it is heavily inspired from
17
+ * ethereum implementations of the same name.
18
+ *
19
+ * Note, responses get compressed in streamHandler
20
+ * so they get decompressed in readMessage
21
+ *
22
+ * see: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#the-reqresp-domain
23
+ */
24
+ export class ReqResp {
25
+ constructor(config, libp2p, peerManager) {
26
+ this.libp2p = libp2p;
27
+ this.peerManager = peerManager;
28
+ // Warning, if the `start` function is not called as the parent class constructor, then the default sub protocol handlers will be used ( not good )
29
+ this.subProtocolHandlers = DEFAULT_SUB_PROTOCOL_HANDLERS;
30
+ this.subProtocolValidators = DEFAULT_SUB_PROTOCOL_VALIDATORS;
31
+ this.logger = createLogger('p2p:reqresp');
32
+ this.overallRequestTimeoutMs = config.overallRequestTimeoutMs;
33
+ this.individualRequestTimeoutMs = config.individualRequestTimeoutMs;
34
+ this.rateLimiter = new RequestResponseRateLimiter(peerManager);
35
+ this.snappyTransform = new SnappyTransform();
36
+ }
37
+ /**
38
+ * Start the reqresp service
39
+ */
40
+ async start(subProtocolHandlers, subProtocolValidators) {
41
+ this.subProtocolHandlers = subProtocolHandlers;
42
+ this.subProtocolValidators = subProtocolValidators;
43
+ // Register all protocol handlers
44
+ for (const subProtocol of Object.keys(this.subProtocolHandlers)) {
45
+ await this.libp2p.handle(subProtocol, this.streamHandler.bind(this, subProtocol));
46
+ }
47
+ this.rateLimiter.start();
48
+ }
49
+ /**
50
+ * Stop the reqresp service
51
+ */
52
+ async stop() {
53
+ // Unregister all handlers
54
+ for (const protocol of Object.keys(this.subProtocolHandlers)) {
55
+ await this.libp2p.unhandle(protocol);
56
+ }
57
+ // Close all active connections
58
+ const closeStreamPromises = this.libp2p.getConnections().map(connection => connection.close());
59
+ await Promise.all(closeStreamPromises);
60
+ this.logger.debug('ReqResp: All active streams closed');
61
+ this.rateLimiter.stop();
62
+ this.logger.debug('ReqResp: Rate limiter stopped');
63
+ // NOTE: We assume libp2p instance is managed by the caller
64
+ }
65
+ /**
66
+ * Send a request to peers, returns the first response
67
+ *
68
+ * @param subProtocol - The protocol being requested
69
+ * @param request - The request to send
70
+ * @returns - The response from the peer, otherwise undefined
71
+ *
72
+ * @description
73
+ * This method attempts to send a request to all active peers using the specified sub-protocol.
74
+ * It opens a stream with each peer, sends the request, and awaits a response.
75
+ * If a valid response is received, it returns the response; otherwise, it continues to the next peer.
76
+ * If no response is received from any peer, it returns undefined.
77
+ *
78
+ * The method performs the following steps:
79
+ * - Iterates over all active peers.
80
+ * - Opens a stream with each peer using the specified sub-protocol.
81
+ *
82
+ * When a response is received, it is validated using the given sub protocols response validator.
83
+ * To see the interface for the response validator - see `interface.ts`
84
+ *
85
+ * Failing a response validation requests in a severe peer penalty, and will
86
+ * prompt the node to continue to search to the next peer.
87
+ * For example, a transaction request validator will check that the payload returned does in fact
88
+ * match the txHash that was requested. A peer that fails this check an only be an extremely naughty peer.
89
+ *
90
+ * This entire operation is wrapped in an overall timeout, that is independent of the
91
+ * peer it is requesting data from.
92
+ *
93
+ */
94
+ async sendRequest(subProtocol, request) {
95
+ const requestFunction = async () => {
96
+ const responseValidator = this.subProtocolValidators[subProtocol];
97
+ const requestBuffer = request.toBuffer();
98
+ // Get active peers
99
+ const peers = this.libp2p.getPeers();
100
+ // Attempt to ask all of our peers
101
+ for (const peer of peers) {
102
+ const response = await this.sendRequestToPeer(peer, subProtocol, requestBuffer);
103
+ // If we get a response, return it, otherwise we iterate onto the next peer
104
+ // We do not consider it a success if we have an empty buffer
105
+ if (response && response.length > 0) {
106
+ const object = subProtocolMap[subProtocol].response.fromBuffer(response);
107
+ // The response validator handles peer punishment within
108
+ const isValid = await responseValidator(request, object, peer);
109
+ if (!isValid) {
110
+ throw new InvalidResponseError();
111
+ }
112
+ return object;
113
+ }
114
+ }
115
+ return undefined;
116
+ };
117
+ try {
118
+ return await executeTimeout(requestFunction, this.overallRequestTimeoutMs, () => new CollectiveReqRespTimeoutError());
119
+ }
120
+ catch (e) {
121
+ this.logger.debug(`${e.message} | subProtocol: ${subProtocol}`);
122
+ return undefined;
123
+ }
124
+ }
125
+ /**
126
+ * Sends a request to a specific peer
127
+ *
128
+ * We first dial a particular protocol for the peer, this ensures that the peer knows
129
+ * what to respond with
130
+ *
131
+ *
132
+ * @param peerId - The peer to send the request to
133
+ * @param subProtocol - The protocol to use to request
134
+ * @param payload - The payload to send
135
+ * @returns If the request is successful, the response is returned, otherwise undefined
136
+ *
137
+ * @description
138
+ * This method attempts to open a stream with the specified peer, send the payload,
139
+ * and await a response.
140
+ * If an error occurs, it penalizes the peer and returns undefined.
141
+ *
142
+ * The method performs the following steps:
143
+ * - Opens a stream with the peer using the specified sub-protocol.
144
+ * - Sends the payload and awaits a response with a timeout.
145
+ *
146
+ * If the stream is not closed by the dialled peer, and a timeout occurs, then
147
+ * the stream is closed on the requester's end and sender (us) updates its peer score
148
+ */
149
+ async sendRequestToPeer(peerId, subProtocol, payload) {
150
+ let stream;
151
+ try {
152
+ stream = await this.libp2p.dialProtocol(peerId, subProtocol);
153
+ this.logger.trace(`Stream opened with ${peerId.toString()} for ${subProtocol}`);
154
+ // Open the stream with a timeout
155
+ const result = await executeTimeout(() => pipe([payload], stream, this.readMessage.bind(this)), this.individualRequestTimeoutMs, () => new IndividualReqRespTimeoutError());
156
+ return result;
157
+ }
158
+ catch (e) {
159
+ this.handleResponseError(e, peerId, subProtocol);
160
+ }
161
+ finally {
162
+ if (stream) {
163
+ try {
164
+ await stream.close();
165
+ this.logger.trace(`Stream closed with ${peerId.toString()} for ${subProtocol}`);
166
+ }
167
+ catch (closeError) {
168
+ this.logger.error(`Error closing stream: ${closeError instanceof Error ? closeError.message : 'Unknown error'}`);
169
+ }
170
+ }
171
+ }
172
+ }
173
+ /**
174
+ * Handle a response error
175
+ *
176
+ * ReqResp errors are punished differently depending on the severity of the offense
177
+ *
178
+ * @param e - The error
179
+ * @param peerId - The peer id
180
+ * @param subProtocol - The sub protocol
181
+ * @returns If the error is non pubishable, then undefined is returned, otherwise the peer is penalized
182
+ */
183
+ handleResponseError(e, peerId, subProtocol) {
184
+ const severity = this.categorizeError(e, peerId, subProtocol);
185
+ if (severity) {
186
+ this.peerManager.penalizePeer(peerId, severity);
187
+ }
188
+ }
189
+ /**
190
+ * Categorize the error and log it.
191
+ */
192
+ categorizeError(e, peerId, subProtocol) {
193
+ // Non pubishable errors
194
+ // We do not punish a collective timeout, as the node triggers this interupt, independent of the peer's behaviour
195
+ const logTags = {
196
+ peerId: peerId.toString(),
197
+ subProtocol,
198
+ };
199
+ if (e instanceof CollectiveReqRespTimeoutError || e instanceof InvalidResponseError) {
200
+ this.logger.debug(`Non-punishable error: ${e.message} | peerId: ${peerId.toString()} | subProtocol: ${subProtocol}`, logTags);
201
+ return undefined;
202
+ }
203
+ // Pubishable errors
204
+ // Connection reset errors in the networking stack are punished with high severity
205
+ // it just signals an unreliable peer
206
+ // We assume that the requesting node has a functioning networking stack.
207
+ if (e?.code === 'ECONNRESET' || e?.code === 'EPIPE') {
208
+ this.logger.debug(`Connection reset: ${peerId.toString()}`, logTags);
209
+ return PeerErrorSeverity.HighToleranceError;
210
+ }
211
+ if (e?.code === 'ECONNREFUSED') {
212
+ this.logger.debug(`Connection refused: ${peerId.toString()}`, logTags);
213
+ return PeerErrorSeverity.HighToleranceError;
214
+ }
215
+ // Timeout errors are punished with high tolerance, they can be due to a geogrpahically far away peer or an
216
+ // overloaded peer
217
+ if (e instanceof IndividualReqRespTimeoutError) {
218
+ this.logger.debug(`Timeout error: ${e.message} | peerId: ${peerId.toString()} | subProtocol: ${subProtocol}`, logTags);
219
+ return PeerErrorSeverity.HighToleranceError;
220
+ }
221
+ // Catch all error
222
+ this.logger.error(`Unexpected error sending request to peer`, e, logTags);
223
+ return PeerErrorSeverity.HighToleranceError;
224
+ }
225
+ /**
226
+ * Read a message returned from a stream into a single buffer
227
+ */
228
+ async readMessage(source) {
229
+ const chunks = [];
230
+ for await (const chunk of source) {
231
+ chunks.push(chunk.subarray());
232
+ }
233
+ const messageData = Buffer.concat(chunks);
234
+ return this.snappyTransform.inboundTransformNoTopic(messageData);
235
+ }
236
+ /**
237
+ * Stream Handler
238
+ * Reads the incoming stream, determines the protocol, then triggers the appropriate handler
239
+ *
240
+ * @param param0 - The incoming stream data
241
+ *
242
+ * @description
243
+ * An individual stream handler will be bound to each sub protocol, and handles returning data back
244
+ * to the requesting peer.
245
+ *
246
+ * The sub protocol handler interface is defined within `interface.ts` and will be assigned to the
247
+ * req resp service on start up.
248
+ *
249
+ * We check rate limits for each peer, note the peer will be penalised within the rate limiter implementation
250
+ * if they exceed their peer specific limits.
251
+ */
252
+ async streamHandler(protocol, { stream, connection }) {
253
+ // Store a reference to from this for the async generator
254
+ if (!this.rateLimiter.allow(protocol, connection.remotePeer)) {
255
+ this.logger.warn(`Rate limit exceeded for ${protocol} from ${connection.remotePeer}`);
256
+ // TODO(#8483): handle changing peer scoring for failed rate limit, maybe differentiate between global and peer limits here when punishing
257
+ await stream.close();
258
+ return;
259
+ }
260
+ const handler = this.subProtocolHandlers[protocol];
261
+ const transform = this.snappyTransform;
262
+ try {
263
+ await pipe(stream, async function* (source) {
264
+ for await (const chunkList of source) {
265
+ const msg = Buffer.from(chunkList.subarray());
266
+ const response = await handler(msg);
267
+ yield new Uint8Array(transform.outboundTransformNoTopic(response));
268
+ }
269
+ }, stream);
270
+ }
271
+ catch (e) {
272
+ this.logger.warn(e);
273
+ }
274
+ finally {
275
+ await stream.close();
276
+ }
277
+ }
278
+ }
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxcmVzcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3JlcXJlc3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOENBQThDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBZSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUkvQixPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3QixvQkFBb0IsR0FDckIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsT0FBTyxFQUNMLDZCQUE2QixFQUM3QiwrQkFBK0IsRUFLL0IsY0FBYyxHQUNmLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBY2xCLFlBQVksTUFBd0IsRUFBcUIsTUFBYyxFQUFVLFdBQXdCO1FBQWhELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVJ6RyxtSkFBbUo7UUFDM0ksd0JBQW1CLEdBQStCLDZCQUE2QixDQUFDO1FBQ2hGLDBCQUFxQixHQUFpQywrQkFBK0IsQ0FBQztRQU81RixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDO1FBQzlELElBQUksQ0FBQywwQkFBMEIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUM7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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/services/service.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAElG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEtF,oBAAY,kBAAkB;IAC5B,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAElD;;;;;;OAMG;IACH,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EAC7C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GACzD,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAG3E,6BAA6B,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IAE/G,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC;IAE1B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD;;SAEK;IACL,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;SAEK;IACL,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,WAAW,IAAI,GAAG,EAAE,CAAC;IAErB;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzC;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAElD,SAAS,IAAI,kBAAkB,CAAC;IAEhC,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC;CAC3B"}
@@ -3,4 +3,4 @@ export var PeerDiscoveryState;
3
3
  PeerDiscoveryState["RUNNING"] = "running";
4
4
  PeerDiscoveryState["STOPPED"] = "stopped";
5
5
  })(PeerDiscoveryState || (PeerDiscoveryState = {}));
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUM1Qix5Q0FBbUIsQ0FBQTtJQUNuQix5Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QiJ9
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sQ0FBTixJQUFZLGtCQUdYO0FBSEQsV0FBWSxrQkFBa0I7SUFDNUIseUNBQW1CLENBQUE7SUFDbkIseUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUhXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFHN0IifQ==
@@ -0,0 +1,38 @@
1
+ /***************************************************
2
+ * Events
3
+ ***************************************************/
4
+ /**
5
+ * Events emitted from the libp2p node.
6
+ */
7
+ export declare enum PeerEvent {
8
+ DISCOVERED = "peer:discovered",
9
+ CONNECTED = "peer:connect",
10
+ DISCONNECTED = "peer:disconnect"
11
+ }
12
+ /**
13
+ * Events emitted from the Discv5 service.
14
+ */
15
+ export declare enum Discv5Event {
16
+ DISCOVERED = "discovered",
17
+ ENR_ADDED = "enrAdded"
18
+ }
19
+ /**
20
+ * Events emitted from the GossipSub protocol.
21
+ */
22
+ export declare enum GossipSubEvent {
23
+ MESSAGE = "gossipsub:message"
24
+ }
25
+ /***************************************************
26
+ * Types
27
+ ***************************************************/
28
+ /**
29
+ * Aztec network specific types
30
+ */
31
+ export declare const AZTEC_ENR_KEY = "aztec_network";
32
+ export declare enum AztecENR {
33
+ devnet = 1,
34
+ testnet = 2,
35
+ mainnet = 3
36
+ }
37
+ export declare const AZTEC_NET = AztecENR.devnet;
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA;;qDAEqD;AAErD;;GAEG;AACH,oBAAY,SAAS;IACnB,UAAU,oBAAoB;IAC9B,SAAS,iBAAiB;IAC1B,YAAY,oBAAoB;CACjC;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,UAAU,eAAe;IACzB,SAAS,aAAa;CACvB;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB,OAAO,sBAAsB;CAC9B;AAED;;qDAEqD;AACrD;;GAEG;AACH,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,oBAAY,QAAQ;IAClB,MAAM,IAAO;IACb,OAAO,IAAO;IACd,OAAO,IAAO;CACf;AAGD,eAAO,MAAM,SAAS,kBAAkB,CAAC"}
@@ -0,0 +1,43 @@
1
+ /***************************************************
2
+ * Events
3
+ ***************************************************/
4
+ /**
5
+ * Events emitted from the libp2p node.
6
+ */
7
+ export var PeerEvent;
8
+ (function (PeerEvent) {
9
+ PeerEvent["DISCOVERED"] = "peer:discovered";
10
+ PeerEvent["CONNECTED"] = "peer:connect";
11
+ PeerEvent["DISCONNECTED"] = "peer:disconnect";
12
+ })(PeerEvent || (PeerEvent = {}));
13
+ /**
14
+ * Events emitted from the Discv5 service.
15
+ */
16
+ export var Discv5Event;
17
+ (function (Discv5Event) {
18
+ Discv5Event["DISCOVERED"] = "discovered";
19
+ Discv5Event["ENR_ADDED"] = "enrAdded";
20
+ })(Discv5Event || (Discv5Event = {}));
21
+ /**
22
+ * Events emitted from the GossipSub protocol.
23
+ */
24
+ export var GossipSubEvent;
25
+ (function (GossipSubEvent) {
26
+ GossipSubEvent["MESSAGE"] = "gossipsub:message";
27
+ })(GossipSubEvent || (GossipSubEvent = {}));
28
+ /***************************************************
29
+ * Types
30
+ ***************************************************/
31
+ /**
32
+ * Aztec network specific types
33
+ */
34
+ export const AZTEC_ENR_KEY = 'aztec_network';
35
+ export var AztecENR;
36
+ (function (AztecENR) {
37
+ AztecENR[AztecENR["devnet"] = 1] = "devnet";
38
+ AztecENR[AztecENR["testnet"] = 2] = "testnet";
39
+ AztecENR[AztecENR["mainnet"] = 3] = "mainnet";
40
+ })(AztecENR || (AztecENR = {}));
41
+ // TODO: Make this an env var
42
+ export const AZTEC_NET = AztecENR.devnet;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O3FEQUVxRDtBQUVyRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDbkIsMkNBQThCLENBQUE7SUFDOUIsdUNBQTBCLENBQUE7SUFDMUIsNkNBQWdDLENBQUE7QUFDbEMsQ0FBQyxFQUpXLFNBQVMsS0FBVCxTQUFTLFFBSXBCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHdDQUF5QixDQUFBO0lBQ3pCLHFDQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksY0FFWDtBQUZELFdBQVksY0FBYztJQUN4QiwrQ0FBNkIsQ0FBQTtBQUMvQixDQUFDLEVBRlcsY0FBYyxLQUFkLGNBQWMsUUFFekI7QUFFRDs7cURBRXFEO0FBQ3JEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQUU3QyxNQUFNLENBQU4sSUFBWSxRQUlYO0FBSkQsV0FBWSxRQUFRO0lBQ2xCLDJDQUFhLENBQUE7SUFDYiw2Q0FBYyxDQUFBO0lBQ2QsNkNBQWMsQ0FBQTtBQUNoQixDQUFDLEVBSlcsUUFBUSxLQUFSLFFBQVEsUUFJbkI7QUFFRCw2QkFBNkI7QUFDN0IsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMifQ==
package/package.json CHANGED
@@ -1,11 +1,13 @@
1
1
  {
2
2
  "name": "@aztec/p2p",
3
- "version": "0.67.1",
3
+ "version": "0.68.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
7
7
  "./mocks": "./dest/mocks/index.js",
8
- "./bootstrap": "./dest/bootstrap/bootstrap.js"
8
+ "./bootstrap": "./dest/bootstrap/bootstrap.js",
9
+ "./config": "./dest/config.js",
10
+ "./msg_validators": "./dest/msg_validators/index.js"
9
11
  },
10
12
  "typedocOptions": {
11
13
  "entryPoints": [
@@ -20,7 +22,7 @@
20
22
  "clean": "rm -rf ./dest .tsbuildinfo",
21
23
  "formatting": "run -T prettier --check ./src && run -T eslint ./src",
22
24
  "formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
23
- "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests",
25
+ "test": "HARDWARE_CONCURRENCY=${HARDWARE_CONCURRENCY:-16} RAYON_NUM_THREADS=${RAYON_NUM_THREADS:-4} NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}",
24
26
  "start": "node ./dest",
25
27
  "start:dev": "tsc-watch -p tsconfig.json --onSuccess 'yarn start'"
26
28
  },
@@ -54,9 +56,9 @@
54
56
  ],
55
57
  "reporters": [
56
58
  [
57
- "default",
59
+ "jest-silent-reporter",
58
60
  {
59
- "summaryThreshold": 9999
61
+ "useDots": true
60
62
  }
61
63
  ]
62
64
  ],
@@ -66,18 +68,19 @@
66
68
  ]
67
69
  },
68
70
  "dependencies": {
69
- "@aztec/circuit-types": "0.67.1",
70
- "@aztec/circuits.js": "0.67.1",
71
- "@aztec/foundation": "0.67.1",
72
- "@aztec/kv-store": "0.67.1",
73
- "@aztec/telemetry-client": "0.67.1",
71
+ "@aztec/circuit-types": "0.68.1",
72
+ "@aztec/circuits.js": "0.68.1",
73
+ "@aztec/epoch-cache": "0.68.1",
74
+ "@aztec/foundation": "0.68.1",
75
+ "@aztec/kv-store": "0.68.1",
76
+ "@aztec/telemetry-client": "0.68.1",
74
77
  "@chainsafe/discv5": "9.0.0",
75
78
  "@chainsafe/enr": "3.0.0",
76
79
  "@chainsafe/libp2p-gossipsub": "13.0.0",
77
80
  "@chainsafe/libp2p-noise": "^15.0.0",
78
81
  "@chainsafe/libp2p-yamux": "^6.0.2",
79
82
  "@libp2p/bootstrap": "10.0.0",
80
- "@libp2p/crypto": "^4.1.1",
83
+ "@libp2p/crypto": "4.0.3",
81
84
  "@libp2p/identify": "1.0.18",
82
85
  "@libp2p/interface": "1.3.1",
83
86
  "@libp2p/kad-dht": "10.0.4",
@@ -4,19 +4,19 @@ import { type AztecKVStore } from '@aztec/kv-store';
4
4
  import { OtelMetricsAdapter, type TelemetryClient } from '@aztec/telemetry-client';
5
5
 
6
6
  import { Discv5, type Discv5EventEmitter } from '@chainsafe/discv5';
7
- import { SignableENR } from '@chainsafe/enr';
7
+ import { type ENR, SignableENR } from '@chainsafe/enr';
8
8
  import type { PeerId } from '@libp2p/interface';
9
9
  import { type Multiaddr, multiaddr } from '@multiformats/multiaddr';
10
10
 
11
11
  import type { BootnodeConfig } from '../config.js';
12
- import { AZTEC_ENR_KEY, AZTEC_NET } from '../service/discV5_service.js';
12
+ import { AZTEC_ENR_KEY, AZTEC_NET } from '../services/types.js';
13
13
  import { convertToMultiaddr, createLibP2PPeerIdFromPrivateKey, getPeerIdPrivateKey } from '../util.js';
14
14
 
15
15
  /**
16
16
  * Encapsulates a 'Bootstrap' node, used for the purpose of assisting new joiners in acquiring peers.
17
17
  */
18
18
  export class BootstrapNode implements P2PBootstrapApi {
19
- private node?: Discv5 = undefined;
19
+ private node?: Discv5 & Discv5EventEmitter = undefined;
20
20
  private peerId?: PeerId;
21
21
 
22
22
  constructor(
@@ -49,6 +49,7 @@ export class BootstrapNode implements P2PBootstrapApi {
49
49
  enr.set(AZTEC_ENR_KEY, Uint8Array.from([AZTEC_NET]));
50
50
 
51
51
  this.logger.debug(`Starting bootstrap node ${peerId} listening on ${listenAddrUdp.toString()}`);
52
+
52
53
  const metricsRegistry = new OtelMetricsAdapter(this.telemetry);
53
54
  this.node = Discv5.create({
54
55
  enr,
@@ -61,10 +62,10 @@ export class BootstrapNode implements P2PBootstrapApi {
61
62
  metricsRegistry,
62
63
  });
63
64
 
64
- (this.node as Discv5EventEmitter).on('multiaddrUpdated', (addr: Multiaddr) => {
65
+ this.node.on('multiaddrUpdated', (addr: Multiaddr) => {
65
66
  this.logger.info('Advertised socket address updated', { addr: addr.toString() });
66
67
  });
67
- (this.node as Discv5EventEmitter).on('discovered', async (enr: SignableENR) => {
68
+ this.node.on('discovered', async (enr: SignableENR) => {
68
69
  const addr = await enr.getFullMultiaddr('udp');
69
70
  this.logger.verbose(`Discovered new peer`, { enr: enr.encodeTxt(), addr: addr?.toString() });
70
71
  });
@@ -88,35 +89,39 @@ export class BootstrapNode implements P2PBootstrapApi {
88
89
  this.logger.info('Bootstrap node stopped');
89
90
  }
90
91
 
92
+ private assertNodeStarted() {
93
+ if (!this.node) {
94
+ throw new Error('Node not started');
95
+ }
96
+ }
97
+
98
+ private assertPeerId() {
99
+ if (!this.peerId) {
100
+ throw new Error('No peerId found');
101
+ }
102
+ }
103
+
91
104
  /**
92
105
  * Returns the peerId of this node.
93
106
  * @returns The node's peer Id
94
107
  */
95
108
  public getPeerId() {
96
- if (!this.peerId) {
97
- throw new Error('Node not started');
98
- }
99
- return this.peerId;
109
+ this.assertPeerId();
110
+ return this.peerId!;
100
111
  }
101
112
 
102
113
  public getENR() {
103
- if (!this.node) {
104
- throw new Error('Node not started');
105
- }
114
+ this.assertNodeStarted();
106
115
  return this.node?.enr.toENR();
107
116
  }
108
117
 
109
118
  public getEncodedEnr() {
110
- if (!this.node) {
111
- throw new Error('Node not started');
112
- }
113
- return Promise.resolve(this.node.enr.encodeTxt());
119
+ this.assertNodeStarted();
120
+ return Promise.resolve(this.node!.enr.encodeTxt());
114
121
  }
115
122
 
116
123
  public getRoutingTable() {
117
- if (!this.node) {
118
- throw new Error('Node not started');
119
- }
120
- return Promise.resolve(this.node.kadValues().map(enr => enr.encodeTxt()));
124
+ this.assertNodeStarted();
125
+ return Promise.resolve(this.node!.kadValues().map((enr: ENR) => enr.encodeTxt()));
121
126
  }
122
127
  }