@@ -7,12 +7,12 @@ use axum::http::StatusCode;
77use axum:: routing:: post;
88use axum:: Json ;
99use kona_genesis:: RollupConfig ;
10- use log:: { error, info} ;
1110use serde:: { Deserialize , Serialize } ;
1211use std:: fmt:: Debug ;
1312use std:: sync:: Arc ;
1413use tokio:: net:: TcpListener ;
1514use tokio:: task:: JoinHandle ;
15+ use tracing:: { error, info} ;
1616
1717pub struct DerivationState {
1818 pub rollup_config : RollupConfig ,
@@ -56,25 +56,8 @@ async fn derivation(
5656 Json ( payload) : Json < Request > ,
5757) -> ( StatusCode , Vec < u8 > ) {
5858 info ! ( "derivation request: {:?}" , payload) ;
59- if payload. agreed_l2_output_root == payload. l2_output_root {
60- error ! ( "agreed_l2_output_root and l2_output_root are same value" ) ;
61- return ( StatusCode :: BAD_REQUEST , vec ! [ ] ) ;
62- }
63- if payload. agreed_l2_output_root . is_empty ( ) || payload. agreed_l2_output_root . is_zero ( ) {
64- error ! ( "invalid agreed_l2_output_root" , ) ;
65- return ( StatusCode :: BAD_REQUEST , vec ! [ ] ) ;
66- }
67- if payload. l2_output_root . is_empty ( ) || payload. l2_output_root . is_zero ( ) {
68- error ! ( "invalid l2_output_root" , ) ;
69- return ( StatusCode :: BAD_REQUEST , vec ! [ ] ) ;
70- }
71- if payload. l1_head_hash . is_empty ( ) || payload. l1_head_hash . is_zero ( ) {
72- error ! ( "invalid l1_head_hash" , ) ;
73- return ( StatusCode :: BAD_REQUEST , vec ! [ ] ) ;
74- }
75- if payload. l2_block_number == 0 {
76- error ! ( "invalid l2_block_number" , ) ;
77- return ( StatusCode :: BAD_REQUEST , vec ! [ ] ) ;
59+ if let Err ( v) = validate_request ( & payload) {
60+ return ( StatusCode :: BAD_REQUEST , v. as_bytes ( ) . to_vec ( ) ) ;
7861 }
7962
8063 let derivation = DerivationRequest {
@@ -99,3 +82,27 @@ async fn derivation(
9982 }
10083 }
10184}
85+
86+ fn validate_request ( payload : & Request ) -> Result < ( ) , & ' static str > {
87+ if payload. agreed_l2_output_root == payload. l2_output_root {
88+ error ! ( "agreed_l2_output_root and l2_output_root are same value" ) ;
89+ return Err ( "agreed_l2_output_root and l2_output_root are the same value" ) ;
90+ }
91+ if payload. agreed_l2_output_root . is_empty ( ) || payload. agreed_l2_output_root . is_zero ( ) {
92+ error ! ( "invalid agreed_l2_output_root" , ) ;
93+ return Err ( "invalid agreed_l2_output_root" ) ;
94+ }
95+ if payload. l2_output_root . is_empty ( ) || payload. l2_output_root . is_zero ( ) {
96+ error ! ( "invalid l2_output_root" , ) ;
97+ return Err ( "invalid l2_output_root" ) ;
98+ }
99+ if payload. l1_head_hash . is_empty ( ) || payload. l1_head_hash . is_zero ( ) {
100+ error ! ( "invalid l1_head_hash" , ) ;
101+ return Err ( "invalid l1_head_hash" ) ;
102+ }
103+ if payload. l2_block_number == 0 {
104+ error ! ( "invalid l2_block_number" , ) ;
105+ return Err ( "invalid l2_block_number" ) ;
106+ }
107+ Ok ( ( ) )
108+ }
0 commit comments