@aztec/p2p 0.0.1-commit.f2ce05ee → 0.0.1-commit.f8ca9b2f3
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 +3 -3
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +38 -7
- package/dest/client/interface.d.ts +26 -15
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +31 -35
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +97 -138
- package/dest/config.d.ts +10 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +9 -0
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +18 -11
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +62 -37
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +53 -53
- package/dest/mem_pools/attestation_pool/index.d.ts +2 -2
- package/dest/mem_pools/attestation_pool/index.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/index.js +1 -1
- package/dest/mem_pools/index.d.ts +2 -1
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/interface.d.ts +3 -3
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +87 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/deleted_pool.js +180 -0
- package/dest/mem_pools/tx_pool_v2/index.d.ts +2 -1
- package/dest/mem_pools/tx_pool_v2/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/index.js +1 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +25 -3
- 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 -4
- 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 +77 -74
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +3 -3
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +16 -3
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +13 -3
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +4 -4
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +20 -4
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +2 -2
- package/dest/services/dummy_service.d.ts +6 -2
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +3 -0
- package/dest/services/encoding.d.ts +2 -2
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +2 -2
- package/dest/services/libp2p/libp2p_service.d.ts +11 -3
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +71 -35
- package/dest/services/reqresp/interface.d.ts +10 -1
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +15 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +3 -3
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +7 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +15 -0
- package/dest/services/reqresp/protocols/tx.d.ts +7 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +20 -0
- 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 +11 -4
- package/dest/services/service.d.ts +18 -1
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +7 -1
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +16 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts +3 -1
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +17 -3
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +44 -0
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_collection.js +118 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts +27 -0
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/file_store_tx_source.js +57 -0
- package/dest/services/tx_collection/index.d.ts +2 -1
- package/dest/services/tx_collection/index.d.ts.map +1 -1
- package/dest/services/tx_collection/index.js +1 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +3 -1
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.js +48 -19
- package/dest/services/tx_collection/tx_collection.d.ts +17 -7
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +58 -2
- package/dest/services/tx_collection/tx_collection_sink.d.ts +15 -6
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +13 -7
- package/dest/services/tx_file_store/config.d.ts +1 -3
- package/dest/services/tx_file_store/config.d.ts.map +1 -1
- package/dest/services/tx_file_store/config.js +0 -4
- package/dest/services/tx_file_store/tx_file_store.d.ts +3 -3
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
- package/dest/services/tx_provider.d.ts +3 -3
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/services/tx_provider.js +5 -4
- package/dest/test-helpers/make-test-p2p-clients.d.ts +3 -3
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.d.ts +27 -1
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +97 -2
- package/dest/test-helpers/testbench-utils.d.ts +30 -24
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +87 -35
- package/dest/testbench/p2p_client_testbench_worker.js +1 -1
- package/package.json +14 -14
- package/src/client/factory.ts +65 -8
- package/src/client/interface.ts +26 -13
- package/src/client/p2p_client.ts +123 -158
- package/src/config.ts +16 -0
- package/src/index.ts +1 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +87 -44
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +57 -53
- package/src/mem_pools/attestation_pool/index.ts +3 -3
- package/src/mem_pools/index.ts +3 -0
- package/src/mem_pools/interface.ts +2 -2
- package/src/mem_pools/tx_pool_v2/README.md +59 -9
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +234 -0
- package/src/mem_pools/tx_pool_v2/index.ts +1 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +2 -2
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +51 -5
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +90 -77
- package/src/msg_validators/tx_validator/aggregate_tx_validator.ts +2 -2
- package/src/msg_validators/tx_validator/block_header_validator.ts +15 -3
- package/src/msg_validators/tx_validator/double_spend_validator.ts +11 -6
- package/src/msg_validators/tx_validator/timestamp_validator.ts +19 -14
- package/src/services/dummy_service.ts +6 -0
- package/src/services/encoding.ts +2 -2
- package/src/services/libp2p/libp2p_service.ts +70 -37
- package/src/services/reqresp/interface.ts +26 -1
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +2 -2
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +17 -0
- package/src/services/reqresp/protocols/tx.ts +22 -0
- package/src/services/reqresp/reqresp.ts +13 -3
- package/src/services/service.ts +20 -0
- package/src/services/tx_collection/config.ts +26 -0
- package/src/services/tx_collection/fast_tx_collection.ts +14 -2
- package/src/services/tx_collection/file_store_tx_collection.ts +152 -0
- package/src/services/tx_collection/file_store_tx_source.ts +70 -0
- package/src/services/tx_collection/index.ts +1 -0
- package/src/services/tx_collection/slow_tx_collection.ts +55 -26
- package/src/services/tx_collection/tx_collection.ts +78 -12
- package/src/services/tx_collection/tx_collection_sink.ts +17 -7
- package/src/services/tx_file_store/config.ts +0 -6
- package/src/services/tx_file_store/tx_file_store.ts +4 -4
- package/src/services/tx_provider.ts +8 -7
- package/src/test-helpers/make-test-p2p-clients.ts +3 -3
- package/src/test-helpers/mock-pubsub.ts +133 -3
- package/src/test-helpers/testbench-utils.ts +100 -40
- package/src/testbench/p2p_client_testbench_worker.ts +1 -1
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.f8ca9b2f3",
|
|
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.f8ca9b2f3",
|
|
71
|
+
"@aztec/epoch-cache": "0.0.1-commit.f8ca9b2f3",
|
|
72
|
+
"@aztec/ethereum": "0.0.1-commit.f8ca9b2f3",
|
|
73
|
+
"@aztec/foundation": "0.0.1-commit.f8ca9b2f3",
|
|
74
|
+
"@aztec/kv-store": "0.0.1-commit.f8ca9b2f3",
|
|
75
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.f8ca9b2f3",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.f8ca9b2f3",
|
|
77
|
+
"@aztec/protocol-contracts": "0.0.1-commit.f8ca9b2f3",
|
|
78
|
+
"@aztec/simulator": "0.0.1-commit.f8ca9b2f3",
|
|
79
|
+
"@aztec/stdlib": "0.0.1-commit.f8ca9b2f3",
|
|
80
|
+
"@aztec/telemetry-client": "0.0.1-commit.f8ca9b2f3",
|
|
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.f8ca9b2f3",
|
|
108
|
+
"@aztec/world-state": "0.0.1-commit.f8ca9b2f3",
|
|
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
|
@@ -4,27 +4,34 @@ import { DateProvider } from '@aztec/foundation/timer';
|
|
|
4
4
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
5
5
|
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
6
6
|
import { AztecLMDBStoreV2, createStore } from '@aztec/kv-store/lmdb-v2';
|
|
7
|
-
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
7
|
+
import type { BlockHash, L2BlockSource } from '@aztec/stdlib/block';
|
|
8
8
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
9
9
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
10
10
|
import type { ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
11
11
|
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
12
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
12
13
|
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
13
14
|
|
|
14
15
|
import { P2PClient } from '../client/p2p_client.js';
|
|
15
16
|
import type { P2PConfig } from '../config.js';
|
|
16
17
|
import { AttestationPool, type AttestationPoolApi } from '../mem_pools/attestation_pool/attestation_pool.js';
|
|
17
18
|
import type { MemPools } from '../mem_pools/interface.js';
|
|
18
|
-
import {
|
|
19
|
+
import type { TxPoolV2 } from '../mem_pools/tx_pool_v2/interfaces.js';
|
|
20
|
+
import type { TxMetaData } from '../mem_pools/tx_pool_v2/tx_metadata.js';
|
|
21
|
+
import { AztecKVTxPoolV2 } from '../mem_pools/tx_pool_v2/tx_pool_v2.js';
|
|
22
|
+
import { AggregateTxValidator } from '../msg_validators/tx_validator/aggregate_tx_validator.js';
|
|
23
|
+
import { BlockHeaderTxValidator } from '../msg_validators/tx_validator/block_header_validator.js';
|
|
24
|
+
import { DoubleSpendTxValidator } from '../msg_validators/tx_validator/double_spend_validator.js';
|
|
19
25
|
import { DummyP2PService } from '../services/dummy_service.js';
|
|
20
26
|
import { LibP2PService } from '../services/index.js';
|
|
27
|
+
import { createFileStoreTxSources } from '../services/tx_collection/file_store_tx_source.js';
|
|
21
28
|
import { TxCollection } from '../services/tx_collection/tx_collection.js';
|
|
22
29
|
import { type TxSource, createNodeRpcTxSources } from '../services/tx_collection/tx_source.js';
|
|
23
30
|
import { TxFileStore } from '../services/tx_file_store/tx_file_store.js';
|
|
24
31
|
import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerIdPrivateKey } from '../util.js';
|
|
25
32
|
|
|
26
33
|
export type P2PClientDeps<T extends P2PClientType> = {
|
|
27
|
-
txPool?:
|
|
34
|
+
txPool?: TxPoolV2;
|
|
28
35
|
store?: AztecAsyncKVStore;
|
|
29
36
|
attestationPool?: AttestationPoolApi;
|
|
30
37
|
logger?: Logger;
|
|
@@ -69,13 +76,51 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
69
76
|
const attestationStore = await createStore(P2P_ATTESTATION_STORE_NAME, 1, config, bindings);
|
|
70
77
|
const l1Constants = await archiver.getL1Constants();
|
|
71
78
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
79
|
+
/** Validator factory for pool re-validation (double-spend + block header only). */
|
|
80
|
+
const createPoolTxValidator = async () => {
|
|
81
|
+
await worldStateSynchronizer.syncImmediate();
|
|
82
|
+
return new AggregateTxValidator<TxMetaData>(
|
|
83
|
+
new DoubleSpendTxValidator<TxMetaData>(
|
|
84
|
+
{
|
|
85
|
+
nullifiersExist: async (nullifiers: Buffer[]) => {
|
|
86
|
+
const merkleTree = worldStateSynchronizer.getCommitted();
|
|
87
|
+
const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
|
|
88
|
+
return indices.map(index => index !== undefined);
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
bindings,
|
|
92
|
+
),
|
|
93
|
+
new BlockHeaderTxValidator<TxMetaData>(
|
|
94
|
+
{
|
|
95
|
+
getArchiveIndices: (archives: BlockHash[]) => {
|
|
96
|
+
const merkleTree = worldStateSynchronizer.getCommitted();
|
|
97
|
+
return merkleTree.findLeafIndices(MerkleTreeId.ARCHIVE, archives);
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
bindings,
|
|
101
|
+
),
|
|
102
|
+
);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
const txPool =
|
|
106
|
+
deps.txPool ??
|
|
107
|
+
new AztecKVTxPoolV2(
|
|
108
|
+
store,
|
|
109
|
+
archive,
|
|
110
|
+
{
|
|
111
|
+
l2BlockSource: archiver,
|
|
112
|
+
worldStateSynchronizer,
|
|
113
|
+
createTxValidator: createPoolTxValidator,
|
|
114
|
+
},
|
|
115
|
+
telemetry,
|
|
116
|
+
{
|
|
76
117
|
maxPendingTxCount: config.maxPendingTxCount,
|
|
77
118
|
archivedTxLimit: config.archivedTxLimit,
|
|
78
|
-
}
|
|
119
|
+
},
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
const mempools: MemPools = {
|
|
123
|
+
txPool,
|
|
79
124
|
attestationPool: deps.attestationPool ?? new AttestationPool(attestationStore, telemetry),
|
|
80
125
|
};
|
|
81
126
|
|
|
@@ -105,12 +150,23 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
105
150
|
});
|
|
106
151
|
}
|
|
107
152
|
|
|
153
|
+
const fileStoreSources = await createFileStoreTxSources(
|
|
154
|
+
config.txCollectionFileStoreUrls,
|
|
155
|
+
logger.createChild('file-store-tx-source'),
|
|
156
|
+
);
|
|
157
|
+
if (fileStoreSources.length > 0) {
|
|
158
|
+
logger.info(`Using ${fileStoreSources.length} file store sources for tx collection.`, {
|
|
159
|
+
stores: fileStoreSources.map(s => s.getInfo()),
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
|
|
108
163
|
const txCollection = new TxCollection(
|
|
109
164
|
p2pService.getBatchTxRequesterService(),
|
|
110
165
|
nodeSources,
|
|
111
166
|
l1Constants,
|
|
112
167
|
mempools.txPool,
|
|
113
168
|
config,
|
|
169
|
+
fileStoreSources,
|
|
114
170
|
dateProvider,
|
|
115
171
|
telemetry,
|
|
116
172
|
logger.createChild('tx-collection'),
|
|
@@ -126,6 +182,7 @@ export async function createP2PClient<T extends P2PClientType>(
|
|
|
126
182
|
p2pService,
|
|
127
183
|
txCollection,
|
|
128
184
|
txFileStore,
|
|
185
|
+
epochCache,
|
|
129
186
|
config,
|
|
130
187
|
dateProvider,
|
|
131
188
|
telemetry,
|
package/src/client/interface.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { EthAddress, L2BlockId } from '@aztec/stdlib/block';
|
|
2
3
|
import type { P2PApiFull } from '@aztec/stdlib/interfaces/server';
|
|
3
4
|
import type { BlockProposal, CheckpointAttestation, CheckpointProposal, P2PClientType } from '@aztec/stdlib/p2p';
|
|
4
|
-
import type { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
5
|
+
import type { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
5
6
|
|
|
6
7
|
import type { PeerId } from '@libp2p/interface';
|
|
7
8
|
import type { ENR } from '@nethermindeth/enr';
|
|
@@ -14,6 +15,7 @@ import type {
|
|
|
14
15
|
ReqRespSubProtocolValidators,
|
|
15
16
|
} from '../services/reqresp/interface.js';
|
|
16
17
|
import type {
|
|
18
|
+
DuplicateAttestationInfo,
|
|
17
19
|
DuplicateProposalInfo,
|
|
18
20
|
P2PBlockReceivedCallback,
|
|
19
21
|
P2PCheckpointReceivedCallback,
|
|
@@ -91,12 +93,13 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
91
93
|
registerDuplicateProposalCallback(callback: (info: DuplicateProposalInfo) => void): void;
|
|
92
94
|
|
|
93
95
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
96
|
+
* Registers a callback invoked when a duplicate attestation is detected (equivocation).
|
|
97
|
+
* A validator signing attestations for different proposals at the same slot.
|
|
98
|
+
* The callback is triggered on the first duplicate (when count goes from 1 to 2).
|
|
99
|
+
*
|
|
100
|
+
* @param callback - Function called with info about the duplicate attestation
|
|
98
101
|
*/
|
|
99
|
-
|
|
102
|
+
registerDuplicateAttestationCallback(callback: (info: DuplicateAttestationInfo) => void): void;
|
|
100
103
|
|
|
101
104
|
/**
|
|
102
105
|
* Verifies the 'tx' and, if valid, adds it to local tx pool and forwards it to other peers.
|
|
@@ -112,11 +115,10 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
112
115
|
addTxsToPool(txs: Tx[]): Promise<number>;
|
|
113
116
|
|
|
114
117
|
/**
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
* @param txHashes - Hashes to check.
|
|
118
|
+
* Handles failed transaction execution by removing txs from the pool.
|
|
119
|
+
* @param txHashes - Hashes of the transactions that failed execution.
|
|
118
120
|
**/
|
|
119
|
-
|
|
121
|
+
handleFailedExecution(txHashes: TxHash[]): Promise<void>;
|
|
120
122
|
|
|
121
123
|
/**
|
|
122
124
|
* Returns a transaction in the transaction pool by its hash.
|
|
@@ -168,10 +170,21 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApiFull<T> &
|
|
|
168
170
|
getPendingTxCount(): Promise<number>;
|
|
169
171
|
|
|
170
172
|
/**
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
+
* Protects existing transactions by hash for a given slot.
|
|
174
|
+
* Returns hashes of transactions that weren't found in the pool.
|
|
175
|
+
* @param txHashes - Hashes of the transactions to protect.
|
|
176
|
+
* @param blockHeader - The block header providing slot context.
|
|
177
|
+
* @returns Hashes of transactions not found in the pool.
|
|
178
|
+
*/
|
|
179
|
+
protectTxs(txHashes: TxHash[], blockHeader: BlockHeader): Promise<TxHash[]>;
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Prepares the pool for a new slot.
|
|
183
|
+
* Unprotects transactions from earlier slots and validates them before
|
|
184
|
+
* returning to pending state.
|
|
185
|
+
* @param slotNumber - The slot number to prepare for
|
|
173
186
|
*/
|
|
174
|
-
|
|
187
|
+
prepareForSlot(slotNumber: SlotNumber): Promise<void>;
|
|
175
188
|
|
|
176
189
|
/**
|
|
177
190
|
* Starts the p2p client.
|