@@ -31,7 +31,7 @@ pub async fn submit_block<S: BuilderApiState>(
3131 req_headers : HeaderMap ,
3232 state : PbsState < S > ,
3333 api_version : & BuilderApiVersion ,
34- ) -> eyre:: Result < SubmitBlindedBlockResponse > {
34+ ) -> eyre:: Result < Option < SubmitBlindedBlockResponse > > {
3535 // prepare headers
3636 let mut send_headers = HeaderMap :: new ( ) ;
3737 send_headers. insert ( HEADER_START_TIME_UNIX_MS , HeaderValue :: from ( utcnow_ms ( ) ) ) ;
@@ -64,7 +64,7 @@ async fn submit_block_with_timeout(
6464 headers : HeaderMap ,
6565 timeout_ms : u64 ,
6666 api_version : & BuilderApiVersion ,
67- ) -> Result < SubmitBlindedBlockResponse , PbsError > {
67+ ) -> Result < Option < SubmitBlindedBlockResponse > , PbsError > {
6868 let url = relay. submit_block_url ( api_version. clone ( ) ) ?;
6969 let mut remaining_timeout_ms = timeout_ms;
7070 let mut retry = 0 ;
@@ -79,7 +79,7 @@ async fn submit_block_with_timeout(
7979 headers. clone ( ) ,
8080 remaining_timeout_ms,
8181 retry,
82- * api_version == BuilderApiVersion :: V1 , // only validate unblinded block for v1
82+ api_version,
8383 )
8484 . await
8585 {
@@ -113,8 +113,8 @@ async fn send_submit_block(
113113 headers : HeaderMap ,
114114 timeout_ms : u64 ,
115115 retry : u32 ,
116- validate_unblinded_block : bool ,
117- ) -> Result < SubmitBlindedBlockResponse , PbsError > {
116+ api_version : & BuilderApiVersion ,
117+ ) -> Result < Option < SubmitBlindedBlockResponse > , PbsError > {
118118 let start_request = Instant :: now ( ) ;
119119 let res = match relay
120120 . client
@@ -158,6 +158,10 @@ async fn send_submit_block(
158158 warn ! ( relay_id = relay. id. as_ref( ) , retry, %err, "failed to get payload (this might be ok if other relays have it)" ) ;
159159 return Err ( err) ;
160160 } ;
161+ if api_version != & BuilderApiVersion :: V1 {
162+ // v2 response is going to be empty, so just break here
163+ return Ok ( None ) ;
164+ }
161165
162166 let block_response = match serde_json:: from_slice :: < SubmitBlindedBlockResponse > ( & response_bytes)
163167 {
@@ -187,16 +191,14 @@ async fn send_submit_block(
187191
188192 // request has different type so cant be deserialized in the wrong version,
189193 // response has a "version" field
190- if validate_unblinded_block {
191- match ( & signed_blinded_block. message , & block_response) {
192- (
193- BlindedBeaconBlock :: Electra ( signed_blinded_block) ,
194- VersionedResponse :: Electra ( block_response) ,
195- ) => validate_unblinded_block_electra ( signed_blinded_block, block_response) ,
196- } ?;
197- }
198-
199- Ok ( block_response)
194+ match ( & signed_blinded_block. message , & block_response) {
195+ (
196+ BlindedBeaconBlock :: Electra ( signed_blinded_block) ,
197+ VersionedResponse :: Electra ( block_response) ,
198+ ) => validate_unblinded_block_electra ( signed_blinded_block, block_response) ,
199+ } ?;
200+
201+ Ok ( Some ( block_response) )
200202}
201203
202204fn validate_unblinded_block_electra (
0 commit comments