@@ -210,30 +210,39 @@ pub async fn derive_l1_range(
210
210
cl_client : & HttpClient ,
211
211
btc_client : & BitcoinClient ,
212
212
l2_range : ( L2BlockCommitment , L2BlockCommitment ) ,
213
- ) -> Option < ( L1BlockCommitment , L1BlockCommitment ) > {
213
+ ) -> RpcResult < Option < ( L1BlockCommitment , L1BlockCommitment ) > > {
214
214
// sanity check
215
215
assert ! ( l2_range. 1 . slot( ) >= l2_range. 0 . slot( ) , "" ) ;
216
216
217
217
let start_block_hash = * l2_range. 0 . blkid ( ) ;
218
218
let mut current_block_hash = * l2_range. 1 . blkid ( ) ;
219
219
loop {
220
- let l2_block = cl_client
220
+ let l2_block = match cl_client
221
221
. get_block_by_id ( current_block_hash)
222
222
. await
223
- . expect ( "cannot find L2 block" )
224
- . expect ( "cannot find L2 block" ) ;
223
+ . map_err ( to_jsonrpsee_error ( "failed to fetch l2 block" ) ) ?
224
+ {
225
+ Some ( block) => block,
226
+ None => return Ok ( None ) ,
227
+ } ;
225
228
226
229
let new_l1_manifests = l2_block. l1_segment ( ) . new_manifests ( ) ;
227
230
if !new_l1_manifests. is_empty ( ) {
228
231
let blkid = * new_l1_manifests. first ( ) . unwrap ( ) . blkid ( ) ;
229
- let height = btc_client. get_block_height ( & blkid. into ( ) ) . await . unwrap ( ) ;
232
+ let height = btc_client
233
+ . get_block_height ( & blkid. into ( ) )
234
+ . await
235
+ . map_err ( to_jsonrpsee_error ( "failed to fetch l1 block" ) ) ?;
230
236
let first_commitment = L1BlockCommitment :: new ( height, blkid) ;
231
237
232
238
let blkid = * new_l1_manifests. last ( ) . unwrap ( ) . blkid ( ) ;
233
- let height = btc_client. get_block_height ( & blkid. into ( ) ) . await . unwrap ( ) ;
239
+ let height = btc_client
240
+ . get_block_height ( & blkid. into ( ) )
241
+ . await
242
+ . map_err ( to_jsonrpsee_error ( "failed to fetch l1 block" ) ) ?;
234
243
let last_commitment = L1BlockCommitment :: new ( height, blkid) ;
235
244
236
- return Some ( ( first_commitment, last_commitment) ) ;
245
+ return Ok ( Some ( ( first_commitment, last_commitment) ) ) ;
237
246
}
238
247
239
248
let prev_l2_blkid = * l2_block. header ( ) . parent ( ) ;
@@ -244,5 +253,6 @@ pub async fn derive_l1_range(
244
253
current_block_hash = prev_l2_blkid;
245
254
}
246
255
}
247
- None
256
+
257
+ Ok ( None )
248
258
}
0 commit comments