diem_config/config/
mempool_config.rs

1// Copyright (c) The Diem Core Contributors
2// SPDX-License-Identifier: Apache-2.0
3
4// Copyright 2021 Conflux Foundation. All rights reserved.
5// Conflux is free software and distributed under GNU General Public License.
6// See http://www.gnu.org/licenses/
7
8use serde::{Deserialize, Serialize};
9
10#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
11#[serde(default, deny_unknown_fields)]
12pub struct MempoolConfig {
13    pub capacity_per_sender: usize,
14    pub max_broadcasts_per_peer: usize,
15    pub shared_mempool_ack_timeout_ms: u64,
16    pub shared_mempool_backoff_interval_ms: u64,
17    pub shared_mempool_batch_size: usize,
18    pub shared_mempool_max_concurrent_inbound_syncs: usize,
19    pub shared_mempool_tick_interval_ms: u64,
20    pub system_transaction_timeout_secs: u64,
21    pub system_transaction_gc_interval_ms: u64,
22}
23
24impl Default for MempoolConfig {
25    fn default() -> MempoolConfig {
26        MempoolConfig {
27            shared_mempool_tick_interval_ms: 1000,
28            shared_mempool_backoff_interval_ms: 30_000,
29            shared_mempool_batch_size: 100,
30            shared_mempool_ack_timeout_ms: 5_000,
31            shared_mempool_max_concurrent_inbound_syncs: 2,
32            // Allow for 1s latency with the default 500ms tick.
33            max_broadcasts_per_peer: 2,
34            // ~3x burst headroom over legitimate per-validator traffic.
35            capacity_per_sender: 128,
36            system_transaction_timeout_secs: 600,
37            system_transaction_gc_interval_ms: 60_000,
38        }
39    }
40}