@@ -368,29 +368,18 @@ async fn fetch_f3_params_from_parent(
368368 // We use a dummy subnet ID here since F3 data is at the chain level, not subnet-specific
369369 let lotus_client = LotusJsonRPCClient :: new ( jsonrpc_client, SubnetID :: default ( ) ) ;
370370
371- // Fetch F3 certificate which contains instance ID and finalized epochs
371+ // Fetch F3 certificate which contains instance ID
372372 let certificate = lotus_client. f3_get_certificate ( ) . await ?;
373373
374374 match certificate {
375375 Some ( cert) => {
376+ // Use the fetched certificate's instance ID to get its base power table.
377+ // The finalized chain starts empty and subsequent certificates will be
378+ // fetched and processed properly.
376379 let instance_id = cert. gpbft_instance ;
377- tracing:: info!( "Found F3 instance ID: {}" , instance_id) ;
380+ tracing:: info!( "Starting F3 from instance ID: {}" , instance_id) ;
378381
379- // Extract finalized epochs from the EC chain
380- let finalized_epochs: Vec < i64 > =
381- cert. ec_chain . iter ( ) . map ( |entry| entry. epoch ) . collect ( ) ;
382-
383- if finalized_epochs. is_empty ( ) {
384- return Err ( anyhow:: anyhow!( "F3 certificate has empty EC chain" ) ) ;
385- }
386-
387- tracing:: info!(
388- "Found {} finalized epochs, latest: {}" ,
389- finalized_epochs. len( ) ,
390- finalized_epochs. iter( ) . max( ) . unwrap_or( & 0 )
391- ) ;
392-
393- // Get power table for this instance
382+ // Get base power table for this instance
394383 let power_table_response = lotus_client. f3_get_power_table ( instance_id) . await ?;
395384
396385 // Convert power entries
@@ -416,7 +405,7 @@ async fn fetch_f3_params_from_parent(
416405 Ok ( Some ( ipc:: F3Params {
417406 instance_id,
418407 power_table,
419- finalized_epochs,
408+ finalized_epochs : Vec :: new ( ) , // Start with empty finalized chain
420409 } ) )
421410 }
422411 None => Err ( anyhow:: anyhow!(
0 commit comments