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 leader_schedule;
25mod leader_scoring;
26mod leader_timeout;
27mod linearizer;
28mod metrics;
29mod network;
30mod observer_service;
31mod observer_subscriber;
32mod peers_pool;
33mod proposer;
34mod round_prober;
35mod round_tracker;
36mod stake_aggregator;
37pub mod storage;
38mod subscriber;
39mod synchronizer;
40mod threshold_clock;
41mod transaction;
42mod transaction_vote_tracker;
43mod universal_committer;
44
45/// Consensus test utilities.
46mod commit_test_fixture;
47#[cfg(test)]
48mod test_dag;
49mod test_dag_builder;
50#[cfg(test)]
51mod test_dag_parser;
52
53/// Randomized integration tests.
54#[cfg(test)]
55#[path = "tests/randomized_tests.rs"]
56mod randomized_tests;
57
58/// Exported Consensus API.
59pub use authority_node::{ConsensusAuthority, NetworkType};
60pub use block::BlockAPI;
61
62/// Exported API for testing and tools.
63pub use block::{TestBlock, Transaction, VerifiedBlock};
64pub use commit::{CommitAPI, CommitDigest, CommitIndex, CommitRange, CommitRef, CommittedSubDag};
65pub use commit_consumer::{CommitConsumerArgs, CommitConsumerMonitor};
66pub use context::Clock;
67pub use metrics::Metrics;
68pub use transaction::{
69    BlockStatus, ClientError, TransactionClient, TransactionVerifier, ValidationError,
70};
71
72// Exported API for benchmarking
73pub use block_verifier::{BlockVerifier, NoopBlockVerifier};
74pub use commit_finalizer::CommitFinalizer;
75pub use context::Context;
76pub use dag_state::DagState;
77pub use linearizer::Linearizer;
78pub use storage::mem_store::MemStore;
79pub use test_dag_builder::DagBuilder;
80pub use transaction_vote_tracker::TransactionVoteTracker;
81
82// Exported API for simtests.
83#[cfg(msim)]
84pub use block::Slot;
85pub use commit_test_fixture::{
86    CommitTestFixture, RandomDag, RandomDagConfig, RandomDagIterator, assert_commit_sequences_match,
87};
88#[cfg(msim)]
89pub use network::tonic_network::to_socket_addr;
90#[cfg(msim)]
91pub use transaction::NoopTransactionVerifier;