Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 21 additions & 8 deletions crates/api/src/builder/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ where
db: Arc<DB>,
chain_info: Arc<ChainInfo>,
simulator: S,
gossiper: Arc<G>,
gossiper: Option<Arc<G>>,
signing_context: Arc<RelaySigningContext>,
relay_config: Arc<RelayConfig>,
db_sender: Sender<DbInfo>,
Expand All @@ -119,7 +119,7 @@ where
db: Arc<DB>,
chain_info: Arc<ChainInfo>,
simulator: S,
gossiper: Arc<G>,
gossiper: Option<Arc<G>>,
signing_context: Arc<RelaySigningContext>,
relay_config: RelayConfig,
slot_update_subscription: Sender<Sender<ChainUpdate>>,
Expand Down Expand Up @@ -1301,8 +1301,12 @@ where
is_cancellations_enabled,
on_receive,
};
if let Err(err) = self.gossiper.broadcast_header(params).await {
error!(%err, "failed to broadcast header");
if let Some(gossiper) = &self.gossiper {
if let Err(err) = gossiper.broadcast_header(params).await {
error!(%err, "failed to broadcast header");
}
}else {
warn!("Gossiper is not available, skipping header broadcast");
}
}

Expand All @@ -1316,8 +1320,13 @@ where
slot: payload.slot(),
proposer_pub_key: payload.proposer_public_key().clone(),
};
if let Err(err) = self.gossiper.broadcast_payload(params).await {
error!(%err, "failed to broadcast payload");

if let Some(gossiper) = &self.gossiper {
if let Err(err) = gossiper.broadcast_payload(params).await {
error!(%err, "failed to broadcast payload");
}
}else {
warn!("Gossiper is not available, skipping payload broadcast");
}
}

Expand All @@ -1327,8 +1336,12 @@ where
request_id: &Uuid,
) {
let params = BroadcastCancellationParams { signed_cancellation, request_id: *request_id };
if let Err(err) = self.gossiper.broadcast_cancellation(params).await {
error!(request_id = %request_id, error = %err, "failed to broadcast header");
if let Some(gossiper) = &self.gossiper {
if let Err(err) = gossiper.broadcast_cancellation(params).await {
error!(%err, "failed to broadcast header");
}
}else {
warn!("Gossiper is not available, skipping header broadcast");
}
}
}
Expand Down
28 changes: 16 additions & 12 deletions crates/api/src/proposer/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ where
{
auctioneer: Arc<A>,
db: Arc<DB>,
gossiper: Arc<G>,
gossiper: Option<Arc<G>>,
broadcasters: Vec<Arc<BlockBroadcaster>>,
multi_beacon_client: Arc<M>,

Expand All @@ -99,7 +99,7 @@ where
pub fn new(
auctioneer: Arc<A>,
db: Arc<DB>,
gossiper: Arc<G>,
gossiper: Option<Arc<G>>,
broadcasters: Vec<Arc<BlockBroadcaster>>,
multi_beacon_client: Arc<M>,
chain_info: Arc<ChainInfo>,
Expand Down Expand Up @@ -671,16 +671,20 @@ where
let slot = signed_blinded_block.message().slot();

// Broadcast get payload request
if let Err(e) = proposer_api
.gossiper
.broadcast_get_payload(BroadcastGetPayloadParams {
signed_blinded_beacon_block: signed_blinded_block.clone(),
request_id,
})
.await
{
error!(request_id = %request_id, error = %e, "failed to broadcast get payload");
};
if let Some(gossiper) = &proposer_api.gossiper {
if let Err(e) = gossiper
.broadcast_get_payload(BroadcastGetPayloadParams {
signed_blinded_beacon_block: signed_blinded_block.clone(),
request_id,
})
.await
{
error!(request_id = %request_id, error = %e, "failed to broadcast get payload");
}
} else {
warn!(request_id = %request_id, "Gossiper is not available, skipping broadcast");
}


match proposer_api
._get_payload(signed_blinded_block, &mut trace, &request_id, user_agent)
Expand Down
2 changes: 1 addition & 1 deletion crates/api/src/proposer/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -988,7 +988,7 @@ mod proposer_api_tests {
>::new(
auctioneer.clone(),
Arc::new(MockDatabaseService::default()),
Arc::new(MockGossiper::new().unwrap()),
Some(Arc::new(MockGossiper::new().unwrap())),
vec![],
Arc::new(MockMultiBeaconClient::default()),
Arc::new(ChainInfo::for_holesky()),
Expand Down
24 changes: 15 additions & 9 deletions crates/api/src/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -150,14 +150,18 @@ impl ApiService {
.start(chain_updater_head_events, chain_updater_payload_events)
.await;
});

let gossiper = Arc::new(
GrpcGossiperClientManager::new(
config.relays.iter().map(|cfg| cfg.url.clone()).collect(),
)
.await
.expect("failed to initialise gRPC gossiper"),
);
let gossiper;
if config.relays.len() == 0 {
gossiper = None;
}else{
gossiper = Some(Arc::new(
GrpcGossiperClientManager::new(
config.relays.iter().map(|cfg| cfg.url.clone()).collect(),
)
.await
.expect("failed to initialise gRPC gossiper"),
));
}

let validator_preferences = Arc::new(config.validator_preferences.clone());

Expand All @@ -177,7 +181,9 @@ impl ApiService {
);
let builder_api = Arc::new(builder_api);

gossiper.start_server(builder_gossip_sender, proposer_gossip_sender).await;
if gossiper.is_some(){
gossiper.clone().unwrap().start_server(builder_gossip_sender, proposer_gossip_sender).await;
}

let proposer_api = Arc::new(ProposerApiProd::new(
auctioneer.clone(),
Expand Down
8 changes: 4 additions & 4 deletions crates/api/src/test_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ pub fn app() -> Router {
>::new(
Arc::new(MockAuctioneer::default()),
Arc::new(MockDatabaseService::default()),
Arc::new(MockGossiper::new().unwrap()),
Some(Arc::new(MockGossiper::new().unwrap())),
vec![Arc::new(BlockBroadcaster::Mock(MockBlockBroadcaster::default()))],
Arc::new(MockMultiBeaconClient::default()),
Arc::new(ChainInfo::for_mainnet()),
Expand Down Expand Up @@ -147,7 +147,7 @@ pub fn builder_api_app() -> (
Arc::new(MockDatabaseService::default()),
Arc::new(ChainInfo::for_mainnet()),
MockSimulator::default(),
Arc::new(MockGossiper::new().unwrap()),
Some(Arc::new(MockGossiper::new().unwrap())),
Arc::new(RelaySigningContext::default()),
RelayConfig::default(),
slot_update_sender.clone(),
Expand Down Expand Up @@ -212,7 +212,7 @@ pub fn proposer_api_app() -> (
>::new(
auctioneer.clone(),
Arc::new(MockDatabaseService::default()),
Arc::new(MockGossiper::new().unwrap()),
Some(Arc::new(MockGossiper::new().unwrap())),
vec![Arc::new(BlockBroadcaster::Mock(MockBlockBroadcaster::default()))],
Arc::new(MockMultiBeaconClient::default()),
Arc::new(ChainInfo::for_mainnet()),
Expand Down Expand Up @@ -314,7 +314,7 @@ pub fn constraints_api_app() -> (
database.clone(),
Arc::new(ChainInfo::for_mainnet()),
MockSimulator::default(),
Arc::new(MockGossiper::new().unwrap()),
Some(Arc::new(MockGossiper::new().unwrap())),
Arc::new(RelaySigningContext::default()),
RelayConfig::default(),
slot_update_sender.clone(),
Expand Down