@aztec/p2p 0.72.1 → 0.74.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 (78) hide show
  1. package/dest/bootstrap/bootstrap.d.ts +2 -2
  2. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  3. package/dest/bootstrap/bootstrap.js +1 -1
  4. package/dest/client/factory.d.ts +2 -2
  5. package/dest/client/factory.d.ts.map +1 -1
  6. package/dest/client/factory.js +4 -4
  7. package/dest/client/p2p_client.d.ts +13 -16
  8. package/dest/client/p2p_client.d.ts.map +1 -1
  9. package/dest/client/p2p_client.js +50 -62
  10. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
  11. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +11 -19
  12. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +6 -13
  13. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  14. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +74 -80
  15. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  16. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +5 -5
  17. package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -1
  18. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  19. package/dest/mem_pools/attestation_pool/mocks.js +3 -3
  20. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +9 -9
  21. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  22. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +59 -53
  23. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +7 -7
  24. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
  25. package/dest/mem_pools/tx_pool/memory_tx_pool.js +17 -18
  26. package/dest/mem_pools/tx_pool/tx_pool.d.ts +7 -7
  27. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  28. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  29. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +48 -47
  30. package/dest/mocks/index.js +3 -3
  31. package/dest/msg_validators/attestation_validator/attestation_validator.js +2 -2
  32. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +2 -2
  33. package/dest/msg_validators/tx_validator/block_header_validator.js +3 -3
  34. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  35. package/dest/msg_validators/tx_validator/data_validator.js +7 -7
  36. package/dest/msg_validators/tx_validator/double_spend_validator.js +3 -3
  37. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  38. package/dest/msg_validators/tx_validator/metadata_validator.js +9 -9
  39. package/dest/services/data_store.d.ts +4 -4
  40. package/dest/services/data_store.d.ts.map +1 -1
  41. package/dest/services/data_store.js +7 -7
  42. package/dest/services/libp2p/libp2p_service.d.ts +3 -3
  43. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  44. package/dest/services/libp2p/libp2p_service.js +56 -35
  45. package/dest/services/peer-manager/peer_manager.d.ts +1 -0
  46. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  47. package/dest/services/peer-manager/peer_manager.js +6 -3
  48. package/dest/services/reqresp/protocols/tx.js +4 -4
  49. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  50. package/dest/services/reqresp/reqresp.js +2 -2
  51. package/dest/util.d.ts +2 -2
  52. package/dest/util.d.ts.map +1 -1
  53. package/dest/util.js +2 -2
  54. package/package.json +7 -7
  55. package/src/bootstrap/bootstrap.ts +2 -2
  56. package/src/client/factory.ts +5 -5
  57. package/src/client/p2p_client.ts +63 -75
  58. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +14 -22
  59. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +100 -94
  60. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +4 -4
  61. package/src/mem_pools/attestation_pool/mocks.ts +3 -3
  62. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +84 -72
  63. package/src/mem_pools/tx_pool/memory_tx_pool.ts +26 -23
  64. package/src/mem_pools/tx_pool/tx_pool.ts +7 -7
  65. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +50 -47
  66. package/src/mocks/index.ts +2 -2
  67. package/src/msg_validators/attestation_validator/attestation_validator.ts +1 -1
  68. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +1 -1
  69. package/src/msg_validators/tx_validator/block_header_validator.ts +2 -2
  70. package/src/msg_validators/tx_validator/data_validator.ts +12 -9
  71. package/src/msg_validators/tx_validator/double_spend_validator.ts +2 -2
  72. package/src/msg_validators/tx_validator/metadata_validator.ts +8 -8
  73. package/src/services/data_store.ts +9 -9
  74. package/src/services/libp2p/libp2p_service.ts +70 -36
  75. package/src/services/peer-manager/peer_manager.ts +7 -2
  76. package/src/services/reqresp/protocols/tx.ts +3 -3
  77. package/src/services/reqresp/reqresp.ts +7 -1
  78. package/src/util.ts +7 -4
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,YAAa,SAAQ,MAAM;IAC1C,QAAQ,EAAE;QACR,MAAM,EAAE,SAAS,CAAC;QAClB,UAAU,EAAE;YACV,iBAAiB,EAAE,iBAAiB,CAAC;SACtC,CAAC;KACH,CAAC;CACH;AAED;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CASnF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAoB9F;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAInD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYhF;AAcD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,CA6CtC;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBrH;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,YAAa,SAAQ,MAAM;IAC1C,QAAQ,EAAE;QACR,MAAM,EAAE,SAAS,CAAC;QAClB,UAAU,EAAE;YACV,iBAAiB,EAAE,iBAAiB,CAAC;SACtC,CAAC;KACH,CAAC;CACH;AAED;;;;;;;6CAO6C;AAC7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CASnF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAoB9F;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAInD;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYhF;AAcD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GACnC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,CA6CtC;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EACrC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED;;;;GAIG;AACH,wBAAsB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
package/dest/util.js CHANGED
@@ -127,7 +127,7 @@ export async function getPeerIdPrivateKey(config, store) {
127
127
  await peerIdPrivateKeySingleton.set(config.peerIdPrivateKey);
128
128
  return config.peerIdPrivateKey;
129
129
  }
130
- const storedPeerIdPrivateKey = peerIdPrivateKeySingleton.get();
130
+ const storedPeerIdPrivateKey = await peerIdPrivateKeySingleton.getAsync();
131
131
  if (storedPeerIdPrivateKey) {
132
132
  return storedPeerIdPrivateKey;
133
133
  }
@@ -148,4 +148,4 @@ export async function createLibP2PPeerIdFromPrivateKey(privateKey) {
148
148
  const asLibp2pPrivateKey = await unmarshalPrivateKey(new Uint8Array(Buffer.from(privateKey, 'hex')));
149
149
  return await createFromPrivKey(asLibp2pPrivateKey);
150
150
  }
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUc5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBY3ZDOzs7Ozs7OzZDQU82QztBQUM3QyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBZSxFQUFFLFFBQXVCO0lBQ3pFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXRELE1BQU0sZUFBZSxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELElBQUksZUFBZSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsT0FBTyxJQUFJLGVBQWUsSUFBSSxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO0FBQzNELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBZSxFQUFFLGlCQUEwQjtJQUMxRSxJQUFJLElBQVksQ0FBQztJQUNqQixJQUFJLElBQVksQ0FBQztJQUVqQixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM1QiwyQ0FBMkM7UUFDM0MsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLE9BQU8sb0NBQW9DLENBQUMs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
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUc5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBY3ZDOzs7Ozs7OzZDQU82QztBQUM3QyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBZSxFQUFFLFFBQXVCO0lBQ3pFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXRELE1BQU0sZUFBZSxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELElBQUksZUFBZSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsT0FBTyxJQUFJLGVBQWUsSUFBSSxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO0FBQzNELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBZSxFQUFFLGlCQUEwQjtJQUMxRSxJQUFJLElBQVksQ0FBQztJQUNqQixJQUFJLElBQVksQ0FBQztJQUVqQixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM1QiwyQ0FBMkM7UUFDM0MsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLE9BQU8sb0NBQW9DLENBQUMs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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/p2p",
3
- "version": "0.72.1",
3
+ "version": "0.74.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -63,12 +63,12 @@
63
63
  ]
64
64
  },
65
65
  "dependencies": {
66
- "@aztec/circuit-types": "0.72.1",
67
- "@aztec/circuits.js": "0.72.1",
68
- "@aztec/epoch-cache": "0.72.1",
69
- "@aztec/foundation": "0.72.1",
70
- "@aztec/kv-store": "0.72.1",
71
- "@aztec/telemetry-client": "0.72.1",
66
+ "@aztec/circuit-types": "0.74.0",
67
+ "@aztec/circuits.js": "0.74.0",
68
+ "@aztec/epoch-cache": "0.74.0",
69
+ "@aztec/foundation": "0.74.0",
70
+ "@aztec/kv-store": "0.74.0",
71
+ "@aztec/telemetry-client": "0.74.0",
72
72
  "@chainsafe/discv5": "9.0.0",
73
73
  "@chainsafe/enr": "3.0.0",
74
74
  "@chainsafe/libp2p-gossipsub": "13.0.0",
@@ -1,6 +1,6 @@
1
1
  import { type P2PBootstrapApi } from '@aztec/circuit-types/interfaces';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
- import { type AztecKVStore } from '@aztec/kv-store';
3
+ import { type AztecAsyncKVStore } 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';
@@ -20,7 +20,7 @@ export class BootstrapNode implements P2PBootstrapApi {
20
20
  private peerId?: PeerId;
21
21
 
22
22
  constructor(
23
- private store: AztecKVStore,
23
+ private store: AztecAsyncKVStore,
24
24
  private telemetry: TelemetryClient,
25
25
  private logger = createLogger('p2p:bootstrap'),
26
26
  ) {}
@@ -6,9 +6,9 @@ import {
6
6
  } from '@aztec/circuit-types';
7
7
  import { type EpochCache } from '@aztec/epoch-cache';
8
8
  import { createLogger } from '@aztec/foundation/log';
9
- import { type AztecKVStore } from '@aztec/kv-store';
9
+ import { type AztecAsyncKVStore } from '@aztec/kv-store';
10
10
  import { type DataStoreConfig } from '@aztec/kv-store/config';
11
- import { createStore } from '@aztec/kv-store/lmdb';
11
+ import { createStore } from '@aztec/kv-store/lmdb-v2';
12
12
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
13
13
 
14
14
  import { P2PClient } from '../client/p2p_client.js';
@@ -26,7 +26,7 @@ import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerI
26
26
 
27
27
  type P2PClientDeps<T extends P2PClientType> = {
28
28
  txPool?: TxPool;
29
- store?: AztecKVStore;
29
+ store?: AztecAsyncKVStore;
30
30
  attestationPool?: T extends P2PClientType.Full ? AttestationPool : undefined;
31
31
  epochProofQuotePool?: EpochProofQuotePool;
32
32
  };
@@ -43,8 +43,8 @@ export const createP2PClient = async <T extends P2PClientType>(
43
43
  ) => {
44
44
  let config = { ..._config };
45
45
  const logger = createLogger('p2p');
46
- const store = deps.store ?? (await createStore('p2p', config, createLogger('p2p:lmdb')));
47
- const archive = await createStore('p2p-archive', config, createLogger('p2p-archive:lmdb'));
46
+ const store = deps.store ?? (await createStore('p2p', config, createLogger('p2p:lmdb-v2')));
47
+ const archive = await createStore('p2p-archive', config, createLogger('p2p-archive:lmdb-v2'));
48
48
 
49
49
  const mempools: MemPools<T> = {
50
50
  txPool: deps.txPool ?? new AztecKVTxPool(store, archive, telemetry, config.archivedTxLimit),
@@ -15,7 +15,7 @@ import {
15
15
  } from '@aztec/circuit-types';
16
16
  import { INITIAL_L2_BLOCK_NUM } from '@aztec/circuits.js/constants';
17
17
  import { createLogger } from '@aztec/foundation/log';
18
- import { type AztecKVStore, type AztecMap, type AztecSingleton } from '@aztec/kv-store';
18
+ import { type AztecAsyncKVStore, type AztecAsyncMap, type AztecAsyncSingleton } from '@aztec/kv-store';
19
19
  import {
20
20
  Attributes,
21
21
  type TelemetryClient,
@@ -126,7 +126,7 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApi<T> & {
126
126
  * @param txHash - Hash of tx to return.
127
127
  * @returns A single tx or undefined.
128
128
  */
129
- getTxByHashFromPool(txHash: TxHash): Tx | undefined;
129
+ getTxByHashFromPool(txHash: TxHash): Promise<Tx | undefined>;
130
130
 
131
131
  /**
132
132
  * Returns a transaction in the transaction pool by its hash, requesting it from the network if it is not found.
@@ -147,13 +147,13 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApi<T> & {
147
147
  * @param txHash - Hash of the tx to query.
148
148
  * @returns Pending or mined depending on its status, or undefined if not found.
149
149
  */
150
- getTxStatus(txHash: TxHash): 'pending' | 'mined' | undefined;
150
+ getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
151
151
 
152
152
  /** Returns an iterator over pending txs on the mempool. */
153
- iteratePendingTxs(): Iterable<Tx>;
153
+ iteratePendingTxs(): AsyncIterableIterator<Tx>;
154
154
 
155
155
  /** Returns the number of pending txs in the mempool. */
156
- getPendingTxCount(): number;
156
+ getPendingTxCount(): Promise<number>;
157
157
 
158
158
  /**
159
159
  * Starts the p2p client.
@@ -194,9 +194,6 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
194
194
  extends WithTracer
195
195
  implements P2P, P2P<P2PClientType.Prover>
196
196
  {
197
- /** Property that indicates whether the client is running. */
198
- private stopping = false;
199
-
200
197
  /** The JS promise that will be running to keep the client's data in sync. Can be interrupted if the client is stopped. */
201
198
  private runningPromise!: Promise<void>;
202
199
 
@@ -206,9 +203,9 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
206
203
  private latestBlockNumberAtStart = -1;
207
204
  private provenBlockNumberAtStart = -1;
208
205
 
209
- private synchedBlockHashes: AztecMap<number, string>;
210
- private synchedLatestBlockNumber: AztecSingleton<number>;
211
- private synchedProvenBlockNumber: AztecSingleton<number>;
206
+ private synchedBlockHashes: AztecAsyncMap<number, string>;
207
+ private synchedLatestBlockNumber: AztecAsyncSingleton<number>;
208
+ private synchedProvenBlockNumber: AztecAsyncSingleton<number>;
212
209
 
213
210
  private txPool: TxPool;
214
211
  private attestationPool: T extends P2PClientType.Full ? AttestationPool : undefined;
@@ -231,8 +228,8 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
231
228
  * @param log - A logger.
232
229
  */
233
230
  constructor(
234
- clientType: T,
235
- store: AztecKVStore,
231
+ _clientType: T,
232
+ store: AztecAsyncKVStore,
236
233
  private l2BlockSource: L2BlockSource,
237
234
  mempools: MemPools<T>,
238
235
  private p2pService: P2PService,
@@ -274,17 +271,17 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
274
271
  }
275
272
 
276
273
  public getL2BlockHash(number: number): Promise<string | undefined> {
277
- return Promise.resolve(this.synchedBlockHashes.get(number));
274
+ return this.synchedBlockHashes.getAsync(number);
278
275
  }
279
276
 
280
- public getL2Tips(): Promise<L2Tips> {
281
- const latestBlockNumber = this.getSyncedLatestBlockNum();
277
+ public async getL2Tips(): Promise<L2Tips> {
278
+ const latestBlockNumber = await this.getSyncedLatestBlockNum();
282
279
  let latestBlockHash: string | undefined;
283
- const provenBlockNumber = this.getSyncedProvenBlockNum();
280
+ const provenBlockNumber = await this.getSyncedProvenBlockNum();
284
281
  let provenBlockHash: string | undefined;
285
282
 
286
283
  if (latestBlockNumber > 0) {
287
- latestBlockHash = this.synchedBlockHashes.get(latestBlockNumber);
284
+ latestBlockHash = await this.synchedBlockHashes.getAsync(latestBlockNumber);
288
285
  if (typeof latestBlockHash === 'undefined') {
289
286
  this.log.warn(`Block hash for latest block ${latestBlockNumber} not found`);
290
287
  throw new Error();
@@ -292,7 +289,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
292
289
  }
293
290
 
294
291
  if (provenBlockNumber > 0) {
295
- provenBlockHash = this.synchedBlockHashes.get(provenBlockNumber);
292
+ provenBlockHash = await this.synchedBlockHashes.getAsync(provenBlockNumber);
296
293
  if (typeof provenBlockHash === 'undefined') {
297
294
  this.log.warn(`Block hash for proven block ${provenBlockNumber} not found`);
298
295
  throw new Error();
@@ -316,7 +313,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
316
313
  // TODO (alexg): I think we can prune the block hashes map here
317
314
  break;
318
315
  case 'chain-proven': {
319
- const from = this.getSyncedProvenBlockNum() + 1;
316
+ const from = (await this.getSyncedProvenBlockNum()) + 1;
320
317
  const limit = event.blockNumber - from + 1;
321
318
  await this.handleProvenL2Blocks(await this.l2BlockSource.getBlocks(from, limit));
322
319
  break;
@@ -374,8 +371,8 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
374
371
  this.latestBlockNumberAtStart = await this.l2BlockSource.getBlockNumber();
375
372
  this.provenBlockNumberAtStart = await this.l2BlockSource.getProvenBlockNumber();
376
373
 
377
- const syncedLatestBlock = this.getSyncedLatestBlockNum() + 1;
378
- const syncedProvenBlock = this.getSyncedProvenBlockNum() + 1;
374
+ const syncedLatestBlock = (await this.getSyncedLatestBlockNum()) + 1;
375
+ const syncedProvenBlock = (await this.getSyncedProvenBlockNum()) + 1;
379
376
 
380
377
  // if there are blocks to be retrieved, go to a synching state
381
378
  if (syncedLatestBlock <= this.latestBlockNumberAtStart || syncedProvenBlock <= this.provenBlockNumberAtStart) {
@@ -404,7 +401,6 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
404
401
  */
405
402
  public async stop() {
406
403
  this.log.debug('Stopping p2p client...');
407
- this.stopping = true;
408
404
  await this.p2pService.stop();
409
405
  this.log.debug('Stopped p2p service');
410
406
  await this.blockStream.stop();
@@ -414,19 +410,19 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
414
410
  this.log.info('P2P client stopped.');
415
411
  }
416
412
 
417
- @trackSpan('p2pClient.broadcastProposal', proposal => ({
413
+ @trackSpan('p2pClient.broadcastProposal', async proposal => ({
418
414
  [Attributes.BLOCK_NUMBER]: proposal.payload.header.globalVariables.blockNumber.toNumber(),
419
415
  [Attributes.SLOT_NUMBER]: proposal.payload.header.globalVariables.slotNumber.toNumber(),
420
416
  [Attributes.BLOCK_ARCHIVE]: proposal.archive.toString(),
421
- [Attributes.P2P_ID]: proposal.p2pMessageIdentifier().toString(),
417
+ [Attributes.P2P_ID]: (await proposal.p2pMessageIdentifier()).toString(),
422
418
  }))
423
419
  public broadcastProposal(proposal: BlockProposal): void {
424
420
  this.log.verbose(`Broadcasting proposal ${proposal.p2pMessageIdentifier()} to peers`);
425
421
  return this.p2pService.propagate(proposal);
426
422
  }
427
423
 
428
- public getAttestationsForSlot(slot: bigint, proposalId: string): Promise<BlockAttestation[]> {
429
- return Promise.resolve(this.attestationPool?.getAttestationsForSlot(slot, proposalId) ?? []);
424
+ public async getAttestationsForSlot(slot: bigint, proposalId: string): Promise<BlockAttestation[]> {
425
+ return (await this.attestationPool?.getAttestationsForSlot(slot, proposalId)) ?? [];
430
426
  }
431
427
 
432
428
  // REVIEW: https://github.com/AztecProtocol/aztec-packages/issues/7963
@@ -475,14 +471,14 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
475
471
  return Promise.resolve(this.getTxs('pending'));
476
472
  }
477
473
 
478
- public getPendingTxCount(): number {
479
- return this.txPool.getPendingTxHashes().length;
474
+ public async getPendingTxCount(): Promise<number> {
475
+ const pendingTxs = await this.txPool.getPendingTxHashes();
476
+ return pendingTxs.length;
480
477
  }
481
478
 
482
- public *iteratePendingTxs() {
483
- const pendingTxHashes = this.txPool.getPendingTxHashes();
484
- for (const txHash of pendingTxHashes) {
485
- const tx = this.txPool.getTxByHash(txHash);
479
+ public async *iteratePendingTxs(): AsyncIterableIterator<Tx> {
480
+ for (const txHash of await this.txPool.getPendingTxHashes()) {
481
+ const tx = await this.txPool.getTxByHash(txHash);
486
482
  if (tx) {
487
483
  yield tx;
488
484
  }
@@ -493,19 +489,17 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
493
489
  * Returns all transactions in the transaction pool.
494
490
  * @returns An array of Txs.
495
491
  */
496
- public getTxs(filter: 'all' | 'pending' | 'mined'): Tx[] {
492
+ public async getTxs(filter: 'all' | 'pending' | 'mined'): Promise<Tx[]> {
497
493
  if (filter === 'all') {
498
494
  return this.txPool.getAllTxs();
499
495
  } else if (filter === 'mined') {
500
- return this.txPool
501
- .getMinedTxHashes()
502
- .map(([txHash]) => this.txPool.getTxByHash(txHash))
503
- .filter((tx): tx is Tx => !!tx);
496
+ const minedHashes = await this.txPool.getMinedTxHashes();
497
+ const minedTx = await Promise.all(minedHashes.map(([txHash]) => this.txPool.getTxByHash(txHash)));
498
+ return minedTx.filter((tx): tx is Tx => !!tx);
504
499
  } else if (filter === 'pending') {
505
- return this.txPool
506
- .getPendingTxHashes()
507
- .map(txHash => this.txPool.getTxByHash(txHash))
508
- .filter((tx): tx is Tx => !!tx);
500
+ const pendingHashses = await this.txPool.getPendingTxHashes();
501
+ const pendingTxs = await Promise.all(pendingHashses.map(txHash => this.txPool.getTxByHash(txHash)));
502
+ return pendingTxs.filter((tx): tx is Tx => !!tx);
509
503
  } else {
510
504
  const _: never = filter;
511
505
  throw new Error(`Unknown filter ${filter}`);
@@ -517,7 +511,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
517
511
  * @param txHash - Hash of the transaction to look for in the pool.
518
512
  * @returns A single tx or undefined.
519
513
  */
520
- getTxByHashFromPool(txHash: TxHash): Tx | undefined {
514
+ getTxByHashFromPool(txHash: TxHash): Promise<Tx | undefined> {
521
515
  return this.txPool.getTxByHash(txHash);
522
516
  }
523
517
 
@@ -527,10 +521,10 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
527
521
  * @param txHash - Hash of the transaction to look for in the pool.
528
522
  * @returns A single tx or undefined.
529
523
  */
530
- getTxByHash(txHash: TxHash): Promise<Tx | undefined> {
531
- const tx = this.txPool.getTxByHash(txHash);
524
+ async getTxByHash(txHash: TxHash): Promise<Tx | undefined> {
525
+ const tx = await this.txPool.getTxByHash(txHash);
532
526
  if (tx) {
533
- return Promise.resolve(tx);
527
+ return tx;
534
528
  }
535
529
  return this.requestTxByHash(txHash);
536
530
  }
@@ -541,7 +535,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
541
535
  * @returns A single tx or undefined.
542
536
  */
543
537
  getArchivedTxByHash(txHash: TxHash): Promise<Tx | undefined> {
544
- return Promise.resolve(this.txPool.getArchivedTxByHash(txHash));
538
+ return this.txPool.getArchivedTxByHash(txHash);
545
539
  }
546
540
 
547
541
  /**
@@ -560,7 +554,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
560
554
  * @param txHash - Hash of the tx to query.
561
555
  * @returns Pending or mined depending on its status, or undefined if not found.
562
556
  */
563
- public getTxStatus(txHash: TxHash): 'pending' | 'mined' | undefined {
557
+ public getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined> {
564
558
  return this.txPool.getTxStatus(txHash);
565
559
  }
566
560
 
@@ -595,16 +589,16 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
595
589
  * Public function to check the latest block number that the P2P client is synced to.
596
590
  * @returns Block number of latest L2 Block we've synced with.
597
591
  */
598
- public getSyncedLatestBlockNum() {
599
- return this.synchedLatestBlockNumber.get() ?? INITIAL_L2_BLOCK_NUM - 1;
592
+ public async getSyncedLatestBlockNum(): Promise<number> {
593
+ return (await this.synchedLatestBlockNumber.getAsync()) ?? INITIAL_L2_BLOCK_NUM - 1;
600
594
  }
601
595
 
602
596
  /**
603
597
  * Public function to check the latest proven block number that the P2P client is synced to.
604
598
  * @returns Block number of latest proven L2 Block we've synced with.
605
599
  */
606
- public getSyncedProvenBlockNum() {
607
- return this.synchedProvenBlockNumber.get() ?? INITIAL_L2_BLOCK_NUM - 1;
600
+ public async getSyncedProvenBlockNum(): Promise<number> {
601
+ return (await this.synchedProvenBlockNumber.getAsync()) ?? INITIAL_L2_BLOCK_NUM - 1;
608
602
  }
609
603
 
610
604
  /**
@@ -612,15 +606,19 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
612
606
  * @returns Information about p2p client status: state & syncedToBlockNum.
613
607
  */
614
608
  public async getStatus(): Promise<P2PSyncState> {
615
- const blockNumber = this.getSyncedLatestBlockNum();
609
+ const blockNumber = await this.getSyncedLatestBlockNum();
616
610
  const blockHash =
617
- blockNumber == 0
611
+ blockNumber === 0
618
612
  ? ''
619
- : await this.l2BlockSource.getBlockHeader(blockNumber).then(header => header?.hash().toString());
620
- return Promise.resolve({
613
+ : await this.l2BlockSource
614
+ .getBlockHeader(blockNumber)
615
+ .then(header => header?.hash())
616
+ .then(hash => hash?.toString());
617
+
618
+ return {
621
619
  state: this.currentState,
622
620
  syncedToL2Block: { number: blockNumber, hash: blockHash },
623
- } as P2PSyncState);
621
+ } as P2PSyncState;
624
622
  }
625
623
 
626
624
  /**
@@ -660,7 +658,9 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
660
658
 
661
659
  await this.markTxsAsMinedFromBlocks(blocks);
662
660
  const lastBlockNum = blocks[blocks.length - 1].number;
663
- await Promise.all(blocks.map(block => this.synchedBlockHashes.set(block.number, block.hash().toString())));
661
+ await Promise.all(
662
+ blocks.map(async block => this.synchedBlockHashes.set(block.number, (await block.hash()).toString())),
663
+ );
664
664
  await this.synchedLatestBlockNumber.set(lastBlockNum);
665
665
  this.log.debug(`Synched to latest block ${lastBlockNum}`);
666
666
  await this.startServiceIfSynched();
@@ -714,10 +714,10 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
714
714
  */
715
715
  private async handlePruneL2Blocks(latestBlock: number): Promise<void> {
716
716
  const txsToDelete: TxHash[] = [];
717
- for (const tx of this.txPool.getAllTxs()) {
717
+ for (const tx of await this.txPool.getAllTxs()) {
718
718
  // every tx that's been generated against a block that has now been pruned is no longer valid
719
719
  if (tx.data.constants.historicalHeader.globalVariables.blockNumber.toNumber() > latestBlock) {
720
- txsToDelete.push(tx.getTxHash());
720
+ txsToDelete.push(await tx.getTxHash());
721
721
  }
722
722
  }
723
723
 
@@ -735,7 +735,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
735
735
  // NOTE: we can't move _all_ txs back to pending because the tx pool could keep hold of mined txs for longer
736
736
  // (see this.keepProvenTxsFor)
737
737
  const txsToMoveToPending: TxHash[] = [];
738
- for (const [txHash, blockNumber] of this.txPool.getMinedTxHashes()) {
738
+ for (const [txHash, blockNumber] of await this.txPool.getMinedTxHashes()) {
739
739
  if (blockNumber > latestBlock) {
740
740
  txsToMoveToPending.push(txHash);
741
741
  }
@@ -751,8 +751,8 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
751
751
  private async startServiceIfSynched() {
752
752
  if (
753
753
  this.currentState === P2PClientState.SYNCHING &&
754
- this.getSyncedLatestBlockNum() >= this.latestBlockNumberAtStart &&
755
- this.getSyncedProvenBlockNum() >= this.provenBlockNumberAtStart
754
+ (await this.getSyncedLatestBlockNum()) >= this.latestBlockNumberAtStart &&
755
+ (await this.getSyncedProvenBlockNum()) >= this.provenBlockNumberAtStart
756
756
  ) {
757
757
  this.log.debug(`Synched to blocks at start`);
758
758
  this.setCurrentState(P2PClientState.RUNNING);
@@ -772,16 +772,4 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
772
772
  this.currentState = newState;
773
773
  this.log.debug(`Moved from state ${P2PClientState[oldState]} to ${P2PClientState[this.currentState]}`);
774
774
  }
775
-
776
- private async publishStoredTxs() {
777
- if (!this.isReady()) {
778
- return;
779
- }
780
-
781
- const txs = this.txPool.getAllTxs();
782
- if (txs.length > 0) {
783
- this.log.debug(`Publishing ${txs.length} previously stored txs`);
784
- await Promise.all(txs.map(tx => this.p2pService.propagate(tx)));
785
- }
786
- }
787
775
  }
@@ -29,7 +29,7 @@ export function describeAttestationPool(getAttestationPool: () => AttestationPoo
29
29
 
30
30
  const createAttestationsForSlot = (slotNumber: number) => {
31
31
  const archive = Fr.random();
32
- return signers.map(signer => mockAttestation(signer, slotNumber, archive));
32
+ return Promise.all(signers.map(signer => mockAttestation(signer, slotNumber, archive)));
33
33
  };
34
34
 
35
35
  // We compare buffers as the objects can have cached values attached to them which are not serialised
@@ -44,7 +44,7 @@ export function describeAttestationPool(getAttestationPool: () => AttestationPoo
44
44
  it('should add attestations to pool', async () => {
45
45
  const slotNumber = 420;
46
46
  const archive = Fr.random();
47
- const attestations = signers.map(signer => mockAttestation(signer, slotNumber, archive));
47
+ const attestations = await Promise.all(signers.map(signer => mockAttestation(signer, slotNumber, archive)));
48
48
 
49
49
  await ap.addAttestations(attestations);
50
50
 
@@ -75,7 +75,7 @@ export function describeAttestationPool(getAttestationPool: () => AttestationPoo
75
75
  const attestations: BlockAttestation[] = [];
76
76
  const signer = signers[0];
77
77
  for (let i = 0; i < NUMBER_OF_SIGNERS_PER_TEST; i++) {
78
- attestations.push(mockAttestation(signer, slotNumber, archive, txs));
78
+ attestations.push(await mockAttestation(signer, slotNumber, archive, txs));
79
79
  }
80
80
 
81
81
  await ap.addAttestations(attestations);
@@ -84,12 +84,12 @@ export function describeAttestationPool(getAttestationPool: () => AttestationPoo
84
84
  expect(retreivedAttestations.length).toBe(1);
85
85
  expect(retreivedAttestations[0].toBuffer()).toEqual(attestations[0].toBuffer());
86
86
  expect(retreivedAttestations[0].payload.txHashes).toEqual(txs);
87
- expect(retreivedAttestations[0].getSender().toString()).toEqual(signer.address.toString());
87
+ expect((await retreivedAttestations[0].getSender()).toString()).toEqual(signer.address.toString());
88
88
  });
89
89
 
90
90
  it('Should store attestations by differing slot', async () => {
91
91
  const slotNumbers = [1, 2, 3, 4];
92
- const attestations = signers.map((signer, i) => mockAttestation(signer, slotNumbers[i]));
92
+ const attestations = await Promise.all(signers.map((signer, i) => mockAttestation(signer, slotNumbers[i])));
93
93
 
94
94
  await ap.addAttestations(attestations);
95
95
 
@@ -107,7 +107,9 @@ export function describeAttestationPool(getAttestationPool: () => AttestationPoo
107
107
  it('Should store attestations by differing slot and archive', async () => {
108
108
  const slotNumbers = [1, 1, 2, 3];
109
109
  const archives = [Fr.random(), Fr.random(), Fr.random(), Fr.random()];
110
- const attestations = signers.map((signer, i) => mockAttestation(signer, slotNumbers[i], archives[i]));
110
+ const attestations = await Promise.all(
111
+ signers.map((signer, i) => mockAttestation(signer, slotNumbers[i], archives[i])),
112
+ );
111
113
 
112
114
  await ap.addAttestations(attestations);
113
115
 
@@ -125,7 +127,7 @@ export function describeAttestationPool(getAttestationPool: () => AttestationPoo
125
127
  it('Should delete attestations', async () => {
126
128
  const slotNumber = 420;
127
129
  const archive = Fr.random();
128
- const attestations = signers.map(signer => mockAttestation(signer, slotNumber, archive));
130
+ const attestations = await Promise.all(signers.map(signer => mockAttestation(signer, slotNumber, archive)));
129
131
  const proposalId = attestations[0].archive.toString();
130
132
 
131
133
  await ap.addAttestations(attestations);
@@ -165,12 +167,12 @@ export function describeAttestationPool(getAttestationPool: () => AttestationPoo
165
167
  it('Should blanket delete attestations per slot and proposal', async () => {
166
168
  const slotNumber = 420;
167
169
  const archive = Fr.random();
168
- const attestations = signers.map(signer => mockAttestation(signer, slotNumber, archive));
170
+ const attestations = await Promise.all(signers.map(signer => mockAttestation(signer, slotNumber, archive)));
169
171
  const proposalId = attestations[0].archive.toString();
170
172
 
171
173
  // Add another set of attestations with a different proposalId, yet the same slot
172
174
  const archive2 = Fr.random();
173
- const attestations2 = signers.map(signer => mockAttestation(signer, slotNumber, archive2));
175
+ const attestations2 = await Promise.all(signers.map(signer => mockAttestation(signer, slotNumber, archive2)));
174
176
  const proposalId2 = attestations2[0].archive.toString();
175
177
 
176
178
  await ap.addAttestations(attestations);
@@ -198,21 +200,11 @@ export function describeAttestationPool(getAttestationPool: () => AttestationPoo
198
200
  compareAttestations(retreivedAttestationsAfterDeleteForOtherProposal, attestations2);
199
201
  });
200
202
 
201
- it('Should blanket delete attestations per slot and proposal (does not perform db ops if there are no attestations)', async () => {
202
- const slotNumber = 420;
203
- const proposalId = 'proposalId';
204
-
205
- const retreivedAttestations = await ap.getAttestationsForSlot(BigInt(slotNumber), proposalId);
206
- expect(retreivedAttestations.length).toBe(0);
207
-
208
- await ap.deleteAttestationsForSlotAndProposal(BigInt(slotNumber), proposalId);
209
-
210
- expect(metricsMock.recordRemovedObjects).toHaveBeenCalledTimes(0);
211
- });
212
-
213
203
  it('Should delete attestations older than a given slot', async () => {
214
204
  const slotNumbers = [1, 2, 3, 69, 72, 74, 88, 420];
215
- const attestations = slotNumbers.map(slotNumber => createAttestationsForSlot(slotNumber)).flat();
205
+ const attestations = (
206
+ await Promise.all(slotNumbers.map(slotNumber => createAttestationsForSlot(slotNumber)))
207
+ ).flat();
216
208
  const proposalId = attestations[0].archive.toString();
217
209
 
218
210
  await ap.addAttestations(attestations);