From 244d9d149f15f4e000fb41d90a862e6b512cd6c8 Mon Sep 17 00:00:00 2001 From: Youngjoon Lee <5462944+youngjoon-lee@users.noreply.github.com> Date: Fri, 15 Mar 2024 17:54:01 +0900 Subject: [PATCH] add mixnet backed for cryptarchia consensus --- .../cryptarchia-consensus/Cargo.toml | 1 + .../src/network/adapters/mod.rs | 4 ++-- .../network/adapters/{libp2p.rs => p2p.rs} | 20 +++++++++++-------- 3 files changed, 15 insertions(+), 10 deletions(-) rename nomos-services/cryptarchia-consensus/src/network/adapters/{libp2p.rs => p2p.rs} (87%) diff --git a/nomos-services/cryptarchia-consensus/Cargo.toml b/nomos-services/cryptarchia-consensus/Cargo.toml index 25aec05a..db5d5048 100644 --- a/nomos-services/cryptarchia-consensus/Cargo.toml +++ b/nomos-services/cryptarchia-consensus/Cargo.toml @@ -36,6 +36,7 @@ serde_json = { version = "1", optional = true } [features] default = [] libp2p = ["nomos-network/libp2p", "nomos-libp2p"] +mixnet = ["nomos-network/mixnet", "nomos-libp2p"] openapi = ["dep:utoipa", "serde_json"] [dev-dependencies] diff --git a/nomos-services/cryptarchia-consensus/src/network/adapters/mod.rs b/nomos-services/cryptarchia-consensus/src/network/adapters/mod.rs index a22ade97..27e673cb 100644 --- a/nomos-services/cryptarchia-consensus/src/network/adapters/mod.rs +++ b/nomos-services/cryptarchia-consensus/src/network/adapters/mod.rs @@ -1,2 +1,2 @@ -#[cfg(feature = "libp2p")] -pub mod libp2p; +#[cfg(any(feature = "libp2p", feature = "mixnet"))] +pub mod p2p; diff --git a/nomos-services/cryptarchia-consensus/src/network/adapters/libp2p.rs b/nomos-services/cryptarchia-consensus/src/network/adapters/p2p.rs similarity index 87% rename from nomos-services/cryptarchia-consensus/src/network/adapters/libp2p.rs rename to nomos-services/cryptarchia-consensus/src/network/adapters/p2p.rs index 306f3c39..2ed07f0e 100644 --- a/nomos-services/cryptarchia-consensus/src/network/adapters/libp2p.rs +++ b/nomos-services/cryptarchia-consensus/src/network/adapters/p2p.rs @@ -7,8 +7,12 @@ use tokio_stream::{wrappers::BroadcastStream, StreamExt}; // internal use crate::network::{messages::NetworkMessage, BoxedStream, NetworkAdapter}; use nomos_core::{block::Block, wire}; +#[cfg(feature = "libp2p")] +use nomos_network::backends::libp2p::Libp2p as Backend; +#[cfg(feature = "mixnet")] +use nomos_network::backends::mixnet::MixnetNetworkBackend as Backend; use nomos_network::{ - backends::libp2p::{Command, Event, EventKind, Libp2p}, + backends::libp2p::{Command, Event, EventKind}, NetworkMsg, NetworkService, }; use overwatch_rs::services::{relay::OutboundRelay, ServiceData}; @@ -18,21 +22,21 @@ const BUFFER_SIZE: usize = 64; type Relay = OutboundRelay< as ServiceData>::Message>; #[derive(Clone)] -pub struct LibP2pAdapter +pub struct P2pAdapter where Tx: Clone + Eq + Hash, BlobCert: Clone + Eq + Hash, { - network_relay: OutboundRelay< as ServiceData>::Message>, + network_relay: OutboundRelay< as ServiceData>::Message>, blocks: tokio::sync::broadcast::Sender>, } -impl LibP2pAdapter +impl P2pAdapter where Tx: Clone + Eq + Hash + Serialize, BlobCert: Clone + Eq + Hash + Serialize, { - async fn subscribe(relay: &Relay, topic: &str) { + async fn subscribe(relay: &Relay, topic: &str) { if let Err((e, _)) = relay .send(NetworkMsg::Process(Command::Subscribe(topic.into()))) .await @@ -43,16 +47,16 @@ where } #[async_trait::async_trait] -impl NetworkAdapter for LibP2pAdapter +impl NetworkAdapter for P2pAdapter where Tx: Serialize + DeserializeOwned + Clone + Eq + Hash + Send + 'static, BlobCert: Serialize + DeserializeOwned + Clone + Eq + Hash + Send + 'static, { - type Backend = Libp2p; + type Backend = Backend; type Tx = Tx; type BlobCertificate = BlobCert; - async fn new(network_relay: Relay) -> Self { + async fn new(network_relay: Relay) -> Self { let relay = network_relay.clone(); Self::subscribe(&relay, TOPIC).await; let blocks = tokio::sync::broadcast::Sender::new(BUFFER_SIZE);