@@ -78,12 +78,9 @@ pub async fn main() -> Result<(), ExitMessage> {
7878 let _span = info_span ! ( "node" , node = fnn:: get_node_prefix( ) ) . entered ( ) ;
7979
8080 let config = Config :: parse ( ) ;
81+ let fiber_fallback_config = config. fiber_fallback_config . clone ( ) ;
8182
82- let store_path = config
83- . fiber
84- . as_ref ( )
85- . ok_or_else ( || ExitMessage ( "fiber config is required but absent" . to_string ( ) ) ) ?
86- . store_path ( ) ;
83+ let store_path = fiber_fallback_config. store_path ( ) ;
8784
8885 let store = Store :: new ( store_path) . map_err ( |err| ExitMessage ( err. to_string ( ) ) ) ?;
8986 let store = StoreWithPubSub :: new ( store) ;
@@ -102,10 +99,7 @@ pub async fn main() -> Result<(), ExitMessage> {
10299 } ) ;
103100
104101 #[ allow( unused_variables) ]
105- let ( network_actor, ckb_chain_actor, network_graph, node_public_key) = match config
106- . fiber
107- . clone ( )
108- {
102+ let ( network_actor, ckb_chain_actor, network_graph) = match config. fiber . clone ( ) {
109103 Some ( fiber_config) => {
110104 // TODO: this is not a super user friendly error message which has actionable information
111105 // for the user to fix the error and start the node.
@@ -296,26 +290,31 @@ pub async fn main() -> Result<(), ExitMessage> {
296290 Some ( network_actor) ,
297291 Some ( ckb_chain_actor) ,
298292 Some ( network_graph) ,
299- Some ( node_public_key) ,
300293 )
301294 }
302- None => ( None , None , None , None ) ,
295+ None => ( None , None , None ) ,
303296 } ;
304297
305298 let cch_actor = match config. cch {
306299 Some ( cch_config) => {
307300 info ! ( "Starting cch" ) ;
308301 let ignore_startup_failure = cch_config. ignore_startup_failure ;
302+ let node_keypair =
303+ if let Some ( fiber) = config. fiber . as_ref ( ) {
304+ Some ( fiber. read_or_generate_secret_key ( ) . map_err ( |err| {
305+ ExitMessage ( format ! ( "failed to read secret key: {}" , err) )
306+ } ) ?)
307+ } else {
308+ None
309+ } ;
309310 match start_cch (
310311 CchArgs {
311312 config : cch_config,
312313 tracker : new_tokio_task_tracker ( ) ,
313314 token : new_tokio_cancellation_token ( ) ,
314- network_actor : network_actor
315- . clone ( )
316- . expect ( "Cch service requires network actor" ) ,
317- pubkey : node_public_key. expect ( "Cch service requires node public key" ) ,
315+ network_actor : network_actor. clone ( ) ,
318316 store : store. clone ( ) ,
317+ node_keypair,
319318 } ,
320319 root_actor. get_cell ( ) ,
321320 )
@@ -333,8 +332,6 @@ pub async fn main() -> Result<(), ExitMessage> {
333332 }
334333 }
335334 Ok ( actor) => {
336- // Subscribe the actor to the store so it can receive updates
337- store. subscribe ( Box :: new ( actor. clone ( ) ) ) ;
338335 info ! ( "cch started successfully ..." ) ;
339336 Some ( actor)
340337 }
@@ -344,8 +341,8 @@ pub async fn main() -> Result<(), ExitMessage> {
344341 } ;
345342
346343 // Start rpc service
347- let rpc_server_handle = match ( config. rpc , network_graph ) {
348- ( Some ( rpc_config) , Some ( network_graph ) ) => {
344+ let rpc_server_handle = match config. rpc {
345+ Some ( rpc_config) => {
349346 match start_rpc (
350347 rpc_config,
351348 config. ckb ,
@@ -355,20 +352,19 @@ pub async fn main() -> Result<(), ExitMessage> {
355352 store,
356353 network_graph,
357354 root_actor. get_cell ( ) ,
358- #[ cfg( debug_assertions) ] ckb_chain_actor,
359- #[ cfg( debug_assertions) ] rpc_dev_module_commitment_txs,
355+ #[ cfg( debug_assertions) ]
356+ ckb_chain_actor,
357+ #[ cfg( debug_assertions) ]
358+ rpc_dev_module_commitment_txs,
360359 )
361- . await {
360+ . await
361+ {
362362 Ok ( handle) => Some ( handle) ,
363363 Err ( err) => {
364364 return ExitMessage :: err ( format ! ( "rpc server failed to start: {}" , err) ) ;
365365 }
366366 }
367- } ,
368- ( Some ( _) , None ) => return ExitMessage :: err (
369- "RPC requires network graph in the fiber service which is not enabled in the config file"
370- . to_string ( )
371- ) ,
367+ }
372368 _ => None ,
373369 } ;
374370
0 commit comments