diff --git a/crates/payload/builder/src/payload.rs b/crates/payload/builder/src/payload.rs index 3b5fa7b5a67a..57d0dceff18d 100644 --- a/crates/payload/builder/src/payload.rs +++ b/crates/payload/builder/src/payload.rs @@ -98,7 +98,7 @@ impl From for ExecutionPayloadEnvelopeV3 { let BuiltPayload { block, fees, sidecars, .. } = value; ExecutionPayloadEnvelopeV3 { - payload_inner: block.into(), + execution_payload: block.into(), block_value: fees, // From the engine API spec: // diff --git a/crates/rpc/rpc-types/src/eth/engine/payload.rs b/crates/rpc/rpc-types/src/eth/engine/payload.rs index 3cefc20bf465..6b53c4e84cd2 100644 --- a/crates/rpc/rpc-types/src/eth/engine/payload.rs +++ b/crates/rpc/rpc-types/src/eth/engine/payload.rs @@ -107,8 +107,7 @@ impl ExecutionPayloadEnvelopeV2 { #[serde(rename_all = "camelCase")] pub struct ExecutionPayloadEnvelopeV3 { /// Execution payload V3 - #[serde(flatten)] - pub payload_inner: ExecutionPayloadV3, + pub execution_payload: ExecutionPayloadV3, /// The expected value to be received by the feeRecipient in wei pub block_value: U256, /// The blobs, commitments, and proofs associated with the executed payload. @@ -891,4 +890,12 @@ mod tests { let payload: ExecutionPayloadV3 = serde_json::from_str(s).unwrap(); assert_eq!(serde_json::to_string(&payload).unwrap(), s); } + + #[test] + fn serde_roundtrip_execution_payload_envelope_v3() { + // pulled from a geth response getPayloadV3 in hive tests + let response = r#"{"executionPayload":{"parentHash":"0xe927a1448525fb5d32cb50ee1408461a945ba6c39bd5cf5621407d500ecc8de9","feeRecipient":"0x0000000000000000000000000000000000000000","stateRoot":"0x10f8a0830000e8edef6d00cc727ff833f064b1950afd591ae41357f97e543119","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","prevRandao":"0xe0d8b4521a7da1582a713244ffb6a86aa1726932087386e2dc7973f43fc6cb24","blockNumber":"0x1","gasLimit":"0x2ffbd2","gasUsed":"0x0","timestamp":"0x1235","extraData":"0xd883010d00846765746888676f312e32312e30856c696e7578","baseFeePerGas":"0x342770c0","blockHash":"0x44d0fa5f2f73a938ebb96a2a21679eb8dea3e7b7dd8fd9f35aa756dda8bf0a8a","transactions":[],"withdrawals":[],"blobGasUsed":"0x0","excessBlobGas":"0x0"},"blockValue":"0x0","blobsBundle":{"commitments":[],"proofs":[],"blobs":[]},"shouldOverrideBuilder":false}"#; + let envelope: ExecutionPayloadEnvelopeV3 = serde_json::from_str(response).unwrap(); + assert_eq!(serde_json::to_string(&envelope).unwrap(), response); + } }