Skip to content

Commit 7ff5815

Browse files
refactor: move l1_batch_number into SubmitAirbenderProofRequest body
Include l1_batch_number in the JSON request body instead of as a URL path parameter. Route changes from /airbender/submit_proofs/{batch} to /airbender/submit_proofs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent a1f276f commit 7ff5815

File tree

5 files changed

+49
-50
lines changed

5 files changed

+49
-50
lines changed

core/lib/airbender_prover_interface/src/api.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ pub enum SubmitAirbenderProofResponse {
2828
#[serde_as]
2929
#[derive(Debug, PartialEq, Serialize, Deserialize)]
3030
pub struct SubmitAirbenderProofRequest {
31+
pub l1_batch_number: u32,
3132
#[serde_as(as = "Hex")]
3233
pub proof: Vec<u8>,
3334
}

core/lib/airbender_prover_interface/tests/job_serialization.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ use zksync_airbender_prover_interface::api::SubmitAirbenderProofRequest;
55
#[test]
66
fn test_airbender_proof_request_serialization() {
77
let airbender_proof_str = r#"{
8+
"l1_batch_number": 42,
89
"proof": "0A0B0C0D0E"
910
}"#;
1011
let airbender_proof_result =
1112
serde_json::from_str::<SubmitAirbenderProofRequest>(airbender_proof_str).unwrap();
1213
let airbender_proof_expected = SubmitAirbenderProofRequest {
14+
l1_batch_number: 42,
1315
proof: vec![10, 11, 12, 13, 14],
1416
};
1517
assert_eq!(airbender_proof_result, airbender_proof_expected);

core/node/airbender_proof_data_handler/src/airbender_request_processor.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,10 +268,9 @@ impl AirbenderRequestProcessor {
268268

269269
pub(crate) async fn submit_proof(
270270
&self,
271-
Path(l1_batch_number): Path<u32>,
272271
Json(proof): Json<SubmitAirbenderProofRequest>,
273272
) -> Result<Json<SubmitAirbenderProofResponse>, AirbenderProcessorError> {
274-
let l1_batch_number = L1BatchNumber(l1_batch_number);
273+
let l1_batch_number = L1BatchNumber(proof.l1_batch_number);
275274

276275
let proof_for_gcs = L1BatchAirbenderProofForL1 { proof: proof.proof };
277276
let proof_blob_url = self

core/node/airbender_proof_data_handler/src/lib.rs

Lines changed: 43 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -63,56 +63,52 @@ fn create_proof_processing_router(
6363
let present_batches_processor = processor.clone();
6464
let submit_processor = processor.clone();
6565

66-
let router =
67-
Router::new()
68-
.route(
69-
"/airbender/proof_inputs",
70-
post(move || async move {
71-
let result = get_processor.get_proof_generation_data().await;
66+
let router = Router::new()
67+
.route(
68+
"/airbender/proof_inputs",
69+
post(move || async move {
70+
let result = get_processor.get_proof_generation_data().await;
7271

73-
match result {
74-
Ok(Some(data)) => (StatusCode::OK, data).into_response(),
75-
Ok(None) => StatusCode::NO_CONTENT.into_response(),
76-
Err(e) => e.into_response(),
77-
}
78-
}),
79-
)
80-
.route(
81-
"/airbender/proof_inputs_no_lock/{batch}",
82-
get(move |batch: Path<u32>| async move {
83-
let result = get_no_lock_processor
84-
.get_proof_generation_data_no_lock(batch)
85-
.await;
72+
match result {
73+
Ok(Some(data)) => (StatusCode::OK, data).into_response(),
74+
Ok(None) => StatusCode::NO_CONTENT.into_response(),
75+
Err(e) => e.into_response(),
76+
}
77+
}),
78+
)
79+
.route(
80+
"/airbender/proof_inputs_no_lock/{batch}",
81+
get(move |batch: Path<u32>| async move {
82+
let result = get_no_lock_processor
83+
.get_proof_generation_data_no_lock(batch)
84+
.await;
8685

87-
match result {
88-
Ok(Some(data)) => (StatusCode::OK, data).into_response(),
89-
Ok(None) => StatusCode::NOT_FOUND.into_response(),
90-
Err(e) => e.into_response(),
91-
}
92-
}),
93-
)
94-
.route(
95-
"/airbender/present_batches",
96-
get(move || async move {
97-
let result = present_batches_processor.get_present_batches().await;
86+
match result {
87+
Ok(Some(data)) => (StatusCode::OK, data).into_response(),
88+
Ok(None) => StatusCode::NOT_FOUND.into_response(),
89+
Err(e) => e.into_response(),
90+
}
91+
}),
92+
)
93+
.route(
94+
"/airbender/present_batches",
95+
get(move || async move {
96+
let result = present_batches_processor.get_present_batches().await;
9897

99-
match result {
100-
Ok(data) => (StatusCode::OK, data).into_response(),
101-
Err(e) => e.into_response(),
102-
}
103-
}),
104-
)
105-
.route(
106-
"/airbender/submit_proofs/{l1_batch_number}",
107-
post(
108-
move |l1_batch_number: Path<u32>,
109-
payload: Json<SubmitAirbenderProofRequest>| async move {
110-
submit_processor
111-
.submit_proof(l1_batch_number, payload)
112-
.await
113-
},
114-
),
115-
);
98+
match result {
99+
Ok(data) => (StatusCode::OK, data).into_response(),
100+
Err(e) => e.into_response(),
101+
}
102+
}),
103+
)
104+
.route(
105+
"/airbender/submit_proofs",
106+
post(
107+
move |payload: Json<SubmitAirbenderProofRequest>| async move {
108+
submit_processor.submit_proof(payload).await
109+
},
110+
),
111+
);
116112

117113
router
118114
.layer(tower_http::compression::CompressionLayer::new())

core/node/airbender_proof_data_handler/src/tests.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,9 +172,10 @@ async fn submit_airbender_proof() {
172172
mock_airbender_batch_status(db_conn_pool.clone(), batch_number).await;
173173

174174
let airbender_proof_request = SubmitAirbenderProofRequest {
175+
l1_batch_number: batch_number.0,
175176
proof: vec![0x0A, 0x0B, 0x0C, 0x0D, 0x0E],
176177
};
177-
let uri = format!("/airbender/submit_proofs/{}", batch_number.0);
178+
let uri = "/airbender/submit_proofs".to_string();
178179
let app = create_proof_processing_router(
179180
MockObjectStore::arc(),
180181
db_conn_pool.clone(),

0 commit comments

Comments
 (0)