Skip to content

Commit aaf86cb

Browse files
author
Naohiro Yoshida
committed
add inspection
1 parent 44664ae commit aaf86cb

File tree

3 files changed

+72
-50
lines changed

3 files changed

+72
-50
lines changed

server/src/client/l2_client.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ pub struct RpcResult<T> {
1212
}
1313

1414
#[derive(Debug, Clone, serde::Serialize)]
15-
struct RpcRequest {
16-
jsonrpc: String,
17-
method: String,
18-
params: Vec<Value>,
19-
id: i64,
15+
pub struct RpcRequest {
16+
pub jsonrpc: String,
17+
pub method: String,
18+
pub params: Vec<Value>,
19+
pub id: i64,
2020
}
2121

2222
impl Default for RpcRequest {

server/tests/e2e.rs

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,42 @@ pub fn get_l2_client() -> L2Client {
3434
L2Client::new(op_node_addr, op_geth_addr)
3535
}
3636

37+
pub async fn derivation_in_light_client(
38+
l2_client: &L2Client,
39+
preimages: Preimages,
40+
metadata: PreimageMetadata,
41+
) {
42+
let agreed_l2_output_root = l2_client
43+
.output_root_at(metadata.agreed)
44+
.await
45+
.unwrap()
46+
.output_root;
47+
let claimed_l2_output_root = l2_client
48+
.output_root_at(metadata.claimed)
49+
.await
50+
.unwrap()
51+
.output_root;
52+
let chain_id = l2_client.chain_id().await.unwrap();
53+
54+
let oracle = MemoryOracleClient::try_from(preimages.preimages).unwrap();
55+
let derivation = Derivation::new(
56+
metadata.l1_head,
57+
agreed_l2_output_root,
58+
claimed_l2_output_root,
59+
metadata.claimed,
60+
);
61+
tracing::info!("start derivation {:?}", derivation);
62+
63+
let result = derivation.verify(chain_id, oracle);
64+
match result {
65+
Ok(h) => tracing::info!("Derivation verified successfully {:? }", h),
66+
Err(e) => {
67+
tracing::error!("Derivation verification failed: {:?}", e);
68+
panic!("Derivation verification failed");
69+
}
70+
}
71+
}
72+
3773
#[tokio::test(flavor = "multi_thread")]
3874
pub async fn test_derivation_success() {
3975
init();
@@ -99,35 +135,7 @@ pub async fn test_derivation_success() {
99135
.await
100136
.unwrap();
101137

102-
let agreed_l2_output_root = l2_client
103-
.output_root_at(metadata.agreed)
104-
.await
105-
.unwrap()
106-
.output_root;
107-
let claimed_l2_output_root = l2_client
108-
.output_root_at(metadata.claimed)
109-
.await
110-
.unwrap()
111-
.output_root;
112-
let chain_id = l2_client.chain_id().await.unwrap();
113-
114138
let preimages = Preimages::decode(preimage_bytes).unwrap();
115-
let oracle = MemoryOracleClient::try_from(preimages.preimages).unwrap();
116-
let derivation = Derivation::new(
117-
metadata.l1_head,
118-
agreed_l2_output_root,
119-
claimed_l2_output_root,
120-
metadata.claimed,
121-
);
122-
tracing::info!("start derivation {:?}", derivation);
123-
124-
let result = derivation.verify(chain_id, oracle);
125-
match result {
126-
Ok(h) => tracing::info!("Derivation verified successfully {:? }", h),
127-
Err(e) => {
128-
tracing::error!("Derivation verification failed: {:?}", e);
129-
panic!("Derivation verification failed");
130-
}
131-
}
139+
derivation_in_light_client(&l2_client, preimages, metadata).await;
132140
}
133141
}

server/tests/inspect.rs

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,20 @@
1+
use optimism_derivation::types::Preimages;
12
use optimism_preimage_maker::derivation::host::single::config::Config;
23
use optimism_preimage_maker::derivation::host::single::handler::{
34
Derivation, DerivationConfig, DerivationRequest,
45
};
5-
use serde_json::Value;
6+
use prost::Message;
67
use serial_test::serial;
78
use std::env;
89
use std::sync::Arc;
910
use tracing::info;
1011

1112
mod e2e;
13+
use crate::e2e::derivation_in_light_client;
1214
use e2e::get_l2_client;
1315
use 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

2419
async 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

Comments
 (0)