@@ -411,34 +411,29 @@ where
411411 let tx_index = scid_utils:: tx_index_from_scid ( & short_channel_id) ;
412412 let vout = scid_utils:: vout_from_scid ( & short_channel_id) ;
413413
414- let client_tokio = Arc :: clone ( & self . client ) ;
415- locked_runtime. as_ref ( ) . unwrap ( ) . block_on ( async move {
416- // TODO: migrate to https://github.com/bitcoindevkit/rust-esplora-client/pull/13 with
417- // next release.
418- let block_hash = client_tokio
419- . get_header ( block_height. into ( ) )
420- . await
421- . map_err ( |_| AccessError :: UnknownTx ) ?
422- . block_hash ( ) ;
423-
424- let txid = client_tokio
425- . get_txid_at_block_index ( & block_hash, tx_index as usize )
426- . await
427- . map_err ( |_| AccessError :: UnknownTx ) ?
428- . ok_or ( AccessError :: UnknownTx ) ?;
414+ let client = Arc :: clone ( & self . client ) ;
429415
430- let tx = client_tokio
431- . get_tx ( & txid)
432- . await
433- . map_err ( |_| AccessError :: UnknownTx ) ?
434- . ok_or ( AccessError :: UnknownTx ) ?;
416+ let ( sender, receiver) = mpsc:: sync_channel ( 1 ) ;
435417
436- if let Some ( tx_out) = tx. output . get ( vout as usize ) {
437- return Ok ( tx_out. clone ( ) ) ;
438- } else {
439- Err ( AccessError :: UnknownTx )
418+ locked_runtime. as_ref ( ) . unwrap ( ) . spawn ( async move {
419+ // TODO: migrate to https://github.com/bitcoindevkit/rust-esplora-client/pull/13 with
420+ // next release.
421+ if let Ok ( block_header) = client. get_header ( block_height. into ( ) ) . await {
422+ let block_hash = block_header. block_hash ( ) ;
423+ if let Ok ( Some ( txid) ) =
424+ client. get_txid_at_block_index ( & block_hash, tx_index as usize ) . await
425+ {
426+ if let Ok ( Some ( tx) ) = client. get_tx ( & txid) . await {
427+ if let Some ( tx_out) = tx. output . get ( vout as usize ) {
428+ let _ = sender. send ( Ok ( tx_out. clone ( ) ) ) ;
429+ }
430+ }
431+ }
440432 }
441- } )
433+ let _ = sender. send ( Err ( AccessError :: UnknownTx ) ) ;
434+ } ) ;
435+
436+ receiver. recv ( ) . map_err ( |_| AccessError :: UnknownTx ) ?
442437 }
443438}
444439
0 commit comments