Skip to content

Commit

Permalink
conform to the submitBlock endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
ralexstokes committed Aug 18, 2023
1 parent 9d88a23 commit cd637ee
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 36 deletions.
15 changes: 4 additions & 11 deletions mev-rs/src/blinded_block_relayer/api/client.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use crate::{
blinded_block_relayer::BlindedBlockRelayer,
types::{ProposerSchedule, SignedBidReceipt, SignedBidSubmission},
types::{ProposerSchedule, SignedBidSubmission},
Error,
};
use beacon_api_client::{mainnet::Client as BeaconApiClient, ApiResult, Error as ApiError};
use beacon_api_client::{api_error_or_ok, mainnet::Client as BeaconApiClient};

/// A `Client` for a service implementing the Relay APIs.
#[derive(Clone)]
Expand All @@ -24,15 +24,8 @@ impl BlindedBlockRelayer for Client {
}

// TODO support content types
async fn submit_bid(
&self,
signed_submission: &SignedBidSubmission,
) -> Result<SignedBidReceipt, Error> {
async fn submit_bid(&self, signed_submission: &SignedBidSubmission) -> Result<(), Error> {
let response = self.api.http_post("/relay/v1/builder/blocks", signed_submission).await?;
let receipt: ApiResult<SignedBidReceipt> = response.json().await.map_err(ApiError::from)?;
match receipt {
ApiResult::Ok(receipt) => Ok(receipt),
ApiResult::Err(err) => Err(ApiError::from(err).into()),
}
api_error_or_ok(response).await.map_err(From::from)
}
}
6 changes: 3 additions & 3 deletions mev-rs/src/blinded_block_relayer/api/server.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::{
blinded_block_relayer::BlindedBlockRelayer,
error::Error,
types::{ProposerSchedule, SignedBidReceipt, SignedBidSubmission},
types::{ProposerSchedule, SignedBidSubmission},
};
use axum::{
extract::{Json, State},
Expand All @@ -25,9 +25,9 @@ async fn handle_get_proposal_schedule<R: BlindedBlockRelayer>(
async fn handle_submit_bid<R: BlindedBlockRelayer>(
State(relayer): State<R>,
Json(signed_bid_submission): Json<SignedBidSubmission>,
) -> Result<Json<SignedBidReceipt>, Error> {
) -> Result<(), Error> {
tracing::info!("handling bid submission");
Ok(Json(relayer.submit_bid(&signed_bid_submission).await?))
Ok(relayer.submit_bid(&signed_bid_submission).await?)
}

pub struct Server<R: BlindedBlockRelayer> {
Expand Down
7 changes: 2 additions & 5 deletions mev-rs/src/blinded_block_relayer/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ pub use {api::client::Client, api::server::Server};

use crate::{
error::Error,
types::{ProposerSchedule, SignedBidReceipt, SignedBidSubmission},
types::{ProposerSchedule, SignedBidSubmission},
};
use async_trait::async_trait;

Expand All @@ -15,8 +15,5 @@ pub trait BlindedBlockRelayer {
async fn get_proposal_schedule(&self) -> Result<Vec<ProposerSchedule>, Error>;

// TODO: support cancellations?
async fn submit_bid(
&self,
signed_submission: &SignedBidSubmission,
) -> Result<SignedBidReceipt, Error>;
async fn submit_bid(&self, signed_submission: &SignedBidSubmission) -> Result<(), Error>;
}
20 changes: 3 additions & 17 deletions mev-rs/src/types/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,7 @@ pub struct ProposerSchedule {
pub entry: SignedValidatorRegistration,
}

#[derive(Debug, Default, Clone)]
#[derive(Debug, Default, Clone, SimpleSerialize)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct BidTrace {
#[serde(with = "crate::serde::as_string")]
Expand All @@ -366,6 +366,8 @@ pub struct BidTrace {
pub block_hash: Hash32,
#[serde(rename = "builder_pubkey")]
pub builder_public_key: BlsPublicKey,
#[serde(rename = "proposer_pubkey")]
pub proposer_public_key: BlsPublicKey,
pub proposer_fee_recipient: ExecutionAddress,
#[serde(with = "crate::serde::as_string")]
pub gas_limit: u64,
Expand All @@ -378,21 +380,5 @@ pub struct BidTrace {
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct SignedBidSubmission {
pub message: BidTrace,
pub execution_payload: ExecutionPayload,
pub signature: BlsSignature,
}

#[derive(Debug, Default, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct BidReceipt {
#[serde(with = "crate::serde::as_string")]
pub receive_timestamp: u64,
pub bid_trace: BidTrace,
}

#[derive(Debug, Default, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct SignedBidReceipt {
pub message: BidReceipt,
pub signature: BlsSignature,
}

0 comments on commit cd637ee

Please sign in to comment.