@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/client/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AAGzF,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,KAAK,QAAQ,EAA0B,MAAM,wCAAwC,CAAC;AAG/F,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,aAAa,IAAI;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,SAAS,aAAa,CAAC,IAAI,GAAG,eAAe,GAAG,SAAS,CAAC;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CACvG,CAAC;AAEF,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AACpD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAE/C,wBAAsB,eAAe,CAAC,CAAC,SAAS,aAAa,EAC3D,UAAU,EAAE,CAAC,EACb,WAAW,EAAE,SAAS,GAAG,eAAe,GAAG,WAAW,EACtD,QAAQ,EAAE,aAAa,GAAG,kBAAkB,EAC5C,aAAa,EAAE,6BAA6B,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,UAAU,EAAE,mBAAmB,EAC/B,cAAc,EAAE,MAAM,EACtB,YAAY,GAAE,YAAiC,EAC/C,SAAS,GAAE,eAAsC,EACjD,IAAI,GAAE,aAAa,CAAC,CAAC,CAAM,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/client/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AAGzF,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,KAAK,QAAQ,EAA0B,MAAM,wCAAwC,CAAC;AAG/F,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,aAAa,IAAI;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,SAAS,aAAa,CAAC,IAAI,GAAG,eAAe,GAAG,SAAS,CAAC;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CACvG,CAAC;AAEF,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AACpD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAE/C,wBAAsB,eAAe,CAAC,CAAC,SAAS,aAAa,EAC3D,UAAU,EAAE,CAAC,EACb,WAAW,EAAE,SAAS,GAAG,eAAe,GAAG,WAAW,EACtD,QAAQ,EAAE,aAAa,GAAG,kBAAkB,EAC5C,aAAa,EAAE,6BAA6B,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,UAAU,EAAE,mBAAmB,EAC/B,cAAc,EAAE,MAAM,EACtB,YAAY,GAAE,YAAiC,EAC/C,SAAS,GAAE,eAAsC,EACjD,IAAI,GAAE,aAAa,CAAC,CAAC,CAAM,yBAmF5B"}
|
package/dest/client/factory.js
CHANGED
|
@@ -20,6 +20,9 @@ export async function createP2PClient(clientType, inputConfig, archiver, proofVe
|
|
|
20
20
|
dataStoreMapSizeKB: inputConfig.p2pStoreMapSizeKb ?? inputConfig.dataStoreMapSizeKB
|
|
21
21
|
});
|
|
22
22
|
const logger = deps.logger ?? createLogger('p2p');
|
|
23
|
+
if (config.bootstrapNodes.length === 0) {
|
|
24
|
+
logger.warn('No bootstrap nodes have been provided. Set the BOOTSTRAP_NODES environment variable in order to join the P2P network');
|
|
25
|
+
}
|
|
23
26
|
const store = deps.store ?? await createStore(P2P_STORE_NAME, 2, config, createLogger('p2p:lmdb-v2'));
|
|
24
27
|
const archive = await createStore(P2P_ARCHIVE_STORE_NAME, 1, config, createLogger('p2p-archive:lmdb-v2'));
|
|
25
28
|
const peerStore = await createStore(P2P_PEER_STORE_NAME, 1, config, createLogger('p2p-peer:lmdb-v2'));
|
|
@@ -103,11 +103,11 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
103
103
|
*/
|
|
104
104
|
getArchivedTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
105
105
|
/**
|
|
106
|
-
* Returns whether the given tx hash is flagged as pending or
|
|
106
|
+
* Returns whether the given tx hash is flagged as pending, mined, or deleted.
|
|
107
107
|
* @param txHash - Hash of the tx to query.
|
|
108
|
-
* @returns Pending or
|
|
108
|
+
* @returns Pending, mined, or deleted depending on its status, or undefined if not found.
|
|
109
109
|
*/
|
|
110
|
-
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
|
|
110
|
+
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
|
|
111
111
|
/** Returns an iterator over pending txs on the mempool. */
|
|
112
112
|
iteratePendingTxs(): AsyncIterableIterator<Tx>;
|
|
113
113
|
/** Returns the number of pending txs in the mempool. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/client/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EACV,kBAAkB,EAClB,yBAAyB,EACzB,4BAA4B,EAC7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE;;GAEG;AACH,oBAAY,cAAc;IACxB,IAAI,IAAA;IACJ,QAAQ,IAAA;IACR,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,EAAE,cAAc,CAAC;IACtB;;OAEG;IACH,eAAe,EAAE,SAAS,CAAC;CAC5B;AAED;;IAEI;AACJ,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG;IAC9E;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D;;;;;OAKG;IAGH,4BAA4B,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAEvE;;;;;OAKG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAE1E;;;QAGI;IACJ,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B;;;;QAII;IACJ,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzC;;;;QAII;IACJ,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAE7D;;;;OAIG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAEtE;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAErD;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAEhG;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAE7D;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/client/interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -141,7 +141,7 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
141
141
|
* @param txHash - Hash of the tx to query.
|
|
142
142
|
* @returns Pending or mined depending on its status, or undefined if not found.
|
|
143
143
|
*/
|
|
144
|
-
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
|
|
144
|
+
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
|
|
145
145
|
getEnr(): ENR | undefined;
|
|
146
146
|
getEncodedEnr(): Promise<string | undefined>;
|
|
147
147
|
/**
|
|
@@ -180,12 +180,6 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
180
180
|
* @returns Empty promise.
|
|
181
181
|
*/
|
|
182
182
|
private markTxsAsMinedFromBlocks;
|
|
183
|
-
/**
|
|
184
|
-
* Deletes txs from these blocks.
|
|
185
|
-
* @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
|
|
186
|
-
* @returns Empty promise.
|
|
187
|
-
*/
|
|
188
|
-
private deleteTxsFromBlocks;
|
|
189
183
|
/**
|
|
190
184
|
* Handles new mined blocks by marking the txs in them as mined.
|
|
191
185
|
* @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -525,17 +525,6 @@ import { P2PClientState } from './interface.js';
|
|
|
525
525
|
}
|
|
526
526
|
}
|
|
527
527
|
/**
|
|
528
|
-
* Deletes txs from these blocks.
|
|
529
|
-
* @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
|
|
530
|
-
* @returns Empty promise.
|
|
531
|
-
*/ async deleteTxsFromBlocks(blocks) {
|
|
532
|
-
this.log.debug(`Deleting txs from blocks ${blocks[0].number} to ${blocks[blocks.length - 1].number}`);
|
|
533
|
-
for (const block of blocks){
|
|
534
|
-
const txHashes = block.body.txEffects.map((txEffect)=>txEffect.txHash);
|
|
535
|
-
await this.txPool.deleteTxs(txHashes);
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
/**
|
|
539
528
|
* Handles new mined blocks by marking the txs in them as mined.
|
|
540
529
|
* @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
|
|
541
530
|
* @returns Empty promise.
|
|
@@ -586,16 +575,21 @@ import { P2PClientState } from './interface.js';
|
|
|
586
575
|
* @param blocks - A list of finalized L2 blocks.
|
|
587
576
|
* @returns Empty promise.
|
|
588
577
|
*/ async handleFinalizedL2Blocks(blocks) {
|
|
589
|
-
this.log.trace(`Handling finalized blocks ${blocks.length} up to ${blocks.at(-1)?.number}`);
|
|
590
578
|
if (!blocks.length) {
|
|
591
579
|
return Promise.resolve();
|
|
592
580
|
}
|
|
581
|
+
this.log.debug(`Handling finalized blocks ${blocks.length} up to ${blocks.at(-1)?.number}`);
|
|
593
582
|
const lastBlockNum = blocks[blocks.length - 1].number;
|
|
594
583
|
const lastBlockSlot = blocks[blocks.length - 1].header.getSlot();
|
|
595
|
-
|
|
584
|
+
const txHashes = blocks.flatMap((block)=>block.body.txEffects.map((txEffect)=>txEffect.txHash));
|
|
585
|
+
this.log.debug(`Deleting ${txHashes.length} txs from pool from finalized blocks up to ${lastBlockNum}`);
|
|
586
|
+
await this.txPool.deleteTxs(txHashes, {
|
|
587
|
+
permanently: true
|
|
588
|
+
});
|
|
589
|
+
await this.txPool.cleanupDeletedMinedTxs(lastBlockNum);
|
|
596
590
|
await this.attestationPool?.deleteAttestationsOlderThan(lastBlockSlot);
|
|
597
591
|
await this.synchedFinalizedBlockNumber.set(lastBlockNum);
|
|
598
|
-
this.log.debug(`Synched to finalized block ${lastBlockNum}`);
|
|
592
|
+
this.log.debug(`Synched to finalized block ${lastBlockNum} at slot ${lastBlockSlot}`);
|
|
599
593
|
await this.startServiceIfSynched();
|
|
600
594
|
}
|
|
601
595
|
/**
|
|
@@ -614,7 +608,8 @@ import { P2PClientState } from './interface.js';
|
|
|
614
608
|
}
|
|
615
609
|
this.log.info(`Detected chain prune. Removing ${txsToDelete.size} txs built against pruned blocks.`, {
|
|
616
610
|
newLatestBlock: latestBlock,
|
|
617
|
-
previousLatestBlock: await this.getSyncedLatestBlockNum()
|
|
611
|
+
previousLatestBlock: await this.getSyncedLatestBlockNum(),
|
|
612
|
+
txsToDelete: Array.from(txsToDelete.keys())
|
|
618
613
|
});
|
|
619
614
|
// delete invalid txs (both pending and mined)
|
|
620
615
|
await this.txPool.deleteTxs(Array.from(txsToDelete.values()));
|
|
@@ -625,7 +620,8 @@ import { P2PClientState } from './interface.js';
|
|
|
625
620
|
// (see this.keepProvenTxsFor)
|
|
626
621
|
const minedTxsFromReorg = [];
|
|
627
622
|
for (const [txHash, blockNumber] of minedTxs){
|
|
628
|
-
|
|
623
|
+
// We keep the txsToDelete out of this list as they have already been deleted above
|
|
624
|
+
if (blockNumber > latestBlock && !txsToDelete.has(txHash.toString())) {
|
|
629
625
|
minedTxsFromReorg.push(txHash);
|
|
630
626
|
}
|
|
631
627
|
}
|
|
@@ -39,7 +39,7 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool
|
|
|
39
39
|
getMinedTxHashes(): Promise<[TxHash, number][]>;
|
|
40
40
|
getPendingTxCount(): Promise<number>;
|
|
41
41
|
getMinedTxCount(): Promise<number>;
|
|
42
|
-
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
|
|
42
|
+
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
|
|
43
43
|
/**
|
|
44
44
|
* Checks if a transaction exists in the pool and returns it.
|
|
45
45
|
* @param txHash - The generated tx hash.
|
|
@@ -64,10 +64,14 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool
|
|
|
64
64
|
}): Promise<number>;
|
|
65
65
|
/**
|
|
66
66
|
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
67
|
-
*
|
|
67
|
+
* Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
|
|
68
|
+
* @param txHashes - An array of tx hashes to be deleted from the tx pool.
|
|
68
69
|
* @returns Empty promise.
|
|
69
70
|
*/
|
|
70
|
-
deleteTxs(txHashes: TxHash[],
|
|
71
|
+
deleteTxs(txHashes: TxHash[], opts?: {
|
|
72
|
+
eviction?: boolean;
|
|
73
|
+
permanently?: boolean;
|
|
74
|
+
}): Promise<void>;
|
|
71
75
|
/**
|
|
72
76
|
* Gets all the transactions stored in the pool.
|
|
73
77
|
* @returns Array of tx objects in the order they were added to the pool.
|
|
@@ -80,6 +84,12 @@ export declare class AztecKVTxPool extends AztecKVTxPool_base implements TxPool
|
|
|
80
84
|
getAllTxHashes(): Promise<TxHash[]>;
|
|
81
85
|
updateConfig({ maxTxPoolSize, txPoolOverflowFactor, archivedTxLimit }: TxPoolOptions): void;
|
|
82
86
|
markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
|
|
89
|
+
* @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
|
|
90
|
+
* @returns The number of transactions permanently deleted.
|
|
91
|
+
*/
|
|
92
|
+
cleanupDeletedMinedTxs(blockNumber: number): Promise<number>;
|
|
83
93
|
/**
|
|
84
94
|
* Creates a GasTxValidator instance.
|
|
85
95
|
* @param db - DB for the validator to use
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aztec_kv_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/aztec_kv_tx_pool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAA0D,MAAM,iBAAiB,CAAC;AAGjH,OAAO,KAAK,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAIxG,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAKnF,OAAO,EAAE,YAAY,EAAE,MAAM,oDAAoD,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AAGpF,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;kCAKpB,UAAU,iBAAiB,CAAC,YAAY,CAAC;AAH7F;;GAEG;AACH,qBAAa,aAAc,SAAQ,kBAA4D,YAAW,MAAM;;IAS9G,0GAA0G;IAC1G,oBAAoB,EAAE,MAAM,CAAK;
|
|
1
|
+
{"version":3,"file":"aztec_kv_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/aztec_kv_tx_pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,8 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
24
24
|
/** Index from tx priority (stored as hex) to its tx hash, filtered by pending txs. */ #pendingTxPriorityToHash;
|
|
25
25
|
/** Index from tx hash to its tx size (in bytes), filtered by pending txs. */ #pendingTxHashToSize;
|
|
26
26
|
/** Index from tx hash to its header hash, filtered by pending txs. */ #pendingTxHashToHeaderHash;
|
|
27
|
+
/** Map from tx hash to the block number it was originally mined in (for soft-deleted txs). */ #deletedMinedTxHashes;
|
|
28
|
+
/** MultiMap from block number to deleted mined tx hashes for efficient cleanup. */ #blockToDeletedMinedTxHash;
|
|
27
29
|
/** The cumulative tx size in bytes that the pending txs in the pool take up. */ #pendingTxSize;
|
|
28
30
|
/** In-memory mapping of pending tx hashes to the hydrated pending tx in the pool. */ #pendingTxs;
|
|
29
31
|
/** In-memory set of txs that should not be evicted from the pool. */ #nonEvictableTxs;
|
|
@@ -51,6 +53,8 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
51
53
|
this.#pendingTxHashToSize = store.openMap('pendingTxHashToSize');
|
|
52
54
|
this.#pendingTxHashToHeaderHash = store.openMap('pendingTxHashToHeaderHash');
|
|
53
55
|
this.#pendingTxSize = store.openSingleton('pendingTxSize');
|
|
56
|
+
this.#deletedMinedTxHashes = store.openMap('deletedMinedTxHashes');
|
|
57
|
+
this.#blockToDeletedMinedTxHash = store.openMultiMap('blockToDeletedMinedTxHash');
|
|
54
58
|
this.#pendingTxs = new Map();
|
|
55
59
|
this.#nonEvictableTxs = new Set();
|
|
56
60
|
this.#archivedTxs = archive.openMap('archivedTxs');
|
|
@@ -94,6 +98,15 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
94
98
|
let pendingTxSize = await this.#pendingTxSize.getAsync() ?? 0;
|
|
95
99
|
for (const hash of txHashes){
|
|
96
100
|
const key = hash.toString();
|
|
101
|
+
// If this tx was previously soft-deleted, remove it from the deleted sets
|
|
102
|
+
if (await this.#deletedMinedTxHashes.hasAsync(key)) {
|
|
103
|
+
const originalBlock = await this.#deletedMinedTxHashes.getAsync(key);
|
|
104
|
+
await this.#deletedMinedTxHashes.delete(key);
|
|
105
|
+
// Remove from block-to-hash mapping
|
|
106
|
+
if (originalBlock !== undefined) {
|
|
107
|
+
await this.#blockToDeletedMinedTxHash.deleteValue(originalBlock, key);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
97
110
|
await this.#minedTxHashToBlock.set(key, blockHeader.globalVariables.blockNumber);
|
|
98
111
|
const tx = await this.getPendingTxByHash(hash);
|
|
99
112
|
if (tx) {
|
|
@@ -137,7 +150,7 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
137
150
|
const vals = await toArray(this.#pendingTxPriorityToHash.valuesAsync({
|
|
138
151
|
reverse: true
|
|
139
152
|
}));
|
|
140
|
-
return vals.map(
|
|
153
|
+
return vals.map(TxHash.fromString);
|
|
141
154
|
}
|
|
142
155
|
async getMinedTxHashes() {
|
|
143
156
|
const vals = await toArray(this.#minedTxHashToBlock.entriesAsync());
|
|
@@ -154,11 +167,14 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
154
167
|
}
|
|
155
168
|
async getTxStatus(txHash) {
|
|
156
169
|
const key = txHash.toString();
|
|
157
|
-
const [isMined, isKnown] = await Promise.all([
|
|
170
|
+
const [isMined, isKnown, isDeleted] = await Promise.all([
|
|
158
171
|
this.#minedTxHashToBlock.hasAsync(key),
|
|
159
|
-
this.#txs.hasAsync(key)
|
|
172
|
+
this.#txs.hasAsync(key),
|
|
173
|
+
this.#deletedMinedTxHashes.hasAsync(key)
|
|
160
174
|
]);
|
|
161
|
-
if (
|
|
175
|
+
if (isDeleted) {
|
|
176
|
+
return 'deleted';
|
|
177
|
+
} else if (isMined) {
|
|
162
178
|
return 'mined';
|
|
163
179
|
} else if (isKnown) {
|
|
164
180
|
return 'pending';
|
|
@@ -172,23 +188,11 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
172
188
|
* @returns The transaction, if found, 'undefined' otherwise.
|
|
173
189
|
*/ async getTxByHash(txHash) {
|
|
174
190
|
const buffer = await this.#txs.getAsync(txHash.toString());
|
|
175
|
-
|
|
176
|
-
const tx = Tx.fromBuffer(buffer);
|
|
177
|
-
tx.setTxHash(txHash);
|
|
178
|
-
return tx;
|
|
179
|
-
}
|
|
180
|
-
return undefined;
|
|
191
|
+
return buffer ? Tx.fromBuffer(buffer) : undefined;
|
|
181
192
|
}
|
|
182
193
|
async getTxsByHash(txHashes) {
|
|
183
194
|
const txs = await Promise.all(txHashes.map((txHash)=>this.#txs.getAsync(txHash.toString())));
|
|
184
|
-
return txs.map((buffer
|
|
185
|
-
if (buffer) {
|
|
186
|
-
const tx = Tx.fromBuffer(buffer);
|
|
187
|
-
tx.setTxHash(txHashes[index]);
|
|
188
|
-
return tx;
|
|
189
|
-
}
|
|
190
|
-
return undefined;
|
|
191
|
-
});
|
|
195
|
+
return txs.map((buffer)=>buffer ? Tx.fromBuffer(buffer) : undefined);
|
|
192
196
|
}
|
|
193
197
|
async hasTxs(txHashes) {
|
|
194
198
|
return await Promise.all(txHashes.map((txHash)=>this.#txs.hasAsync(txHash.toString())));
|
|
@@ -199,12 +203,7 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
199
203
|
* @returns The transaction metadata, if found, 'undefined' otherwise.
|
|
200
204
|
*/ async getArchivedTxByHash(txHash) {
|
|
201
205
|
const buffer = await this.#archivedTxs.getAsync(txHash.toString());
|
|
202
|
-
|
|
203
|
-
const tx = Tx.fromBuffer(buffer);
|
|
204
|
-
tx.setTxHash(txHash);
|
|
205
|
-
return tx;
|
|
206
|
-
}
|
|
207
|
-
return undefined;
|
|
206
|
+
return buffer ? Tx.fromBuffer(buffer) : undefined;
|
|
208
207
|
}
|
|
209
208
|
/**
|
|
210
209
|
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
@@ -250,9 +249,10 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
250
249
|
}
|
|
251
250
|
/**
|
|
252
251
|
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
253
|
-
*
|
|
252
|
+
* Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
|
|
253
|
+
* @param txHashes - An array of tx hashes to be deleted from the tx pool.
|
|
254
254
|
* @returns Empty promise.
|
|
255
|
-
*/ deleteTxs(txHashes,
|
|
255
|
+
*/ deleteTxs(txHashes, opts = {}) {
|
|
256
256
|
if (txHashes.length === 0) {
|
|
257
257
|
return Promise.resolve();
|
|
258
258
|
}
|
|
@@ -263,16 +263,31 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
263
263
|
const key = hash.toString();
|
|
264
264
|
const tx = await this.getTxByHash(hash);
|
|
265
265
|
if (tx) {
|
|
266
|
-
const
|
|
267
|
-
if (
|
|
266
|
+
const minedBlockNumber = await this.#minedTxHashToBlock.getAsync(key);
|
|
267
|
+
if (minedBlockNumber !== undefined) {
|
|
268
|
+
await this.#minedTxHashToBlock.delete(key);
|
|
269
|
+
if (opts.permanently) {
|
|
270
|
+
// Permanently delete mined transactions if specified
|
|
271
|
+
this.#log.trace(`Deleting mined tx ${key} from pool`);
|
|
272
|
+
await this.#txs.delete(key);
|
|
273
|
+
} else {
|
|
274
|
+
// Soft-delete mined transactions: remove from mined set but keep in storage
|
|
275
|
+
this.#log.trace(`Soft-deleting mined tx ${key} from pool`);
|
|
276
|
+
await this.#deletedMinedTxHashes.set(key, minedBlockNumber);
|
|
277
|
+
await this.#blockToDeletedMinedTxHash.set(minedBlockNumber, key);
|
|
278
|
+
}
|
|
279
|
+
} else {
|
|
280
|
+
// Permanently delete pending transactions
|
|
281
|
+
this.#log.trace(`Deleting pending tx ${key} from pool`);
|
|
268
282
|
pendingTxSize -= tx.getSize();
|
|
269
283
|
await this.removePendingTxIndices(tx, key);
|
|
284
|
+
await this.#txs.delete(key);
|
|
270
285
|
}
|
|
271
|
-
if (!eviction && this.#archivedTxLimit) {
|
|
286
|
+
if (!opts.eviction && this.#archivedTxLimit) {
|
|
272
287
|
deletedTxs.push(tx);
|
|
273
288
|
}
|
|
274
|
-
|
|
275
|
-
|
|
289
|
+
} else {
|
|
290
|
+
this.#log.trace(`Skipping deletion of missing tx ${key} from pool`);
|
|
276
291
|
}
|
|
277
292
|
}
|
|
278
293
|
await this.#pendingTxSize.set(pendingTxSize);
|
|
@@ -286,12 +301,8 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
286
301
|
* Gets all the transactions stored in the pool.
|
|
287
302
|
* @returns Array of tx objects in the order they were added to the pool.
|
|
288
303
|
*/ async getAllTxs() {
|
|
289
|
-
const vals = await toArray(this.#txs.
|
|
290
|
-
return vals.map((
|
|
291
|
-
const tx = Tx.fromBuffer(buffer);
|
|
292
|
-
tx.setTxHash(TxHash.fromString(hash));
|
|
293
|
-
return tx;
|
|
294
|
-
});
|
|
304
|
+
const vals = await toArray(this.#txs.valuesAsync());
|
|
305
|
+
return vals.map((buffer)=>Tx.fromBuffer(buffer));
|
|
295
306
|
}
|
|
296
307
|
/**
|
|
297
308
|
* Gets the hashes of all transactions currently in the tx pool.
|
|
@@ -324,12 +335,48 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
324
335
|
assert(archivedTxLimit >= 0, 'archivedTxLimit must be greater or equal to 0');
|
|
325
336
|
this.#archivedTxLimit = archivedTxLimit;
|
|
326
337
|
}
|
|
338
|
+
// deletedMinedCleanupThresholdMs is no longer used in block-based cleanup
|
|
327
339
|
}
|
|
328
340
|
markTxsAsNonEvictable(txHashes) {
|
|
329
341
|
txHashes.forEach((txHash)=>this.#nonEvictableTxs.add(txHash.toString()));
|
|
330
342
|
return Promise.resolve();
|
|
331
343
|
}
|
|
332
344
|
/**
|
|
345
|
+
* Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
|
|
346
|
+
* @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
|
|
347
|
+
* @returns The number of transactions permanently deleted.
|
|
348
|
+
*/ async cleanupDeletedMinedTxs(blockNumber) {
|
|
349
|
+
let deletedCount = 0;
|
|
350
|
+
const txHashesToDelete = [];
|
|
351
|
+
const blocksToDelete = [];
|
|
352
|
+
await this.#store.transactionAsync(async ()=>{
|
|
353
|
+
// Iterate through all entries and check block numbers
|
|
354
|
+
for await (const [block, txHash] of this.#blockToDeletedMinedTxHash.entriesAsync()){
|
|
355
|
+
if (block <= blockNumber) {
|
|
356
|
+
// Permanently delete the transaction
|
|
357
|
+
await this.#txs.delete(txHash);
|
|
358
|
+
await this.#deletedMinedTxHashes.delete(txHash);
|
|
359
|
+
txHashesToDelete.push(txHash);
|
|
360
|
+
if (!blocksToDelete.includes(block)) {
|
|
361
|
+
blocksToDelete.push(block);
|
|
362
|
+
}
|
|
363
|
+
deletedCount++;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
// Clean up block-to-hash mapping - delete all values for each block
|
|
367
|
+
for (const block of blocksToDelete){
|
|
368
|
+
const txHashesForBlock = await toArray(this.#blockToDeletedMinedTxHash.getValuesAsync(block));
|
|
369
|
+
for (const txHash of txHashesForBlock){
|
|
370
|
+
await this.#blockToDeletedMinedTxHash.deleteValue(block, txHash);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
if (deletedCount > 0) {
|
|
375
|
+
this.#log.debug(`Permanently deleted ${deletedCount} deleted mined txs from blocks up to ${blockNumber}`);
|
|
376
|
+
}
|
|
377
|
+
return deletedCount;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
333
380
|
* Creates a GasTxValidator instance.
|
|
334
381
|
* @param db - DB for the validator to use
|
|
335
382
|
* @returns A GasTxValidator instance
|
|
@@ -449,7 +496,9 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
449
496
|
numNewTxsEvicted += newTxHashes.filter((txHash)=>txsToEvict.includes(txHash)).length;
|
|
450
497
|
}
|
|
451
498
|
if (txsToEvict.length > 0) {
|
|
452
|
-
await this.deleteTxs(txsToEvict,
|
|
499
|
+
await this.deleteTxs(txsToEvict, {
|
|
500
|
+
eviction: true
|
|
501
|
+
});
|
|
453
502
|
}
|
|
454
503
|
return {
|
|
455
504
|
numLowPriorityTxsEvicted: txsToEvict.length,
|
|
@@ -503,7 +552,9 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
503
552
|
}
|
|
504
553
|
}
|
|
505
554
|
if (txsToEvict.length > 0) {
|
|
506
|
-
await this.deleteTxs(txsToEvict,
|
|
555
|
+
await this.deleteTxs(txsToEvict, {
|
|
556
|
+
eviction: true
|
|
557
|
+
});
|
|
507
558
|
}
|
|
508
559
|
return txsToEvict.length;
|
|
509
560
|
}
|
|
@@ -540,7 +591,9 @@ import { getPendingTxPriority } from './priority.js';
|
|
|
540
591
|
}
|
|
541
592
|
}
|
|
542
593
|
if (txsToEvict.length > 0) {
|
|
543
|
-
await this.deleteTxs(txsToEvict,
|
|
594
|
+
await this.deleteTxs(txsToEvict, {
|
|
595
|
+
eviction: true
|
|
596
|
+
});
|
|
544
597
|
}
|
|
545
598
|
return txsToEvict.length;
|
|
546
599
|
}
|
|
@@ -14,6 +14,8 @@ export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPoo
|
|
|
14
14
|
private txs;
|
|
15
15
|
private minedTxs;
|
|
16
16
|
private pendingTxs;
|
|
17
|
+
private deletedMinedTxHashes;
|
|
18
|
+
private blockToDeletedMinedTxHash;
|
|
17
19
|
private metrics;
|
|
18
20
|
/**
|
|
19
21
|
* Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
|
|
@@ -27,7 +29,7 @@ export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPoo
|
|
|
27
29
|
getPendingTxHashes(): Promise<TxHash[]>;
|
|
28
30
|
getMinedTxHashes(): Promise<[TxHash, number][]>;
|
|
29
31
|
getPendingTxCount(): Promise<number>;
|
|
30
|
-
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | undefined>;
|
|
32
|
+
getTxStatus(txHash: TxHash): Promise<'pending' | 'mined' | 'deleted' | undefined>;
|
|
31
33
|
/**
|
|
32
34
|
* Checks if a transaction exists in the pool and returns it.
|
|
33
35
|
* @param txHash - The generated tx hash.
|
|
@@ -47,10 +49,13 @@ export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPoo
|
|
|
47
49
|
}): Promise<number>;
|
|
48
50
|
/**
|
|
49
51
|
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
50
|
-
*
|
|
51
|
-
* @
|
|
52
|
+
* Mined transactions are soft-deleted with a timestamp, pending transactions are permanently deleted.
|
|
53
|
+
* @param txHashes - An array of tx hashes to be deleted from the tx pool.
|
|
54
|
+
* @returns Empty promise.
|
|
52
55
|
*/
|
|
53
|
-
deleteTxs(txHashes: TxHash[]
|
|
56
|
+
deleteTxs(txHashes: TxHash[], opts?: {
|
|
57
|
+
permanently?: boolean;
|
|
58
|
+
}): Promise<void>;
|
|
54
59
|
/**
|
|
55
60
|
* Gets all the transactions stored in the pool.
|
|
56
61
|
* @returns Array of tx objects in the order they were added to the pool.
|
|
@@ -63,6 +68,12 @@ export declare class InMemoryTxPool extends InMemoryTxPool_base implements TxPoo
|
|
|
63
68
|
getAllTxHashes(): Promise<TxHash[]>;
|
|
64
69
|
updateConfig(_config: TxPoolOptions): void;
|
|
65
70
|
markTxsAsNonEvictable(_: TxHash[]): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Permanently deletes deleted mined transactions from blocks up to and including the specified block number.
|
|
73
|
+
* @param blockNumber - Block number threshold. Deleted mined txs from this block or earlier will be permanently deleted.
|
|
74
|
+
* @returns The number of transactions permanently deleted.
|
|
75
|
+
*/
|
|
76
|
+
cleanupDeletedMinedTxs(blockNumber: number): Promise<number>;
|
|
66
77
|
}
|
|
67
78
|
export {};
|
|
68
79
|
//# sourceMappingURL=memory_tx_pool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/memory_tx_pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAMnF,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;mCAKnB,UAAU,iBAAiB,CAAC,YAAY,CAAC;AAH9F;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAA4D,YAAW,MAAM;
|
|
1
|
+
{"version":3,"file":"memory_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/memory_tx_pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAMnF,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;mCAKnB,UAAU,iBAAiB,CAAC,YAAY,CAAC;AAH9F;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAA4D,YAAW,MAAM;IAkB7G,OAAO,CAAC,GAAG;IAjBb;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,yBAAyB,CAA2B;IAE5D,OAAO,CAAC,OAAO,CAA0B;IAEzC;;;OAGG;gBAED,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAA8B;IAW3C,OAAO,CAAC,OAAO,CAOb;IAEK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAI3B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/C,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAa7C,gBAAgB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAM/C,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAexF;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAK3D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;IAG7D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIvC,mBAAmB,IAAI,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIrD;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzE;;;;;OAKG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BrF;;;OAGG;IACI,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIjC;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI1C,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAE1C,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD;;;;OAIG;IACI,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA2BpE"}
|