1+ use optimism_derivation:: types:: Preimages ;
12use optimism_preimage_maker:: derivation:: host:: single:: config:: Config ;
23use optimism_preimage_maker:: derivation:: host:: single:: handler:: {
34 Derivation , DerivationConfig , DerivationRequest ,
45} ;
5- use serde_json :: Value ;
6+ use prost :: Message ;
67use serial_test:: serial;
78use std:: env;
89use std:: sync:: Arc ;
910use tracing:: info;
1011
1112mod e2e;
13+ use crate :: e2e:: derivation_in_light_client;
1214use e2e:: get_l2_client;
1315use e2e:: init;
14- use optimism_preimage_maker:: client:: l2_client:: { Block , RpcResult } ;
15-
16- #[ derive( Debug , Clone , serde:: Serialize , Default ) ]
17- struct RpcRequest {
18- jsonrpc : String ,
19- method : String ,
20- params : Vec < Value > ,
21- id : i64 ,
22- }
16+ use optimism_preimage_maker:: client:: l2_client:: { Block , RpcRequest , RpcResult } ;
17+ use optimism_preimage_maker:: data:: preimage_repository:: PreimageMetadata ;
2318
2419async fn get_block_by_number ( number : u64 , l1_geth_addr : & str ) -> anyhow:: Result < Block > {
2520 let client = reqwest:: Client :: new ( ) ;
@@ -34,6 +29,11 @@ async fn get_block_by_number(number: u64, l1_geth_addr: &str) -> anyhow::Result<
3429 . json ( & body)
3530 . send ( )
3631 . await ?;
32+ if !response. status ( ) . is_success ( ) {
33+ return Err ( anyhow:: anyhow!(
34+ "failed to get block by number: {response:?}"
35+ ) ) ;
36+ }
3737 let result: RpcResult < Block > = response. json ( ) . await ?;
3838 Ok ( result. result )
3939}
@@ -57,15 +57,15 @@ async fn test_derivation() {
5757 let l2_client = get_l2_client ( ) ;
5858 let chain_id = l2_client. chain_id ( ) . await . unwrap ( ) ;
5959
60- let op_geth_addr = env:: var ( "L2__ADDR " ) . unwrap ( ) ;
60+ let op_geth_addr = env:: var ( "L2_GETH_ADDR " ) . unwrap ( ) ;
6161 let op_node_addr = env:: var ( "L2_ROLLUP_ADDR" ) . unwrap ( ) ;
6262 let l1_geth_addr = env:: var ( "L1_GETH_ADDR" ) . unwrap ( ) ;
6363 let l1_beacon_addr = env:: var ( "L1_BEACON_ADDR" ) . unwrap ( ) ;
6464
6565 let claimed_output = l2_client. output_root_at ( claimed) . await . unwrap ( ) ;
6666 let agreed_output = l2_client. output_root_at ( agreed) . await . unwrap ( ) ;
6767 let l1_hash = get_block_by_number (
68- claimed_output. block_ref . l1_origin . number + 100 ,
68+ claimed_output. block_ref . l1_origin . number + 50 ,
6969 & l1_geth_addr,
7070 )
7171 . await
@@ -92,11 +92,25 @@ async fn test_derivation() {
9292 l1_chain_config : None ,
9393 } ) ;
9494
95- info ! ( "derivation start : {:?}" , & request) ;
95+ info ! ( "start derivation in preimage maker : {:?}" , & request) ;
9696 let derivation = Derivation { config, request } ;
9797 let result = derivation. start ( ) . await ;
98- match result {
99- Ok ( _) => info ! ( "derivation success" ) ,
98+ let preimage = match result {
99+ Ok ( preimage) => {
100+ info ! ( "derivation success" ) ;
101+ Preimages :: decode ( preimage. as_slice ( ) ) . unwrap ( )
102+ }
100103 Err ( e) => panic ! ( "derivation failed: {e:?}" ) ,
101- }
104+ } ;
105+
106+ derivation_in_light_client (
107+ & l2_client,
108+ preimage,
109+ PreimageMetadata {
110+ agreed,
111+ claimed,
112+ l1_head : l1_hash,
113+ } ,
114+ )
115+ . await ;
102116}
0 commit comments