diff --git a/Cargo.lock b/Cargo.lock
index 7b62adc38a0bb..b86251d97366b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -7248,7 +7248,6 @@ dependencies = [
"sui-json-rpc-types",
"sui-macros",
"sui-node",
- "sui-quorum-driver",
"sui-sdk",
"sui-simulator",
"sui-swarm",
@@ -7322,7 +7321,6 @@ dependencies = [
"sui-core",
"sui-json-rpc-types",
"sui-node",
- "sui-quorum-driver",
"sui-sdk",
"sui-types",
"telemetry-subscribers",
@@ -7644,7 +7642,6 @@ dependencies = [
"sui-json-rpc-types",
"sui-open-rpc",
"sui-open-rpc-macros",
- "sui-quorum-driver",
"sui-types",
"tokio",
"tracing",
@@ -7717,7 +7714,6 @@ dependencies = [
"sui-core",
"sui-json-rpc",
"sui-network",
- "sui-quorum-driver",
"sui-storage",
"sui-telemetry",
"sui-types",
@@ -7766,20 +7762,6 @@ dependencies = [
"workspace-hack 0.1.0",
]
-[[package]]
-name = "sui-quorum-driver"
-version = "0.1.0"
-dependencies = [
- "arc-swap",
- "prometheus",
- "scopeguard",
- "sui-core",
- "sui-types",
- "tokio",
- "tracing",
- "workspace-hack 0.1.0",
-]
-
[[package]]
name = "sui-sdk"
version = "0.0.0"
diff --git a/Cargo.toml b/Cargo.toml
index 75139b6d7cf1f..f30429147e82c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -22,7 +22,6 @@ members = [
"crates/sui-node",
"crates/sui-open-rpc",
"crates/sui-open-rpc-macros",
- "crates/sui-quorum-driver",
"crates/sui-sdk",
"crates/sui-simulator",
"crates/sui-storage",
diff --git a/crates/sui-benchmark/Cargo.toml b/crates/sui-benchmark/Cargo.toml
index b70f488b28c8a..fa46a02064af7 100644
--- a/crates/sui-benchmark/Cargo.toml
+++ b/crates/sui-benchmark/Cargo.toml
@@ -36,7 +36,6 @@ sui-core = { path = "../sui-core" }
sui-config = { path = "../sui-config" }
sui-types = { path = "../sui-types" }
sui-sdk = { path = "../sui-sdk" }
-sui-quorum-driver = { path = "../sui-quorum-driver" }
sui-node = { path = "../sui-node" }
sui-json-rpc-types = { path = "../sui-json-rpc-types" }
diff --git a/crates/sui-benchmark/src/drivers/bench_driver.rs b/crates/sui-benchmark/src/drivers/bench_driver.rs
index 31348f6a550db..59f05719f0fdf 100644
--- a/crates/sui-benchmark/src/drivers/bench_driver.rs
+++ b/crates/sui-benchmark/src/drivers/bench_driver.rs
@@ -24,8 +24,7 @@ use std::collections::{BTreeMap, VecDeque};
use std::sync::Arc;
use std::time::Duration;
use sui_core::authority_client::NetworkAuthorityClient;
-use sui_quorum_driver::QuorumDriverHandler;
-use sui_quorum_driver::QuorumDriverMetrics;
+use sui_core::quorum_driver::{QuorumDriverHandler, QuorumDriverMetrics};
use sui_types::crypto::EmptySignInfo;
use sui_types::messages::{
ExecuteTransactionRequest, ExecuteTransactionRequestType, ExecuteTransactionResponse,
diff --git a/crates/sui-benchmark/src/workloads/workload.rs b/crates/sui-benchmark/src/workloads/workload.rs
index a307df9dd061b..8c45602e21004 100644
--- a/crates/sui-benchmark/src/workloads/workload.rs
+++ b/crates/sui-benchmark/src/workloads/workload.rs
@@ -3,10 +3,10 @@
use async_trait::async_trait;
use std::{collections::HashMap, fmt};
+use sui_core::quorum_driver::{QuorumDriverHandler, QuorumDriverMetrics};
use sui_core::{
authority_aggregator::AuthorityAggregator, authority_client::NetworkAuthorityClient,
};
-use sui_quorum_driver::QuorumDriverMetrics;
use sui_types::{
base_types::{ObjectID, ObjectRef},
crypto::EmptySignInfo,
@@ -15,7 +15,6 @@ use sui_types::{
};
use futures::FutureExt;
-use sui_quorum_driver::QuorumDriverHandler;
use sui_types::{
base_types::SuiAddress,
crypto::AccountKeyPair,
diff --git a/crates/sui-core/src/lib.rs b/crates/sui-core/src/lib.rs
index cf2baf24d386e..4ffdf98d3670d 100644
--- a/crates/sui-core/src/lib.rs
+++ b/crates/sui-core/src/lib.rs
@@ -14,6 +14,7 @@ pub mod event_handler;
pub mod execution_engine;
pub mod gateway_state;
pub mod metrics;
+pub mod quorum_driver;
pub mod safe_client;
pub mod streamer;
pub mod transaction_input_checker;
diff --git a/crates/sui-quorum-driver/src/metrics.rs b/crates/sui-core/src/quorum_driver/metrics.rs
similarity index 100%
rename from crates/sui-quorum-driver/src/metrics.rs
rename to crates/sui-core/src/quorum_driver/metrics.rs
diff --git a/crates/sui-quorum-driver/src/lib.rs b/crates/sui-core/src/quorum_driver/mod.rs
similarity index 98%
rename from crates/sui-quorum-driver/src/lib.rs
rename to crates/sui-core/src/quorum_driver/mod.rs
index 0acd99f9e7c1b..7a9868546dfe2 100644
--- a/crates/sui-quorum-driver/src/lib.rs
+++ b/crates/sui-core/src/quorum_driver/mod.rs
@@ -1,6 +1,9 @@
// Copyright (c) 2022, Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0
+mod metrics;
+pub use metrics::*;
+
use arc_swap::ArcSwap;
use std::sync::Arc;
@@ -9,9 +12,8 @@ use tokio::task::JoinHandle;
use tracing::Instrument;
use tracing::{debug, error, warn};
-pub use metrics::QuorumDriverMetrics;
-use sui_core::authority_aggregator::AuthorityAggregator;
-use sui_core::authority_client::AuthorityAPI;
+use crate::authority_aggregator::AuthorityAggregator;
+use crate::authority_client::AuthorityAPI;
use sui_types::error::{SuiError, SuiResult};
use sui_types::messages::{
CertifiedTransaction, CertifiedTransactionEffects, ExecuteTransactionRequest,
@@ -22,7 +24,6 @@ pub enum QuorumTask {
ProcessCertificate(CertifiedTransaction),
UpdateCommittee(AuthorityAggregator),
}
-pub mod metrics;
/// A handler to wrap around QuorumDriver. This handler should be owned by the node with exclusive
/// mutability.
diff --git a/crates/sui-json-rpc/Cargo.toml b/crates/sui-json-rpc/Cargo.toml
index a3e9091b180c5..b218560ff9524 100644
--- a/crates/sui-json-rpc/Cargo.toml
+++ b/crates/sui-json-rpc/Cargo.toml
@@ -26,7 +26,6 @@ sui-core = { path = "../sui-core" }
sui-types = { path = "../sui-types" }
sui-json = { path = "../sui-json" }
sui-open-rpc = { path = "../sui-open-rpc" }
-sui-quorum-driver = { path = "../sui-quorum-driver" }
sui-open-rpc-macros = { path = "../sui-open-rpc-macros" }
sui-json-rpc-types = { path = "../sui-json-rpc-types" }
sui-cost = { path = "../sui-cost" }
diff --git a/crates/sui-json-rpc/src/quorum_driver_api.rs b/crates/sui-json-rpc/src/quorum_driver_api.rs
index cd804e9c1a6f5..7c82bbe4a1018 100644
--- a/crates/sui-json-rpc/src/quorum_driver_api.rs
+++ b/crates/sui-json-rpc/src/quorum_driver_api.rs
@@ -12,9 +12,9 @@ use signature::Signature;
use std::sync::Arc;
use sui_core::authority::{AuthorityStore, ResolverWrapper};
use sui_core::authority_client::NetworkAuthorityClient;
+use sui_core::quorum_driver::QuorumDriver;
use sui_json_rpc_types::SuiExecuteTransactionResponse;
use sui_open_rpc::Module;
-use sui_quorum_driver::QuorumDriver;
use sui_types::crypto::SignatureScheme;
use sui_types::messages::{ExecuteTransactionRequest, ExecuteTransactionRequestType};
use sui_types::sui_serde::Base64;
diff --git a/crates/sui-node/Cargo.toml b/crates/sui-node/Cargo.toml
index 7f59f3b6b7cf1..84be7c53d8604 100644
--- a/crates/sui-node/Cargo.toml
+++ b/crates/sui-node/Cargo.toml
@@ -26,7 +26,6 @@ sui-network = { path = "../sui-network" }
sui-json-rpc = { path = "../sui-json-rpc" }
sui-telemetry = { path = "../sui-telemetry" }
sui-types = { path = "../sui-types" }
-sui-quorum-driver = { path = "../sui-quorum-driver" }
telemetry-subscribers = "0.1.0"
mysten-network = "0.1.0"
diff --git a/crates/sui-node/src/lib.rs b/crates/sui-node/src/lib.rs
index ff54e39c342de..ce5d7bf47ded9 100644
--- a/crates/sui-node/src/lib.rs
+++ b/crates/sui-node/src/lib.rs
@@ -15,6 +15,7 @@ use sui_config::NodeConfig;
use sui_core::authority_active::checkpoint_driver::CheckpointMetrics;
use sui_core::authority_aggregator::{AuthAggMetrics, AuthorityAggregator};
use sui_core::authority_server::ValidatorService;
+use sui_core::quorum_driver::{QuorumDriver, QuorumDriverHandler, QuorumDriverMetrics};
use sui_core::safe_client::SafeClientMetrics;
use sui_core::transaction_streamer::TransactionStreamer;
use sui_core::{
@@ -29,8 +30,6 @@ use sui_core::{
use sui_json_rpc::bcs_api::BcsApiImpl;
use sui_json_rpc::streaming_api::TransactionStreamingApiImpl;
use sui_network::api::ValidatorServer;
-use sui_quorum_driver::QuorumDriverMetrics;
-use sui_quorum_driver::{QuorumDriver, QuorumDriverHandler};
use sui_storage::{
event_store::{EventStoreType, SqlEventStore},
node_sync_store::NodeSyncStore,
diff --git a/crates/sui-quorum-driver/Cargo.toml b/crates/sui-quorum-driver/Cargo.toml
deleted file mode 100644
index 94678147f15e9..0000000000000
--- a/crates/sui-quorum-driver/Cargo.toml
+++ /dev/null
@@ -1,18 +0,0 @@
-[package]
-name = "sui-quorum-driver"
-version = "0.1.0"
-authors = ["Mysten Labs "]
-license = "Apache-2.0"
-publish = false
-edition = "2021"
-
-[dependencies]
-arc-swap = "1.5.1"
-tokio = { version = "1.20.1", features = ["full"] }
-tracing = "0.1.36"
-prometheus = "0.13.2"
-scopeguard = "1.1"
-
-sui-core = { path = "../sui-core" }
-sui-types = { path = "../sui-types" }
-workspace-hack = { path = "../workspace-hack"}
diff --git a/crates/sui/Cargo.toml b/crates/sui/Cargo.toml
index c97b1957d88e9..dcdcd81fe0b23 100644
--- a/crates/sui/Cargo.toml
+++ b/crates/sui/Cargo.toml
@@ -68,7 +68,6 @@ typed-store-derive = "0.1.0"
jsonrpsee = { version = "0.15.1", features = ["full"] }
test-utils = { path = "../test-utils" }
-sui-quorum-driver = { path = "../sui-quorum-driver" }
rand = "0.8.5"
move-package = { git = "https://github.com/move-language/move", rev = "e1e647b73dbd3652aabb2020728a4a517c26e28e" }
sui-core = { path = "../sui-core" }
diff --git a/crates/sui/tests/quorum_driver_tests.rs b/crates/sui/tests/quorum_driver_tests.rs
index 729ced3e5fa5f..dfd580ca91a84 100644
--- a/crates/sui/tests/quorum_driver_tests.rs
+++ b/crates/sui/tests/quorum_driver_tests.rs
@@ -4,8 +4,8 @@
use std::time::Duration;
use sui_core::authority_aggregator::AuthorityAggregator;
use sui_core::authority_client::NetworkAuthorityClient;
+use sui_core::quorum_driver::{QuorumDriverHandler, QuorumDriverMetrics};
use sui_node::SuiNode;
-use sui_quorum_driver::{QuorumDriverHandler, QuorumDriverMetrics};
use sui_types::base_types::SuiAddress;
use sui_types::messages::{
ExecuteTransactionRequest, ExecuteTransactionRequestType, ExecuteTransactionResponse,