Skip to content
This repository was archived by the owner on Jan 16, 2026. It is now read-only.
Merged
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
6 changes: 6 additions & 0 deletions crates/node/service/src/actors/engine/actor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ pub struct EngineInboundData {
/// A channel to send [`OpAttributesWithParent`] to the engine actor.
pub attributes_tx: mpsc::Sender<OpAttributesWithParent>,
/// A channel to send [`OpExecutionPayloadEnvelope`] to the engine actor.
///
/// ## Note
/// The sequencer actor should not need to send [`OpExecutionPayloadEnvelope`]s to the engine
/// actor through that channel. Instead, it should use the `build_request_tx` channel to
/// trigger [`BuildTask`] tasks which should insert the block newly built to the engine
/// state upon completion.
pub unsafe_block_tx: mpsc::Sender<OpExecutionPayloadEnvelope>,
/// A channel to send reset requests.
pub reset_request_tx: mpsc::Sender<()>,
Expand Down
6 changes: 4 additions & 2 deletions crates/node/service/src/actors/network/actor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,9 @@ pub struct NetworkInboundData {
/// Handler for RPC Requests sent to the network actor.
pub rpc: mpsc::Sender<P2pRpcRequest>,
/// A channel to send unsafe blocks to the network actor.
Comment thread
theochap marked this conversation as resolved.
pub unsafe_blocks: mpsc::Sender<OpExecutionPayloadEnvelope>,
/// This channel should only be used by the sequencer actor/admin RPC api to forward their
/// newly produced unsafe blocks to the network actor.
pub gossip_payload_tx: mpsc::Sender<OpExecutionPayloadEnvelope>,
}

impl NetworkActor {
Expand All @@ -73,7 +75,7 @@ impl NetworkActor {
let (publish_tx, publish_rx) = tokio::sync::mpsc::channel(256);
let actor = Self { builder: driver, signer: signer_rx, rpc: rpc_rx, publish_rx };
let outbound_data =
NetworkInboundData { signer: signer_tx, rpc: rpc_tx, unsafe_blocks: publish_tx };
NetworkInboundData { signer: signer_tx, rpc: rpc_tx, gossip_payload_tx: publish_tx };
(outbound_data, actor)
}
}
Expand Down
3 changes: 2 additions & 1 deletion crates/node/service/src/actors/sequencer/actor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,8 @@ pub struct SequencerContext {
/// current unsafe head.
pub build_request_tx:
mpsc::Sender<(OpAttributesWithParent, mpsc::Sender<OpExecutionPayloadEnvelope>)>,
/// A sender to asynchronously sign and gossip built [`OpExecutionPayloadEnvelope`]s.
/// A sender to asynchronously sign and gossip built [`OpExecutionPayloadEnvelope`]s to the
/// network actor.
pub gossip_payload_tx: mpsc::Sender<OpExecutionPayloadEnvelope>,
}

Expand Down
4 changes: 2 additions & 2 deletions crates/node/service/src/service/core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ pub trait RollupNodeService {
) = Self::EngineActor::build(self.engine_builder());

// Create the p2p actor.
let (NetworkInboundData { signer, rpc: network_rpc, unsafe_blocks: _ }, network) =
let (NetworkInboundData { signer, rpc: network_rpc, gossip_payload_tx }, network) =
Self::NetworkActor::build(self.network_builder());

// Create the RPC server actor.
Expand Down Expand Up @@ -201,7 +201,7 @@ pub trait RollupNodeService {
build_request_tx: build_request_tx.expect(
"`build_request_tx` not set while in sequencer mode. This should never happen.",
),
gossip_payload_tx: unsafe_block_tx.clone(),
gossip_payload_tx,
cancellation: cancellation.clone(),
})
),
Expand Down