Skip to content

Commit

Permalink
suzuka-full-node: finality view updates
Browse files Browse the repository at this point in the history
On receiving MCR commitment event for accepted block,
update the finalized block height in the executor.
  • Loading branch information
mzabaluev committed Jun 11, 2024
1 parent 0524288 commit 4139ad9
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions networks/suzuka/suzuka-full-node/src/partial.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ pub struct SuzukaPartialNode<T> {

impl<T> SuzukaPartialNode<T>
where
T: DynOptFinExecutor + Send + Sync,
T: DynOptFinExecutor + Clone + Send + Sync,
{
pub fn new<C>(
executor: T,
Expand All @@ -46,6 +46,7 @@ where
{
let (settlement_manager, commitment_events) = McrSettlementManager::new(settlement_client);
let (transaction_sender, transaction_receiver) = async_channel::unbounded();
let bg_executor = executor.clone();
(
Self {
executor,
Expand All @@ -54,7 +55,7 @@ where
light_node_client: Arc::new(RwLock::new(light_node_client)),
settlement_manager,
},
read_commitment_events(commitment_events),
read_commitment_events(commitment_events, bg_executor),
)
}

Expand Down Expand Up @@ -196,15 +197,23 @@ where
}
}

async fn read_commitment_events(mut stream: CommitmentEventStream) -> anyhow::Result<()> {
async fn read_commitment_events<T>(
mut stream: CommitmentEventStream,
executor: T,
) -> anyhow::Result<()>
where
T: DynOptFinExecutor + Send + Sync,
{
while let Some(res) = stream.next().await {
let event = res?;
match event {
BlockCommitmentEvent::Accepted(commitment) => {
debug!("Commitment accepted: {:?}", commitment);
executor.set_finalized_block_height(commitment.height)?;
}
BlockCommitmentEvent::Rejected { height, reason } => {
debug!("Commitment rejected: {:?} {:?}", height, reason);
// TODO: block reversion
}
}
}
Expand All @@ -213,7 +222,7 @@ async fn read_commitment_events(mut stream: CommitmentEventStream) -> anyhow::Re

impl<T> SuzukaFullNode for SuzukaPartialNode<T>
where
T: DynOptFinExecutor + Send + Sync,
T: DynOptFinExecutor + Clone + Send + Sync,
{
/// Runs the services until crash or shutdown.
async fn run_services(&self) -> Result<(), anyhow::Error> {
Expand Down

0 comments on commit 4139ad9

Please sign in to comment.