@aztec/p2p 0.74.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2
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/bootstrap/bootstrap.js +41 -29
- package/dest/client/factory.js +8 -10
- package/dest/client/index.js +0 -1
- package/dest/client/p2p_client.js +513 -507
- package/dest/config.js +44 -39
- package/dest/errors/reqresp.error.js +6 -10
- package/dest/index.js +0 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +6 -2
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +64 -32
- package/dest/mem_pools/attestation_pool/index.js +0 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +22 -19
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +22 -26
- package/dest/mem_pools/attestation_pool/mocks.js +10 -6
- package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.js +1 -2
- package/dest/mem_pools/epoch_proof_quote_pool/index.js +0 -1
- package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.js +5 -4
- package/dest/mem_pools/epoch_proof_quote_pool/test_utils.js +2 -3
- package/dest/mem_pools/index.js +1 -2
- package/dest/mem_pools/instrumentation.js +37 -42
- package/dest/mem_pools/interface.js +3 -2
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +127 -134
- package/dest/mem_pools/tx_pool/index.js +0 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +45 -43
- package/dest/mem_pools/tx_pool/priority.js +1 -3
- package/dest/mem_pools/tx_pool/tx_pool.js +3 -2
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +107 -37
- package/dest/mocks/index.js +47 -38
- package/dest/msg_validators/attestation_validator/attestation_validator.js +3 -3
- package/dest/msg_validators/attestation_validator/index.js +0 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +2 -2
- package/dest/msg_validators/block_proposal_validator/index.js +0 -1
- package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.js +2 -2
- package/dest/msg_validators/epoch_proof_quote_validator/index.js +0 -1
- package/dest/msg_validators/index.js +0 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +9 -11
- package/dest/msg_validators/tx_validator/block_header_validator.js +17 -12
- package/dest/msg_validators/tx_validator/data_validator.js +41 -32
- package/dest/msg_validators/tx_validator/double_spend_validator.js +22 -14
- package/dest/msg_validators/tx_validator/index.js +0 -1
- package/dest/msg_validators/tx_validator/metadata_validator.js +29 -26
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +17 -12
- package/dest/services/data_store.js +57 -57
- package/dest/services/discv5/discV5_service.js +31 -23
- package/dest/services/dummy_service.js +40 -58
- package/dest/services/encoding.js +10 -9
- package/dest/services/index.js +0 -1
- package/dest/services/libp2p/libp2p_service.js +709 -695
- package/dest/services/peer-manager/metrics.js +14 -7
- package/dest/services/peer-manager/peer_manager.js +340 -342
- package/dest/services/peer-manager/peer_scoring.js +20 -18
- package/dest/services/reqresp/config.js +4 -5
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.js +35 -28
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +60 -59
- package/dest/services/reqresp/index.js +1 -3
- package/dest/services/reqresp/interface.js +25 -30
- package/dest/services/reqresp/metrics.js +23 -10
- package/dest/services/reqresp/protocols/block.js +1 -2
- package/dest/services/reqresp/protocols/goodbye.js +35 -40
- package/dest/services/reqresp/protocols/index.js +1 -3
- package/dest/services/reqresp/protocols/ping.js +1 -3
- package/dest/services/reqresp/protocols/status.js +1 -3
- package/dest/services/reqresp/protocols/tx.js +5 -8
- package/dest/services/reqresp/rate-limiter/index.js +0 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.js +42 -36
- package/dest/services/reqresp/rate-limiter/rate_limits.js +16 -17
- package/dest/services/reqresp/reqresp.js +461 -395
- package/dest/services/reqresp/status.js +51 -0
- package/dest/services/service.js +3 -4
- package/dest/services/types.js +16 -23
- package/dest/util.js +23 -34
- package/package.json +8 -8
- package/src/client/p2p_client.ts +159 -125
- package/src/mem_pools/index.ts +3 -3
- package/src/mem_pools/instrumentation.ts +3 -2
- package/src/services/reqresp/interface.ts +11 -0
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +3 -1
- package/src/services/reqresp/rate-limiter/rate_limits.ts +2 -2
- package/src/services/reqresp/reqresp.ts +111 -24
- package/src/services/reqresp/status.ts +59 -0
- package/dest/bootstrap/bootstrap.d.ts +0 -38
- package/dest/bootstrap/bootstrap.d.ts.map +0 -1
- package/dest/client/factory.d.ts +0 -19
- package/dest/client/factory.d.ts.map +0 -1
- package/dest/client/index.d.ts +0 -3
- package/dest/client/index.d.ts.map +0 -1
- package/dest/client/p2p_client.d.ts +0 -321
- package/dest/client/p2p_client.d.ts.map +0 -1
- package/dest/config.d.ts +0 -171
- package/dest/config.d.ts.map +0 -1
- package/dest/errors/reqresp.error.d.ts +0 -28
- package/dest/errors/reqresp.error.d.ts.map +0 -1
- package/dest/index.d.ts +0 -9
- package/dest/index.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +0 -57
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +0 -3
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/index.d.ts +0 -3
- package/dest/mem_pools/attestation_pool/index.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +0 -22
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +0 -17
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +0 -1
- package/dest/mem_pools/attestation_pool/mocks.d.ts +0 -18
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +0 -1
- package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.d.ts +0 -7
- package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.d.ts.map +0 -1
- package/dest/mem_pools/epoch_proof_quote_pool/index.d.ts +0 -4
- package/dest/mem_pools/epoch_proof_quote_pool/index.d.ts.map +0 -1
- package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.d.ts +0 -12
- package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.d.ts.map +0 -1
- package/dest/mem_pools/epoch_proof_quote_pool/test_utils.d.ts +0 -8
- package/dest/mem_pools/epoch_proof_quote_pool/test_utils.d.ts.map +0 -1
- package/dest/mem_pools/index.d.ts +0 -5
- package/dest/mem_pools/index.d.ts.map +0 -1
- package/dest/mem_pools/instrumentation.d.ts +0 -31
- package/dest/mem_pools/instrumentation.d.ts.map +0 -1
- package/dest/mem_pools/interface.d.ts +0 -13
- package/dest/mem_pools/interface.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +0 -66
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/index.d.ts +0 -4
- package/dest/mem_pools/tx_pool/index.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +0 -56
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/priority.d.ts +0 -8
- package/dest/mem_pools/tx_pool/priority.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +0 -66
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +0 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts +0 -7
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +0 -1
- package/dest/mocks/index.d.ts +0 -54
- package/dest/mocks/index.d.ts.map +0 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +0 -8
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +0 -1
- package/dest/msg_validators/attestation_validator/index.d.ts +0 -2
- package/dest/msg_validators/attestation_validator/index.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -8
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
- package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
- package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts +0 -8
- package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts.map +0 -1
- package/dest/msg_validators/epoch_proof_quote_validator/index.d.ts +0 -2
- package/dest/msg_validators/epoch_proof_quote_validator/index.d.ts.map +0 -1
- package/dest/msg_validators/index.d.ts +0 -4
- package/dest/msg_validators/index.d.ts.map +0 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts +0 -7
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +0 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +0 -11
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +0 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts +0 -6
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +0 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +0 -12
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +0 -1
- package/dest/msg_validators/tx_validator/index.d.ts +0 -7
- package/dest/msg_validators/tx_validator/index.d.ts.map +0 -1
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts +0 -10
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +0 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts +0 -8
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +0 -1
- package/dest/services/data_store.d.ts +0 -27
- package/dest/services/data_store.d.ts.map +0 -1
- package/dest/services/discv5/discV5_service.d.ts +0 -36
- package/dest/services/discv5/discV5_service.d.ts.map +0 -1
- package/dest/services/dummy_service.d.ts +0 -82
- package/dest/services/dummy_service.d.ts.map +0 -1
- package/dest/services/encoding.d.ts +0 -31
- package/dest/services/encoding.d.ts.map +0 -1
- package/dest/services/index.d.ts +0 -3
- package/dest/services/index.d.ts.map +0 -1
- package/dest/services/libp2p/libp2p_service.d.ts +0 -225
- package/dest/services/libp2p/libp2p_service.d.ts.map +0 -1
- package/dest/services/peer-manager/metrics.d.ts +0 -12
- package/dest/services/peer-manager/metrics.d.ts.map +0 -1
- package/dest/services/peer-manager/peer_manager.d.ts +0 -76
- package/dest/services/peer-manager/peer_manager.d.ts.map +0 -1
- package/dest/services/peer-manager/peer_scoring.d.ts +0 -28
- package/dest/services/peer-manager/peer_scoring.d.ts.map +0 -1
- package/dest/services/reqresp/config.d.ts +0 -16
- package/dest/services/reqresp/config.d.ts.map +0 -1
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts +0 -45
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +0 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +0 -61
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +0 -1
- package/dest/services/reqresp/index.d.ts +0 -6
- package/dest/services/reqresp/index.d.ts.map +0 -1
- package/dest/services/reqresp/interface.d.ts +0 -107
- package/dest/services/reqresp/interface.d.ts.map +0 -1
- package/dest/services/reqresp/metrics.d.ts +0 -15
- package/dest/services/reqresp/metrics.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/block.d.ts +0 -4
- package/dest/services/reqresp/protocols/block.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/goodbye.d.ts +0 -51
- package/dest/services/reqresp/protocols/goodbye.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/index.d.ts +0 -9
- package/dest/services/reqresp/protocols/index.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/ping.d.ts +0 -9
- package/dest/services/reqresp/protocols/ping.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/status.d.ts +0 -9
- package/dest/services/reqresp/protocols/status.d.ts.map +0 -1
- package/dest/services/reqresp/protocols/tx.d.ts +0 -13
- package/dest/services/reqresp/protocols/tx.d.ts.map +0 -1
- package/dest/services/reqresp/rate-limiter/index.d.ts +0 -2
- package/dest/services/reqresp/rate-limiter/index.d.ts.map +0 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts +0 -102
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +0 -1
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts +0 -3
- package/dest/services/reqresp/rate-limiter/rate_limits.d.ts.map +0 -1
- package/dest/services/reqresp/reqresp.d.ts +0 -161
- package/dest/services/reqresp/reqresp.d.ts.map +0 -1
- package/dest/services/service.d.ts +0 -85
- package/dest/services/service.d.ts.map +0 -1
- package/dest/services/types.d.ts +0 -38
- package/dest/services/types.d.ts.map +0 -1
- package/dest/util.d.ts +0 -53
- package/dest/util.d.ts.map +0 -1
|
@@ -2,24 +2,19 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
2
2
|
import { ReqRespSubProtocol } from '../interface.js';
|
|
3
3
|
/**
|
|
4
4
|
* Enum defining the possible reasons for a goodbye message.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
/** The peer has
|
|
9
|
-
GoodByeReason[GoodByeReason["
|
|
10
|
-
/**
|
|
11
|
-
GoodByeReason[GoodByeReason["
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/** The peer has been banned, will be received whenever a peer is banned */
|
|
15
|
-
GoodByeReason[GoodByeReason["BANNED"] = 4] = "BANNED";
|
|
16
|
-
/** Wrong network / fork */
|
|
17
|
-
GoodByeReason[GoodByeReason["WRONG_NETWORK"] = 5] = "WRONG_NETWORK";
|
|
18
|
-
/** Unknown reason */
|
|
19
|
-
GoodByeReason[GoodByeReason["UNKNOWN"] = 6] = "UNKNOWN";
|
|
20
|
-
})(GoodByeReason || (GoodByeReason = {}));
|
|
5
|
+
*/ export var GoodByeReason = /*#__PURE__*/ function(GoodByeReason) {
|
|
6
|
+
/** The peer has shutdown, will be received whenever a peer's node is routinely stopped */ GoodByeReason[GoodByeReason["SHUTDOWN"] = 1] = "SHUTDOWN";
|
|
7
|
+
/** Whenever the peer must disconnect due to maintaining max peers */ GoodByeReason[GoodByeReason["DISCONNECTED"] = 2] = "DISCONNECTED";
|
|
8
|
+
/** The peer has a low score, will be received whenever a peer's score is low */ GoodByeReason[GoodByeReason["LOW_SCORE"] = 3] = "LOW_SCORE";
|
|
9
|
+
/** The peer has been banned, will be received whenever a peer is banned */ GoodByeReason[GoodByeReason["BANNED"] = 4] = "BANNED";
|
|
10
|
+
/** Wrong network / fork */ GoodByeReason[GoodByeReason["WRONG_NETWORK"] = 5] = "WRONG_NETWORK";
|
|
11
|
+
/** Unknown reason */ GoodByeReason[GoodByeReason["UNKNOWN"] = 6] = "UNKNOWN";
|
|
12
|
+
return GoodByeReason;
|
|
13
|
+
}({});
|
|
21
14
|
export function encodeGoodbyeReason(reason) {
|
|
22
|
-
return Buffer.from([
|
|
15
|
+
return Buffer.from([
|
|
16
|
+
reason
|
|
17
|
+
]);
|
|
23
18
|
}
|
|
24
19
|
export function decodeGoodbyeReason(buffer) {
|
|
25
20
|
try {
|
|
@@ -27,47 +22,47 @@ export function decodeGoodbyeReason(buffer) {
|
|
|
27
22
|
throw new Error('Invalid goodbye reason buffer length');
|
|
28
23
|
}
|
|
29
24
|
return buffer[0];
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return GoodByeReason.UNKNOWN;
|
|
25
|
+
} catch (error) {
|
|
26
|
+
return 6;
|
|
33
27
|
}
|
|
34
28
|
}
|
|
35
29
|
/**
|
|
36
30
|
* Pretty prints the goodbye reason.
|
|
37
31
|
* @param reason - The goodbye reason.
|
|
38
32
|
* @returns The pretty printed goodbye reason.
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
case GoodByeReason.SHUTDOWN:
|
|
33
|
+
*/ export function prettyGoodbyeReason(reason) {
|
|
34
|
+
switch(reason){
|
|
35
|
+
case 1:
|
|
43
36
|
return 'shutdown';
|
|
44
|
-
case
|
|
37
|
+
case 2:
|
|
45
38
|
return 'disconnected';
|
|
46
|
-
case
|
|
39
|
+
case 3:
|
|
47
40
|
return 'low_score';
|
|
48
|
-
case
|
|
41
|
+
case 4:
|
|
49
42
|
return 'banned';
|
|
50
43
|
// TODO(#11328): implement
|
|
51
|
-
case
|
|
44
|
+
case 5:
|
|
52
45
|
return 'wrong_network';
|
|
53
|
-
case
|
|
46
|
+
case 6:
|
|
54
47
|
return 'unknown';
|
|
55
48
|
}
|
|
56
49
|
}
|
|
57
50
|
/**
|
|
58
51
|
* Handles a goodbye message request
|
|
59
|
-
*/
|
|
60
|
-
|
|
61
|
-
|
|
52
|
+
*/ export class GoodbyeProtocolHandler {
|
|
53
|
+
reqresp;
|
|
54
|
+
logger;
|
|
55
|
+
constructor(reqresp){
|
|
62
56
|
this.reqresp = reqresp;
|
|
63
57
|
this.logger = createLogger('p2p:goodbye-protocol');
|
|
64
58
|
}
|
|
65
59
|
async sendGoodbye(peerId, reason) {
|
|
66
60
|
try {
|
|
67
|
-
await this.reqresp.sendRequestToPeer(peerId, ReqRespSubProtocol.GOODBYE, Buffer.from([
|
|
61
|
+
await this.reqresp.sendRequestToPeer(peerId, ReqRespSubProtocol.GOODBYE, Buffer.from([
|
|
62
|
+
reason
|
|
63
|
+
]));
|
|
68
64
|
this.logger.debug(`Sent goodbye to peer ${peerId.toString()} with reason ${reason}`);
|
|
69
|
-
}
|
|
70
|
-
catch (error) {
|
|
65
|
+
} catch (error) {
|
|
71
66
|
this.logger.debug(`Failed to send goodbye to peer ${peerId.toString()}: ${error}`);
|
|
72
67
|
}
|
|
73
68
|
}
|
|
@@ -80,13 +75,13 @@ export class GoodbyeProtocolHandler {
|
|
|
80
75
|
*
|
|
81
76
|
* @param peerManager - The peer manager.
|
|
82
77
|
* @returns A resolved promise with the goodbye response.
|
|
83
|
-
*/
|
|
84
|
-
|
|
85
|
-
return (peerId, _msg) => {
|
|
78
|
+
*/ export function reqGoodbyeHandler(peerManager) {
|
|
79
|
+
return (peerId, _msg)=>{
|
|
86
80
|
const reason = decodeGoodbyeReason(_msg);
|
|
87
81
|
peerManager.goodbyeReceived(peerId, reason);
|
|
88
82
|
// Return a buffer of length 1 as an acknowledgement
|
|
89
|
-
return Promise.resolve(Buffer.from([
|
|
83
|
+
return Promise.resolve(Buffer.from([
|
|
84
|
+
0x0
|
|
85
|
+
]));
|
|
90
86
|
};
|
|
91
87
|
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZGJ5ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9nb29kYnllLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQWtDLE1BQU0saUJBQWlCLENBQUM7QUFHckY7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxhQWFYO0FBYkQsV0FBWSxhQUFhO0lBQ3ZCLDBGQUEwRjtJQUMxRix5REFBYyxDQUFBO0lBQ2QscUVBQXFFO0lBQ3JFLGlFQUFrQixDQUFBO0lBQ2xCLGdGQUFnRjtJQUNoRiwyREFBZSxDQUFBO0lBQ2YsMkVBQTJFO0lBQzNFLHFEQUFZLENBQUE7SUFDWiwyQkFBMkI7SUFDM0IsbUVBQW1CLENBQUE7SUFDbkIscUJBQXFCO0lBQ3JCLHVEQUFhLENBQUE7QUFDZixDQUFDLEVBYlcsYUFBYSxLQUFiLGFBQWEsUUFheEI7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBcUI7SUFDdkQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE1BQWM7SUFDaEQsSUFBSSxDQUFDO1FBQ0gsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFrQixDQUFDO0lBQ3BDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQy9CLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFxQjtJQUN2RCxRQUFRLE1BQU0sRUFBRSxDQUFDO1FBQ2YsS0FBSyxhQUFhLENBQUMsUUFBUTtZQUN6QixPQUFPLFVBQVUsQ0FBQztRQUNwQixLQUFLLGFBQWEsQ0FBQyxZQUFZO1lBQzdCLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLEtBQUssYUFBYSxDQUFDLFNBQVM7WUFDMUIsT0FBTyxXQUFXLENBQUM7UUFDckIsS0FBSyxhQUFhLENBQUMsTUFBTTtZQUN2QixPQUFPLFFBQVEsQ0FBQztRQUNsQiwwQkFBMEI7UUFDMUIsS0FBSyxhQUFhLENBQUMsYUFBYTtZQUM5QixPQUFPLGVBQWUsQ0FBQztRQUN6QixLQUFLLGFBQWEsQ0FBQyxPQUFPO1lBQ3hCLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLFlBQW9CLE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFGNUIsV0FBTSxHQUFHLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRWYsQ0FBQztJQUVqQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQWMsRUFBRSxNQUFxQjtRQUM1RCxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixNQUFNLENBQUMsUUFBUSxFQUFFLGdCQUFnQixNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxXQUF3QjtJQUN4RCxPQUFPLENBQUMsTUFBYyxFQUFFLElBQVksRUFBRSxFQUFFO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXpDLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLG9EQUFvRDtRQUNwRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Request Response protocol handlers
|
|
3
|
-
*/
|
|
4
|
-
export * from './ping.js';
|
|
3
|
+
*/ export * from './ping.js';
|
|
5
4
|
export * from './status.js';
|
|
6
5
|
export * from './tx.js';
|
|
7
6
|
export * from './goodbye.js';
|
|
8
7
|
export * from './block.js';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9wcm90b2NvbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFlBQVksQ0FBQyJ9
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
* Handles the ping request.
|
|
3
3
|
* @param _msg - The ping request message.
|
|
4
4
|
* @returns A resolved promise with the pong response.
|
|
5
|
-
*/
|
|
6
|
-
export function pingHandler(_msg) {
|
|
5
|
+
*/ export function pingHandler(_msg) {
|
|
7
6
|
return Promise.resolve(Buffer.from('pong'));
|
|
8
7
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9waW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVM7SUFDbkMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDIn0=
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
* Handles the status request.
|
|
3
3
|
* @param _msg - The status request message.
|
|
4
4
|
* @returns A resolved promise with the ok response.
|
|
5
|
-
*/
|
|
6
|
-
export function statusHandler(_msg) {
|
|
5
|
+
*/ export function statusHandler(_msg) {
|
|
7
6
|
return Promise.resolve(Buffer.from('ok'));
|
|
8
7
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3JlcXJlc3AvcHJvdG9jb2xzL3N0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFTO0lBQ3JDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQyJ9
|
|
@@ -6,18 +6,15 @@ import { TxHash } from '@aztec/circuit-types/tx_hash';
|
|
|
6
6
|
* Handler for tx requests
|
|
7
7
|
* @param mempools - the mempools
|
|
8
8
|
* @returns the tx response message
|
|
9
|
-
*/
|
|
10
|
-
export function reqRespTxHandler(mempools) {
|
|
9
|
+
*/ export function reqRespTxHandler(mempools) {
|
|
11
10
|
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return async (_peerId, msg) => {
|
|
11
|
+
* Handler for tx requests
|
|
12
|
+
* @param msg - the tx request message
|
|
13
|
+
* @returns the tx response message
|
|
14
|
+
*/ return async (_peerId, msg)=>{
|
|
17
15
|
const txHash = TxHash.fromBuffer(msg);
|
|
18
16
|
const foundTx = await mempools.txPool.getTxByHash(txHash);
|
|
19
17
|
const buf = foundTx ? foundTx.toBuffer() : Buffer.alloc(0);
|
|
20
18
|
return buf;
|
|
21
19
|
};
|
|
22
20
|
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9wcm90b2NvbHMvdHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBT3REOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQTBCLFFBQXFCO0lBQzdFOzs7O09BSUc7SUFDSCxPQUFPLEtBQUssRUFBRSxPQUFlLEVBQUUsR0FBVyxFQUFFLEVBQUU7UUFDNUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxNQUFNLE9BQU8sR0FBRyxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -1,2 +1 @@
|
|
|
1
1
|
export { RequestResponseRateLimiter } from './rate_limiter.js';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9yYXRlLWxpbWl0ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUMifQ==
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
* @attribution Rate limiter approach implemented in the lodestar ethereum 2 client.
|
|
3
3
|
* Rationale is that if it was good enough for them, then it should be good enough for us.
|
|
4
4
|
* https://github.com/ChainSafe/lodestar
|
|
5
|
-
*/
|
|
6
|
-
import { PeerErrorSeverity } from '@aztec/circuit-types';
|
|
5
|
+
*/ import { PeerErrorSeverity } from '@aztec/circuit-types';
|
|
7
6
|
import { DEFAULT_RATE_LIMITS } from './rate_limits.js';
|
|
8
7
|
// Check for disconnected peers every 10 minutes
|
|
9
8
|
const CHECK_DISCONNECTED_PEERS_INTERVAL_MS = 10 * 60 * 1000;
|
|
@@ -26,13 +25,17 @@ const CHECK_DISCONNECTED_PEERS_INTERVAL_MS = 10 * 60 * 1000;
|
|
|
26
25
|
* ```
|
|
27
26
|
* const limiter = new GCRARateLimiter(100, 60000); // 100 operations per minute
|
|
28
27
|
* ```
|
|
29
|
-
*/
|
|
30
|
-
|
|
28
|
+
*/ export class GCRARateLimiter {
|
|
29
|
+
// Virtual scheduling time: i.e. the time at which we should allow the next request
|
|
30
|
+
vst;
|
|
31
|
+
// The interval at which we emit a new token
|
|
32
|
+
emissionInterval;
|
|
33
|
+
// The interval over which we limit the number of requests
|
|
34
|
+
limitInterval;
|
|
31
35
|
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
constructor(quotaCount, quotaTimeMs) {
|
|
36
|
+
* @param quotaCount - The number of requests to allow over the limit interval
|
|
37
|
+
* @param quotaTimeMs - The time interval over which the quotaCount applies
|
|
38
|
+
*/ constructor(quotaCount, quotaTimeMs){
|
|
36
39
|
this.emissionInterval = quotaTimeMs / quotaCount;
|
|
37
40
|
this.limitInterval = quotaTimeMs;
|
|
38
41
|
this.vst = Date.now();
|
|
@@ -47,12 +50,12 @@ export class GCRARateLimiter {
|
|
|
47
50
|
return false;
|
|
48
51
|
}
|
|
49
52
|
}
|
|
50
|
-
var RateLimitStatus
|
|
51
|
-
(function (RateLimitStatus) {
|
|
53
|
+
var RateLimitStatus = /*#__PURE__*/ function(RateLimitStatus) {
|
|
52
54
|
RateLimitStatus[RateLimitStatus["Allowed"] = 0] = "Allowed";
|
|
53
55
|
RateLimitStatus[RateLimitStatus["DeniedGlobal"] = 1] = "DeniedGlobal";
|
|
54
56
|
RateLimitStatus[RateLimitStatus["DeniedPeer"] = 2] = "DeniedPeer";
|
|
55
|
-
|
|
57
|
+
return RateLimitStatus;
|
|
58
|
+
}(RateLimitStatus || {});
|
|
56
59
|
/**
|
|
57
60
|
* SubProtocolRateLimiter: A rate limiter for managing request rates on a per-peer and global basis for a specific subprotocol.
|
|
58
61
|
*
|
|
@@ -68,10 +71,12 @@ var RateLimitStatus;
|
|
|
68
71
|
* - It periodically cleans up rate limiters for inactive peers to conserve memory.
|
|
69
72
|
*
|
|
70
73
|
* Note: Remember to call `start()` to begin the cleanup process and `stop()` when shutting down to clear the cleanup interval.
|
|
71
|
-
*/
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
*/ export class SubProtocolRateLimiter {
|
|
75
|
+
peerLimiters = new Map();
|
|
76
|
+
globalLimiter;
|
|
77
|
+
peerQuotaCount;
|
|
78
|
+
peerQuotaTimeMs;
|
|
79
|
+
constructor(peerQuotaCount, peerQuotaTimeMs, globalQuotaCount, globalQuotaTimeMs){
|
|
75
80
|
this.peerLimiters = new Map();
|
|
76
81
|
this.globalLimiter = new GCRARateLimiter(globalQuotaCount, globalQuotaTimeMs);
|
|
77
82
|
this.peerQuotaCount = peerQuotaCount;
|
|
@@ -79,7 +84,7 @@ export class SubProtocolRateLimiter {
|
|
|
79
84
|
}
|
|
80
85
|
allow(peerId) {
|
|
81
86
|
if (!this.globalLimiter.allow()) {
|
|
82
|
-
return
|
|
87
|
+
return 1;
|
|
83
88
|
}
|
|
84
89
|
const peerIdStr = peerId.toString();
|
|
85
90
|
let peerLimiter = this.peerLimiters.get(peerIdStr);
|
|
@@ -87,22 +92,21 @@ export class SubProtocolRateLimiter {
|
|
|
87
92
|
// Create a limiter for this peer
|
|
88
93
|
peerLimiter = {
|
|
89
94
|
limiter: new GCRARateLimiter(this.peerQuotaCount, this.peerQuotaTimeMs),
|
|
90
|
-
lastAccess: Date.now()
|
|
95
|
+
lastAccess: Date.now()
|
|
91
96
|
};
|
|
92
97
|
this.peerLimiters.set(peerIdStr, peerLimiter);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
98
|
+
} else {
|
|
95
99
|
peerLimiter.lastAccess = Date.now();
|
|
96
100
|
}
|
|
97
101
|
const peerLimitAllowed = peerLimiter.limiter.allow();
|
|
98
102
|
if (!peerLimitAllowed) {
|
|
99
|
-
return
|
|
103
|
+
return 2;
|
|
100
104
|
}
|
|
101
|
-
return
|
|
105
|
+
return 0;
|
|
102
106
|
}
|
|
103
107
|
cleanupInactivePeers() {
|
|
104
108
|
const now = Date.now();
|
|
105
|
-
this.peerLimiters.forEach((peerLimiter, peerId)
|
|
109
|
+
this.peerLimiters.forEach((peerLimiter, peerId)=>{
|
|
106
110
|
if (now - peerLimiter.lastAccess > CHECK_DISCONNECTED_PEERS_INTERVAL_MS) {
|
|
107
111
|
this.peerLimiters.delete(peerId);
|
|
108
112
|
}
|
|
@@ -131,18 +135,20 @@ export class SubProtocolRateLimiter {
|
|
|
131
135
|
* const limiter = new RequestResponseRateLimiter(peerManager, rateLimits);
|
|
132
136
|
*
|
|
133
137
|
* Note: Ensure to call `stop()` when shutting down to properly clean up all subprotocol limiters.
|
|
134
|
-
*/
|
|
135
|
-
|
|
136
|
-
|
|
138
|
+
*/ export class RequestResponseRateLimiter {
|
|
139
|
+
peerScoring;
|
|
140
|
+
subProtocolRateLimiters;
|
|
141
|
+
cleanupInterval;
|
|
142
|
+
constructor(peerScoring, rateLimits = DEFAULT_RATE_LIMITS){
|
|
137
143
|
this.peerScoring = peerScoring;
|
|
138
144
|
this.cleanupInterval = undefined;
|
|
139
145
|
this.subProtocolRateLimiters = new Map();
|
|
140
|
-
for (const [subProtocol, protocolLimits] of Object.entries(rateLimits))
|
|
146
|
+
for (const [subProtocol, protocolLimits] of Object.entries(rateLimits)){
|
|
141
147
|
this.subProtocolRateLimiters.set(subProtocol, new SubProtocolRateLimiter(protocolLimits.peerLimit.quotaCount, protocolLimits.peerLimit.quotaTimeMs, protocolLimits.globalLimit.quotaCount, protocolLimits.globalLimit.quotaTimeMs));
|
|
142
148
|
}
|
|
143
149
|
}
|
|
144
150
|
start() {
|
|
145
|
-
this.cleanupInterval = setInterval(()
|
|
151
|
+
this.cleanupInterval = setInterval(()=>{
|
|
146
152
|
this.cleanupInactivePeers();
|
|
147
153
|
}, CHECK_DISCONNECTED_PEERS_INTERVAL_MS);
|
|
148
154
|
}
|
|
@@ -152,24 +158,24 @@ export class RequestResponseRateLimiter {
|
|
|
152
158
|
return true;
|
|
153
159
|
}
|
|
154
160
|
const rateLimitStatus = limiter.allow(peerId);
|
|
155
|
-
switch
|
|
156
|
-
case
|
|
157
|
-
|
|
161
|
+
switch(rateLimitStatus){
|
|
162
|
+
case 2:
|
|
163
|
+
// Hitting a peer specific limit, we should lightly penalise the peer
|
|
164
|
+
this.peerScoring.penalizePeer(peerId, PeerErrorSeverity.HighToleranceError);
|
|
158
165
|
return false;
|
|
159
|
-
case
|
|
166
|
+
case 1:
|
|
167
|
+
// Hitting a global limit, we should not penalise the peer
|
|
160
168
|
return false;
|
|
161
169
|
default:
|
|
162
170
|
return true;
|
|
163
171
|
}
|
|
164
172
|
}
|
|
165
173
|
cleanupInactivePeers() {
|
|
166
|
-
this.subProtocolRateLimiters.forEach(limiter
|
|
174
|
+
this.subProtocolRateLimiters.forEach((limiter)=>limiter.cleanupInactivePeers());
|
|
167
175
|
}
|
|
168
176
|
/**
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
stop() {
|
|
177
|
+
* Make sure to call destroy on each of the sub protocol rate limiters when cleaning up
|
|
178
|
+
*/ stop() {
|
|
172
179
|
clearInterval(this.cleanupInterval);
|
|
173
180
|
}
|
|
174
181
|
}
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZV9saW1pdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3JlcXJlc3AvcmF0ZS1saW1pdGVyL3JhdGVfbGltaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFNekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdkQsZ0RBQWdEO0FBQ2hELE1BQU0sb0NBQW9DLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFNUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQVExQjs7O09BR0c7SUFDSCxZQUFZLFVBQWtCLEVBQUUsV0FBbUI7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUM7UUFDakMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUs7UUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvRCxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBU0QsSUFBSyxlQUlKO0FBSkQsV0FBSyxlQUFlO0lB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
|
|
@@ -4,52 +4,51 @@ export const DEFAULT_RATE_LIMITS = {
|
|
|
4
4
|
[ReqRespSubProtocol.PING]: {
|
|
5
5
|
peerLimit: {
|
|
6
6
|
quotaTimeMs: 1000,
|
|
7
|
-
quotaCount: 5
|
|
7
|
+
quotaCount: 5
|
|
8
8
|
},
|
|
9
9
|
globalLimit: {
|
|
10
10
|
quotaTimeMs: 1000,
|
|
11
|
-
quotaCount: 10
|
|
12
|
-
}
|
|
11
|
+
quotaCount: 10
|
|
12
|
+
}
|
|
13
13
|
},
|
|
14
14
|
[ReqRespSubProtocol.STATUS]: {
|
|
15
15
|
peerLimit: {
|
|
16
16
|
quotaTimeMs: 1000,
|
|
17
|
-
quotaCount: 5
|
|
17
|
+
quotaCount: 5
|
|
18
18
|
},
|
|
19
19
|
globalLimit: {
|
|
20
20
|
quotaTimeMs: 1000,
|
|
21
|
-
quotaCount: 10
|
|
22
|
-
}
|
|
21
|
+
quotaCount: 10
|
|
22
|
+
}
|
|
23
23
|
},
|
|
24
24
|
[ReqRespSubProtocol.TX]: {
|
|
25
25
|
peerLimit: {
|
|
26
26
|
quotaTimeMs: 1000,
|
|
27
|
-
quotaCount:
|
|
27
|
+
quotaCount: 10
|
|
28
28
|
},
|
|
29
29
|
globalLimit: {
|
|
30
30
|
quotaTimeMs: 1000,
|
|
31
|
-
quotaCount:
|
|
32
|
-
}
|
|
31
|
+
quotaCount: 20
|
|
32
|
+
}
|
|
33
33
|
},
|
|
34
34
|
[ReqRespSubProtocol.BLOCK]: {
|
|
35
35
|
peerLimit: {
|
|
36
36
|
quotaTimeMs: 1000,
|
|
37
|
-
quotaCount: 2
|
|
37
|
+
quotaCount: 2
|
|
38
38
|
},
|
|
39
39
|
globalLimit: {
|
|
40
40
|
quotaTimeMs: 1000,
|
|
41
|
-
quotaCount: 5
|
|
42
|
-
}
|
|
41
|
+
quotaCount: 5
|
|
42
|
+
}
|
|
43
43
|
},
|
|
44
44
|
[ReqRespSubProtocol.GOODBYE]: {
|
|
45
45
|
peerLimit: {
|
|
46
46
|
quotaTimeMs: 1000,
|
|
47
|
-
quotaCount: 5
|
|
47
|
+
quotaCount: 5
|
|
48
48
|
},
|
|
49
49
|
globalLimit: {
|
|
50
50
|
quotaTimeMs: 1000,
|
|
51
|
-
quotaCount: 10
|
|
52
|
-
}
|
|
53
|
-
}
|
|
51
|
+
quotaCount: 10
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
54
|
};
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZV9saW1pdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcmVxcmVzcC9yYXRlLWxpbWl0ZXIvcmF0ZV9saW1pdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFxQyxNQUFNLGlCQUFpQixDQUFDO0FBRXhGLDRDQUE0QztBQUM1QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBaUM7SUFDL0QsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN6QixTQUFTLEVBQUU7WUFDVCxXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsQ0FBQztTQUNkO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLEVBQUU7U0FDZjtLQUNGO0lBQ0QsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUMzQixTQUFTLEVBQUU7WUFDVCxXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsQ0FBQztTQUNkO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLEVBQUU7U0FDZjtLQUNGO0lBQ0QsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUN2QixTQUFTLEVBQUU7WUFDVCxXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsQ0FBQztTQUNkO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLEVBQUU7U0FDZjtLQUNGO0lBQ0QsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixTQUFTLEVBQUU7WUFDVCxXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsQ0FBQztTQUNkO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLENBQUM7U0FDZDtLQUNGO0lBQ0QsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUM1QixTQUFTLEVBQUU7WUFDVCxXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsQ0FBQztTQUNkO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLEVBQUU7U0FDZjtLQUNGO0NBQ0YsQ0FBQyJ9
|