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: usize,
14    pub capacity_per_user: usize,
15    // number of failovers to broadcast to when the primary network is alive
16    pub default_failovers: usize,
17    pub max_broadcasts_per_peer: usize,
18    pub mempool_snapshot_interval_secs: u64,
19    pub shared_mempool_ack_timeout_ms: u64,
20    pub shared_mempool_backoff_interval_ms: u64,
21    pub shared_mempool_batch_size: usize,
22    pub shared_mempool_max_concurrent_inbound_syncs: usize,
23    pub shared_mempool_tick_interval_ms: u64,
24    pub system_transaction_timeout_secs: u64,
25    pub system_transaction_gc_interval_ms: u64,
26}
27
28impl Default for MempoolConfig {
29    fn default() -> MempoolConfig {
30        MempoolConfig {
31            shared_mempool_tick_interval_ms: 1000,
32            shared_mempool_backoff_interval_ms: 30_000,
33            shared_mempool_batch_size: 100,
34            shared_mempool_ack_timeout_ms: 5_000,
35            shared_mempool_max_concurrent_inbound_syncs: 2,
36            // Allow for 1s latency with the default 500ms tick.
37            max_broadcasts_per_peer: 2,
38            mempool_snapshot_interval_secs: 180,
39            capacity: 100_000,
40            capacity_per_user: 100,
41            default_failovers: 3,
42            system_transaction_timeout_secs: 600,
43            system_transaction_gc_interval_ms: 60_000,
44        }
45    }
46}