diff --git a/src/rpc/methods/chain.rs b/src/rpc/methods/chain.rs index 3e2d96f8162b..78996371bb4e 100644 --- a/src/rpc/methods/chain.rs +++ b/src/rpc/methods/chain.rs @@ -167,58 +167,10 @@ impl RpcMethod<0> for ChainGetFinalizedTipset { (): Self::Params, _: &http::Extensions, ) -> Result { - let head = ctx.chain_store().heaviest_tipset(); - let ec_finality_epoch = (head.epoch() - ctx.chain_config().policy.chain_finality).max(0); - - // Either get the f3 finalized tipset or the ec finalized tipset - match get_f3_finality_tipset(&ctx, ec_finality_epoch).await { - Ok(f3_tipset) => { - tracing::debug!("Using F3 finalized tipset at epoch {}", f3_tipset.epoch()); - Ok(f3_tipset) - } - Err(_) => { - // fallback to ec finality - tracing::warn!("F3 finalization unavailable, falling back to EC finality"); - let ec_tipset = ctx.chain_index().tipset_by_height( - ec_finality_epoch, - head, - ResolveNullTipset::TakeOlder, - )?; - Ok(ec_tipset) - } - } + Ok(ChainGetTipSetV2::get_latest_finalized_tipset(&ctx).await?) } } -// get f3 finalized tipset based on ec finality epoch -async fn get_f3_finality_tipset( - ctx: &Ctx, - ec_finality_epoch: ChainEpoch, -) -> Result { - let f3_finalized_cert = crate::rpc::f3::F3GetLatestCertificate::get() - .await - .map_err(|e| anyhow::anyhow!("Failed to get F3 certificate: {}", e))?; - - let f3_finalized_head = f3_finalized_cert.chain_head(); - if f3_finalized_head.epoch < ec_finality_epoch { - return Err(anyhow::anyhow!( - "F3 finalized tipset epoch {} is further back than EC finalized tipset epoch {}", - f3_finalized_head.epoch, - ec_finality_epoch - )); - } - - ctx.chain_index() - .load_required_tipset(&f3_finalized_head.key) - .map_err(|e| { - anyhow::anyhow!( - "Failed to load F3 finalized tipset at epoch {}: {}", - f3_finalized_head.epoch, - e - ) - }) -} - pub enum ChainGetMessage {} impl RpcMethod<1> for ChainGetMessage { const NAME: &'static str = "Filecoin.ChainGetMessage";