@aztec/p2p 2.0.3 → 2.1.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +3 -0
- package/dest/client/interface.d.ts +3 -3
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +1 -7
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +12 -16
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +13 -3
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +93 -40
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +15 -4
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +81 -9
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +12 -4
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +130 -6
- package/dest/msg_validators/tx_validator/double_spend_validator.js +1 -1
- package/dest/services/libp2p/libp2p_service.d.ts +0 -1
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +6 -10
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +15 -8
- package/dest/services/reqresp/interface.d.ts +0 -9
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +0 -17
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +12 -8
- package/dest/services/tx_provider.js +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +2 -1
- package/package.json +14 -15
- package/src/client/factory.ts +7 -0
- package/src/client/interface.ts +3 -3
- package/src/client/p2p_client.ts +11 -18
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +104 -42
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +89 -10
- package/src/mem_pools/tx_pool/tx_pool.ts +11 -4
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +114 -7
- package/src/msg_validators/tx_validator/double_spend_validator.ts +1 -1
- package/src/services/libp2p/libp2p_service.ts +7 -11
- package/src/services/peer-manager/peer_manager.ts +9 -10
- package/src/services/reqresp/interface.ts +0 -21
- package/src/services/reqresp/reqresp.ts +13 -9
- package/src/services/tx_provider.ts +1 -1
- package/src/testbench/p2p_client_testbench_worker.ts +1 -0
|
@@ -13,6 +13,8 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
13
13
|
*/ txs;
|
|
14
14
|
minedTxs;
|
|
15
15
|
pendingTxs;
|
|
16
|
+
deletedMinedTxHashes;
|
|
17
|
+
blockToDeletedMinedTxHash;
|
|
16
18
|
metrics;
|
|
17
19
|
/**
|
|
18
20
|
* Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
|
|
@@ -29,6 +31,8 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
29
31
|
this.txs = new Map();
|
|
30
32
|
this.minedTxs = new Map();
|
|
31
33
|
this.pendingTxs = new Set();
|
|
34
|
+
this.deletedMinedTxHashes = new Map();
|
|
35
|
+
this.blockToDeletedMinedTxHash = new Map();
|
|
32
36
|
this.metrics = new PoolInstrumentation(telemetry, PoolName.TX_POOL, this.countTx);
|
|
33
37
|
}
|
|
34
38
|
countTx;
|
|
@@ -38,6 +42,19 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
38
42
|
markAsMined(txHashes, blockHeader) {
|
|
39
43
|
const keys = txHashes.map((x)=>x.toBigInt());
|
|
40
44
|
for (const key of keys){
|
|
45
|
+
// If this tx was previously soft-deleted, remove it from the deleted sets
|
|
46
|
+
if (this.deletedMinedTxHashes.has(key)) {
|
|
47
|
+
const originalBlock = this.deletedMinedTxHashes.get(key);
|
|
48
|
+
this.deletedMinedTxHashes.delete(key);
|
|
49
|
+
// Remove from block-to-hash mapping
|
|
50
|
+
const txHashesForBlock = this.blockToDeletedMinedTxHash.get(originalBlock);
|
|
51
|
+
if (txHashesForBlock) {
|
|
52
|
+
txHashesForBlock.delete(key);
|
|
53
|
+
if (txHashesForBlock.size === 0) {
|
|
54
|
+
this.blockToDeletedMinedTxHash.delete(originalBlock);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
41
58
|
this.minedTxs.set(key, blockHeader.globalVariables.blockNumber);
|
|
42
59
|
this.pendingTxs.delete(key);
|
|
43
60
|
}
|
|
@@ -60,7 +77,11 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
60
77
|
async getPendingTxHashes() {
|
|
61
78
|
const txs = (await this.getAllTxs()).sort((tx1, tx2)=>-getPendingTxPriority(tx1).localeCompare(getPendingTxPriority(tx2)));
|
|
62
79
|
const txHashes = await Promise.all(txs.map((tx)=>tx.getTxHash()));
|
|
63
|
-
|
|
80
|
+
// No need to check deleted since pending txs are never soft-deleted
|
|
81
|
+
return txHashes.filter((txHash)=>{
|
|
82
|
+
const key = txHash.toBigInt();
|
|
83
|
+
return this.pendingTxs.has(key);
|
|
84
|
+
});
|
|
64
85
|
}
|
|
65
86
|
getMinedTxHashes() {
|
|
66
87
|
return Promise.resolve(Array.from(this.minedTxs.entries()).map(([txHash, blockNumber])=>[
|
|
@@ -69,16 +90,20 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
69
90
|
]));
|
|
70
91
|
}
|
|
71
92
|
getPendingTxCount() {
|
|
93
|
+
// Soft-deleted transactions are always mined, never pending
|
|
72
94
|
return Promise.resolve(this.pendingTxs.size);
|
|
73
95
|
}
|
|
74
96
|
getTxStatus(txHash) {
|
|
75
97
|
const key = txHash.toBigInt();
|
|
76
|
-
if (this.
|
|
77
|
-
return Promise.resolve('
|
|
98
|
+
if (this.deletedMinedTxHashes.has(key)) {
|
|
99
|
+
return Promise.resolve('deleted');
|
|
78
100
|
}
|
|
79
101
|
if (this.minedTxs.has(key)) {
|
|
80
102
|
return Promise.resolve('mined');
|
|
81
103
|
}
|
|
104
|
+
if (this.pendingTxs.has(key)) {
|
|
105
|
+
return Promise.resolve('pending');
|
|
106
|
+
}
|
|
82
107
|
return Promise.resolve(undefined);
|
|
83
108
|
}
|
|
84
109
|
/**
|
|
@@ -130,14 +155,33 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
130
155
|
}
|
|
131
156
|
/**
|
|
132
157
|
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
133
|
-
*
|
|
134
|
-
* @
|
|
135
|
-
|
|
158
|
+
* Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
|
|
159
|
+
* @param txHashes - An array of tx hashes to be deleted from the tx pool.
|
|
160
|
+
* @returns Empty promise.
|
|
161
|
+
*/ deleteTxs(txHashes, opts) {
|
|
136
162
|
for (const txHash of txHashes){
|
|
137
163
|
const key = txHash.toBigInt();
|
|
138
|
-
this.txs.
|
|
139
|
-
|
|
140
|
-
|
|
164
|
+
if (this.txs.has(key)) {
|
|
165
|
+
if (this.minedTxs.has(key)) {
|
|
166
|
+
const blockNumber = this.minedTxs.get(key);
|
|
167
|
+
this.minedTxs.delete(key);
|
|
168
|
+
// Soft-delete mined transactions: remove from mined set but keep in storage
|
|
169
|
+
if (opts?.permanently) {
|
|
170
|
+
// Permanently delete mined transactions if specified
|
|
171
|
+
this.txs.delete(key);
|
|
172
|
+
} else {
|
|
173
|
+
this.deletedMinedTxHashes.set(key, blockNumber);
|
|
174
|
+
if (!this.blockToDeletedMinedTxHash.has(blockNumber)) {
|
|
175
|
+
this.blockToDeletedMinedTxHash.set(blockNumber, new Set());
|
|
176
|
+
}
|
|
177
|
+
this.blockToDeletedMinedTxHash.get(blockNumber).add(key);
|
|
178
|
+
}
|
|
179
|
+
} else {
|
|
180
|
+
// Permanently delete pending transactions
|
|
181
|
+
this.txs.delete(key);
|
|
182
|
+
this.pendingTxs.delete(key);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
141
185
|
}
|
|
142
186
|
return Promise.resolve();
|
|
143
187
|
}
|
|
@@ -157,4 +201,32 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
157
201
|
markTxsAsNonEvictable(_) {
|
|
158
202
|
return Promise.resolve();
|
|
159
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
|
|
206
|
+
* @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
|
|
207
|
+
* @returns The number of transactions permanently deleted.
|
|
208
|
+
*/ cleanupDeletedMinedTxs(blockNumber) {
|
|
209
|
+
let deletedCount = 0;
|
|
210
|
+
const blocksToDelete = [];
|
|
211
|
+
// Find all blocks up to the specified block number
|
|
212
|
+
for (const [block, txHashes] of this.blockToDeletedMinedTxHash.entries()){
|
|
213
|
+
if (block <= blockNumber) {
|
|
214
|
+
// Permanently delete all transactions from this block
|
|
215
|
+
for (const txHash of txHashes){
|
|
216
|
+
this.txs.delete(txHash);
|
|
217
|
+
this.deletedMinedTxHashes.delete(txHash);
|
|
218
|
+
deletedCount++;
|
|
219
|
+
}
|
|
220
|
+
blocksToDelete.push(block);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// Clean up block-to-hash mapping
|
|
224
|
+
for (const block of blocksToDelete){
|
|
225
|
+
this.blockToDeletedMinedTxHash.delete(block);
|
|
226
|
+
}
|
|
227
|
+
if (deletedCount > 0) {
|
|
228
|
+
this.log.debug(`Permanently deleted ${deletedCount} deleted mined txs from blocks up to ${blockNumber}`);
|
|
229
|
+
}
|
|
230
|
+
return Promise.resolve(deletedCount);
|
|
231
|
+
}
|
|
160
232
|
}
|
|
@@ -63,7 +63,9 @@ export interface TxPool extends TypedEventEmitter<TxPoolEvents> {
|
|
|
63
63
|
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
64
64
|
* @param txHashes - An array of tx hashes to be removed from the tx pool.
|
|
65
65
|
*/
|
|
66
|
-
deleteTxs(txHashes: TxHash[]
|
|
66
|
+
deleteTxs(txHashes: TxHash[], opts?: {
|
|
67
|
+
permanently?: boolean;
|
|
68
|
+
}): Promise<void>;
|
|
67
69
|
/**
|
|
68
70
|
* Gets all transactions currently in the tx pool.
|
|
69
71
|
* @returns An array of transaction objects found in the tx pool.
|
|
@@ -87,11 +89,11 @@ export interface TxPool extends TypedEventEmitter<TxPoolEvents> {
|
|
|
87
89
|
*/
|
|
88
90
|
getMinedTxHashes(): Promise<[tx: TxHash, blockNumber: number][]>;
|
|
89
91
|
/**
|
|
90
|
-
* Returns whether the given tx hash is flagged as pending or
|
|
92
|
+
* Returns whether the given tx hash is flagged as pending, mined, or deleted.
|
|
91
93
|
* @param txHash - Hash of the tx to query.
|
|
92
|
-
* @returns Pending or
|
|
94
|
+
* @returns Pending, mined, or deleted depending on its status, or undefined if not found.
|
|
93
95
|
*/
|
|
94
|
-
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
|
|
96
|
+
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
|
|
95
97
|
/**
|
|
96
98
|
* Configure the maximum size of the tx pool
|
|
97
99
|
* @param maxSizeBytes - The maximum size in bytes of the mempool. Set to undefined to disable it
|
|
@@ -104,5 +106,11 @@ export interface TxPool extends TypedEventEmitter<TxPoolEvents> {
|
|
|
104
106
|
* @param txHashes - Hashes of the transactions to mark as non-evictible.
|
|
105
107
|
*/
|
|
106
108
|
markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
|
|
111
|
+
* @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
|
|
112
|
+
* @returns The number of transactions permanently deleted.
|
|
113
|
+
*/
|
|
114
|
+
cleanupDeletedMinedTxs(blockNumber: number): Promise<number>;
|
|
107
115
|
}
|
|
108
116
|
//# sourceMappingURL=tx_pool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,MAAO,SAAQ,iBAAiB,CAAC,YAAY,CAAC;IAC7D;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/D;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAErD;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAE9D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAE/C;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAE7D;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzE;;;;OAIG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool_test_suite.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"tx_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/tx_pool_test_suite.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,MAAM,QA6SrD"}
|
|
@@ -58,16 +58,29 @@ import { BlockHeader, GlobalVariables } from '@aztec/stdlib/tx';
|
|
|
58
58
|
tx3
|
|
59
59
|
]));
|
|
60
60
|
});
|
|
61
|
-
it('
|
|
62
|
-
const
|
|
61
|
+
it('permanently deletes pending txs and soft-deletes mined txs', async ()=>{
|
|
62
|
+
const pendingTx = await mockTx(1);
|
|
63
|
+
const minedTx = await mockTx(2);
|
|
63
64
|
await pool.addTxs([
|
|
64
|
-
|
|
65
|
+
pendingTx,
|
|
66
|
+
minedTx
|
|
65
67
|
]);
|
|
68
|
+
await pool.markAsMined([
|
|
69
|
+
minedTx.getTxHash()
|
|
70
|
+
], minedBlockHeader);
|
|
71
|
+
// Delete a pending tx - should be permanently deleted
|
|
66
72
|
await pool.deleteTxs([
|
|
67
|
-
|
|
73
|
+
pendingTx.getTxHash()
|
|
74
|
+
]);
|
|
75
|
+
await expect(pool.getTxByHash(pendingTx.getTxHash())).resolves.toBeUndefined();
|
|
76
|
+
await expect(pool.getTxStatus(pendingTx.getTxHash())).resolves.toBeUndefined();
|
|
77
|
+
// Delete a mined tx - should be soft-deleted (still in storage)
|
|
78
|
+
await pool.deleteTxs([
|
|
79
|
+
minedTx.getTxHash()
|
|
68
80
|
]);
|
|
69
|
-
await expect(pool.getTxByHash(
|
|
70
|
-
await expect(pool.getTxStatus(
|
|
81
|
+
await expect(pool.getTxByHash(minedTx.getTxHash())).resolves.toBeDefined();
|
|
82
|
+
await expect(pool.getTxStatus(minedTx.getTxHash())).resolves.toEqual('deleted');
|
|
83
|
+
await expect(pool.getMinedTxHashes()).resolves.toEqual([]);
|
|
71
84
|
await expect(pool.getPendingTxCount()).resolves.toEqual(0);
|
|
72
85
|
});
|
|
73
86
|
it('marks txs as mined', async ()=>{
|
|
@@ -267,4 +280,115 @@ import { BlockHeader, GlobalVariables } from '@aztec/stdlib/tx';
|
|
|
267
280
|
tx2
|
|
268
281
|
].map((tx)=>tx.getTxHash()));
|
|
269
282
|
});
|
|
283
|
+
describe('soft-delete', ()=>{
|
|
284
|
+
it('soft-deletes mined txs and keeps them in storage', async ()=>{
|
|
285
|
+
const txs = await Promise.all([
|
|
286
|
+
mockTx(1),
|
|
287
|
+
mockTx(2),
|
|
288
|
+
mockTx(3)
|
|
289
|
+
]);
|
|
290
|
+
await pool.addTxs(txs);
|
|
291
|
+
// Mark first tx as mined
|
|
292
|
+
await pool.markAsMined([
|
|
293
|
+
txs[0].getTxHash()
|
|
294
|
+
], minedBlockHeader);
|
|
295
|
+
// Verify initial state
|
|
296
|
+
await expect(pool.getPendingTxCount()).resolves.toBe(2);
|
|
297
|
+
await expect(pool.getTxByHash(txs[0].getTxHash())).resolves.toBeDefined();
|
|
298
|
+
await expect(pool.getTxByHash(txs[1].getTxHash())).resolves.toBeDefined();
|
|
299
|
+
// Delete mined tx - should be soft-deleted
|
|
300
|
+
await pool.deleteTxs([
|
|
301
|
+
txs[0].getTxHash()
|
|
302
|
+
]);
|
|
303
|
+
// Delete pending tx - should be permanently deleted
|
|
304
|
+
await pool.deleteTxs([
|
|
305
|
+
txs[1].getTxHash()
|
|
306
|
+
]);
|
|
307
|
+
// Verify mined tx still exists in storage but has 'deleted' status
|
|
308
|
+
await expect(pool.getTxByHash(txs[0].getTxHash())).resolves.toBeDefined();
|
|
309
|
+
await expect(pool.getTxStatus(txs[0].getTxHash())).resolves.toEqual('deleted');
|
|
310
|
+
// Verify pending tx is permanently deleted
|
|
311
|
+
await expect(pool.getTxByHash(txs[1].getTxHash())).resolves.toBeUndefined();
|
|
312
|
+
await expect(pool.getTxStatus(txs[1].getTxHash())).resolves.toBeUndefined();
|
|
313
|
+
// Verify remaining pending count
|
|
314
|
+
await expect(pool.getPendingTxCount()).resolves.toBe(1);
|
|
315
|
+
// Verify pending hashes don't include deleted txs
|
|
316
|
+
const pendingHashes = await pool.getPendingTxHashes();
|
|
317
|
+
expect(pendingHashes).toHaveLength(1);
|
|
318
|
+
expect(pendingHashes.map((h)=>h.toString())).toContain(txs[2].getTxHash().toString());
|
|
319
|
+
});
|
|
320
|
+
it('cleans up old deleted mined transactions', async ()=>{
|
|
321
|
+
const txs = await Promise.all([
|
|
322
|
+
mockTx(1),
|
|
323
|
+
mockTx(2),
|
|
324
|
+
mockTx(3)
|
|
325
|
+
]);
|
|
326
|
+
await pool.addTxs(txs);
|
|
327
|
+
// Mark first two as mined in block 1
|
|
328
|
+
await pool.markAsMined([
|
|
329
|
+
txs[0].getTxHash(),
|
|
330
|
+
txs[1].getTxHash()
|
|
331
|
+
], minedBlockHeader);
|
|
332
|
+
// Soft-delete mined transactions
|
|
333
|
+
await pool.deleteTxs([
|
|
334
|
+
txs[0].getTxHash(),
|
|
335
|
+
txs[1].getTxHash()
|
|
336
|
+
]);
|
|
337
|
+
// Clean up deleted mined txs from block 1 and earlier
|
|
338
|
+
const deletedCount = await pool.cleanupDeletedMinedTxs(1);
|
|
339
|
+
// Verify old transactions are permanently deleted
|
|
340
|
+
expect(deletedCount).toBe(2);
|
|
341
|
+
await expect(pool.getTxByHash(txs[0].getTxHash())).resolves.toBeUndefined();
|
|
342
|
+
await expect(pool.getTxByHash(txs[1].getTxHash())).resolves.toBeUndefined();
|
|
343
|
+
await expect(pool.getTxByHash(txs[2].getTxHash())).resolves.toBeDefined();
|
|
344
|
+
});
|
|
345
|
+
it('does not clean up recent deleted mined transactions', async ()=>{
|
|
346
|
+
const txs = await Promise.all([
|
|
347
|
+
mockTx(1),
|
|
348
|
+
mockTx(2)
|
|
349
|
+
]);
|
|
350
|
+
await pool.addTxs(txs);
|
|
351
|
+
// Mark as mined in block 2
|
|
352
|
+
const laterBlockHeader = BlockHeader.empty({
|
|
353
|
+
globalVariables: GlobalVariables.empty({
|
|
354
|
+
blockNumber: 2,
|
|
355
|
+
timestamp: 0n
|
|
356
|
+
})
|
|
357
|
+
});
|
|
358
|
+
await pool.markAsMined([
|
|
359
|
+
txs[0].getTxHash()
|
|
360
|
+
], laterBlockHeader);
|
|
361
|
+
// Soft-delete a mined transaction
|
|
362
|
+
await pool.deleteTxs([
|
|
363
|
+
txs[0].getTxHash()
|
|
364
|
+
]);
|
|
365
|
+
// Try to clean up with block 1 (before the mined block)
|
|
366
|
+
const deletedCount = await pool.cleanupDeletedMinedTxs(1);
|
|
367
|
+
// Verify no transactions were cleaned up
|
|
368
|
+
expect(deletedCount).toBe(0);
|
|
369
|
+
await expect(pool.getTxByHash(txs[0].getTxHash())).resolves.toBeDefined();
|
|
370
|
+
});
|
|
371
|
+
it('restores deleted mined tx when it is mined again', async ()=>{
|
|
372
|
+
const tx = await mockTx(1);
|
|
373
|
+
await pool.addTxs([
|
|
374
|
+
tx
|
|
375
|
+
]);
|
|
376
|
+
// Mark as mined
|
|
377
|
+
await pool.markAsMined([
|
|
378
|
+
tx.getTxHash()
|
|
379
|
+
], minedBlockHeader);
|
|
380
|
+
// Soft-delete it
|
|
381
|
+
await pool.deleteTxs([
|
|
382
|
+
tx.getTxHash()
|
|
383
|
+
]);
|
|
384
|
+
await expect(pool.getTxStatus(tx.getTxHash())).resolves.toEqual('deleted');
|
|
385
|
+
// Mark as mined again (e.g., after a reorg)
|
|
386
|
+
await pool.markAsMined([
|
|
387
|
+
tx.getTxHash()
|
|
388
|
+
], minedBlockHeader);
|
|
389
|
+
// Should be back to mined status
|
|
390
|
+
await expect(pool.getTxStatus(tx.getTxHash())).resolves.toEqual('mined');
|
|
391
|
+
await expect(pool.getTxByHash(tx.getTxHash())).resolves.toBeDefined();
|
|
392
|
+
});
|
|
393
|
+
});
|
|
270
394
|
}
|
|
@@ -9,7 +9,7 @@ export class DoubleSpendTxValidator {
|
|
|
9
9
|
async validateTx(tx) {
|
|
10
10
|
const nullifiers = tx instanceof Tx ? tx.data.getNonEmptyNullifiers() : tx.txEffect.nullifiers;
|
|
11
11
|
// Ditch this tx if it has repeated nullifiers
|
|
12
|
-
const uniqueNullifiers = new Set(nullifiers);
|
|
12
|
+
const uniqueNullifiers = new Set(nullifiers.map((n)=>n.toBigInt()));
|
|
13
13
|
if (uniqueNullifiers.size !== nullifiers.length) {
|
|
14
14
|
this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} for emitting duplicate nullifiers`);
|
|
15
15
|
return {
|
|
@@ -9,7 +9,6 @@ import { Tx } from '@aztec/stdlib/tx';
|
|
|
9
9
|
import { type TelemetryClient, WithTracer } from '@aztec/telemetry-client';
|
|
10
10
|
import { ENR } from '@chainsafe/enr';
|
|
11
11
|
import { type Message, type PeerId } from '@libp2p/interface';
|
|
12
|
-
import '@libp2p/kad-dht';
|
|
13
12
|
import type { P2PConfig } from '../../config.js';
|
|
14
13
|
import type { MemPools } from '../../mem_pools/interface.js';
|
|
15
14
|
import { type PubSubLibp2p } from '../../util.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAA6C,MAAM,uBAAuB,CAAC;AAI/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,KAAK,EAAE,6BAA6B,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACvH,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,KAAK,UAAU,EACf,aAAa,EAGb,SAAS,EAIV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,EAAE,EAAwC,MAAM,kBAAkB,CAAC;AAG5E,OAAO,EAAkC,KAAK,eAAe,EAAE,UAAU,EAAa,MAAM,yBAAyB,CAAC;AAEtH,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAarC,OAAO,EAAE,KAAK,OAAO,EAA4B,KAAK,MAAM,EAAwB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,6 @@ import { yamux } from '@chainsafe/libp2p-yamux';
|
|
|
25
25
|
import { bootstrap } from '@libp2p/bootstrap';
|
|
26
26
|
import { identify } from '@libp2p/identify';
|
|
27
27
|
import { TopicValidatorResult } from '@libp2p/interface';
|
|
28
|
-
import '@libp2p/kad-dht';
|
|
29
28
|
import { mplex } from '@libp2p/mplex';
|
|
30
29
|
import { tcp } from '@libp2p/tcp';
|
|
31
30
|
import { createLibp2p } from 'libp2p';
|
|
@@ -165,7 +164,7 @@ import { P2PInstrumentation } from './instrumentation.js';
|
|
|
165
164
|
// The connection attempts to the node on TCP layer are not necessarily valid Aztec peers so we want to have a bit of leeway here
|
|
166
165
|
// If we hit the limit, the connection will be temporarily accepted and immediately dropped.
|
|
167
166
|
// Docs: https://nodejs.org/api/net.html#servermaxconnections
|
|
168
|
-
maxConnections:
|
|
167
|
+
maxConnections: maxPeerCount * 2,
|
|
169
168
|
// socket option: the maximum length of the queue of pending connections
|
|
170
169
|
// https://nodejs.org/dist/latest-v22.x/docs/api/net.html#serverlisten
|
|
171
170
|
// it's not safe if we increase this number
|
|
@@ -176,7 +175,7 @@ import { P2PInstrumentation } from './instrumentation.js';
|
|
|
176
175
|
// In case closeAbove is reached, the server stops listening altogether
|
|
177
176
|
// It's important that there is enough difference between closeAbove and listenAbove,
|
|
178
177
|
// otherwise the server.listener will flap between being closed and open potentially degrading perf even more
|
|
179
|
-
closeAbove: maxPeerCount *
|
|
178
|
+
closeAbove: maxPeerCount * 3,
|
|
180
179
|
listenBelow: Math.floor(maxPeerCount * 0.9)
|
|
181
180
|
}
|
|
182
181
|
})
|
|
@@ -192,7 +191,9 @@ import { P2PInstrumentation } from './instrumentation.js';
|
|
|
192
191
|
],
|
|
193
192
|
connectionManager: {
|
|
194
193
|
minConnections: 0,
|
|
195
|
-
maxConnections
|
|
194
|
+
// We set maxConnections above maxPeerCount because if we hit limit of maxPeerCount
|
|
195
|
+
// libp2p will start aggressively rejecting all new connections, preventing network discovery and crawling.
|
|
196
|
+
maxConnections: maxPeerCount * 2,
|
|
196
197
|
maxParallelDials: 100,
|
|
197
198
|
dialTimeout: 30_000,
|
|
198
199
|
maxPeerAddrsToDial: 5,
|
|
@@ -311,10 +312,6 @@ import { P2PInstrumentation } from './instrumentation.js';
|
|
|
311
312
|
const goodbyeHandler = reqGoodbyeHandler(this.peerManager);
|
|
312
313
|
const blockHandler = reqRespBlockHandler(this.archiver);
|
|
313
314
|
const statusHandler = reqRespStatusHandler(this.protocolVersion, this.worldStateSynchronizer, this.logger);
|
|
314
|
-
// In case P2P client doesnt'have attestation pool,
|
|
315
|
-
// const blockTxsHandler = this.mempools.attestationPool
|
|
316
|
-
// ? reqRespBlockTxsHandler(this.mempools.attestationPool, this.mempools.txPool)
|
|
317
|
-
// : def;
|
|
318
315
|
const requestResponseHandlers = {
|
|
319
316
|
[ReqRespSubProtocol.PING]: pingHandler,
|
|
320
317
|
[ReqRespSubProtocol.STATUS]: statusHandler.bind(this),
|
|
@@ -596,8 +593,7 @@ import { P2PInstrumentation } from './instrumentation.js';
|
|
|
596
593
|
async processValidBlockProposal(block, sender) {
|
|
597
594
|
const slot = block.slotNumber.toBigInt();
|
|
598
595
|
const previousSlot = slot - 1n;
|
|
599
|
-
|
|
600
|
-
this.logger.verbose(`Received block ${block.blockNumber} for slot ${slot} epoch ${epoch} from external peer ${sender.toString()}.`, {
|
|
596
|
+
this.logger.verbose(`Received block ${block.blockNumber} for slot ${slot} from external peer ${sender.toString()}.`, {
|
|
601
597
|
p2pMessageIdentifier: await block.p2pMessageIdentifier(),
|
|
602
598
|
slot: block.slotNumber.toNumber(),
|
|
603
599
|
archive: block.archive.toString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer_manager.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"peer_manager.d.ts","sourceRoot":"","sources":["../../../src/services/peer-manager/peer_manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAIhE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAa,MAAM,yBAAyB,CAAC;AAG1E,OAAO,KAAK,EAAc,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAK5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAgB,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAuB,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA2BrE,qBAAa,WAAY,YAAW,oBAAoB;IAyBpD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAlC/B,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,8BAA8B,CAAa;IACnD,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,uBAAuB,CAAkB;IACjD,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,uBAAuB,CAAkB;IACjD,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,qCAAqC,CAAsC;IACnF,OAAO,CAAC,qCAAqC,CAAkC;IAC/E,OAAO,CAAC,qBAAqB,CAA0B;IACvD,OAAO,CAAC,oBAAoB,CAAoD;IAChF,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,yBAAyB,CAAkB;IAEnD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAId;gBAGQ,UAAU,EAAE,UAAU,EACtB,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,SAAS,EACzB,eAAe,EAAE,eAAe,EACxB,MAAM,oDAAmC,EACzC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EACP,sBAAsB,EAAE,sBAAsB,EAC9C,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,mBAAmB,EAC/B,YAAY,GAAE,YAAiC;IA0BlE;;;;OAIG;IACG,eAAe;IAqCrB,IAAI,MAAM,6CAET;IAGY,SAAS;IAchB,2BAA2B;IAkDjC;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;;;OAKG;YACW,2BAA2B;IAsBzC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAsBhC;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAa5B,8BAA8B,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAIlE;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAQrB;;;OAGG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ3C;;;OAGG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAU3C;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB;;;OAGG;IACI,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO7C;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;;;OAMG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;IAQrD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB;IAIvD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIpC,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAK/C,QAAQ,CAAC,cAAc,UAAQ,GAAG,QAAQ,EAAE;IAiC5C,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAiB5C,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAe3D;;OAEG;IACH,OAAO,CAAC,QAAQ;IAkEhB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,mBAAmB;IAoB3B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;YAyBT,wBAAwB;IAgCtC,OAAO,CAAC,qBAAqB;IAM7B;;;;;OAKG;YACW,cAAc;IAc5B;;;OAGG;YACW,oBAAoB;YAoEpB,QAAQ;IA2BtB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,gBAAgB;YAsBV,mBAAmB;IAKjC;;;;;;;;;SASK;YACS,uBAAuB;IAsCrC;;;;SAIK;YACS,qBAAqB;IAkFnC,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,wBAAwB;IAUhC;;;OAGG;IACU,IAAI;IAajB,OAAO,CAAC,uBAAuB;IAI/B;;;;;;;;;SASK;IACQ,yBAAyB,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;YAS3F,wBAAwB;CAwBvC"}
|
|
@@ -727,7 +727,7 @@ export class PeerManager {
|
|
|
727
727
|
const response = await this.reqresp.sendRequestToPeer(peerId, ReqRespSubProtocol.AUTH, authRequest.toBuffer());
|
|
728
728
|
const { status } = response;
|
|
729
729
|
if (status !== ReqRespStatus.SUCCESS) {
|
|
730
|
-
this.logger.
|
|
730
|
+
this.logger.verbose(`Disconnecting peer ${peerId} who failed to respond auth handshake`, {
|
|
731
731
|
peerId,
|
|
732
732
|
status: ReqRespStatus[status]
|
|
733
733
|
});
|
|
@@ -744,7 +744,7 @@ export class PeerManager {
|
|
|
744
744
|
const peerAuthResponse = AuthResponse.fromBuffer(data);
|
|
745
745
|
const peerStatusMessage = peerAuthResponse.status;
|
|
746
746
|
if (!ourStatus.validate(peerStatusMessage)) {
|
|
747
|
-
this.logger.
|
|
747
|
+
this.logger.verbose(`Disconnecting peer ${peerId} due to failed status handshake as part of auth.`, logData);
|
|
748
748
|
this.markAuthHandshakeFailed(peerId);
|
|
749
749
|
this.markPeerForDisconnect(peerId);
|
|
750
750
|
return;
|
|
@@ -755,8 +755,8 @@ export class PeerManager {
|
|
|
755
755
|
const registeredValidators = await this.epochCache.getRegisteredValidators();
|
|
756
756
|
const found = registeredValidators.find((v)=>v.toString() === sender.toString()) !== undefined;
|
|
757
757
|
if (!found) {
|
|
758
|
-
this.logger.
|
|
759
|
-
|
|
758
|
+
this.logger.verbose(`Disconnecting peer ${peerId} due to failed auth handshake, peer is not a registered validator.`, {
|
|
759
|
+
...logData,
|
|
760
760
|
address: sender.toString()
|
|
761
761
|
});
|
|
762
762
|
this.markAuthHandshakeFailed(peerId);
|
|
@@ -766,17 +766,24 @@ export class PeerManager {
|
|
|
766
766
|
// Check to see that this validator address isn't already allocated to a different peer
|
|
767
767
|
const peerForAddress = this.authenticatedValidatorAddressToPeerId.get(sender.toString());
|
|
768
768
|
if (peerForAddress !== undefined && peerForAddress.toString() !== peerIdString) {
|
|
769
|
-
this.logger.
|
|
769
|
+
this.logger.verbose(`Received auth for validator ${sender.toString()} from peer ${peerIdString}, but this validator is already authenticated to peer ${peerForAddress.toString()}`, {
|
|
770
|
+
...logData,
|
|
771
|
+
address: sender.toString()
|
|
772
|
+
});
|
|
770
773
|
return;
|
|
771
774
|
}
|
|
772
775
|
this.markAuthHandshakeSuccess(peerId);
|
|
773
776
|
this.authenticatedPeerIdToValidatorAddress.set(peerIdString, sender);
|
|
774
777
|
this.authenticatedValidatorAddressToPeerId.set(sender.toString(), peerId);
|
|
775
|
-
this.logger.info(`Successfully completed auth handshake with peer ${peerId}, validator address ${sender.toString()}`,
|
|
778
|
+
this.logger.info(`Successfully completed auth handshake with peer ${peerId}, validator address ${sender.toString()}`, {
|
|
779
|
+
...logData,
|
|
780
|
+
address: sender.toString()
|
|
781
|
+
});
|
|
776
782
|
} catch (err) {
|
|
777
783
|
//TODO: maybe hard ban these peers in the future
|
|
778
|
-
this.logger.
|
|
779
|
-
peerId
|
|
784
|
+
this.logger.verbose(`Disconnecting peer ${peerId} due to error during auth handshake: ${err.message}`, {
|
|
785
|
+
peerId,
|
|
786
|
+
err
|
|
780
787
|
});
|
|
781
788
|
this.markAuthHandshakeFailed(peerId);
|
|
782
789
|
this.markPeerForDisconnect(peerId);
|
|
@@ -86,15 +86,6 @@ export declare class ValidationError extends Error {
|
|
|
86
86
|
export type SubProtocolMap = {
|
|
87
87
|
[S in ReqRespSubProtocol]: RequestResponsePair<InstanceType<(typeof subProtocolMap)[S]['request']>, InstanceType<(typeof subProtocolMap)[S]['response']>>;
|
|
88
88
|
};
|
|
89
|
-
/**
|
|
90
|
-
* Default handler for unimplemented sub protocols, this SHOULD be overwritten
|
|
91
|
-
* by the service, but is provided as a fallback
|
|
92
|
-
*/
|
|
93
|
-
export declare const defaultHandler: (_msg: any) => Promise<Buffer>;
|
|
94
|
-
/**
|
|
95
|
-
* Default sub protocol handlers - this SHOULD be overwritten by the service,
|
|
96
|
-
*/
|
|
97
|
-
export declare const DEFAULT_SUB_PROTOCOL_HANDLERS: ReqRespSubProtocolHandlers;
|
|
98
89
|
/**
|
|
99
90
|
* The Request Response Pair interface defines the methods that each
|
|
100
91
|
* request response pair must implement
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/interface.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,23 +39,6 @@ export const DEFAULT_SUB_PROTOCOL_VALIDATORS = {
|
|
|
39
39
|
super(message);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
/**
|
|
43
|
-
* Default handler for unimplemented sub protocols, this SHOULD be overwritten
|
|
44
|
-
* by the service, but is provided as a fallback
|
|
45
|
-
*/ export const defaultHandler = (_msg)=>{
|
|
46
|
-
return Promise.resolve(Buffer.from('unimplemented'));
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* Default sub protocol handlers - this SHOULD be overwritten by the service,
|
|
50
|
-
*/ export const DEFAULT_SUB_PROTOCOL_HANDLERS = {
|
|
51
|
-
[ReqRespSubProtocol.PING]: defaultHandler,
|
|
52
|
-
[ReqRespSubProtocol.STATUS]: defaultHandler,
|
|
53
|
-
[ReqRespSubProtocol.TX]: defaultHandler,
|
|
54
|
-
[ReqRespSubProtocol.GOODBYE]: defaultHandler,
|
|
55
|
-
[ReqRespSubProtocol.BLOCK]: defaultHandler,
|
|
56
|
-
[ReqRespSubProtocol.AUTH]: defaultHandler,
|
|
57
|
-
[ReqRespSubProtocol.BLOCK_TXS]: defaultHandler
|
|
58
|
-
};
|
|
59
42
|
/*
|
|
60
43
|
* Small helper function which parses buffer into specific response type
|
|
61
44
|
* It is needed to make TypeScript happy, as it cannot infer the type from the buffer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqresp.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/reqresp.ts"],"names":[],"mappings":"AAMA,OAAO,EAAc,KAAK,eAAe,EAAiC,MAAM,yBAAyB,CAAC;AAE1G,OAAO,KAAK,EAAsB,MAAM,EAAU,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAUrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAGrB,OAAO,
|
|
1
|
+
{"version":3,"file":"reqresp.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/reqresp.ts"],"names":[],"mappings":"AAMA,OAAO,EAAc,KAAK,eAAe,EAAiC,MAAM,yBAAyB,CAAC;AAE1G,OAAO,KAAK,EAAsB,MAAM,EAAU,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAUrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,KAAK,cAAc,EAEpB,MAAM,gBAAgB,CAAC;AASxB;;;;;;;;;;;;;GAaG;AACH,qBAAa,OAAQ,YAAW,gBAAgB;IAgB5C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IAjBhB,OAAO,CAAC,0BAA0B,CAAiD;IACnF,OAAO,CAAC,aAAa,CAA2C;IAEhE,OAAO,CAAC,mBAAmB,CAA2C;IACtE,OAAO,CAAC,qBAAqB,CAA6C;IAE1E,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,WAAW,CAA6B;IAEhD,OAAO,CAAC,eAAe,CAAkB;IAEzC,OAAO,CAAC,OAAO,CAAiB;gBAG9B,MAAM,EAAE,gBAAgB,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,MAAM,yCAA8B,EAC5C,UAAU,GAAE,OAAO,CAAC,4BAA4B,CAAM,EACtD,eAAe,GAAE,eAAsC;IAkBlD,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAU5D,IAAI,MAAM,6CAET;IAED;;OAEG;IACG,KAAK,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,4BAA4B;IAkB1G,cAAc,CAClB,WAAW,EAAE,kBAAkB,EAC/B,OAAO,EAAE,yBAAyB,EAClC,SAAS,GAAE,4BAA4B,CAAC,kBAAkB,CAAgD,GACzG,OAAO,CAAC,IAAI,CAAC;IAahB;;OAEG;IACG,IAAI;IAoBV;;;;;;;;;;;;;;;;;;;;;OAqBG;IAQG,gBAAgB,CAAC,WAAW,SAAS,kBAAkB,EAC3D,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAChE,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,SAAQ,EACjB,QAAQ,SAA+C,EACvD,gBAAgB,SAAI,GACnB,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;IAgJnE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IAKU,iBAAiB,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAA2B,GACvC,OAAO,CAAC,eAAe,CAAC;IAsD3B;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;;OAMG;YACW,WAAW;IA6CzB;;;;;;;;;;;;;;;;OAgBG;YAKW,aAAa;IAuD3B;;;;;;;SAOK;YACS,aAAa;IAgC3B;;;;;;;OAOG;YACW,YAAY;IAmC1B,OAAO,CAAC,kBAAkB;IAO1B;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAyB/B,OAAO,CAAC,0BAA0B;CA8DnC"}
|