@aztec/p2p 1.2.1 → 2.0.0-nightly.20250813
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 +5 -1
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +29 -12
- package/dest/client/interface.d.ts +8 -13
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +18 -22
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +86 -83
- package/dest/config.d.ts +30 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +34 -1
- package/dest/index.d.ts +1 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +13 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +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 +117 -10
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +4 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +22 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +4 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +21 -1
- package/dest/mem_pools/attestation_pool/mocks.d.ts +1 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +2 -10
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +8 -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 +64 -37
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +8 -3
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +18 -10
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +11 -2
- 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 +73 -44
- package/dest/msg_validators/attestation_validator/attestation_validator.js +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +2 -2
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +35 -59
- package/dest/msg_validators/tx_validator/double_spend_validator.js +2 -2
- package/dest/msg_validators/tx_validator/gas_validator.js +4 -4
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +21 -21
- package/dest/msg_validators/tx_validator/phases_validator.js +3 -3
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +3 -3
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +4 -1
- package/dest/services/dummy_service.d.ts +13 -3
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +26 -3
- package/dest/services/index.d.ts +3 -1
- package/dest/services/index.d.ts.map +1 -1
- package/dest/services/index.js +3 -1
- package/dest/services/libp2p/libp2p_service.d.ts +13 -20
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +123 -46
- package/dest/services/peer-manager/interface.d.ts +8 -1
- package/dest/services/peer-manager/interface.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.d.ts +70 -3
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +369 -39
- package/dest/services/reqresp/config.d.ts +3 -3
- package/dest/services/reqresp/config.d.ts.map +1 -1
- package/dest/services/reqresp/config.js +3 -3
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +3 -4
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +35 -52
- package/dest/services/reqresp/index.d.ts +2 -1
- package/dest/services/reqresp/index.d.ts.map +1 -1
- package/dest/services/reqresp/index.js +2 -1
- package/dest/services/reqresp/interface.d.ts +61 -10
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +41 -6
- package/dest/services/reqresp/protocols/auth.d.ts +43 -0
- package/dest/services/reqresp/protocols/auth.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/auth.js +71 -0
- package/dest/services/reqresp/protocols/block.d.ts +5 -0
- package/dest/services/reqresp/protocols/block.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block.js +28 -5
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts +30 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/bitvector.js +75 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts +11 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +39 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +49 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +75 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts +4 -0
- package/dest/services/reqresp/protocols/block_txs/index.d.ts.map +1 -0
- package/dest/services/reqresp/protocols/block_txs/index.js +3 -0
- package/dest/services/reqresp/protocols/goodbye.js +3 -5
- package/dest/services/reqresp/protocols/index.d.ts +2 -0
- package/dest/services/reqresp/protocols/index.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/index.js +2 -0
- package/dest/services/reqresp/protocols/status.d.ts +2 -0
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.js +7 -0
- package/dest/services/reqresp/protocols/tx.d.ts +12 -1
- package/dest/services/reqresp/protocols/tx.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/tx.js +34 -6
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.js +20 -0
- package/dest/services/reqresp/reqresp.d.ts +37 -39
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +220 -220
- package/dest/services/reqresp/status.d.ts +8 -3
- package/dest/services/reqresp/status.d.ts.map +1 -1
- package/dest/services/reqresp/status.js +6 -2
- package/dest/services/service.d.ts +10 -10
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +25 -0
- package/dest/services/tx_collection/config.d.ts.map +1 -0
- package/dest/services/tx_collection/config.js +58 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts +56 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/fast_tx_collection.js +295 -0
- package/dest/services/tx_collection/index.d.ts +3 -0
- package/dest/services/tx_collection/index.d.ts.map +1 -0
- package/dest/services/tx_collection/index.js +2 -0
- package/dest/services/tx_collection/instrumentation.d.ts +10 -0
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -0
- package/dest/services/tx_collection/instrumentation.js +34 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts +54 -0
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/slow_tx_collection.js +176 -0
- package/dest/services/tx_collection/tx_collection.d.ts +109 -0
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection.js +127 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts +30 -0
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_collection_sink.js +81 -0
- package/dest/services/tx_collection/tx_source.d.ts +18 -0
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -0
- package/dest/services/tx_collection/tx_source.js +31 -0
- package/dest/services/tx_provider.d.ts +49 -0
- package/dest/services/tx_provider.d.ts.map +1 -0
- package/dest/services/tx_provider.js +206 -0
- package/dest/services/{tx_collect_instrumentation.d.ts → tx_provider_instrumentation.d.ts} +2 -2
- package/dest/services/tx_provider_instrumentation.d.ts.map +1 -0
- package/dest/services/{tx_collect_instrumentation.js → tx_provider_instrumentation.js} +5 -5
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +4 -3
- package/dest/test-helpers/mock-pubsub.d.ts +2 -1
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +2 -1
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +8 -4
- package/dest/testbench/p2p_client_testbench_worker.js +11 -5
- package/dest/util.d.ts +1 -1
- package/dest/util.d.ts.map +1 -1
- package/package.json +14 -15
- package/src/client/factory.ts +87 -12
- package/src/client/interface.ts +19 -15
- package/src/client/p2p_client.ts +108 -92
- package/src/config.ts +52 -1
- package/src/index.ts +1 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +15 -1
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +155 -4
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +28 -1
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +28 -2
- package/src/mem_pools/attestation_pool/mocks.ts +1 -3
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +59 -41
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +19 -9
- package/src/mem_pools/tx_pool/tx_pool.ts +7 -2
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +63 -40
- package/src/msg_validators/attestation_validator/attestation_validator.ts +1 -1
- package/src/msg_validators/tx_validator/block_header_validator.ts +2 -2
- package/src/msg_validators/tx_validator/data_validator.ts +36 -27
- package/src/msg_validators/tx_validator/double_spend_validator.ts +2 -2
- package/src/msg_validators/tx_validator/gas_validator.ts +4 -4
- package/src/msg_validators/tx_validator/metadata_validator.ts +22 -28
- package/src/msg_validators/tx_validator/phases_validator.ts +2 -2
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +2 -2
- package/src/services/discv5/discV5_service.ts +4 -1
- package/src/services/dummy_service.ts +44 -4
- package/src/services/index.ts +3 -1
- package/src/services/libp2p/libp2p_service.ts +147 -55
- package/src/services/peer-manager/interface.ts +10 -1
- package/src/services/peer-manager/peer_manager.ts +441 -41
- package/src/services/reqresp/config.ts +3 -3
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +38 -63
- package/src/services/reqresp/index.ts +2 -0
- package/src/services/reqresp/interface.ts +63 -17
- package/src/services/reqresp/protocols/auth.ts +83 -0
- package/src/services/reqresp/protocols/block.ts +24 -3
- package/src/services/reqresp/protocols/block_txs/bitvector.ts +90 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +53 -0
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +79 -0
- package/src/services/reqresp/protocols/block_txs/index.ts +3 -0
- package/src/services/reqresp/protocols/goodbye.ts +3 -3
- package/src/services/reqresp/protocols/index.ts +2 -0
- package/src/services/reqresp/protocols/status.ts +20 -0
- package/src/services/reqresp/protocols/tx.ts +35 -6
- package/src/services/reqresp/rate-limiter/rate_limits.ts +20 -0
- package/src/services/reqresp/reqresp.ts +294 -264
- package/src/services/reqresp/status.ts +9 -3
- package/src/services/service.ts +23 -14
- package/src/services/tx_collection/config.ts +84 -0
- package/src/services/tx_collection/fast_tx_collection.ts +338 -0
- package/src/services/tx_collection/index.ts +2 -0
- package/src/services/tx_collection/instrumentation.ts +43 -0
- package/src/services/tx_collection/slow_tx_collection.ts +232 -0
- package/src/services/tx_collection/tx_collection.ts +214 -0
- package/src/services/tx_collection/tx_collection_sink.ts +98 -0
- package/src/services/tx_collection/tx_source.ts +37 -0
- package/src/services/tx_provider.ts +215 -0
- package/src/services/{tx_collect_instrumentation.ts → tx_provider_instrumentation.ts} +5 -5
- package/src/test-helpers/make-test-p2p-clients.ts +4 -2
- package/src/test-helpers/mock-pubsub.ts +1 -0
- package/src/test-helpers/reqresp-nodes.ts +7 -1
- package/src/testbench/p2p_client_testbench_worker.ts +9 -2
- package/src/util.ts +1 -1
- package/dest/services/tx_collect_instrumentation.d.ts.map +0 -1
- package/dest/services/tx_collector.d.ts +0 -23
- package/dest/services/tx_collector.d.ts.map +0 -1
- package/dest/services/tx_collector.js +0 -95
- package/src/services/tx_collector.ts +0 -134
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import { TX_ERROR_INCORRECT_L1_CHAIN_ID, TX_ERROR_INCORRECT_PROTOCOL_CONTRACT_TREE_ROOT, TX_ERROR_INCORRECT_ROLLUP_VERSION, TX_ERROR_INCORRECT_VK_TREE_ROOT, TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP,
|
|
2
|
+
import { TX_ERROR_INCORRECT_L1_CHAIN_ID, TX_ERROR_INCORRECT_PROTOCOL_CONTRACT_TREE_ROOT, TX_ERROR_INCORRECT_ROLLUP_VERSION, TX_ERROR_INCORRECT_VK_TREE_ROOT, TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP, getTxHash } from '@aztec/stdlib/tx';
|
|
3
3
|
export class MetadataTxValidator {
|
|
4
4
|
values;
|
|
5
5
|
#log;
|
|
@@ -7,72 +7,72 @@ export class MetadataTxValidator {
|
|
|
7
7
|
this.values = values;
|
|
8
8
|
this.#log = createLogger('p2p:tx_validator:tx_metadata');
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
validateTx(tx) {
|
|
11
11
|
const errors = [];
|
|
12
|
-
if (!
|
|
12
|
+
if (!this.#hasCorrectL1ChainId(tx)) {
|
|
13
13
|
errors.push(TX_ERROR_INCORRECT_L1_CHAIN_ID);
|
|
14
14
|
}
|
|
15
|
-
if (!
|
|
15
|
+
if (!this.#hasCorrectRollupVersion(tx)) {
|
|
16
16
|
errors.push(TX_ERROR_INCORRECT_ROLLUP_VERSION);
|
|
17
17
|
}
|
|
18
|
-
if (!
|
|
18
|
+
if (!this.#isValidForTimestamp(tx)) {
|
|
19
19
|
errors.push(TX_ERROR_INVALID_INCLUDE_BY_TIMESTAMP);
|
|
20
20
|
}
|
|
21
|
-
if (!
|
|
21
|
+
if (!this.#hasCorrectVkTreeRoot(tx)) {
|
|
22
22
|
errors.push(TX_ERROR_INCORRECT_VK_TREE_ROOT);
|
|
23
23
|
}
|
|
24
|
-
if (!
|
|
24
|
+
if (!this.#hasCorrectProtocolContractTreeRoot(tx)) {
|
|
25
25
|
errors.push(TX_ERROR_INCORRECT_PROTOCOL_CONTRACT_TREE_ROOT);
|
|
26
26
|
}
|
|
27
|
-
return errors.length > 0 ? {
|
|
27
|
+
return Promise.resolve(errors.length > 0 ? {
|
|
28
28
|
result: 'invalid',
|
|
29
29
|
reason: errors
|
|
30
30
|
} : {
|
|
31
31
|
result: 'valid'
|
|
32
|
-
};
|
|
32
|
+
});
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
#hasCorrectVkTreeRoot(tx) {
|
|
35
35
|
// This gets implicitly tested in the proof validator, but we can get a much cheaper check here by looking early at the vk.
|
|
36
36
|
if (!tx.data.constants.vkTreeRoot.equals(this.values.vkTreeRoot)) {
|
|
37
|
-
this.#log.verbose(`Rejecting tx ${
|
|
37
|
+
this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} because of incorrect vk tree root ${tx.data.constants.vkTreeRoot.toString()} != ${this.values.vkTreeRoot.toString()}`);
|
|
38
38
|
return false;
|
|
39
39
|
} else {
|
|
40
40
|
return true;
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
|
|
43
|
+
#hasCorrectProtocolContractTreeRoot(tx) {
|
|
44
44
|
if (!tx.data.constants.protocolContractTreeRoot.equals(this.values.protocolContractTreeRoot)) {
|
|
45
|
-
this.#log.verbose(`Rejecting tx ${
|
|
45
|
+
this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} because of incorrect protocol contract tree root ${tx.data.constants.protocolContractTreeRoot.toString()} != ${this.values.protocolContractTreeRoot.toString()}`);
|
|
46
46
|
return false;
|
|
47
47
|
}
|
|
48
48
|
return true;
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
#hasCorrectL1ChainId(tx) {
|
|
51
51
|
if (!tx.data.constants.txContext.chainId.equals(this.values.l1ChainId)) {
|
|
52
|
-
this.#log.verbose(`Rejecting tx ${
|
|
52
|
+
this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} because of incorrect L1 chain ${tx.data.constants.txContext.chainId.toNumber()} != ${this.values.l1ChainId.toNumber()}`);
|
|
53
53
|
return false;
|
|
54
54
|
} else {
|
|
55
55
|
return true;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
|
|
59
|
-
const includeByTimestamp = tx.data.
|
|
58
|
+
#isValidForTimestamp(tx) {
|
|
59
|
+
const includeByTimestamp = tx.data.includeByTimestamp;
|
|
60
60
|
// If building block 1, we skip the expiration check. For details on why see the `validate_include_by_timestamp`
|
|
61
61
|
// function in `noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/components/validation_requests.nr`.
|
|
62
62
|
const buildingBlock1 = this.values.blockNumber === 1;
|
|
63
|
-
if (!buildingBlock1 && includeByTimestamp
|
|
63
|
+
if (!buildingBlock1 && includeByTimestamp < this.values.timestamp) {
|
|
64
64
|
if (tx.data.constants.historicalHeader.globalVariables.blockNumber === 0) {
|
|
65
65
|
this.#log.warn(`A tx built against a genesis block failed to be included in block 1 which is the only block in which txs built against a genesis block are allowed to be included.`);
|
|
66
66
|
}
|
|
67
|
-
this.#log.verbose(`Rejecting tx ${
|
|
67
|
+
this.#log.verbose(`Rejecting tx ${getTxHash(tx)} for low expiration timestamp. Tx expiration timestamp: ${includeByTimestamp}, timestamp: ${this.values.timestamp}.`);
|
|
68
68
|
return false;
|
|
69
69
|
} else {
|
|
70
70
|
return true;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
|
|
73
|
+
#hasCorrectRollupVersion(tx) {
|
|
74
74
|
if (!tx.data.constants.txContext.version.equals(this.values.rollupVersion)) {
|
|
75
|
-
this.#log.verbose(`Rejecting tx ${
|
|
75
|
+
this.#log.verbose(`Rejecting tx ${'txHash' in tx ? tx.txHash : tx.hash} because of incorrect rollup version ${tx.data.constants.txContext.version.toNumber()} != ${this.values.rollupVersion.toNumber()}`);
|
|
76
76
|
return false;
|
|
77
77
|
} else {
|
|
78
78
|
return true;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
2
|
import { PublicContractsDB, getCallRequestsWithCalldataByPhase } from '@aztec/simulator/server';
|
|
3
|
-
import { TX_ERROR_DURING_VALIDATION, TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED,
|
|
3
|
+
import { TX_ERROR_DURING_VALIDATION, TX_ERROR_SETUP_FUNCTION_NOT_ALLOWED, TxExecutionPhase } from '@aztec/stdlib/tx';
|
|
4
4
|
export class PhasesTxValidator {
|
|
5
5
|
setupAllowList;
|
|
6
6
|
timestamp;
|
|
@@ -19,7 +19,7 @@ export class PhasesTxValidator {
|
|
|
19
19
|
// which is what we're trying to do as part of the current txs.
|
|
20
20
|
await this.contractsDB.addNewContracts(tx);
|
|
21
21
|
if (!tx.data.forPublic) {
|
|
22
|
-
this.#log.debug(`Tx ${
|
|
22
|
+
this.#log.debug(`Tx ${tx.getTxHash().toString()} does not contain enqueued public functions. Skipping phases validation.`);
|
|
23
23
|
return {
|
|
24
24
|
result: 'valid'
|
|
25
25
|
};
|
|
@@ -27,7 +27,7 @@ export class PhasesTxValidator {
|
|
|
27
27
|
const setupFns = getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.SETUP);
|
|
28
28
|
for (const setupFn of setupFns){
|
|
29
29
|
if (!await this.isOnAllowList(setupFn, this.setupAllowList)) {
|
|
30
|
-
this.#log.verbose(`Rejecting tx ${
|
|
30
|
+
this.#log.verbose(`Rejecting tx ${tx.getTxHash().toString()} because it calls setup function not on allow list: ${setupFn.request.contractAddress}:${setupFn.functionSelector}`, {
|
|
31
31
|
allowList: this.setupAllowList
|
|
32
32
|
});
|
|
33
33
|
return {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import { TX_ERROR_INVALID_PROOF
|
|
2
|
+
import { TX_ERROR_INVALID_PROOF } from '@aztec/stdlib/tx';
|
|
3
3
|
export class TxProofValidator {
|
|
4
4
|
verifier;
|
|
5
5
|
#log;
|
|
@@ -10,7 +10,7 @@ export class TxProofValidator {
|
|
|
10
10
|
async validateTx(tx) {
|
|
11
11
|
const result = await this.verifier.verifyProof(tx);
|
|
12
12
|
if (!result.valid) {
|
|
13
|
-
this.#log.verbose(`Rejecting tx ${
|
|
13
|
+
this.#log.verbose(`Rejecting tx ${tx.getTxHash().toString()} for invalid proof`);
|
|
14
14
|
return {
|
|
15
15
|
result: 'invalid',
|
|
16
16
|
reason: [
|
|
@@ -18,7 +18,7 @@ export class TxProofValidator {
|
|
|
18
18
|
]
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
this.#log.trace(`Accepted ${
|
|
21
|
+
this.#log.trace(`Accepted ${tx.getTxHash().toString()} with valid proof`);
|
|
22
22
|
return {
|
|
23
23
|
result: 'valid'
|
|
24
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discV5_service.d.ts","sourceRoot":"","sources":["../../../src/services/discv5/discV5_service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEvG,OAAO,EAAmC,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAe,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,OAAO,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAI9E;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAa,YAAW,oBAAoB;IAyB3E,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,MAAM;IA5BhB,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAAqB;IAEnC,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAc;IAEzB,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IAErC,OAAO,CAAC,YAAY,CAA8B;IAElD,OAAO,CAAC,oBAAoB,CAAgB;IACrC,iBAAiB,EAAE,GAAG,EAAE,CAAM;IACrC,OAAO,CAAC,eAAe,CAAa;IAEpC,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,QAAQ,CAId;gBAGQ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACR,cAAc,EAAE,MAAM,EACvC,SAAS,GAAE,eAAsC,EACzC,MAAM,yCAAqC,EACnD,eAAe,GAAE,OAAO,CAAC,oBAAoB,CAAM;IA4ErD,OAAO,CAAC,kBAAkB;IAQb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuDtB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB1C,YAAY,IAAI,GAAG,EAAE;IAIrB,MAAM,IAAI,GAAG;IAIb,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,kBAAkB;IAI/B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"discV5_service.d.ts","sourceRoot":"","sources":["../../../src/services/discv5/discV5_service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEvG,OAAO,EAAmC,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAe,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,OAAO,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAI9E;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAa,YAAW,oBAAoB;IAyB3E,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,MAAM;IA5BhB,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAAqB;IAEnC,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAc;IAEzB,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IAErC,OAAO,CAAC,YAAY,CAA8B;IAElD,OAAO,CAAC,oBAAoB,CAAgB;IACrC,iBAAiB,EAAE,GAAG,EAAE,CAAM;IACrC,OAAO,CAAC,eAAe,CAAa;IAEpC,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,QAAQ,CAId;gBAGQ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACR,cAAc,EAAE,MAAM,EACvC,SAAS,GAAE,eAAsC,EACzC,MAAM,yCAAqC,EACnD,eAAe,GAAE,OAAO,CAAC,oBAAoB,CAAM;IA4ErD,OAAO,CAAC,kBAAkB;IAQb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuDtB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB1C,YAAY,IAAI,GAAG,EAAE;IAIrB,MAAM,IAAI,GAAG;IAIb,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,kBAAkB;IAI/B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAapB,UAAU;IAOxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,WAAW;CA0BpB"}
|
|
@@ -141,7 +141,7 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
141
141
|
}
|
|
142
142
|
async runRandomNodesQuery() {
|
|
143
143
|
if (this.currentState !== PeerDiscoveryState.RUNNING) {
|
|
144
|
-
|
|
144
|
+
return;
|
|
145
145
|
}
|
|
146
146
|
// First, wait some time before starting the peer discovery
|
|
147
147
|
// reference: https://github.com/ChainSafe/lodestar/issues/3423
|
|
@@ -171,6 +171,9 @@ const delayBeforeStart = 2000; // 2sec
|
|
|
171
171
|
return this.bootstrapNodePeerIds.some((node)=>node.equals(peerId));
|
|
172
172
|
}
|
|
173
173
|
async stop() {
|
|
174
|
+
if (this.currentState !== PeerDiscoveryState.RUNNING) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
174
177
|
await this.discv5.off(Discv5Event.DISCOVERED, this.handlers.onDiscovered);
|
|
175
178
|
await this.discv5.off(Discv5Event.ENR_ADDED, this.handlers.onEnrAdded);
|
|
176
179
|
await this.discv5.off(Discv5Event.MULTIADDR_UPDATED, this.handlers.onMultiaddrUpdated);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
1
2
|
import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
2
3
|
import type { Gossipable, PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
3
4
|
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
@@ -6,7 +7,8 @@ import type { PeerId } from '@libp2p/interface';
|
|
|
6
7
|
import EventEmitter from 'events';
|
|
7
8
|
import type { PeerManagerInterface } from './peer-manager/interface.js';
|
|
8
9
|
import type { P2PReqRespConfig } from './reqresp/config.js';
|
|
9
|
-
import
|
|
10
|
+
import { type AuthRequest, StatusMessage } from './reqresp/index.js';
|
|
11
|
+
import type { ReqRespInterface, ReqRespResponse, ReqRespSubProtocol, ReqRespSubProtocolHandler, ReqRespSubProtocolHandlers, ReqRespSubProtocolValidators, SubProtocolMap } from './reqresp/interface.js';
|
|
10
12
|
import type { GoodByeReason } from './reqresp/protocols/goodbye.js';
|
|
11
13
|
import { type P2PBlockReceivedCallback, type P2PService, type PeerDiscoveryService, PeerDiscoveryState } from './service.js';
|
|
12
14
|
/**
|
|
@@ -60,6 +62,9 @@ export declare class DummyP2PService implements P2PService {
|
|
|
60
62
|
*/
|
|
61
63
|
getEnr(): undefined;
|
|
62
64
|
validate(_txs: Tx[]): Promise<void>;
|
|
65
|
+
addReqRespSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler, _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
|
|
66
|
+
handleAuthRequestFromPeer(_authRequest: AuthRequest, _peerId: PeerId): Promise<StatusMessage>;
|
|
67
|
+
registerThisValidatorAddresses(_address: EthAddress[]): void;
|
|
63
68
|
}
|
|
64
69
|
/**
|
|
65
70
|
* A dummy implementation of the Peer Discovery Service.
|
|
@@ -96,19 +101,24 @@ export declare class DummyPeerManager implements PeerManagerInterface {
|
|
|
96
101
|
getPeers(_includePending?: boolean): PeerInfo[];
|
|
97
102
|
initializePeers(): Promise<void>;
|
|
98
103
|
getPeerScore(_peerId: string): number;
|
|
104
|
+
shouldDisableP2PGossip(_peerId: string): boolean;
|
|
99
105
|
stop(): Promise<void>;
|
|
100
|
-
heartbeat(): void
|
|
106
|
+
heartbeat(): Promise<void>;
|
|
101
107
|
addTrustedPeer(_peerId: PeerId): void;
|
|
102
108
|
addPrivatePeer(_peerId: PeerId): void;
|
|
103
109
|
goodbyeReceived(_peerId: PeerId, _reason: GoodByeReason): void;
|
|
104
110
|
penalizePeer(_peerId: PeerId, _penalty: PeerErrorSeverity): void;
|
|
111
|
+
addPreferredPeer(_peerId: PeerId): void;
|
|
112
|
+
handleAuthRequestFromPeer(_authRequest: AuthRequest, _peerId: PeerId): Promise<StatusMessage>;
|
|
113
|
+
registerThisValidatorAddresses(_address: EthAddress[]): void;
|
|
105
114
|
}
|
|
106
115
|
export declare class DummyReqResp implements ReqRespInterface {
|
|
107
116
|
updateConfig(_config: Partial<P2PReqRespConfig>): void;
|
|
108
117
|
start(_subProtocolHandlers: ReqRespSubProtocolHandlers, _subProtocolValidators: ReqRespSubProtocolValidators): Promise<void>;
|
|
109
118
|
stop(): Promise<void>;
|
|
110
119
|
sendRequest<SubProtocol extends ReqRespSubProtocol>(_subProtocol: SubProtocol, _request: InstanceType<SubProtocolMap[SubProtocol]['request']>): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']> | undefined>;
|
|
111
|
-
sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(_subProtocol: SubProtocol,
|
|
120
|
+
sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(_subProtocol: SubProtocol, _requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[], _pinnedPeer: PeerId | undefined, _timeoutMs?: number, _maxPeers?: number, _maxRetryAttempts?: number): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']>[]>;
|
|
112
121
|
sendRequestToPeer(_peerId: PeerId, _subProtocol: ReqRespSubProtocol, _payload: Buffer, _dialTimeout?: number): Promise<ReqRespResponse>;
|
|
122
|
+
addSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler, _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
|
|
113
123
|
}
|
|
114
124
|
//# sourceMappingURL=dummy_service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,4BAA4B,EAC5B,cAAc,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAEtD,wCAAwC;IACxC,QAAQ,IAAI,QAAQ,EAAE;IAItB;;;OAGG;IACI,KAAK;IAIZ;;;OAGG;IACI,IAAI;IAIX;;;OAGG;IACI,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC;IAI3C;;;OAGG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE;IAE7B;;OAEG;IACI,6BAA6B,CAAC,SAAS,EAAE,wBAAwB;IAExE;;;;;OAKG;IACI,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EACpD,SAAS,EAAE,QAAQ,EACnB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAC1D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IAI1E;;;;;OAKG;IACI,gBAAgB,CAAC,QAAQ,SAAS,kBAAkB,EACzD,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAC7D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;IAIhE;;;OAGG;IACI,MAAM,IAAI,SAAS;IAI1B,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import EventEmitter from 'events';
|
|
2
|
+
import { StatusMessage } from './reqresp/index.js';
|
|
2
3
|
import { ReqRespStatus } from './reqresp/status.js';
|
|
3
4
|
import { PeerDiscoveryState } from './service.js';
|
|
4
5
|
/**
|
|
@@ -58,6 +59,14 @@ import { PeerDiscoveryState } from './service.js';
|
|
|
58
59
|
validate(_txs) {
|
|
59
60
|
return Promise.resolve();
|
|
60
61
|
}
|
|
62
|
+
addReqRespSubProtocol(_subProtocol, _handler, _validator) {
|
|
63
|
+
return Promise.resolve();
|
|
64
|
+
}
|
|
65
|
+
handleAuthRequestFromPeer(_authRequest, _peerId) {
|
|
66
|
+
return Promise.resolve(StatusMessage.random());
|
|
67
|
+
}
|
|
68
|
+
//this is no-op
|
|
69
|
+
registerThisValidatorAddresses(_address) {}
|
|
61
70
|
}
|
|
62
71
|
/**
|
|
63
72
|
* A dummy implementation of the Peer Discovery Service.
|
|
@@ -120,14 +129,25 @@ export class DummyPeerManager {
|
|
|
120
129
|
getPeerScore(_peerId) {
|
|
121
130
|
return 0;
|
|
122
131
|
}
|
|
132
|
+
shouldDisableP2PGossip(_peerId) {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
123
135
|
stop() {
|
|
124
136
|
return Promise.resolve();
|
|
125
137
|
}
|
|
126
|
-
heartbeat() {
|
|
138
|
+
heartbeat() {
|
|
139
|
+
return Promise.resolve();
|
|
140
|
+
}
|
|
127
141
|
addTrustedPeer(_peerId) {}
|
|
128
142
|
addPrivatePeer(_peerId) {}
|
|
129
143
|
goodbyeReceived(_peerId, _reason) {}
|
|
130
144
|
penalizePeer(_peerId, _penalty) {}
|
|
145
|
+
addPreferredPeer(_peerId) {}
|
|
146
|
+
handleAuthRequestFromPeer(_authRequest, _peerId) {
|
|
147
|
+
return Promise.resolve(StatusMessage.random());
|
|
148
|
+
}
|
|
149
|
+
//this is no-op
|
|
150
|
+
registerThisValidatorAddresses(_address) {}
|
|
131
151
|
}
|
|
132
152
|
export class DummyReqResp {
|
|
133
153
|
updateConfig(_config) {}
|
|
@@ -140,8 +160,8 @@ export class DummyReqResp {
|
|
|
140
160
|
sendRequest(_subProtocol, _request) {
|
|
141
161
|
return Promise.resolve(undefined);
|
|
142
162
|
}
|
|
143
|
-
sendBatchRequest(_subProtocol,
|
|
144
|
-
return Promise.resolve(
|
|
163
|
+
sendBatchRequest(_subProtocol, _requests, _pinnedPeer, _timeoutMs, _maxPeers, _maxRetryAttempts) {
|
|
164
|
+
return Promise.resolve([]);
|
|
145
165
|
}
|
|
146
166
|
sendRequestToPeer(_peerId, _subProtocol, _payload, _dialTimeout) {
|
|
147
167
|
return Promise.resolve({
|
|
@@ -149,4 +169,7 @@ export class DummyReqResp {
|
|
|
149
169
|
data: Buffer.from([])
|
|
150
170
|
});
|
|
151
171
|
}
|
|
172
|
+
addSubProtocol(_subProtocol, _handler, _validator) {
|
|
173
|
+
return Promise.resolve();
|
|
174
|
+
}
|
|
152
175
|
}
|
package/dest/services/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * from './service.js';
|
|
2
2
|
export * from './libp2p/libp2p_service.js';
|
|
3
|
-
export * from './
|
|
3
|
+
export * from './tx_provider.js';
|
|
4
4
|
export * from './dummy_service.js';
|
|
5
|
+
export * from './reqresp/index.js';
|
|
6
|
+
export * from './tx_collection/index.js';
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC"}
|
package/dest/services/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * from './service.js';
|
|
2
2
|
export * from './libp2p/libp2p_service.js';
|
|
3
|
-
export * from './
|
|
3
|
+
export * from './tx_provider.js';
|
|
4
4
|
export * from './dummy_service.js';
|
|
5
|
+
export * from './reqresp/index.js';
|
|
6
|
+
export * from './tx_collection/index.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
2
2
|
import { type Logger } from '@aztec/foundation/log';
|
|
3
3
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
4
|
-
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
4
|
+
import type { EthAddress, L2BlockSource } from '@aztec/stdlib/block';
|
|
5
5
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
6
6
|
import type { ClientProtocolCircuitVerifier, PeerInfo, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
7
7
|
import { BlockAttestation, BlockProposal, type Gossipable, P2PClientType, TopicType } from '@aztec/stdlib/p2p';
|
|
8
8
|
import { Tx } from '@aztec/stdlib/tx';
|
|
9
9
|
import { type TelemetryClient, WithTracer } from '@aztec/telemetry-client';
|
|
10
|
-
import
|
|
10
|
+
import { ENR } from '@chainsafe/enr';
|
|
11
11
|
import { type Message, type PeerId } from '@libp2p/interface';
|
|
12
12
|
import '@libp2p/kad-dht';
|
|
13
13
|
import type { P2PConfig } from '../../config.js';
|
|
@@ -15,7 +15,8 @@ import type { MemPools } from '../../mem_pools/interface.js';
|
|
|
15
15
|
import { type PubSubLibp2p } from '../../util.js';
|
|
16
16
|
import type { PeerManagerInterface } from '../peer-manager/interface.js';
|
|
17
17
|
import type { P2PReqRespConfig } from '../reqresp/config.js';
|
|
18
|
-
import { type ReqRespInterface, ReqRespSubProtocol, type SubProtocolMap } from '../reqresp/interface.js';
|
|
18
|
+
import { type ReqRespInterface, ReqRespSubProtocol, type ReqRespSubProtocolHandler, type ReqRespSubProtocolValidators, type SubProtocolMap } from '../reqresp/interface.js';
|
|
19
|
+
import { AuthRequest, StatusMessage } from '../reqresp/protocols/index.js';
|
|
19
20
|
import type { P2PBlockReceivedCallback, P2PService, PeerDiscoveryService } from '../service.js';
|
|
20
21
|
/**
|
|
21
22
|
* Lib P2P implementation of the P2PService interface.
|
|
@@ -78,26 +79,17 @@ export declare class LibP2PService<T extends P2PClientType = P2PClientType.Full>
|
|
|
78
79
|
* @returns An empty promise.
|
|
79
80
|
*/
|
|
80
81
|
stop(): Promise<void>;
|
|
82
|
+
addReqRespSubProtocol(subProtocol: ReqRespSubProtocol, handler: ReqRespSubProtocolHandler, validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
|
|
83
|
+
registerThisValidatorAddresses(address: EthAddress[]): void;
|
|
81
84
|
getPeers(includePending?: boolean): PeerInfo[];
|
|
82
85
|
private handleGossipSubEvent;
|
|
83
|
-
/**
|
|
84
|
-
* Send Request via the ReqResp service
|
|
85
|
-
* The subprotocol defined will determine the request and response types
|
|
86
|
-
*
|
|
87
|
-
* See the subProtocolMap for the mapping of subprotocols to request/response types in `interface.ts`
|
|
88
|
-
*
|
|
89
|
-
* @param protocol The request response protocol to use
|
|
90
|
-
* @param request The request type to send
|
|
91
|
-
* @returns
|
|
92
|
-
*/
|
|
93
|
-
sendRequest<SubProtocol extends ReqRespSubProtocol>(protocol: SubProtocol, request: InstanceType<SubProtocolMap[SubProtocol]['request']>): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']> | undefined>;
|
|
94
86
|
/**
|
|
95
87
|
* Send a batch of requests to peers, and return the responses
|
|
96
88
|
* @param protocol - The request response protocol to use
|
|
97
89
|
* @param requests - The requests to send to the peers
|
|
98
90
|
* @returns The responses to the requests
|
|
99
91
|
*/
|
|
100
|
-
sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(protocol: SubProtocol, requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[], pinnedPeerId: PeerId | undefined): Promise<
|
|
92
|
+
sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(protocol: SubProtocol, requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[], pinnedPeerId: PeerId | undefined): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']>[]>;
|
|
101
93
|
/**
|
|
102
94
|
* Get the ENR of the node
|
|
103
95
|
* @returns The ENR of the node
|
|
@@ -154,18 +146,18 @@ export declare class LibP2PService<T extends P2PClientType = P2PClientType.Full>
|
|
|
154
146
|
*/
|
|
155
147
|
propagate<T extends Gossipable>(message: T): Promise<void>;
|
|
156
148
|
/**
|
|
157
|
-
* Validate a
|
|
149
|
+
* Validate a collection of txs that has been requested from a peer.
|
|
158
150
|
*
|
|
159
|
-
* The core component of this validator is that
|
|
151
|
+
* The core component of this validator is that each tx hash MUST match the requested tx hash,
|
|
160
152
|
* In order to perform this check, the tx proof must be verified.
|
|
161
153
|
*
|
|
162
154
|
* Note: This function is called from within `ReqResp.sendRequest` as part of the
|
|
163
155
|
* ReqRespSubProtocol.TX subprotocol validation.
|
|
164
156
|
*
|
|
165
|
-
* @param requestedTxHash - The
|
|
166
|
-
* @param responseTx - The
|
|
157
|
+
* @param requestedTxHash - The collection of the txs that was requested.
|
|
158
|
+
* @param responseTx - The collectin of txs that was received as a response to the request.
|
|
167
159
|
* @param peerId - The peer ID of the peer that sent the tx.
|
|
168
|
-
* @returns True if the
|
|
160
|
+
* @returns True if the whole collection of txs is valid, false otherwise.
|
|
169
161
|
*/
|
|
170
162
|
private validateRequestedTx;
|
|
171
163
|
private validatePropagatedTx;
|
|
@@ -216,6 +208,7 @@ export declare class LibP2PService<T extends P2PClientType = P2PClientType.Full>
|
|
|
216
208
|
*/
|
|
217
209
|
validateBlockProposal(peerId: PeerId, block: BlockProposal): Promise<boolean>;
|
|
218
210
|
getPeerScore(peerId: PeerId): number;
|
|
211
|
+
handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
219
212
|
private sendToPeers;
|
|
220
213
|
private stopLibP2P;
|
|
221
214
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"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"}
|