Skip to main content

consensus_core/
lib.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4/// Consensus modules.
5mod ancestor;
6mod authority_node;
7mod authority_service;
8mod base_committer;
9mod block;
10mod block_manager;
11mod block_sync_service;
12mod block_verifier;
13mod commit;
14mod commit_consumer;
15mod commit_finalizer;
16mod commit_observer;
17mod commit_syncer;
18mod commit_vote_monitor;
19mod context;
20mod core;
21mod core_thread;
22mod dag_state;
23mod error;
24mod flex_committer;
25mod leader_schedule;
26mod leader_schedule_v3;
27mod leader_scoring;
28mod leader_slot_decider;
29mod leader_timeout;
30mod linearizer;
31mod metrics;
32mod network;
33mod observer_service;
34mod observer_subscriber;
35mod peers_pool;
36mod proposer;
37mod round_prober;
38mod round_tracker;
39mod stake_aggregator;
40pub mod storage;
41mod subscriber;
42mod synchronizer;
43mod task;
44mod threshold_clock;
45mod transaction;
46mod transaction_vote_tracker;
47mod universal_committer;
48
49/// Consensus test utilities.
50mod commit_test_fixture;
51#[cfg(test)]
52mod test_dag;
53mod test_dag_builder;
54#[cfg(test)]
55mod test_dag_parser;
56
57/// Randomized integration tests.
58#[cfg(test)]
59#[path = "tests/randomized_tests.rs"]
60mod randomized_tests;
61
62/// Exported Consensus API.
63pub use authority_node::{ConsensusAuthority, NetworkType};
64pub use block::BlockAPI;
65
66/// Exported API for testing and tools.
67pub use block::{TestBlock, Transaction, VerifiedBlock};
68pub use commit::{
69    CommitAPI, CommitDigest, CommitIndex, CommitRange, CommitRef, CommittedSubDag, TrustedCommit,
70};
71pub use commit_consumer::{CommitConsumerArgs, CommitConsumerMonitor};
72pub use context::Clock;
73pub use metrics::Metrics;
74pub use network::RandomnessSignatureHandler;
75pub use transaction::{
76    BlockStatus, ClientError, LimitReached, Priority, TransactionClient, TransactionPool,
77    TransactionVerifier, ValidationError,
78};
79
80// Exported API for benchmarking
81pub use block_verifier::{BlockVerifier, NoopBlockVerifier};
82pub use commit_finalizer::CommitFinalizer;
83pub use context::Context;
84pub use dag_state::DagState;
85pub use linearizer::Linearizer;
86pub use storage::mem_store::MemStore;
87pub use test_dag_builder::DagBuilder;
88pub use transaction_vote_tracker::TransactionVoteTracker;
89
90// Exported API for simtests.
91#[cfg(msim)]
92pub use block::Slot;
93pub use commit_test_fixture::{
94    CommitTestFixture, RandomDag, RandomDagConfig, RandomDagIterator, assert_commit_sequences_match,
95};
96#[cfg(msim)]
97pub use network::tonic_network::to_socket_addr;
98#[cfg(msim)]
99pub use transaction::NoopTransactionVerifier;