Summary
ChainGetFinalizedTipset (Filecoin.ChainGetFinalizedTipSet) currently resolves finality by making a live F3GetLatestCertificate::get() RPC call, while ChainGetTipSetV2::get_latest_finalized_tipset (used for TipsetTag::Finalized in the V2 API) reads from the ChainStore-cached f3_finalized_tipset() introduced in PR #6780.
These two public RPCs can return divergent finalized tipsets during startup, after a cache reset, or whenever the F3 sidecar is temporarily unavailable.
Proposed Fix
Route ChainGetFinalizedTipset through ChainGetTipSetV2::get_latest_finalized_tipset (the shared helper) so both paths use the same source of truth, with the existing fallback to EC finality preserved.
References
Summary
ChainGetFinalizedTipset(Filecoin.ChainGetFinalizedTipSet) currently resolves finality by making a liveF3GetLatestCertificate::get()RPC call, whileChainGetTipSetV2::get_latest_finalized_tipset(used forTipsetTag::Finalizedin the V2 API) reads from theChainStore-cachedf3_finalized_tipset()introduced in PR #6780.These two public RPCs can return divergent finalized tipsets during startup, after a cache reset, or whenever the F3 sidecar is temporarily unavailable.
Proposed Fix
Route
ChainGetFinalizedTipsetthroughChainGetTipSetV2::get_latest_finalized_tipset(the shared helper) so both paths use the same source of truth, with the existing fallback to EC finality preserved.References