Skip to content

Commit 541ae00

Browse files
feat(starknet_mempool_p2p): add class manager to propogator
1 parent 24a9f6a commit 541ae00

File tree

6 files changed

+53
-22
lines changed

6 files changed

+53
-22
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/starknet_mempool_p2p/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ papyrus_network.workspace = true
1616
papyrus_protobuf.workspace = true
1717
serde.workspace = true
1818
starknet_api.workspace = true
19+
starknet_class_manager_types.workspace = true
1920
starknet_gateway_types.workspace = true
2021
starknet_mempool_p2p_types.workspace = true
2122
starknet_sequencer_infra.workspace = true

crates/starknet_mempool_p2p/src/lib.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ pub mod runner;
55
use futures::FutureExt;
66
use papyrus_network::gossipsub_impl::Topic;
77
use papyrus_network::network_manager::{BroadcastTopicChannels, NetworkManager};
8+
use starknet_class_manager_types::transaction_converter::TransactionConverter;
9+
use starknet_class_manager_types::SharedClassManagerClient;
810
use starknet_gateway_types::communication::SharedGatewayClient;
911

1012
use crate::config::MempoolP2pConfig;
@@ -16,7 +18,12 @@ pub const MEMPOOL_TOPIC: &str = "starknet_mempool_transaction_propagation/0.1.0"
1618
pub fn create_p2p_propagator_and_runner(
1719
mempool_p2p_config: MempoolP2pConfig,
1820
gateway_client: SharedGatewayClient,
21+
class_manager_client: SharedClassManagerClient,
1922
) -> (MempoolP2pPropagator, MempoolP2pRunner) {
23+
let transaction_converter = TransactionConverter::new(
24+
class_manager_client.clone(),
25+
mempool_p2p_config.network_config.chain_id.clone(),
26+
);
2027
let mut network_manager = NetworkManager::new(
2128
mempool_p2p_config.network_config,
2229
// TODO(Shahak): Consider filling this once the sequencer node has a name.
@@ -30,7 +37,8 @@ pub fn create_p2p_propagator_and_runner(
3037
)
3138
.expect("Failed to register broadcast topic");
3239
let network_future = network_manager.run();
33-
let mempool_p2p_propagator = MempoolP2pPropagator::new(broadcast_topic_client.clone());
40+
let mempool_p2p_propagator =
41+
MempoolP2pPropagator::new(broadcast_topic_client.clone(), transaction_converter);
3442
let mempool_p2p_runner = MempoolP2pRunner::new(
3543
network_future.boxed(),
3644
broadcasted_messages_receiver,

crates/starknet_mempool_p2p/src/propagator/mod.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ mod test;
44
use async_trait::async_trait;
55
use papyrus_network::network_manager::{BroadcastTopicClient, BroadcastTopicClientTrait};
66
use papyrus_protobuf::mempool::RpcTransactionWrapper;
7+
use starknet_class_manager_types::transaction_converter::TransactionConverter;
78
use starknet_mempool_p2p_types::communication::{
89
MempoolP2pPropagatorRequest,
910
MempoolP2pPropagatorResponse,
@@ -15,11 +16,15 @@ use tracing::warn;
1516

1617
pub struct MempoolP2pPropagator {
1718
broadcast_topic_client: BroadcastTopicClient<RpcTransactionWrapper>,
19+
_transaction_converter: TransactionConverter,
1820
}
1921

2022
impl MempoolP2pPropagator {
21-
pub fn new(broadcast_topic_client: BroadcastTopicClient<RpcTransactionWrapper>) -> Self {
22-
Self { broadcast_topic_client }
23+
pub fn new(
24+
broadcast_topic_client: BroadcastTopicClient<RpcTransactionWrapper>,
25+
transaction_converter: TransactionConverter,
26+
) -> Self {
27+
Self { broadcast_topic_client, _transaction_converter: transaction_converter }
2328
}
2429
}
2530

crates/starknet_mempool_p2p/src/propagator/test.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::sync::Arc;
2+
13
use futures::stream::StreamExt;
24
use papyrus_network::network_manager::test_utils::{
35
mock_register_broadcast_topic,
@@ -8,7 +10,10 @@ use papyrus_network::network_manager::BroadcastTopicChannels;
810
use papyrus_network_types::network_types::BroadcastedMessageMetadata;
911
use papyrus_protobuf::mempool::RpcTransactionWrapper;
1012
use papyrus_test_utils::{get_rng, GetTestInstance};
13+
use starknet_api::core::ChainId;
1114
use starknet_api::rpc_transaction::RpcTransaction;
15+
use starknet_class_manager_types::transaction_converter::TransactionConverter;
16+
use starknet_class_manager_types::EmptyClassManagerClient;
1217
use starknet_mempool_p2p_types::communication::MempoolP2pPropagatorRequest;
1318
use starknet_sequencer_infra::component_definitions::ComponentRequestHandler;
1419
use tokio::time::timeout;
@@ -25,7 +30,11 @@ async fn process_handle_add_tx() {
2530
subscriber_channels;
2631
let BroadcastNetworkMock { mut messages_to_broadcast_receiver, .. } = mock_network;
2732
let rpc_transaction = RpcTransaction::get_test_instance(&mut get_rng());
28-
let mut mempool_p2p_propagator = MempoolP2pPropagator::new(broadcast_topic_client);
33+
// TODO(noamsp): use MockTransactionConverterTrait
34+
let transaction_converter =
35+
TransactionConverter::new(Arc::new(EmptyClassManagerClient), ChainId::create_for_testing());
36+
let mut mempool_p2p_propagator =
37+
MempoolP2pPropagator::new(broadcast_topic_client, transaction_converter);
2938
mempool_p2p_propagator
3039
.handle_request(MempoolP2pPropagatorRequest::AddTransaction(rpc_transaction.clone()))
3140
.await;
@@ -41,7 +50,11 @@ async fn process_handle_continue_propagation() {
4150
subscriber_channels;
4251
let BroadcastNetworkMock { mut continue_propagation_receiver, .. } = mock_network;
4352
let propagation_metadata = BroadcastedMessageMetadata::get_test_instance(&mut get_rng());
44-
let mut mempool_p2p_propagator = MempoolP2pPropagator::new(broadcast_topic_client);
53+
// TODO(noamsp): use MockTransactionConverterTrait
54+
let transaction_converter =
55+
TransactionConverter::new(Arc::new(EmptyClassManagerClient), ChainId::create_for_testing());
56+
let mut mempool_p2p_propagator =
57+
MempoolP2pPropagator::new(broadcast_topic_client, transaction_converter);
4558
mempool_p2p_propagator
4659
.handle_request(MempoolP2pPropagatorRequest::ContinuePropagation(
4760
propagation_metadata.clone(),

crates/starknet_sequencer_node/src/components.rs

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -103,23 +103,26 @@ pub fn create_node_components(
103103
ActiveComponentExecutionMode::Disabled => None,
104104
};
105105

106-
let (mempool_p2p_propagator, mempool_p2p_runner) = match config
107-
.components
108-
.mempool_p2p
109-
.execution_mode
110-
{
111-
ReactiveComponentExecutionMode::LocalExecutionWithRemoteDisabled
112-
| ReactiveComponentExecutionMode::LocalExecutionWithRemoteEnabled => {
113-
let gateway_client =
114-
clients.get_gateway_shared_client().expect("Gateway Client should be available");
115-
let (mempool_p2p_propagator, mempool_p2p_runner) =
116-
create_p2p_propagator_and_runner(config.mempool_p2p_config.clone(), gateway_client);
117-
(Some(mempool_p2p_propagator), Some(mempool_p2p_runner))
118-
}
119-
ReactiveComponentExecutionMode::Disabled | ReactiveComponentExecutionMode::Remote => {
120-
(None, None)
121-
}
122-
};
106+
let (mempool_p2p_propagator, mempool_p2p_runner) =
107+
match config.components.mempool_p2p.execution_mode {
108+
ReactiveComponentExecutionMode::LocalExecutionWithRemoteDisabled
109+
| ReactiveComponentExecutionMode::LocalExecutionWithRemoteEnabled => {
110+
let gateway_client = clients
111+
.get_gateway_shared_client()
112+
.expect("Gateway Client should be available");
113+
// TODO: Remove this and use the real client instead once implemented.
114+
let class_manager_client = Arc::new(EmptyClassManagerClient);
115+
let (mempool_p2p_propagator, mempool_p2p_runner) = create_p2p_propagator_and_runner(
116+
config.mempool_p2p_config.clone(),
117+
gateway_client,
118+
class_manager_client,
119+
);
120+
(Some(mempool_p2p_propagator), Some(mempool_p2p_runner))
121+
}
122+
ReactiveComponentExecutionMode::Disabled | ReactiveComponentExecutionMode::Remote => {
123+
(None, None)
124+
}
125+
};
123126

124127
let mempool = match config.components.mempool.execution_mode {
125128
ReactiveComponentExecutionMode::LocalExecutionWithRemoteDisabled

0 commit comments

Comments
 (0)