diff --git a/crates/payload/basic/src/lib.rs b/crates/payload/basic/src/lib.rs index 1ae9d0ef8..c56dba46d 100644 --- a/crates/payload/basic/src/lib.rs +++ b/crates/payload/basic/src/lib.rs @@ -828,7 +828,7 @@ where difficulty: U256::ZERO, gas_used: cumulative_gas_used, extra_data: extra_data.into(), - parent_beacon_block_root: None, + parent_beacon_block_root: attributes.parent_beacon_block_root, blob_gas_used, excess_blob_gas, }; @@ -906,7 +906,7 @@ where blob_gas_used: None, excess_blob_gas: None, extra_data: extra_data.into(), - parent_beacon_block_root: None, + parent_beacon_block_root: attributes.parent_beacon_block_root, }; let block = Block { header, body: vec![], ommers: vec![], withdrawals }; diff --git a/crates/payload/builder/src/payload.rs b/crates/payload/builder/src/payload.rs index c5e199ef7..3b5fa7b5a 100644 --- a/crates/payload/builder/src/payload.rs +++ b/crates/payload/builder/src/payload.rs @@ -129,6 +129,8 @@ pub struct PayloadBuilderAttributes { pub prev_randao: H256, /// Withdrawals for the generated payload pub withdrawals: Vec, + /// Root of the parent beacon block + pub parent_beacon_block_root: Option, } // === impl PayloadBuilderAttributes === @@ -146,6 +148,7 @@ impl PayloadBuilderAttributes { suggested_fee_recipient: attributes.suggested_fee_recipient, prev_randao: attributes.prev_randao, withdrawals: attributes.withdrawals.unwrap_or_default(), + parent_beacon_block_root: attributes.parent_beacon_block_root, } } @@ -204,6 +207,9 @@ pub(crate) fn payload_id(parent: &H256, attributes: &PayloadAttributes) -> Paylo withdrawals.encode(&mut buf); hasher.update(buf); } + if let Some(parent_beacon_block) = attributes.parent_beacon_block_root { + hasher.update(parent_beacon_block); + } let out = hasher.finalize(); PayloadId::new(out.as_slice()[..8].try_into().expect("sufficient length")) }