@aztec/p2p 0.56.0 → 0.58.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 (109) hide show
  1. package/dest/client/index.d.ts +6 -3
  2. package/dest/client/index.d.ts.map +1 -1
  3. package/dest/client/index.js +12 -6
  4. package/dest/client/p2p_client.d.ts +30 -12
  5. package/dest/client/p2p_client.d.ts.map +1 -1
  6. package/dest/client/p2p_client.js +375 -335
  7. package/dest/config.js +3 -3
  8. package/dest/index.d.ts +4 -3
  9. package/dest/index.d.ts.map +1 -1
  10. package/dest/index.js +5 -4
  11. package/dest/{attestation_pool → mem_pools/attestation_pool}/attestation_pool.d.ts +2 -1
  12. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -0
  13. package/dest/{attestation_pool → mem_pools/attestation_pool}/attestation_pool.js +1 -1
  14. package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -0
  15. package/dest/{attestation_pool → mem_pools/attestation_pool}/index.js +1 -1
  16. package/dest/{attestation_pool → mem_pools/attestation_pool}/memory_attestation_pool.d.ts +6 -2
  17. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -0
  18. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +114 -0
  19. package/dest/{attestation_pool → mem_pools/attestation_pool}/mocks.d.ts +2 -1
  20. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -0
  21. package/dest/mem_pools/attestation_pool/mocks.js +31 -0
  22. package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.d.ts +7 -0
  23. package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.d.ts.map +1 -0
  24. package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.js +2 -0
  25. package/dest/mem_pools/epoch_proof_quote_pool/index.d.ts +4 -0
  26. package/dest/mem_pools/epoch_proof_quote_pool/index.d.ts.map +1 -0
  27. package/dest/mem_pools/epoch_proof_quote_pool/index.js +4 -0
  28. package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.d.ts +12 -0
  29. package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.d.ts.map +1 -0
  30. package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.js +30 -0
  31. package/dest/mem_pools/epoch_proof_quote_pool/test_utils.d.ts +8 -0
  32. package/dest/mem_pools/epoch_proof_quote_pool/test_utils.d.ts.map +1 -0
  33. package/dest/mem_pools/epoch_proof_quote_pool/test_utils.js +21 -0
  34. package/dest/mem_pools/index.d.ts +5 -0
  35. package/dest/mem_pools/index.d.ts.map +1 -0
  36. package/dest/mem_pools/index.js +2 -0
  37. package/dest/mem_pools/instrumentation.d.ts +25 -0
  38. package/dest/mem_pools/instrumentation.d.ts.map +1 -0
  39. package/dest/mem_pools/instrumentation.js +70 -0
  40. package/dest/mem_pools/interface.d.ts +12 -0
  41. package/dest/mem_pools/interface.d.ts.map +1 -0
  42. package/dest/mem_pools/interface.js +2 -0
  43. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -0
  44. package/dest/{tx_pool → mem_pools/tx_pool}/aztec_kv_tx_pool.js +9 -9
  45. package/dest/mem_pools/tx_pool/index.d.ts.map +1 -0
  46. package/dest/{tx_pool → mem_pools/tx_pool}/index.js +1 -1
  47. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -0
  48. package/dest/mem_pools/tx_pool/memory_tx_pool.js +111 -0
  49. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -0
  50. package/dest/{tx_pool → mem_pools/tx_pool}/tx_pool.js +1 -1
  51. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -0
  52. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +55 -0
  53. package/dest/service/libp2p_service.d.ts +12 -7
  54. package/dest/service/libp2p_service.d.ts.map +1 -1
  55. package/dest/service/libp2p_service.js +453 -381
  56. package/dest/service/reqresp/reqresp.d.ts +0 -1
  57. package/dest/service/reqresp/reqresp.d.ts.map +1 -1
  58. package/dest/service/reqresp/reqresp.js +7 -4
  59. package/package.json +10 -6
  60. package/src/client/index.ts +21 -8
  61. package/src/client/p2p_client.ts +77 -21
  62. package/src/config.ts +2 -2
  63. package/src/index.ts +4 -3
  64. package/src/{attestation_pool → mem_pools/attestation_pool}/attestation_pool.ts +2 -1
  65. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +141 -0
  66. package/src/{attestation_pool → mem_pools/attestation_pool}/mocks.ts +5 -2
  67. package/src/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.ts +7 -0
  68. package/src/mem_pools/epoch_proof_quote_pool/index.ts +3 -0
  69. package/src/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.ts +42 -0
  70. package/src/mem_pools/epoch_proof_quote_pool/test_utils.ts +26 -0
  71. package/src/mem_pools/index.ts +4 -0
  72. package/src/mem_pools/instrumentation.ts +85 -0
  73. package/src/mem_pools/interface.ts +12 -0
  74. package/src/{tx_pool → mem_pools/tx_pool}/aztec_kv_tx_pool.ts +9 -9
  75. package/src/{tx_pool → mem_pools/tx_pool}/memory_tx_pool.ts +9 -9
  76. package/src/service/libp2p_service.ts +78 -20
  77. package/src/service/reqresp/reqresp.ts +9 -5
  78. package/dest/attestation_pool/attestation_pool.d.ts.map +0 -1
  79. package/dest/attestation_pool/index.d.ts.map +0 -1
  80. package/dest/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
  81. package/dest/attestation_pool/memory_attestation_pool.js +0 -57
  82. package/dest/attestation_pool/mocks.d.ts.map +0 -1
  83. package/dest/attestation_pool/mocks.js +0 -32
  84. package/dest/client/mocks.d.ts +0 -65
  85. package/dest/client/mocks.d.ts.map +0 -1
  86. package/dest/client/mocks.js +0 -106
  87. package/dest/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
  88. package/dest/tx_pool/index.d.ts.map +0 -1
  89. package/dest/tx_pool/instrumentation.d.ts +0 -25
  90. package/dest/tx_pool/instrumentation.d.ts.map +0 -1
  91. package/dest/tx_pool/instrumentation.js +0 -61
  92. package/dest/tx_pool/memory_tx_pool.d.ts.map +0 -1
  93. package/dest/tx_pool/memory_tx_pool.js +0 -111
  94. package/dest/tx_pool/tx_pool.d.ts.map +0 -1
  95. package/dest/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
  96. package/dest/tx_pool/tx_pool_test_suite.js +0 -55
  97. package/src/attestation_pool/memory_attestation_pool.ts +0 -71
  98. package/src/client/mocks.ts +0 -129
  99. package/src/tx_pool/instrumentation.ts +0 -73
  100. /package/dest/{attestation_pool → mem_pools/attestation_pool}/index.d.ts +0 -0
  101. /package/dest/{tx_pool → mem_pools/tx_pool}/aztec_kv_tx_pool.d.ts +0 -0
  102. /package/dest/{tx_pool → mem_pools/tx_pool}/index.d.ts +0 -0
  103. /package/dest/{tx_pool → mem_pools/tx_pool}/memory_tx_pool.d.ts +0 -0
  104. /package/dest/{tx_pool → mem_pools/tx_pool}/tx_pool.d.ts +0 -0
  105. /package/dest/{tx_pool → mem_pools/tx_pool}/tx_pool_test_suite.d.ts +0 -0
  106. /package/src/{attestation_pool → mem_pools/attestation_pool}/index.ts +0 -0
  107. /package/src/{tx_pool → mem_pools/tx_pool}/index.ts +0 -0
  108. /package/src/{tx_pool → mem_pools/tx_pool}/tx_pool.ts +0 -0
  109. /package/src/{tx_pool → mem_pools/tx_pool}/tx_pool_test_suite.ts +0 -0
@@ -1,65 +0,0 @@
1
- import { L2Block, type L2BlockSource, type TxEffect, type TxHash, TxReceipt } from '@aztec/circuit-types';
2
- import { EthAddress } from '@aztec/circuits.js';
3
- /**
4
- * A mocked implementation of L2BlockSource to be used in p2p tests.
5
- */
6
- export declare class MockBlockSource implements L2BlockSource {
7
- private provenBlockNumber?;
8
- private l2Blocks;
9
- private txEffects;
10
- constructor(numBlocks?: number, provenBlockNumber?: number | undefined);
11
- addBlocks(numBlocks: number): void;
12
- setProvenBlockNumber(provenBlockNumber: number): void;
13
- /**
14
- * Method to fetch the rollup contract address at the base-layer.
15
- * @returns The rollup address.
16
- */
17
- getRollupAddress(): Promise<EthAddress>;
18
- /**
19
- * Method to fetch the registry contract address at the base-layer.
20
- * @returns The registry address.
21
- */
22
- getRegistryAddress(): Promise<EthAddress>;
23
- /**
24
- * Gets the number of the latest L2 block processed by the block source implementation.
25
- * @returns In this mock instance, returns the number of L2 blocks that we've mocked.
26
- */
27
- getBlockNumber(): Promise<number>;
28
- getProvenBlockNumber(): Promise<number>;
29
- /**
30
- * Gets an l2 block.
31
- * @param number - The block number to return (inclusive).
32
- * @returns The requested L2 block.
33
- */
34
- getBlock(number: number): Promise<L2Block>;
35
- /**
36
- * Gets up to `limit` amount of L2 blocks starting from `from`.
37
- * @param from - Number of the first block to return (inclusive).
38
- * @param limit - The maximum number of blocks to return.
39
- * @returns The requested mocked L2 blocks.
40
- */
41
- getBlocks(from: number, limit: number, proven?: boolean): Promise<L2Block[]>;
42
- /**
43
- * Gets a tx effect.
44
- * @param txHash - The hash of a transaction which resulted in the returned tx effect.
45
- * @returns The requested tx effect.
46
- */
47
- getTxEffect(txHash: TxHash): Promise<TxEffect | undefined>;
48
- /**
49
- * Gets a receipt of a settled tx.
50
- * @param txHash - The hash of a tx we try to get the receipt for.
51
- * @returns The requested tx receipt (or undefined if not found).
52
- */
53
- getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
54
- /**
55
- * Starts the block source. In this mock implementation, this is a noop.
56
- * @returns A promise that signals the initialization of the l2 block source on completion.
57
- */
58
- start(): Promise<void>;
59
- /**
60
- * Stops the block source. In this mock implementation, this is a noop.
61
- * @returns A promise that signals the l2 block source is now stopped.
62
- */
63
- stop(): Promise<void>;
64
- }
65
- //# sourceMappingURL=mocks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/client/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAE,SAAS,EAAY,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IAItB,OAAO,CAAC,iBAAiB,CAAC;IAHvD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,SAAS,CAAkB;gBAEvB,SAAS,SAAM,EAAU,iBAAiB,CAAC,oBAAQ;IAIxD,SAAS,CAAC,SAAS,EAAE,MAAM;IAS3B,oBAAoB,CAAC,iBAAiB,EAAE,MAAM;IAIrD;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIvC;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIzC;;;OAGG;IACI,cAAc;IAIR,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIpD;;;;OAIG;IACI,QAAQ,CAAC,MAAM,EAAE,MAAM;IAI9B;;;;;OAKG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAQ9D;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM;IAKjC;;;;OAIG;IACI,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAoB1E;;;OAGG;IACI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;;OAGG;IACI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
@@ -1,106 +0,0 @@
1
- import { L2Block, TxReceipt, TxStatus } from '@aztec/circuit-types';
2
- import { EthAddress } from '@aztec/circuits.js';
3
- /**
4
- * A mocked implementation of L2BlockSource to be used in p2p tests.
5
- */
6
- export class MockBlockSource {
7
- constructor(numBlocks = 100, provenBlockNumber) {
8
- this.provenBlockNumber = provenBlockNumber;
9
- this.l2Blocks = [];
10
- this.txEffects = [];
11
- this.addBlocks(numBlocks);
12
- }
13
- addBlocks(numBlocks) {
14
- for (let i = 0; i < numBlocks; i++) {
15
- const blockNum = this.l2Blocks.length;
16
- const block = L2Block.random(blockNum, blockNum);
17
- this.l2Blocks.push(block);
18
- this.txEffects.push(...block.body.txEffects);
19
- }
20
- }
21
- setProvenBlockNumber(provenBlockNumber) {
22
- this.provenBlockNumber = provenBlockNumber;
23
- }
24
- /**
25
- * Method to fetch the rollup contract address at the base-layer.
26
- * @returns The rollup address.
27
- */
28
- getRollupAddress() {
29
- return Promise.resolve(EthAddress.random());
30
- }
31
- /**
32
- * Method to fetch the registry contract address at the base-layer.
33
- * @returns The registry address.
34
- */
35
- getRegistryAddress() {
36
- return Promise.resolve(EthAddress.random());
37
- }
38
- /**
39
- * Gets the number of the latest L2 block processed by the block source implementation.
40
- * @returns In this mock instance, returns the number of L2 blocks that we've mocked.
41
- */
42
- getBlockNumber() {
43
- return Promise.resolve(this.l2Blocks.length - 1);
44
- }
45
- async getProvenBlockNumber() {
46
- return this.provenBlockNumber ?? (await this.getBlockNumber());
47
- }
48
- /**
49
- * Gets an l2 block.
50
- * @param number - The block number to return (inclusive).
51
- * @returns The requested L2 block.
52
- */
53
- getBlock(number) {
54
- return Promise.resolve(this.l2Blocks[number]);
55
- }
56
- /**
57
- * Gets up to `limit` amount of L2 blocks starting from `from`.
58
- * @param from - Number of the first block to return (inclusive).
59
- * @param limit - The maximum number of blocks to return.
60
- * @returns The requested mocked L2 blocks.
61
- */
62
- getBlocks(from, limit, proven) {
63
- return Promise.resolve(this.l2Blocks
64
- .slice(from, from + limit)
65
- .filter(b => !proven || this.provenBlockNumber === undefined || b.number <= this.provenBlockNumber));
66
- }
67
- /**
68
- * Gets a tx effect.
69
- * @param txHash - The hash of a transaction which resulted in the returned tx effect.
70
- * @returns The requested tx effect.
71
- */
72
- getTxEffect(txHash) {
73
- const txEffect = this.txEffects.find(tx => tx.txHash.equals(txHash));
74
- return Promise.resolve(txEffect);
75
- }
76
- /**
77
- * Gets a receipt of a settled tx.
78
- * @param txHash - The hash of a tx we try to get the receipt for.
79
- * @returns The requested tx receipt (or undefined if not found).
80
- */
81
- getSettledTxReceipt(txHash) {
82
- for (const block of this.l2Blocks) {
83
- for (const txEffect of block.body.txEffects) {
84
- if (txEffect.txHash.equals(txHash)) {
85
- return Promise.resolve(new TxReceipt(txHash, TxStatus.SUCCESS, '', txEffect.transactionFee.toBigInt(), block.hash().toBuffer(), block.number));
86
- }
87
- }
88
- }
89
- return Promise.resolve(undefined);
90
- }
91
- /**
92
- * Starts the block source. In this mock implementation, this is a noop.
93
- * @returns A promise that signals the initialization of the l2 block source on completion.
94
- */
95
- start() {
96
- return Promise.resolve();
97
- }
98
- /**
99
- * Stops the block source. In this mock implementation, this is a noop.
100
- * @returns A promise that signals the l2 block source is now stopped.
101
- */
102
- stop() {
103
- return Promise.resolve();
104
- }
105
- }
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L21vY2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWtELFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUkxQixZQUFZLFNBQVMsR0FBRyxHQUFHLEVBQVUsaUJBQTBCO1FBQTFCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUztRQUh2RCxhQUFRLEdBQWMsRUFBRSxDQUFDO1FBQ3pCLGNBQVMsR0FBZSxFQUFFLENBQUM7UUFHakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sU0FBUyxDQUFDLFNBQWlCO1FBQ2hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUN0QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxpQkFBeUI7UUFDbkQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0I7UUFDZCxPQUFPLE9BQU8sQ0FB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
@@ -1 +0,0 @@
1
- {"version":3,"file":"aztec_kv_tx_pool.d.ts","sourceRoot":"","sources":["../../src/tx_pool/aztec_kv_tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,KAAK,MAAM,EAAqB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,YAAY,EAAgC,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,qBAAa,aAAc,YAAW,MAAM;;IAe1C;;;;OAIG;gBACS,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,SAAqC;IAU9F,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB9C,kBAAkB,IAAI,MAAM,EAAE;IAI9B,gBAAgB,IAAI,MAAM,EAAE;IAI5B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS;IAWnE;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS;IAKlD;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBvC;;;;OAIG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnD;;;OAGG;IACI,SAAS,IAAI,EAAE,EAAE;IAIxB;;;OAGG;IACI,cAAc,IAAI,MAAM,EAAE;CAGlC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tx_pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}
@@ -1,25 +0,0 @@
1
- import { type Tx } from '@aztec/circuit-types';
2
- import { type TelemetryClient } from '@aztec/telemetry-client';
3
- export type TxStatus = 'pending' | 'mined';
4
- /**
5
- * Instrumentation class for the TxPool.
6
- */
7
- export declare class TxPoolInstrumentation {
8
- /** The number of txs in the mempool */
9
- private txInMempool;
10
- /** Tracks tx size */
11
- private txSize;
12
- constructor(telemetry: TelemetryClient, name: string);
13
- recordTxSize(tx: Tx): void;
14
- /**
15
- * Updates the metrics with the new transactions.
16
- * @param txs - The transactions to record
17
- */
18
- recordAddedTxs(status: string, count?: number): void;
19
- /**
20
- * Updates the metrics by removing transactions from the mempool.
21
- * @param count - The number of transactions to remove from the mempool
22
- */
23
- recordRemovedTxs(status: string, count?: number): void;
24
- }
25
- //# sourceMappingURL=instrumentation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/tx_pool/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAuC,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAExH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3C;;GAEG;AACH,qBAAa,qBAAqB;IAChC,uCAAuC;IACvC,OAAO,CAAC,WAAW,CAAgB;IACnC,qBAAqB;IACrB,OAAO,CAAC,MAAM,CAAY;gBAEd,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM;IAuB7C,YAAY,CAAC,EAAE,EAAE,EAAE;IAI1B;;;OAGG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI;IAY/C;;;OAGG;IACI,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI;CAWlD"}
@@ -1,61 +0,0 @@
1
- import { Attributes, Metrics } from '@aztec/telemetry-client';
2
- /**
3
- * Instrumentation class for the TxPool.
4
- */
5
- export class TxPoolInstrumentation {
6
- constructor(telemetry, name) {
7
- const meter = telemetry.getMeter(name);
8
- this.txInMempool = meter.createUpDownCounter(Metrics.MEMPOOL_TX_COUNT, {
9
- description: 'The current number of transactions in the mempool',
10
- });
11
- this.txSize = meter.createHistogram(Metrics.MEMPOOL_TX_SIZE, {
12
- unit: 'By',
13
- description: 'The size of transactions in the mempool',
14
- advice: {
15
- explicitBucketBoundaries: [
16
- 5000, // 5KB
17
- 10000,
18
- 20000,
19
- 50000,
20
- 75000,
21
- 100000, // 100KB
22
- 200000,
23
- ],
24
- },
25
- });
26
- }
27
- recordTxSize(tx) {
28
- this.txSize.record(tx.getSize());
29
- }
30
- /**
31
- * Updates the metrics with the new transactions.
32
- * @param txs - The transactions to record
33
- */
34
- recordAddedTxs(status, count = 1) {
35
- if (count < 0) {
36
- throw new Error('Count must be positive');
37
- }
38
- if (count === 0) {
39
- return;
40
- }
41
- this.txInMempool.add(count, {
42
- [Attributes.STATUS]: status,
43
- });
44
- }
45
- /**
46
- * Updates the metrics by removing transactions from the mempool.
47
- * @param count - The number of transactions to remove from the mempool
48
- */
49
- recordRemovedTxs(status, count = 1) {
50
- if (count < 0) {
51
- throw new Error('Count must be positive');
52
- }
53
- if (count === 0) {
54
- return;
55
- }
56
- this.txInMempool.add(-1 * count, {
57
- [Attributes.STATUS]: status,
58
- });
59
- }
60
- }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4X3Bvb2wvaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQWtCLE9BQU8sRUFBNEMsTUFBTSx5QkFBeUIsQ0FBQztBQUl4SDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFNaEMsWUFBWSxTQUEwQixFQUFFLElBQVk7UUFDbEQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7WUFDckUsV0FBVyxFQUFFLG1EQUFtRDtTQUNqRSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUMzRCxJQUFJLEVBQUUsSUFBSTtZQUNWLFdBQVcsRUFBRSx5Q0FBeUM7WUFDdEQsTUFBTSxFQUFFO2dCQUNOLHdCQUF3QixFQUFFO29CQUN4QixJQUFLLEVBQUUsTUFBTTtvQkFDYixLQUFNO29CQUNOLEtBQU07b0JBQ04sS0FBTTtvQkFDTixLQUFNO29CQUNOLE1BQU8sRUFBRSxRQUFRO29CQUNqQixNQUFPO2lCQUNSO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLEVBQU07UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxNQUFjLEVBQUUsS0FBSyxHQUFHLENBQUM7UUFDN0MsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQzFCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU07U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxLQUFLLEdBQUcsQ0FBQztRQUMvQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUU7WUFDL0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory_tx_pool.d.ts","sourceRoot":"","sources":["../../src/tx_pool/memory_tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,qBAAa,cAAe,YAAW,MAAM;IAcH,OAAO,CAAC,GAAG;IAbnD;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,UAAU,CAAc;IAEhC,OAAO,CAAC,OAAO,CAAwB;IAEvC;;;OAGG;gBACS,SAAS,EAAE,eAAe,EAAU,GAAG,yCAAqC;IAOjF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9C,kBAAkB,IAAI,MAAM,EAAE;IAI9B,gBAAgB,IAAI,MAAM,EAAE;IAI5B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS;IAWnE;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS;IAKlD;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBvC;;;;OAIG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnD;;;OAGG;IACI,SAAS,IAAI,EAAE,EAAE;IAIxB;;;OAGG;IACI,cAAc,IAAI,MAAM,EAAE;CAGlC"}
@@ -1,111 +0,0 @@
1
- import { Tx, TxHash } from '@aztec/circuit-types';
2
- import { createDebugLogger } from '@aztec/foundation/log';
3
- import { TxPoolInstrumentation } from './instrumentation.js';
4
- /**
5
- * In-memory implementation of the Transaction Pool.
6
- */
7
- export class InMemoryTxPool {
8
- /**
9
- * Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
10
- * @param log - A logger.
11
- */
12
- constructor(telemetry, log = createDebugLogger('aztec:tx_pool')) {
13
- this.log = log;
14
- this.txs = new Map();
15
- this.minedTxs = new Set();
16
- this.pendingTxs = new Set();
17
- this.metrics = new TxPoolInstrumentation(telemetry, 'InMemoryTxPool');
18
- }
19
- markAsMined(txHashes) {
20
- const keys = txHashes.map(x => x.toBigInt());
21
- for (const key of keys) {
22
- this.minedTxs.add(key);
23
- this.pendingTxs.delete(key);
24
- }
25
- this.metrics.recordRemovedTxs('pending', txHashes.length);
26
- this.metrics.recordAddedTxs('mined', txHashes.length);
27
- return Promise.resolve();
28
- }
29
- getPendingTxHashes() {
30
- return Array.from(this.pendingTxs).map(x => TxHash.fromBigInt(x));
31
- }
32
- getMinedTxHashes() {
33
- return Array.from(this.minedTxs).map(x => TxHash.fromBigInt(x));
34
- }
35
- getTxStatus(txHash) {
36
- const key = txHash.toBigInt();
37
- if (this.pendingTxs.has(key)) {
38
- return 'pending';
39
- }
40
- if (this.minedTxs.has(key)) {
41
- return 'mined';
42
- }
43
- return undefined;
44
- }
45
- /**
46
- * Checks if a transaction exists in the pool and returns it.
47
- * @param txHash - The generated tx hash.
48
- * @returns The transaction, if found, 'undefined' otherwise.
49
- */
50
- getTxByHash(txHash) {
51
- const result = this.txs.get(txHash.toBigInt());
52
- return result === undefined ? undefined : Tx.clone(result);
53
- }
54
- /**
55
- * Adds a list of transactions to the pool. Duplicates are ignored.
56
- * @param txs - An array of txs to be added to the pool.
57
- * @returns Empty promise.
58
- */
59
- addTxs(txs) {
60
- let pending = 0;
61
- for (const tx of txs) {
62
- const txHash = tx.getTxHash();
63
- this.log.debug(`Adding tx with id ${txHash.toString()}`, {
64
- eventName: 'tx-added-to-pool',
65
- ...tx.getStats(),
66
- });
67
- const key = txHash.toBigInt();
68
- this.txs.set(key, tx);
69
- if (!this.minedTxs.has(key)) {
70
- pending++;
71
- this.metrics.recordTxSize(tx);
72
- this.pendingTxs.add(key);
73
- }
74
- }
75
- this.metrics.recordAddedTxs('pending', pending);
76
- return Promise.resolve();
77
- }
78
- /**
79
- * Deletes transactions from the pool. Tx hashes that are not present are ignored.
80
- * @param txHashes - An array of tx hashes to be removed from the tx pool.
81
- * @returns The number of transactions that was deleted from the pool.
82
- */
83
- deleteTxs(txHashes) {
84
- let deletedMined = 0;
85
- let deletedPending = 0;
86
- for (const txHash of txHashes) {
87
- const key = txHash.toBigInt();
88
- this.txs.delete(key);
89
- deletedPending += this.pendingTxs.delete(key) ? 1 : 0;
90
- deletedMined += this.minedTxs.delete(key) ? 1 : 0;
91
- }
92
- this.metrics.recordRemovedTxs('pending', deletedPending);
93
- this.metrics.recordRemovedTxs('mined', deletedMined);
94
- return Promise.resolve();
95
- }
96
- /**
97
- * Gets all the transactions stored in the pool.
98
- * @returns Array of tx objects in the order they were added to the pool.
99
- */
100
- getAllTxs() {
101
- return Array.from(this.txs.values()).map(x => Tx.clone(x));
102
- }
103
- /**
104
- * Gets the hashes of all transactions currently in the tx pool.
105
- * @returns An array of transaction hashes found in the tx pool.
106
- */
107
- getAllTxHashes() {
108
- return Array.from(this.txs.keys()).map(x => TxHash.fromBigInt(x));
109
- }
110
- }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X3R4X3Bvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfcG9vbC9tZW1vcnlfdHhfcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRzdEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFVekI7OztPQUdHO0lBQ0gsWUFBWSxTQUEwQixFQUFVLE1BQU0saUJBQWlCLENBQUMsZUFBZSxDQUFDO1FBQXhDLFFBQUcsR0FBSCxHQUFHLENBQXFDO1FBQ3RGLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQWMsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQWtCO1FBQ25DLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3QyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFD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
@@ -1 +0,0 @@
1
- {"version":3,"file":"tx_pool.d.ts","sourceRoot":"","sources":["../../src/tx_pool/tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAC;IAE5C;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;;;OAGG;IACH,SAAS,IAAI,EAAE,EAAE,CAAC;IAElB;;;OAGG;IACH,cAAc,IAAI,MAAM,EAAE,CAAC;IAE3B;;;OAGG;IACH,kBAAkB,IAAI,MAAM,EAAE,CAAC;IAE/B;;;OAGG;IACH,gBAAgB,IAAI,MAAM,EAAE,CAAC;IAE7B;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;CAC9D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tx_pool_test_suite.d.ts","sourceRoot":"","sources":["../../src/tx_pool/tx_pool_test_suite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,MAAM,QA+DrD"}
@@ -1,55 +0,0 @@
1
- import { mockTx } from '@aztec/circuit-types';
2
- /**
3
- * Tests a TxPool implementation.
4
- * @param getTxPool - Gets a fresh TxPool
5
- */
6
- export function describeTxPool(getTxPool) {
7
- let pool;
8
- beforeEach(() => {
9
- pool = getTxPool();
10
- });
11
- it('Adds txs to the pool as pending', async () => {
12
- const tx1 = mockTx();
13
- await pool.addTxs([tx1]);
14
- const poolTx = pool.getTxByHash(tx1.getTxHash());
15
- expect(poolTx.getTxHash()).toEqual(tx1.getTxHash());
16
- expect(pool.getTxStatus(tx1.getTxHash())).toEqual('pending');
17
- expect(pool.getPendingTxHashes()).toEqual([tx1.getTxHash()]);
18
- });
19
- it('Removes txs from the pool', async () => {
20
- const tx1 = mockTx();
21
- await pool.addTxs([tx1]);
22
- await pool.deleteTxs([tx1.getTxHash()]);
23
- expect(pool.getTxByHash(tx1.getTxHash())).toBeFalsy();
24
- expect(pool.getTxStatus(tx1.getTxHash())).toBeUndefined();
25
- });
26
- it('Marks txs as mined', async () => {
27
- const tx1 = mockTx(1);
28
- const tx2 = mockTx(2);
29
- await pool.addTxs([tx1, tx2]);
30
- await pool.markAsMined([tx1.getTxHash()]);
31
- expect(pool.getTxByHash(tx1.getTxHash())).toEqual(tx1);
32
- expect(pool.getTxStatus(tx1.getTxHash())).toEqual('mined');
33
- expect(pool.getMinedTxHashes()).toEqual([tx1.getTxHash()]);
34
- expect(pool.getPendingTxHashes()).toEqual([tx2.getTxHash()]);
35
- });
36
- it('Returns all transactions in the pool', async () => {
37
- const tx1 = mockTx(1);
38
- const tx2 = mockTx(2);
39
- const tx3 = mockTx(3);
40
- await pool.addTxs([tx1, tx2, tx3]);
41
- const poolTxs = pool.getAllTxs();
42
- expect(poolTxs).toHaveLength(3);
43
- expect(poolTxs).toEqual(expect.arrayContaining([tx1, tx2, tx3]));
44
- });
45
- it('Returns all txHashes in the pool', async () => {
46
- const tx1 = mockTx(1);
47
- const tx2 = mockTx(2);
48
- const tx3 = mockTx(3);
49
- await pool.addTxs([tx1, tx2, tx3]);
50
- const poolTxHashes = pool.getAllTxHashes();
51
- expect(poolTxHashes).toHaveLength(3);
52
- expect(poolTxHashes).toEqual(expect.arrayContaining([tx1.getTxHash(), tx2.getTxHash(), tx3.getTxHash()]));
53
- });
54
- }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcG9vbF90ZXN0X3N1aXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4X3Bvb2wvdHhfcG9vbF90ZXN0X3N1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUk5Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLFNBQXVCO0lBQ3BELElBQUksSUFBWSxDQUFDO0lBRWpCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxJQUFJLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFFckIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxNQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDckQsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN6QyxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUVyQixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0RCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9CQUFvQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUxQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2RCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsc0NBQXNDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDcEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRW5DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2hELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVuQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDM0MsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMifQ==
@@ -1,71 +0,0 @@
1
- import { type BlockAttestation } from '@aztec/circuit-types';
2
- import { createDebugLogger } from '@aztec/foundation/log';
3
-
4
- import { type AttestationPool } from './attestation_pool.js';
5
-
6
- export class InMemoryAttestationPool implements AttestationPool {
7
- private attestations: Map</*slot=*/ bigint, Map</*address=*/ string, BlockAttestation>>;
8
-
9
- constructor(private log = createDebugLogger('aztec:attestation_pool')) {
10
- this.attestations = new Map();
11
- }
12
-
13
- public getAttestationsForSlot(slot: bigint): Promise<BlockAttestation[]> {
14
- const slotAttestationMap = this.attestations.get(slot);
15
- if (slotAttestationMap) {
16
- return Promise.resolve(Array.from(slotAttestationMap.values()));
17
- } else {
18
- return Promise.resolve([]);
19
- }
20
- }
21
-
22
- public addAttestations(attestations: BlockAttestation[]): Promise<void> {
23
- for (const attestation of attestations) {
24
- // Perf: order and group by slot before insertion
25
- const slotNumber = attestation.payload.header.globalVariables.slotNumber;
26
-
27
- const address = attestation.getSender();
28
-
29
- const slotAttestationMap = getSlotOrDefault(this.attestations, slotNumber.toBigInt());
30
- slotAttestationMap.set(address.toString(), attestation);
31
-
32
- this.log.verbose(`Added attestation for slot ${slotNumber} from ${address}`);
33
- }
34
- return Promise.resolve();
35
- }
36
-
37
- public deleteAttestationsForSlot(slot: bigint): Promise<void> {
38
- // TODO(md): check if this will free the memory of the inner hash map
39
- this.attestations.delete(slot);
40
- this.log.verbose(`Removed attestation for slot ${slot}`);
41
- return Promise.resolve();
42
- }
43
-
44
- public deleteAttestations(attestations: BlockAttestation[]): Promise<void> {
45
- for (const attestation of attestations) {
46
- const slotNumber = attestation.payload.header.globalVariables.slotNumber;
47
- const slotAttestationMap = this.attestations.get(slotNumber.toBigInt());
48
- if (slotAttestationMap) {
49
- const address = attestation.getSender();
50
- slotAttestationMap.delete(address.toString());
51
- this.log.verbose(`Deleted attestation for slot ${slotNumber} from ${address}`);
52
- }
53
- }
54
- return Promise.resolve();
55
- }
56
- }
57
-
58
- /**
59
- * Get Slot or Default
60
- *
61
- * Fetch the slot mapping, if it does not exist, then create a mapping and return it
62
- */
63
- function getSlotOrDefault(
64
- map: Map<bigint, Map<string, BlockAttestation>>,
65
- slot: bigint,
66
- ): Map<string, BlockAttestation> {
67
- if (!map.has(slot)) {
68
- map.set(slot, new Map<string, BlockAttestation>());
69
- }
70
- return map.get(slot)!;
71
- }