@aztec/p2p 0.0.1-commit.8227e42 → 0.0.1-commit.85d7d01
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 +4 -5
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +5 -5
- package/dest/client/interface.d.ts +4 -4
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +4 -4
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +1 -1
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +1 -2
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +2 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/index.js +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +18 -4
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +36 -7
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +9 -10
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +36 -22
- package/dest/services/encoding.d.ts +2 -2
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +7 -7
- package/dest/services/libp2p/libp2p_service.d.ts +6 -7
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +7 -10
- package/dest/services/reqresp/reqresp.d.ts +1 -1
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +2 -1
- package/dest/test-helpers/make-test-p2p-clients.d.ts +5 -6
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +1 -2
- package/dest/test-helpers/mock-pubsub.d.ts +2 -3
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +2 -2
- package/dest/test-helpers/reqresp-nodes.d.ts +2 -3
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +2 -2
- package/dest/testbench/p2p_client_testbench_worker.js +5 -5
- package/package.json +14 -14
- package/src/client/factory.ts +8 -13
- package/src/client/interface.ts +3 -9
- package/src/client/p2p_client.ts +2 -12
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +1 -2
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +3 -0
- package/src/mem_pools/tx_pool_v2/index.ts +1 -1
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +52 -10
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +11 -11
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +40 -20
- package/src/services/encoding.ts +5 -6
- package/src/services/libp2p/libp2p_service.ts +5 -11
- package/src/services/reqresp/reqresp.ts +3 -1
- package/src/test-helpers/make-test-p2p-clients.ts +0 -2
- package/src/test-helpers/mock-pubsub.ts +3 -6
- package/src/test-helpers/reqresp-nodes.ts +2 -5
- package/src/testbench/p2p_client_testbench_worker.ts +2 -6
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
2
1
|
import type { GossipsubEvents, GossipsubMessage } from '@chainsafe/libp2p-gossipsub';
|
|
3
2
|
import type { MsgIdStr, PeerIdStr, PublishOpts, TopicStr } from '@chainsafe/libp2p-gossipsub/types';
|
|
4
3
|
import { type Libp2pStatus, type PeerId, type PublishResult, type TopicValidatorResult, TypedEventEmitter } from '@libp2p/interface';
|
|
@@ -12,7 +11,7 @@ type GossipSubService = PubSubLibp2p['services']['pubsub'];
|
|
|
12
11
|
* Given a mock gossip sub network, returns a factory function that creates an instance LibP2PService connected to it.
|
|
13
12
|
* Designed to be used in tests in P2PClientDeps.p2pServiceFactory.
|
|
14
13
|
*/
|
|
15
|
-
export declare function getMockPubSubP2PServiceFactory
|
|
14
|
+
export declare function getMockPubSubP2PServiceFactory(network: MockGossipSubNetwork): (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService>;
|
|
16
15
|
/**
|
|
17
16
|
* Mock implementation of ReqRespInterface that routes requests to other peers' handlers through the mock network.
|
|
18
17
|
* When a peer calls sendBatchRequest, the mock iterates over network peers and invokes their registered handler
|
|
@@ -83,4 +82,4 @@ export declare class MockGossipSubNetwork {
|
|
|
83
82
|
publishToPeers(topic: TopicStr, data: Uint8Array, sender: PeerId): void;
|
|
84
83
|
}
|
|
85
84
|
export {};
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1wdWJzdWIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LWhlbHBlcnMvbW9jay1wdWJzdWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckYsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEcsT0FBTyxFQUNMLEtBQUssWUFBWSxFQUNqQixLQUFLLE1BQU0sRUFDWCxLQUFLLGFBQWEsRUFDbEIsS0FBSyxvQkFBb0IsRUFDekIsaUJBQWlCLEVBQ2xCLE1BQU0sbUJBQW1CLENBQUM7QUFJM0IsT0FBTyxFQUErQyxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdEcsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssZUFBZSxFQUNwQixLQUFLLGtCQUFrQixFQUN2QixLQUFLLHlCQUF5QixFQUM5QixLQUFLLDBCQUEwQixFQUMvQixLQUFLLDRCQUE0QixFQUNqQyxLQUFLLGNBQWMsRUFFcEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUcxQyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFL0MsS0FBSyxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFM0Q7OztHQUdHO0FBQ0gsd0JBQWdCLDhCQUE4QixDQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEdBQzVCLENBQUMsR0FBRyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsT0FBTyxhQUFhLENBQUMsQ0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-pubsub.d.ts","sourceRoot":"","sources":["../../src/test-helpers/mock-pubsub.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mock-pubsub.d.ts","sourceRoot":"","sources":["../../src/test-helpers/mock-pubsub.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,13 +8,13 @@ import { GossipSubEvent } from '../types/index.js';
|
|
|
8
8
|
* Given a mock gossip sub network, returns a factory function that creates an instance LibP2PService connected to it.
|
|
9
9
|
* Designed to be used in tests in P2PClientDeps.p2pServiceFactory.
|
|
10
10
|
*/ export function getMockPubSubP2PServiceFactory(network) {
|
|
11
|
-
return (
|
|
11
|
+
return (config, peerId, deps)=>{
|
|
12
12
|
deps.logger.verbose('Creating mock PubSub service');
|
|
13
13
|
const libp2p = new MockPubSub(peerId, network);
|
|
14
14
|
const peerManager = new DummyPeerManager(peerId, network);
|
|
15
15
|
const reqresp = new MockReqResp(peerId, network);
|
|
16
16
|
const peerDiscoveryService = new DummyPeerDiscoveryService();
|
|
17
|
-
const service = new LibP2PService(
|
|
17
|
+
const service = new LibP2PService(config, libp2p, peerDiscoveryService, reqresp, peerManager, deps.mempools, deps.l2BlockSource, deps.epochCache, deps.proofVerifier, deps.worldStateSynchronizer, deps.telemetry, deps.logger);
|
|
18
18
|
return Promise.resolve(service);
|
|
19
19
|
};
|
|
20
20
|
}
|
|
@@ -3,7 +3,6 @@ import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
|
3
3
|
import { type ChainConfig } from '@aztec/stdlib/config';
|
|
4
4
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
5
5
|
import type { ClientProtocolCircuitVerifier, IVCProofVerificationResult, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
6
|
-
import type { P2PClientType } from '@aztec/stdlib/p2p';
|
|
7
6
|
import type { Tx } from '@aztec/stdlib/tx';
|
|
8
7
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
9
8
|
import type { PeerId } from '@libp2p/interface';
|
|
@@ -29,7 +28,7 @@ export declare function createLibp2pNode(boostrapAddrs?: string[], peerId?: Peer
|
|
|
29
28
|
*
|
|
30
29
|
*
|
|
31
30
|
*/
|
|
32
|
-
export declare function createTestLibP2PService
|
|
31
|
+
export declare function createTestLibP2PService(boostrapAddrs: string[] | undefined, archiver: L2BlockSource & ContractDataSource, worldStateSynchronizer: WorldStateSynchronizer, epochCache: EpochCache, mempools: MemPools, telemetry: TelemetryClient, port?: number, peerId?: PeerId, chainConfig?: ChainConfig): Promise<LibP2PService>;
|
|
33
32
|
/**
|
|
34
33
|
* A p2p / req resp node pairing the req node will always contain the p2p node.
|
|
35
34
|
* they are provided as a pair to allow access the p2p node directly
|
|
@@ -67,4 +66,4 @@ export declare function createBootstrapNodeFromPrivateKey(privateKey: string, po
|
|
|
67
66
|
*/
|
|
68
67
|
export declare function getBootstrapNodeEnr(privateKey: string, port: number): Promise<SignableENR>;
|
|
69
68
|
export declare function createBootstrapNode(port: number, telemetry?: TelemetryClient, chainConfig?: ChainConfig): Promise<BootstrapNode>;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxcmVzcC1ub2Rlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QtaGVscGVycy9yZXFyZXNwLW5vZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBTXJELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBb0IsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUNWLDZCQUE2QixFQUM3QiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3ZCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0MsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBT25GLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSWhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQW9DLE1BQU0sUUFBUSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV2RSxPQUFPLEVBRUwsS0FBSywwQkFBMEIsRUFDL0IsS0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqresp-nodes.d.ts","sourceRoot":"","sources":["../../src/test-helpers/reqresp-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EACV,6BAA6B,EAC7B,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"reqresp-nodes.d.ts","sourceRoot":"","sources":["../../src/test-helpers/reqresp-nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,7 +80,7 @@ import { getVersions } from '../versioning.js';
|
|
|
80
80
|
* P2P functionality is operational, however everything else is default
|
|
81
81
|
*
|
|
82
82
|
*
|
|
83
|
-
*/ export async function createTestLibP2PService(
|
|
83
|
+
*/ export async function createTestLibP2PService(boostrapAddrs = [], archiver, worldStateSynchronizer, epochCache, mempools, telemetry, port = 0, peerId, chainConfig = emptyChainConfig) {
|
|
84
84
|
peerId = peerId ?? await createSecp256k1PeerId();
|
|
85
85
|
const config = {
|
|
86
86
|
p2pIp: `127.0.0.1`,
|
|
@@ -105,7 +105,7 @@ import { getVersions } from '../versioning.js';
|
|
|
105
105
|
const peerManager = new PeerManager(p2pNode, discoveryService, config, telemetry, createLogger(`p2p:peer_manager`), peerScoring, reqresp, worldStateSynchronizer, protocolVersion, epochCache);
|
|
106
106
|
p2pNode.services.pubsub.score.params.appSpecificWeight = APP_SPECIFIC_WEIGHT;
|
|
107
107
|
p2pNode.services.pubsub.score.params.appSpecificScore = (peerId)=>peerManager.shouldDisableP2PGossip(peerId) ? -Infinity : peerManager.getPeerScore(peerId);
|
|
108
|
-
return new LibP2PService(
|
|
108
|
+
return new LibP2PService(config, p2pNode, discoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry);
|
|
109
109
|
}
|
|
110
110
|
// Mock sub protocol handlers
|
|
111
111
|
export const MOCK_SUB_PROTOCOL_HANDLERS = {
|
|
@@ -13,7 +13,7 @@ import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
|
13
13
|
import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
14
14
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
15
15
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
16
|
-
import {
|
|
16
|
+
import { P2PMessage } from '@aztec/stdlib/p2p';
|
|
17
17
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
18
18
|
import { makeAztecAddress, makeBlockHeader, makeBlockProposal, mockTx } from '@aztec/stdlib/testing';
|
|
19
19
|
import { Tx } from '@aztec/stdlib/tx';
|
|
@@ -31,8 +31,8 @@ const txCache = new Map();
|
|
|
31
31
|
class TestLibP2PService extends LibP2PService {
|
|
32
32
|
disableTxValidation;
|
|
33
33
|
gossipMessageCount = 0;
|
|
34
|
-
constructor(
|
|
35
|
-
super(
|
|
34
|
+
constructor(config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger = createLogger('p2p:test:libp2p_service'), disableTxValidation = true){
|
|
35
|
+
super(config, node, peerDiscoveryService, reqresp, peerManager, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, telemetry, logger);
|
|
36
36
|
this.disableTxValidation = disableTxValidation;
|
|
37
37
|
}
|
|
38
38
|
getGossipMessageCount() {
|
|
@@ -214,8 +214,8 @@ process.on('message', async (msg)=>{
|
|
|
214
214
|
store: kvStore,
|
|
215
215
|
logger: workerLogger
|
|
216
216
|
};
|
|
217
|
-
const client = await createP2PClient(
|
|
218
|
-
const testService = new TestLibP2PService(
|
|
217
|
+
const client = await createP2PClient(config, l2BlockSource, proofVerifier, worldState, epochCache, 'test-p2p-bench-worker', undefined, telemetry, deps);
|
|
218
|
+
const testService = new TestLibP2PService(config, client.p2pService.node, client.p2pService.peerDiscoveryService, client.p2pService.reqresp, client.p2pService.peerManager, client.p2pService.mempools, client.p2pService.archiver, epochCache, proofVerifier, worldState, telemetry, workerLogger, true);
|
|
219
219
|
client.p2pService = testService;
|
|
220
220
|
await client.start();
|
|
221
221
|
for(let i = 0; i < 100; i++){
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/p2p",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.85d7d01",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -67,17 +67,17 @@
|
|
|
67
67
|
]
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@aztec/constants": "0.0.1-commit.
|
|
71
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
72
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
73
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
74
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
75
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
76
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
77
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
78
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
79
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
80
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
70
|
+
"@aztec/constants": "0.0.1-commit.85d7d01",
|
|
71
|
+
"@aztec/epoch-cache": "0.0.1-commit.85d7d01",
|
|
72
|
+
"@aztec/ethereum": "0.0.1-commit.85d7d01",
|
|
73
|
+
"@aztec/foundation": "0.0.1-commit.85d7d01",
|
|
74
|
+
"@aztec/kv-store": "0.0.1-commit.85d7d01",
|
|
75
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.85d7d01",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.85d7d01",
|
|
77
|
+
"@aztec/protocol-contracts": "0.0.1-commit.85d7d01",
|
|
78
|
+
"@aztec/simulator": "0.0.1-commit.85d7d01",
|
|
79
|
+
"@aztec/stdlib": "0.0.1-commit.85d7d01",
|
|
80
|
+
"@aztec/telemetry-client": "0.0.1-commit.85d7d01",
|
|
81
81
|
"@chainsafe/libp2p-gossipsub": "13.0.0",
|
|
82
82
|
"@chainsafe/libp2p-noise": "^15.0.0",
|
|
83
83
|
"@chainsafe/libp2p-yamux": "^6.0.2",
|
|
@@ -104,8 +104,8 @@
|
|
|
104
104
|
"xxhash-wasm": "^1.1.0"
|
|
105
105
|
},
|
|
106
106
|
"devDependencies": {
|
|
107
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
108
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
107
|
+
"@aztec/archiver": "0.0.1-commit.85d7d01",
|
|
108
|
+
"@aztec/world-state": "0.0.1-commit.85d7d01",
|
|
109
109
|
"@jest/globals": "^30.0.0",
|
|
110
110
|
"@types/jest": "^30.0.0",
|
|
111
111
|
"@types/node": "^22.15.17",
|
package/src/client/factory.ts
CHANGED
|
@@ -9,7 +9,6 @@ import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
|
9
9
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
10
10
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
11
11
|
import type { AztecNode, ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
12
|
-
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
13
12
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
14
13
|
|
|
15
14
|
import { P2PClient } from '../client/p2p_client.js';
|
|
@@ -27,14 +26,14 @@ import { NodeRpcTxSource, type TxSource, createNodeRpcTxSources } from '../servi
|
|
|
27
26
|
import { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
|
|
28
27
|
import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerIdPrivateKey } from '../util.js';
|
|
29
28
|
|
|
30
|
-
export type P2PClientDeps
|
|
29
|
+
export type P2PClientDeps = {
|
|
31
30
|
txPool?: TxPoolV2;
|
|
32
31
|
store?: AztecAsyncKVStore;
|
|
33
32
|
attestationPool?: AttestationPoolApi;
|
|
34
33
|
logger?: Logger;
|
|
35
34
|
txCollectionNodeSources?: TxSource[];
|
|
36
35
|
rpcTxProviders?: AztecNode[];
|
|
37
|
-
p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService
|
|
36
|
+
p2pServiceFactory?: (...args: Parameters<(typeof LibP2PService)['new']>) => Promise<LibP2PService>;
|
|
38
37
|
};
|
|
39
38
|
|
|
40
39
|
export const P2P_STORE_NAME = 'p2p';
|
|
@@ -42,8 +41,7 @@ export const P2P_ARCHIVE_STORE_NAME = 'p2p-archive';
|
|
|
42
41
|
export const P2P_PEER_STORE_NAME = 'p2p-peers';
|
|
43
42
|
export const P2P_ATTESTATION_STORE_NAME = 'p2p-attestation';
|
|
44
43
|
|
|
45
|
-
export async function createP2PClient
|
|
46
|
-
clientType: T,
|
|
44
|
+
export async function createP2PClient(
|
|
47
45
|
inputConfig: P2PConfig & DataStoreConfig & ChainConfig,
|
|
48
46
|
archiver: L2BlockSource & ContractDataSource,
|
|
49
47
|
proofVerifier: ClientProtocolCircuitVerifier,
|
|
@@ -52,7 +50,7 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
52
50
|
packageVersion: string,
|
|
53
51
|
dateProvider: DateProvider = new DateProvider(),
|
|
54
52
|
telemetry: TelemetryClient = getTelemetryClient(),
|
|
55
|
-
deps: P2PClientDeps
|
|
53
|
+
deps: P2PClientDeps = {},
|
|
56
54
|
) {
|
|
57
55
|
const config = await configureP2PClientAddresses({
|
|
58
56
|
...inputConfig,
|
|
@@ -111,9 +109,8 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
111
109
|
attestationPool: deps.attestationPool ?? new AttestationPool(attestationStore, telemetry),
|
|
112
110
|
};
|
|
113
111
|
|
|
114
|
-
const p2pService = await createP2PService
|
|
112
|
+
const p2pService = await createP2PService(
|
|
115
113
|
config,
|
|
116
|
-
clientType,
|
|
117
114
|
archiver,
|
|
118
115
|
proofVerifier,
|
|
119
116
|
worldStateSynchronizer,
|
|
@@ -171,7 +168,6 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
171
168
|
);
|
|
172
169
|
|
|
173
170
|
return new P2PClient(
|
|
174
|
-
clientType,
|
|
175
171
|
store,
|
|
176
172
|
archiver,
|
|
177
173
|
mempools,
|
|
@@ -185,9 +181,8 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
185
181
|
);
|
|
186
182
|
}
|
|
187
183
|
|
|
188
|
-
async function createP2PService
|
|
184
|
+
async function createP2PService(
|
|
189
185
|
config: P2PConfig & DataStoreConfig,
|
|
190
|
-
clientType: T,
|
|
191
186
|
archiver: L2BlockSource & ContractDataSource,
|
|
192
187
|
proofVerifier: ClientProtocolCircuitVerifier,
|
|
193
188
|
worldStateSynchronizer: WorldStateSynchronizer,
|
|
@@ -195,7 +190,7 @@ async function createP2PService<T extends P2PClientType>(
|
|
|
195
190
|
store: AztecAsyncKVStore,
|
|
196
191
|
peerStore: AztecLMDBStoreV2,
|
|
197
192
|
mempools: MemPools,
|
|
198
|
-
p2pServiceFactory: P2PClientDeps
|
|
193
|
+
p2pServiceFactory: P2PClientDeps['p2pServiceFactory'],
|
|
199
194
|
packageVersion: string,
|
|
200
195
|
logger: Logger,
|
|
201
196
|
telemetry: TelemetryClient,
|
|
@@ -211,7 +206,7 @@ async function createP2PService<T extends P2PClientType>(
|
|
|
211
206
|
const peerIdPrivateKey = await getPeerIdPrivateKey(config, store, logger);
|
|
212
207
|
const peerId = await createLibP2PPeerIdFromPrivateKey(peerIdPrivateKey.getValue());
|
|
213
208
|
|
|
214
|
-
const p2pService = await (p2pServiceFactory ?? LibP2PService.new
|
|
209
|
+
const p2pService = await (p2pServiceFactory ?? LibP2PService.new)(config, peerId, {
|
|
215
210
|
packageVersion,
|
|
216
211
|
mempools,
|
|
217
212
|
l2BlockSource: archiver,
|
package/src/client/interface.ts
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import type { EthAddress, L2BlockId } from '@aztec/stdlib/block';
|
|
3
|
-
import type { ITxProvider,
|
|
4
|
-
import type {
|
|
5
|
-
BlockProposal,
|
|
6
|
-
CheckpointAttestation,
|
|
7
|
-
CheckpointProposal,
|
|
8
|
-
P2PClientType,
|
|
9
|
-
TopicType,
|
|
10
|
-
} from '@aztec/stdlib/p2p';
|
|
3
|
+
import type { ITxProvider, P2PClient } from '@aztec/stdlib/interfaces/server';
|
|
4
|
+
import type { BlockProposal, CheckpointAttestation, CheckpointProposal, TopicType } from '@aztec/stdlib/p2p';
|
|
11
5
|
import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
12
6
|
|
|
13
7
|
import type { PeerId } from '@libp2p/interface';
|
|
@@ -54,7 +48,7 @@ export interface P2PSyncState {
|
|
|
54
48
|
/**
|
|
55
49
|
* Interface of a P2P client.
|
|
56
50
|
**/
|
|
57
|
-
export type P2P
|
|
51
|
+
export type P2P = P2PClient & {
|
|
58
52
|
/**
|
|
59
53
|
* Broadcasts a block proposal to other peers.
|
|
60
54
|
*
|
package/src/client/p2p_client.ts
CHANGED
|
@@ -20,13 +20,7 @@ import {
|
|
|
20
20
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
21
21
|
import { getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
|
|
22
22
|
import { type PeerInfo, tryStop } from '@aztec/stdlib/interfaces/server';
|
|
23
|
-
import {
|
|
24
|
-
type BlockProposal,
|
|
25
|
-
CheckpointAttestation,
|
|
26
|
-
type CheckpointProposal,
|
|
27
|
-
type P2PClientType,
|
|
28
|
-
type TopicType,
|
|
29
|
-
} from '@aztec/stdlib/p2p';
|
|
23
|
+
import { type BlockProposal, CheckpointAttestation, type CheckpointProposal, type TopicType } from '@aztec/stdlib/p2p';
|
|
30
24
|
import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
31
25
|
import { Attributes, type TelemetryClient, WithTracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
32
26
|
|
|
@@ -59,10 +53,7 @@ import { type P2P, P2PClientState, type P2PSyncState } from './interface.js';
|
|
|
59
53
|
/**
|
|
60
54
|
* The P2P client implementation.
|
|
61
55
|
*/
|
|
62
|
-
export class P2PClient
|
|
63
|
-
extends WithTracer
|
|
64
|
-
implements P2P, P2P<P2PClientType.Prover>
|
|
65
|
-
{
|
|
56
|
+
export class P2PClient extends WithTracer implements P2P {
|
|
66
57
|
/** The JS promise that will be running to keep the client's data in sync. Can be interrupted if the client is stopped. */
|
|
67
58
|
private runningPromise!: Promise<void>;
|
|
68
59
|
|
|
@@ -94,7 +85,6 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
94
85
|
private slotMonitor: RunningPromise | undefined;
|
|
95
86
|
|
|
96
87
|
constructor(
|
|
97
|
-
_clientType: T,
|
|
98
88
|
private store: AztecAsyncKVStore,
|
|
99
89
|
private l2BlockSource: L2BlockSource & ContractDataSource,
|
|
100
90
|
mempools: MemPools,
|
|
@@ -8,7 +8,7 @@ import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
|
8
8
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
9
9
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
10
10
|
import type { ClientProtocolCircuitVerifier } from '@aztec/stdlib/interfaces/server';
|
|
11
|
-
import {
|
|
11
|
+
import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
12
12
|
import type { Tx, TxValidationResult } from '@aztec/stdlib/tx';
|
|
13
13
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
14
14
|
|
|
@@ -114,7 +114,6 @@ async function startClient(config: P2PConfig, clientIndex: number) {
|
|
|
114
114
|
};
|
|
115
115
|
|
|
116
116
|
client = await createP2PClient(
|
|
117
|
-
P2PClientType.Full,
|
|
118
117
|
config as P2PConfig & DataStoreConfig,
|
|
119
118
|
l2BlockSource as L2BlockSource & ContractDataSource,
|
|
120
119
|
proofVerifier as ClientProtocolCircuitVerifier,
|
|
@@ -35,6 +35,7 @@ export class FeePayerBalancePreAddRule implements PreAddRule {
|
|
|
35
35
|
// Create combined list with incoming tx
|
|
36
36
|
const allTxs: Array<{
|
|
37
37
|
txHash: string;
|
|
38
|
+
txHashBigInt: bigint;
|
|
38
39
|
priorityFee: bigint;
|
|
39
40
|
feeLimit: bigint;
|
|
40
41
|
claimAmount: bigint;
|
|
@@ -42,6 +43,7 @@ export class FeePayerBalancePreAddRule implements PreAddRule {
|
|
|
42
43
|
}> = [
|
|
43
44
|
...existingTxs.map(t => ({
|
|
44
45
|
txHash: t.txHash,
|
|
46
|
+
txHashBigInt: t.txHashBigInt,
|
|
45
47
|
priorityFee: t.priorityFee,
|
|
46
48
|
feeLimit: t.feeLimit,
|
|
47
49
|
claimAmount: t.claimAmount,
|
|
@@ -49,6 +51,7 @@ export class FeePayerBalancePreAddRule implements PreAddRule {
|
|
|
49
51
|
})),
|
|
50
52
|
{
|
|
51
53
|
txHash: incomingMeta.txHash,
|
|
54
|
+
txHashBigInt: incomingMeta.txHashBigInt,
|
|
52
55
|
priorityFee: incomingMeta.priorityFee,
|
|
53
56
|
feeLimit: incomingMeta.feeLimit,
|
|
54
57
|
claimAmount: incomingMeta.claimAmount,
|
|
@@ -7,6 +7,6 @@ export {
|
|
|
7
7
|
type PoolReadAccess,
|
|
8
8
|
DEFAULT_TX_POOL_V2_CONFIG,
|
|
9
9
|
} from './interfaces.js';
|
|
10
|
-
export { type TxMetaData, type TxState, buildTxMetaData, comparePriority } from './tx_metadata.js';
|
|
10
|
+
export { type TxMetaData, type TxState, buildTxMetaData, comparePriority, stubTxMetaData } from './tx_metadata.js';
|
|
11
11
|
export { TxArchive } from './archive/index.js';
|
|
12
12
|
export { DeletedPool } from './deleted_pool.js';
|
|
@@ -3,7 +3,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
3
3
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
4
4
|
import { BlockHash, type L2BlockId } from '@aztec/stdlib/block';
|
|
5
5
|
import { Gas } from '@aztec/stdlib/gas';
|
|
6
|
-
import type
|
|
6
|
+
import { type Tx, TxHash } from '@aztec/stdlib/tx';
|
|
7
7
|
|
|
8
8
|
import { getFeePayerBalanceDelta } from '../../msg_validators/tx_validator/fee_payer_balance.js';
|
|
9
9
|
import { getTxPriorityFee } from '../tx_pool/priority.js';
|
|
@@ -40,6 +40,9 @@ export type TxMetaData = {
|
|
|
40
40
|
/** The transaction hash as hex string */
|
|
41
41
|
readonly txHash: string;
|
|
42
42
|
|
|
43
|
+
/** The transaction hash as bigint (for efficient Fr conversion in comparisons) */
|
|
44
|
+
readonly txHashBigInt: bigint;
|
|
45
|
+
|
|
43
46
|
/** Block ID (number and hash) in which the transaction was mined (undefined if not mined) */
|
|
44
47
|
minedL2BlockId?: L2BlockId;
|
|
45
48
|
|
|
@@ -83,7 +86,9 @@ export type TxState = 'pending' | 'protected' | 'mined' | 'deleted';
|
|
|
83
86
|
* Fr values are captured in closures for zero-cost re-validation.
|
|
84
87
|
*/
|
|
85
88
|
export async function buildTxMetaData(tx: Tx): Promise<TxMetaData> {
|
|
86
|
-
const
|
|
89
|
+
const txHashObj = tx.getTxHash();
|
|
90
|
+
const txHash = txHashObj.toString();
|
|
91
|
+
const txHashBigInt = txHashObj.toBigInt();
|
|
87
92
|
const nullifierFrs = tx.data.getNonEmptyNullifiers();
|
|
88
93
|
const nullifiers = nullifierFrs.map(n => n.toString());
|
|
89
94
|
const anchorBlockHeaderHashFr = await tx.data.constants.anchorBlockHeader.hash();
|
|
@@ -99,6 +104,7 @@ export async function buildTxMetaData(tx: Tx): Promise<TxMetaData> {
|
|
|
99
104
|
|
|
100
105
|
return {
|
|
101
106
|
txHash,
|
|
107
|
+
txHashBigInt,
|
|
102
108
|
anchorBlockHeaderHash,
|
|
103
109
|
priorityFee,
|
|
104
110
|
feePayer,
|
|
@@ -134,11 +140,11 @@ const HEX_STRING_BYTES = 98;
|
|
|
134
140
|
const BIGINT_BYTES = 32;
|
|
135
141
|
const FR_BYTES = 80;
|
|
136
142
|
// Fixed cost: object shell + txHash + anchorBlockHeaderHash + feePayer (3 hex strings)
|
|
137
|
-
// + priorityFee + claimAmount + feeLimit + includeByTimestamp (
|
|
143
|
+
// + txHashBigInt + priorityFee + claimAmount + feeLimit + includeByTimestamp (5 bigints)
|
|
138
144
|
// + receivedAt (number, 8 bytes) + estimatedSizeBytes (number, 8 bytes)
|
|
139
145
|
// + data closure object (~OBJECT_OVERHEAD + anchorBlockHeaderHashFr Fr + anchorBlockNumber number)
|
|
140
146
|
const FIXED_METADATA_BYTES =
|
|
141
|
-
OBJECT_OVERHEAD + 3 * HEX_STRING_BYTES +
|
|
147
|
+
OBJECT_OVERHEAD + 3 * HEX_STRING_BYTES + 5 * BIGINT_BYTES + 8 + 8 + OBJECT_OVERHEAD + FR_BYTES + 8;
|
|
142
148
|
|
|
143
149
|
/** Estimates the in-memory size of a TxMetaData object based on the number of nullifiers. */
|
|
144
150
|
function estimateTxMetaDataSize(nullifierCount: number): number {
|
|
@@ -146,8 +152,13 @@ function estimateTxMetaDataSize(nullifierCount: number): number {
|
|
|
146
152
|
return FIXED_METADATA_BYTES + nullifierCount * (HEX_STRING_BYTES + FR_BYTES);
|
|
147
153
|
}
|
|
148
154
|
|
|
155
|
+
/** Converts a txHash bigint back to the canonical 0x-prefixed 64-char hex string. */
|
|
156
|
+
export function txHashFromBigInt(value: bigint): string {
|
|
157
|
+
return TxHash.fromBigInt(value).toString();
|
|
158
|
+
}
|
|
159
|
+
|
|
149
160
|
/** Minimal fields required for priority comparison. */
|
|
150
|
-
type PriorityComparable = Pick<TxMetaData, '
|
|
161
|
+
type PriorityComparable = Pick<TxMetaData, 'txHashBigInt' | 'priorityFee'>;
|
|
151
162
|
|
|
152
163
|
/**
|
|
153
164
|
* Compares two priority fees in ascending order.
|
|
@@ -162,10 +173,8 @@ export function compareFee(a: bigint, b: bigint): number {
|
|
|
162
173
|
* Uses field element comparison for deterministic ordering.
|
|
163
174
|
* Returns negative if a < b, positive if a > b, 0 if equal.
|
|
164
175
|
*/
|
|
165
|
-
export function compareTxHash(a:
|
|
166
|
-
|
|
167
|
-
const fieldB = Fr.fromHexString(b);
|
|
168
|
-
return fieldA.cmp(fieldB);
|
|
176
|
+
export function compareTxHash(a: bigint, b: bigint): number {
|
|
177
|
+
return Fr.cmpAsBigInt(a, b);
|
|
169
178
|
}
|
|
170
179
|
|
|
171
180
|
/**
|
|
@@ -178,7 +187,7 @@ export function comparePriority(a: PriorityComparable, b: PriorityComparable): n
|
|
|
178
187
|
if (feeComparison !== 0) {
|
|
179
188
|
return feeComparison;
|
|
180
189
|
}
|
|
181
|
-
return compareTxHash(a.
|
|
190
|
+
return compareTxHash(a.txHashBigInt, b.txHashBigInt);
|
|
182
191
|
}
|
|
183
192
|
|
|
184
193
|
/**
|
|
@@ -253,3 +262,36 @@ export function stubTxMetaValidationData(overrides: { expirationTimestamp?: bigi
|
|
|
253
262
|
},
|
|
254
263
|
};
|
|
255
264
|
}
|
|
265
|
+
|
|
266
|
+
/** Creates a stub TxMetaData for tests. All fields have sensible defaults and can be overridden. */
|
|
267
|
+
export function stubTxMetaData(
|
|
268
|
+
txHash: string,
|
|
269
|
+
overrides: {
|
|
270
|
+
priorityFee?: bigint;
|
|
271
|
+
feePayer?: string;
|
|
272
|
+
claimAmount?: bigint;
|
|
273
|
+
feeLimit?: bigint;
|
|
274
|
+
nullifiers?: string[];
|
|
275
|
+
expirationTimestamp?: bigint;
|
|
276
|
+
anchorBlockHeaderHash?: string;
|
|
277
|
+
} = {},
|
|
278
|
+
): TxMetaData {
|
|
279
|
+
const txHashBigInt = Fr.fromHexString(txHash).toBigInt();
|
|
280
|
+
// Normalize to canonical zero-padded hex so txHashFromBigInt(txHashBigInt) === normalizedTxHash
|
|
281
|
+
const normalizedTxHash = txHashFromBigInt(txHashBigInt);
|
|
282
|
+
const expirationTimestamp = overrides.expirationTimestamp ?? 0n;
|
|
283
|
+
return {
|
|
284
|
+
txHash: normalizedTxHash,
|
|
285
|
+
txHashBigInt,
|
|
286
|
+
anchorBlockHeaderHash: overrides.anchorBlockHeaderHash ?? '0x1234',
|
|
287
|
+
priorityFee: overrides.priorityFee ?? 100n,
|
|
288
|
+
feePayer: overrides.feePayer ?? '0xfeepayer',
|
|
289
|
+
claimAmount: overrides.claimAmount ?? 0n,
|
|
290
|
+
feeLimit: overrides.feeLimit ?? 100n,
|
|
291
|
+
nullifiers: overrides.nullifiers ?? [`0x${normalizedTxHash.slice(2)}null1`],
|
|
292
|
+
expirationTimestamp,
|
|
293
|
+
receivedAt: 0,
|
|
294
|
+
estimatedSizeBytes: 0,
|
|
295
|
+
data: stubTxMetaValidationData({ expirationTimestamp }),
|
|
296
|
+
};
|
|
297
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import type { L2BlockId } from '@aztec/stdlib/block';
|
|
3
3
|
|
|
4
|
-
import { type TxMetaData, type TxState, compareFee, compareTxHash } from './tx_metadata.js';
|
|
4
|
+
import { type TxMetaData, type TxState, compareFee, compareTxHash, txHashFromBigInt } from './tx_metadata.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Manages in-memory indices for the transaction pool.
|
|
@@ -22,8 +22,8 @@ export class TxPoolIndices {
|
|
|
22
22
|
#nullifierToTxHash: Map<string, string> = new Map();
|
|
23
23
|
/** Fee payer to txHashes index (pending txs only) */
|
|
24
24
|
#feePayerToTxHashes: Map<string, Set<string>> = new Map();
|
|
25
|
-
/** Pending
|
|
26
|
-
#pendingByPriority: Map<bigint, Set<
|
|
25
|
+
/** Pending txHash bigints grouped by priority fee */
|
|
26
|
+
#pendingByPriority: Map<bigint, Set<bigint>> = new Map();
|
|
27
27
|
/** Protected transactions: txHash -> slotNumber */
|
|
28
28
|
#protectedTransactions: Map<string, SlotNumber> = new Map();
|
|
29
29
|
|
|
@@ -73,17 +73,17 @@ export class TxPoolIndices {
|
|
|
73
73
|
* @param order - 'desc' for highest priority first, 'asc' for lowest priority first
|
|
74
74
|
*/
|
|
75
75
|
*iteratePendingByPriority(order: 'asc' | 'desc', filter?: (hash: string) => boolean): Generator<string> {
|
|
76
|
-
// Use compareFee from tx_metadata, swap args for descending order
|
|
77
76
|
const feeCompareFn = order === 'desc' ? (a: bigint, b: bigint) => compareFee(b, a) : compareFee;
|
|
78
|
-
const hashCompareFn =
|
|
77
|
+
const hashCompareFn =
|
|
78
|
+
order === 'desc' ? (a: bigint, b: bigint) => compareTxHash(b, a) : (a: bigint, b: bigint) => compareTxHash(a, b);
|
|
79
79
|
|
|
80
80
|
const sortedFees = [...this.#pendingByPriority.keys()].sort(feeCompareFn);
|
|
81
81
|
|
|
82
82
|
for (const fee of sortedFees) {
|
|
83
83
|
const hashesAtFee = this.#pendingByPriority.get(fee)!;
|
|
84
|
-
// Use compareTxHash from tx_metadata, swap args for descending order
|
|
85
84
|
const sortedHashes = [...hashesAtFee].sort(hashCompareFn);
|
|
86
|
-
for (const
|
|
85
|
+
for (const hashBigInt of sortedHashes) {
|
|
86
|
+
const hash = txHashFromBigInt(hashBigInt);
|
|
87
87
|
if (filter === undefined || filter(hash)) {
|
|
88
88
|
yield hash;
|
|
89
89
|
}
|
|
@@ -265,8 +265,8 @@ export class TxPoolIndices {
|
|
|
265
265
|
getPendingTxs(): TxMetaData[] {
|
|
266
266
|
const result: TxMetaData[] = [];
|
|
267
267
|
for (const hashSet of this.#pendingByPriority.values()) {
|
|
268
|
-
for (const
|
|
269
|
-
const meta = this.#metadata.get(
|
|
268
|
+
for (const txHashBigInt of hashSet) {
|
|
269
|
+
const meta = this.#metadata.get(txHashFromBigInt(txHashBigInt));
|
|
270
270
|
if (meta) {
|
|
271
271
|
result.push(meta);
|
|
272
272
|
}
|
|
@@ -414,7 +414,7 @@ export class TxPoolIndices {
|
|
|
414
414
|
prioritySet = new Set();
|
|
415
415
|
this.#pendingByPriority.set(meta.priorityFee, prioritySet);
|
|
416
416
|
}
|
|
417
|
-
prioritySet.add(meta.
|
|
417
|
+
prioritySet.add(meta.txHashBigInt);
|
|
418
418
|
}
|
|
419
419
|
|
|
420
420
|
#removeFromPendingIndices(meta: TxMetaData): void {
|
|
@@ -435,7 +435,7 @@ export class TxPoolIndices {
|
|
|
435
435
|
// Remove from priority map
|
|
436
436
|
const hashSet = this.#pendingByPriority.get(meta.priorityFee);
|
|
437
437
|
if (hashSet) {
|
|
438
|
-
hashSet.delete(meta.
|
|
438
|
+
hashSet.delete(meta.txHashBigInt);
|
|
439
439
|
if (hashSet.size === 0) {
|
|
440
440
|
this.#pendingByPriority.delete(meta.priorityFee);
|
|
441
441
|
}
|