|
1 | 1 | use crate::test_utils::{DEFAULT_BUILDER_PAYLOAD_VALUE_WEI, DEFAULT_JWT_SECRET}; |
2 | 2 | use crate::{Config, ExecutionLayer, PayloadAttributes}; |
3 | 3 | use eth2::types::{BlobsBundle, BlockId, StateId, ValidatorId}; |
4 | | -use eth2::{BeaconNodeHttpClient, Timeouts}; |
| 4 | +use eth2::{BeaconNodeHttpClient, Timeouts, CONSENSUS_VERSION_HEADER}; |
5 | 5 | use fork_choice::ForkchoiceUpdateParameters; |
6 | 6 | use parking_lot::RwLock; |
7 | 7 | use sensitive_url::SensitiveUrl; |
@@ -321,56 +321,57 @@ pub fn serve<E: EthSpec>( |
321 | 321 | }, |
322 | 322 | ); |
323 | 323 |
|
324 | | - let blinded_block = prefix |
325 | | - .and(warp::path("blinded_blocks")) |
326 | | - .and(warp::body::json()) |
327 | | - .and(warp::path::end()) |
328 | | - .and(ctx_filter.clone()) |
329 | | - .and_then( |
330 | | - |block: SignedBlindedBeaconBlock<E>, builder: MockBuilder<E>| async move { |
331 | | - let slot = block.slot(); |
332 | | - let root = match block { |
333 | | - SignedBlindedBeaconBlock::Base(_) | types::SignedBeaconBlock::Altair(_) => { |
334 | | - return Err(reject("invalid fork")); |
335 | | - } |
336 | | - SignedBlindedBeaconBlock::Merge(block) => { |
337 | | - block.message.body.execution_payload.tree_hash_root() |
338 | | - } |
339 | | - SignedBlindedBeaconBlock::Capella(block) => { |
340 | | - block.message.body.execution_payload.tree_hash_root() |
341 | | - } |
342 | | - SignedBlindedBeaconBlock::Deneb(block) => { |
343 | | - block.message.body.execution_payload.tree_hash_root() |
344 | | - } |
345 | | - SignedBlindedBeaconBlock::Electra(block) => { |
346 | | - block.message.body.execution_payload.tree_hash_root() |
347 | | - } |
348 | | - }; |
349 | | - |
350 | | - let fork_name = builder.spec.fork_name_at_slot::<E>(slot); |
351 | | - let payload = builder |
352 | | - .el |
353 | | - .get_payload_by_root(&root) |
354 | | - .ok_or_else(|| reject("missing payload for tx root"))?; |
355 | | - let resp: ForkVersionedResponse<_> = ForkVersionedResponse { |
356 | | - version: Some(fork_name), |
357 | | - metadata: Default::default(), |
358 | | - data: payload, |
359 | | - }; |
360 | | - |
361 | | - let json_payload = serde_json::to_string(&resp) |
362 | | - .map_err(|_| reject("coudn't serialize response"))?; |
363 | | - Ok::<_, warp::reject::Rejection>( |
364 | | - warp::http::Response::builder() |
365 | | - .status(200) |
366 | | - .body( |
367 | | - serde_json::to_string(&json_payload) |
368 | | - .map_err(|_| reject("nvalid JSON"))?, |
369 | | - ) |
370 | | - .unwrap(), |
371 | | - ) |
372 | | - }, |
373 | | - ); |
| 324 | + let blinded_block = |
| 325 | + prefix |
| 326 | + .and(warp::path("blinded_blocks")) |
| 327 | + .and(warp::body::json()) |
| 328 | + .and(warp::header::header::<ForkName>(CONSENSUS_VERSION_HEADER)) |
| 329 | + .and(warp::path::end()) |
| 330 | + .and(ctx_filter.clone()) |
| 331 | + .and_then( |
| 332 | + |block: SignedBlindedBeaconBlock<E>, |
| 333 | + fork_name: ForkName, |
| 334 | + builder: MockBuilder<E>| async move { |
| 335 | + let root = match block { |
| 336 | + SignedBlindedBeaconBlock::Base(_) | types::SignedBeaconBlock::Altair(_) => { |
| 337 | + return Err(reject("invalid fork")); |
| 338 | + } |
| 339 | + SignedBlindedBeaconBlock::Merge(block) => { |
| 340 | + block.message.body.execution_payload.tree_hash_root() |
| 341 | + } |
| 342 | + SignedBlindedBeaconBlock::Capella(block) => { |
| 343 | + block.message.body.execution_payload.tree_hash_root() |
| 344 | + } |
| 345 | + SignedBlindedBeaconBlock::Deneb(block) => { |
| 346 | + block.message.body.execution_payload.tree_hash_root() |
| 347 | + } |
| 348 | + SignedBlindedBeaconBlock::Electra(block) => { |
| 349 | + block.message.body.execution_payload.tree_hash_root() |
| 350 | + } |
| 351 | + }; |
| 352 | + let payload = builder |
| 353 | + .el |
| 354 | + .get_payload_by_root(&root) |
| 355 | + .ok_or_else(|| reject("missing payload for tx root"))?; |
| 356 | + let resp: ForkVersionedResponse<_> = ForkVersionedResponse { |
| 357 | + version: Some(fork_name), |
| 358 | + metadata: Default::default(), |
| 359 | + data: payload, |
| 360 | + }; |
| 361 | + |
| 362 | + let json_payload = serde_json::to_string(&resp) |
| 363 | + .map_err(|_| reject("coudn't serialize response"))?; |
| 364 | + Ok::<_, warp::reject::Rejection>( |
| 365 | + warp::http::Response::builder() |
| 366 | + .status(200) |
| 367 | + .body( |
| 368 | + serde_json::to_string(&json_payload) |
| 369 | + .map_err(|_| reject("invalid JSON"))?, |
| 370 | + ) |
| 371 | + .unwrap(), |
| 372 | + ) |
| 373 | + }, |
| 374 | + ); |
374 | 375 |
|
375 | 376 | let status = prefix |
376 | 377 | .and(warp::path("status")) |
|
0 commit comments